@morphllm/morphmcp 0.8.164 → 0.8.166

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const a0_0x5a9e7=a0_0x41c0;(function(_0x10bc74,_0x14ae84){const _0x4501e6=a0_0x41c0,_0x2492df=_0x10bc74();while(!![]){try{const _0x1a49bb=parseInt(_0x4501e6(0x1d1))/0x1+parseInt(_0x4501e6(0x21e))/0x2*(parseInt(_0x4501e6(0x22e))/0x3)+-parseInt(_0x4501e6(0x26d))/0x4*(parseInt(_0x4501e6(0x1da))/0x5)+parseInt(_0x4501e6(0x1d0))/0x6+-parseInt(_0x4501e6(0x292))/0x7*(-parseInt(_0x4501e6(0x201))/0x8)+-parseInt(_0x4501e6(0x20e))/0x9*(parseInt(_0x4501e6(0x234))/0xa)+-parseInt(_0x4501e6(0x1d2))/0xb;if(_0x1a49bb===_0x14ae84)break;else _0x2492df['push'](_0x2492df['shift']());}catch(_0xab7462){_0x2492df['push'](_0x2492df['shift']());}}}(a0_0x484b,0xbc1ff));import{Server}from'@modelcontextprotocol/sdk/server/index.js';function a0_0x484b(){const _0x4e8163=['No\x20valid\x20root\x20directories\x20provided\x20by\x20client','Morph\x20FastApply\x20failed\x20without\x20error\x20message','slice','listRoots','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','[github_codebase_search]\x20Failed\x20in\x20','setNotificationHandler','node_modules','\x20is\x20not\x20a\x20directory','\x27\x20in\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.','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','optional','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','tool_calls','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','name','\x20\x20morph-mcp','173288ApSNXT','Warning:\x20','Workspace\x20mode\x20enabled:\x20Using\x20','completed','error','Failed\x20to\x20request\x20roots\x20from\x20client:','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','Warning:\x20Workspace\x20fallback\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.','MCP','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','\x22>\x0a','linesRemoved','\x20disabled\x20via\x20DISABLED_TOOLS','status','Relevant\x20context\x20found:','join','TimeoutError','linesModified','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','filter','warp_grep_complete','enum','composer.json','catch','success','string','sep','Repository\x20identifier','morph-v3-fast','length','split','oninitialized','Morph\x20Edit\x20','\x20-\x20','--version','5838sHyzmF','github_url','function','\x20chars)','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','exit','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','\x20error(s)','glob\x20\x27','indexOf','RipgrepNotAvailable','toISOString','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','\x0aExamples:','dryRun','<file\x20path=\x22','context','toLowerCase','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','github_codebase_search','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','dirname','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','text','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','response','Max\x20results\x20to\x20return','all','glob','search_string','https://morphllm.com/api/error-report','linesAdded','Fatal\x20error\x20running\x20server:','grep_search','false','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','BinaryFile','\x20as\x20allowed\x20directory','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','describe','Fallback:\x20Using\x20workspace\x20root\x20','SymlinkError','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','sk-','Applied','grep\x20\x27','params','stringify','has','messages','File\x20read\x20error:','read\x20','files','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','default','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','branch','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','pattern','Tool\x20','Specific\x20commit\x20hash\x20to\x20search','code','UnknownError','.\x20Changes:\x20','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','tool','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','message','content','Error\x20accessing\x20directory\x20','morph-warp-grep-v2.1','owner_repo','etimedout','log','safeParse','connect','unknown\x20error','command','warn','ms.\x20Success:\x20','path_validation_resolved','parse','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','.cursor','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','utf-8','object','now','push','setRequestHandler','warp_grep_start','getClientCapabilities','env','-\x20Glob\x20search\x20`','Invalid\x20arguments:\x20','API\x20error\x20(auth/rate-limit)','Unknown\x20tool:\x20','payload','7992096tVnkII','308517QikQnb','16523628YNSWDu','tool_call_complete','list_directory','\x22>\x0aError\x20reading\x20file:\x20','read','list_directory\x20','metadata','finish','20MIJQvv','ToolException','MORPH_API_KEY','PathError','substring','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','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','Bearer\x20','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','Unknown\x20error','isArray','ReadError','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','.\x20Path:\x20','terminationReason','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','\x0a...\x20(truncated,\x20total:\x20','\x0aOptions:','tool_call_error','--api-key=','post','MORPH_WARP_GREP_TIMEOUT','cwd','requiresApiKey','user','path_validation_start','ms:','ENABLE_WORKSPACE_MODE','ENOENT','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','\x20(new\x20file)','timings','api-key','stack','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','realpath','file_read_failed','morph-','instructions','13688glQFPR','For\x20deletions:\x0a','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','normalize','\x20valid\x20directories','timeout','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','resolve','WarpGrep\x20sub-tool\x20errors:\x20','searchGitHub','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.','codebase_search','source','45FtTqBK','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','file_read_complete','number','unknown',',\x20modified\x20','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','role','LocalRipgrepProvider','description','startsWith','edit_file','@morphllm/morphmcp\x20','includes','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','mcp-filesystem','14kicccm','path_validation_failed','constructor','completed_with_file_errors','completionId','path','arguments','morph-v3-large','code_edit','.git','every','SubToolError','Tool\x20\x22','readFile','floor','basename','43782jJPZrI','assistant','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','repo_path','tsconfig.json','roots','1447340CKyTxa','application/json','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','FileReadError','-\x20Listed\x20directory\x20`','map','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','inputSchema','GitHub\x20search\x20failed:\x20','instruction','array','Error:\x20','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','some','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','0.2.0','data','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','--api-key','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','grep','debug','access','changes','\x22.\x20Known\x20tools:\x20','lines','Parent\x20directory\x20does\x20not\x20exist:\x20','\x0a</file>','terminated','../package.json','argv','tool_call_id','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','--help','errors','RipgrepError','MORPH_API_URL','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'];a0_0x484b=function(){return _0x4e8163;};return a0_0x484b();}import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x179cb1 from'fs/promises';import a0_0x2b211b from'path';import a0_0x480327 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_0x24fdaa from'axios';function fixPathRepetition(_0x78a992){const _0x1249fb=a0_0x41c0,_0x37c659=_0x78a992[_0x1249fb(0x28d)](a0_0x2b211b[_0x1249fb(0x289)])[_0x1249fb(0x282)](Boolean);if(_0x37c659[_0x1249fb(0x28c)]<0x2)return null;for(let _0xaaae62=Math[_0x1249fb(0x22c)](_0x37c659[_0x1249fb(0x28c)]/0x2);_0xaaae62>=0x1;_0xaaae62--){for(let _0x43807b=0x0;_0x43807b<=_0x37c659[_0x1249fb(0x28c)]-0x2*_0xaaae62;_0x43807b++){const _0x3860de=_0x37c659[_0x1249fb(0x25c)](_0x43807b,_0x43807b+_0xaaae62),_0x5ad865=_0x37c659[_0x1249fb(0x25c)](_0x43807b+_0xaaae62,_0x43807b+0x2*_0xaaae62);if(_0x3860de[_0x1249fb(0x228)]((_0x304315,_0x1fad87)=>_0x304315===_0x5ad865[_0x1fad87])){const _0x44738d=[..._0x37c659[_0x1249fb(0x25c)](0x0,_0x43807b),..._0x37c659[_0x1249fb(0x25c)](_0x43807b+_0xaaae62)];return a0_0x2b211b[_0x1249fb(0x289)]+_0x44738d[_0x1249fb(0x27e)](a0_0x2b211b[_0x1249fb(0x289)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x2fd045=a0_0x41c0;try{const _0x1f339f=require(_0x2fd045(0x251));return _0x1f339f['version']??'unknown';}catch(_0x2bb643){return logMcpStderr(_0x2fd045(0x1e6),_0x2bb643),_0x2fd045(0x212);}}function printHelp(){const _0x192096=a0_0x41c0;console[_0x192096(0x1b7)](_0x192096(0x21a)+getPackageVersion()),console[_0x192096(0x1b7)](_0x192096(0x203)),console[_0x192096(0x1b7)](_0x192096(0x1eb)),console[_0x192096(0x1b7)](_0x192096(0x278)),console[_0x192096(0x1b7)](_0x192096(0x245)),console[_0x192096(0x1b7)](_0x192096(0x1df)),console[_0x192096(0x1b7)](_0x192096(0x29f)),console[_0x192096(0x1b7)](_0x192096(0x26c)),console[_0x192096(0x1b7)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x5a9e7(0x252)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x5a9e7(0x291),'-v','-V']),HELP_FLAGS=new Set([a0_0x5a9e7(0x255),'-h']);function a0_0x41c0(_0x59718b,_0x488300){_0x59718b=_0x59718b-0x1a1;const _0x484ba9=a0_0x484b();let _0x41c05b=_0x484ba9[_0x59718b];return _0x41c05b;}cliArgs['some'](_0x533e93=>VERSION_FLAGS[a0_0x5a9e7(0x2c2)](_0x533e93))&&(console[a0_0x5a9e7(0x1b7)](a0_0x5a9e7(0x21a)+getPackageVersion()),process[a0_0x5a9e7(0x297)](0x0));cliArgs[a0_0x5a9e7(0x241)](_0x5834af=>HELP_FLAGS[a0_0x5a9e7(0x2c2)](_0x5834af))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x1a328e){const _0x1b1f1a=a0_0x5a9e7;for(let _0x390396=0x0;_0x390396<cliArgs[_0x1b1f1a(0x28c)];_0x390396++){const _0x1bd5ac=cliArgs[_0x390396];if(_0x1bd5ac[_0x1b1f1a(0x218)]('--'+_0x1a328e+'='))return _0x1bd5ac['slice'](('--'+_0x1a328e+'=')[_0x1b1f1a(0x28c)]);if(_0x1bd5ac==='--'+_0x1a328e&&_0x390396+0x1<cliArgs[_0x1b1f1a(0x28c)])return cliArgs[_0x390396+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS['has'](arg))continue;if(arg[a0_0x5a9e7(0x218)](a0_0x5a9e7(0x1ed)))continue;if(arg===a0_0x5a9e7(0x246)){i++;continue;}args[a0_0x5a9e7(0x1c6)](arg);}const WORKSPACE_ROOT=process[a0_0x5a9e7(0x1ca)]['WORKSPACE_ROOT']||process[a0_0x5a9e7(0x1ca)]['PWD']||process[a0_0x5a9e7(0x1f0)](),ENABLE_WORKSPACE_MODE=process[a0_0x5a9e7(0x1ca)][a0_0x5a9e7(0x1f5)]!==a0_0x5a9e7(0x2b4),MORPH_API_KEY=getCliArg(a0_0x5a9e7(0x1fa))??process['env'][a0_0x5a9e7(0x1dc)],MORPH_API_URL=process[a0_0x5a9e7(0x1ca)][a0_0x5a9e7(0x258)],MORPH_LARGE_APPLY=process[a0_0x5a9e7(0x1ca)]['MORPH_LARGE_APPLY']!==a0_0x5a9e7(0x2b4),MORPH_WARP_GREP_TIMEOUT=process[a0_0x5a9e7(0x1ca)][a0_0x5a9e7(0x1ef)]?parseInt(process[a0_0x5a9e7(0x1ca)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set(['edit_file',a0_0x5a9e7(0x20c),a0_0x5a9e7(0x2a5)]),DEFAULT_DISABLED_TOOLS=new Set([a0_0x5a9e7(0x219)]),DISABLED_TOOLS=process[a0_0x5a9e7(0x1ca)]['DISABLED_TOOLS']?new Set(process[a0_0x5a9e7(0x1ca)]['DISABLED_TOOLS'][a0_0x5a9e7(0x28d)](',')[a0_0x5a9e7(0x239)](_0x5606f5=>_0x5606f5['trim']())[a0_0x5a9e7(0x282)](_0x52f2de=>_0x52f2de[a0_0x5a9e7(0x28c)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS['size']>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x5a9e7(0x2c2)](tool)&&console[a0_0x5a9e7(0x271)](a0_0x5a9e7(0x266)+tool+a0_0x5a9e7(0x24c)+[...KNOWN_TOOL_NAMES][a0_0x5a9e7(0x27e)](',\x20'));}console[a0_0x5a9e7(0x271)]('Disabled\x20tools:\x20'+[...DISABLED_TOOLS][a0_0x5a9e7(0x27e)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5a9e7(0x218)]('sk-')&&!MORPH_API_KEY[a0_0x5a9e7(0x218)]('morph-')&&logMcpStderr(a0_0x5a9e7(0x242));async function reportMorphError(_0x5c0cbf){const _0x42afc3=a0_0x5a9e7;try{await a0_0x24fdaa[_0x42afc3(0x1ee)](_0x42afc3(0x2b0),{..._0x5c0cbf,'timestamp':new Date()[_0x42afc3(0x29d)](),'source':_0x5c0cbf[_0x42afc3(0x20d)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x5c0cbf[_0x42afc3(0x2a2)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x42afc3(0x235),'Authorization':_0x42afc3(0x1e1)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x105747,_0x1d32f5){const _0x45b272=a0_0x5a9e7;if(_0x105747&&typeof _0x105747===_0x45b272(0x1c4)&&_0x45b272(0x27c)in _0x105747)return _0x105747['status'];if(_0x105747&&typeof _0x105747===_0x45b272(0x1c4)&&_0x45b272(0x2ab)in _0x105747)return _0x105747['response']?.[_0x45b272(0x27c)];const _0xc7eb77=_0x1d32f5['match'](/\b(401|429)\b/);return _0xc7eb77?parseInt(_0xc7eb77[0x1],0xa):null;}function handleMorphAPIError(_0x5c47ab){const _0x3906fc=a0_0x5a9e7,_0x5a0f59=_0x5c47ab instanceof Error?_0x5c47ab[_0x3906fc(0x1b1)]:String(_0x5c47ab),_0x57d82b=extractStatusCode(_0x5c47ab,_0x5a0f59);switch(_0x57d82b){case 0x191:return{'content':[{'type':'text','text':_0x3906fc(0x264)}],'isError':!![]};case 0x1ad:return{'content':[{'type':'text','text':_0x3906fc(0x230)}],'isError':!![]};default:return null;}}args[a0_0x5a9e7(0x28c)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr(a0_0x5a9e7(0x29e)),logMcpStderr(a0_0x5a9e7(0x247)),logMcpStderr(a0_0x5a9e7(0x2a8)));function normalizePath(_0x24afb0){const _0x2e6d3e=a0_0x5a9e7;return a0_0x2b211b[_0x2e6d3e(0x204)](_0x24afb0);}function expandHome(_0x293d49){const _0x443688=a0_0x5a9e7;if(_0x293d49[_0x443688(0x218)]('~/')||_0x293d49==='~')return a0_0x2b211b[_0x443688(0x27e)](a0_0x480327['homedir'](),_0x293d49['slice'](0x1));return _0x293d49;}let allowedDirectories=await Promise[a0_0x5a9e7(0x2ad)](args[a0_0x5a9e7(0x239)](async _0x228ea9=>{const _0x2500db=a0_0x5a9e7,_0x5345c7=expandHome(_0x228ea9),_0x4cd231=a0_0x2b211b[_0x2500db(0x208)](_0x5345c7);try{const _0x6441cf=await a0_0x179cb1[_0x2500db(0x1fd)](_0x4cd231);return normalizePath(_0x6441cf);}catch(_0x1c998c){return normalizePath(_0x4cd231);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5a9e7(0x1c6)](workspaceDir),logMcpStderr(a0_0x5a9e7(0x26f)+workspaceDir+a0_0x5a9e7(0x2b7)));}catch(a0_0x336d39){logMcpStderr(a0_0x5a9e7(0x20f)+a0_0x336d39);}async function detectWorkspaceRoot(_0x4c6c1b){const _0x2fb0ef=a0_0x5a9e7;let _0x591826=a0_0x2b211b[_0x2fb0ef(0x208)](_0x4c6c1b);const _0x4c157f=[_0x2fb0ef(0x227),'.vscode','package.json','Cargo.toml','pyproject.toml','go.mod',_0x2fb0ef(0x1c1),_0x2fb0ef(0x232),_0x2fb0ef(0x285)];while(_0x591826!==a0_0x2b211b['dirname'](_0x591826)){for(const _0x4ef516 of _0x4c157f){const _0x39b9de=a0_0x2b211b[_0x2fb0ef(0x27e)](_0x591826,_0x4ef516);try{return await a0_0x179cb1[_0x2fb0ef(0x24a)](_0x39b9de),normalizePath(_0x591826);}catch{}}_0x591826=a0_0x2b211b[_0x2fb0ef(0x2a7)](_0x591826);}return normalizePath(_0x4c6c1b);}await Promise['all'](args[a0_0x5a9e7(0x239)](async _0x804c57=>{const _0x4041a3=a0_0x5a9e7;try{const _0x364a66=await a0_0x179cb1['stat'](expandHome(_0x804c57));!_0x364a66['isDirectory']()&&(logMcpStderr('Error:\x20'+_0x804c57+_0x4041a3(0x262)),process[_0x4041a3(0x297)](0x1));}catch(_0x43b5d2){logMcpStderr(_0x4041a3(0x1b3)+_0x804c57+':',_0x43b5d2),process['exit'](0x1);}}));async function validatePath(_0x588bc5){const _0x5075cf=a0_0x5a9e7,_0x493d05=expandHome(_0x588bc5),_0x38db43=a0_0x2b211b['resolve'](_0x493d05);logger[_0x5075cf(0x249)]('MCP',_0x5075cf(0x1f3),{'raw_path':_0x588bc5,'absolute':_0x38db43});try{const _0x347034=await a0_0x179cb1[_0x5075cf(0x1fd)](_0x38db43);return logger['debug'](_0x5075cf(0x276),_0x5075cf(0x1be),{'resolved':_0x347034,'symlink':_0x347034!==_0x38db43}),_0x347034;}catch(_0x20c10c){if(_0x20c10c[_0x5075cf(0x1ab)]==='ENOENT'){const _0x2879ff=a0_0x2b211b['dirname'](_0x38db43);try{const _0x4d260c=await a0_0x179cb1[_0x5075cf(0x1fd)](_0x2879ff),_0x4679e5=a0_0x2b211b[_0x5075cf(0x27e)](_0x4d260c,a0_0x2b211b[_0x5075cf(0x22d)](_0x38db43));return logger[_0x5075cf(0x249)](_0x5075cf(0x276),'path_validation_resolved',{'resolved':_0x4679e5,'new_file':!![]}),_0x4679e5;}catch{logger['error'](_0x5075cf(0x276),_0x5075cf(0x21f),{'raw_path':_0x588bc5,'error':_0x5075cf(0x24e)+_0x2879ff});throw new Error(_0x5075cf(0x24e)+_0x2879ff);}}logger[_0x5075cf(0x271)](_0x5075cf(0x276),_0x5075cf(0x21f),{'raw_path':_0x588bc5,'error':_0x20c10c['message']});throw _0x20c10c;}}const MorphEditFileArgsSchema=z[a0_0x5a9e7(0x1c4)]({'path':z[a0_0x5a9e7(0x288)](),'code_edit':z[a0_0x5a9e7(0x288)]()[a0_0x5a9e7(0x2b9)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0x5a9e7(0x288)]()[a0_0x5a9e7(0x2b9)](a0_0x5a9e7(0x2aa)),'dryRun':z['boolean']()['default'](![])[a0_0x5a9e7(0x2b9)]('Preview\x20changes\x20without\x20applying\x20them.')}),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_0x5a9e7(0x1c4)]({'search_string':z[a0_0x5a9e7(0x288)]()[a0_0x5a9e7(0x2b9)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x5a9e7(0x288)]()[a0_0x5a9e7(0x2b9)]('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'),'search_type':z[a0_0x5a9e7(0x284)]([a0_0x5a9e7(0x1a4),a0_0x5a9e7(0x261)])[a0_0x5a9e7(0x267)]()[a0_0x5a9e7(0x2b9)](a0_0x5a9e7(0x23a))}),WarpGrepGitHubArgsSchema=z[a0_0x5a9e7(0x1c4)]({'search_string':z[a0_0x5a9e7(0x288)]()[a0_0x5a9e7(0x2b9)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x5a9e7(0x288)]()[a0_0x5a9e7(0x267)]()[a0_0x5a9e7(0x2b9)](a0_0x5a9e7(0x20b)),'owner_repo':z[a0_0x5a9e7(0x288)]()['optional']()[a0_0x5a9e7(0x2b9)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z['string']()[a0_0x5a9e7(0x267)]()['describe']('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0x5a9e7(0x288)]()[a0_0x5a9e7(0x2b9)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x5a9e7(0x288)]()[a0_0x5a9e7(0x2b9)](a0_0x5a9e7(0x28a)),'branch':z['string']()[a0_0x5a9e7(0x267)]()[a0_0x5a9e7(0x2b9)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z['string']()[a0_0x5a9e7(0x267)]()[a0_0x5a9e7(0x2b9)](a0_0x5a9e7(0x1aa)),'targetDirectories':z[a0_0x5a9e7(0x23e)](z['string']())[a0_0x5a9e7(0x1a4)]([])[a0_0x5a9e7(0x2b9)](a0_0x5a9e7(0x1a5)),'limit':z[a0_0x5a9e7(0x211)]()[a0_0x5a9e7(0x267)]()['default'](0xa)[a0_0x5a9e7(0x2b9)](a0_0x5a9e7(0x2ac))}),server=new Server({'name':'morph-mcp','version':a0_0x5a9e7(0x243)},{'capabilities':{'tools':{}}});server[a0_0x5a9e7(0x1c7)](ListToolsRequestSchema,async()=>{const _0x2659dc=a0_0x5a9e7,_0x15d431=[{'name':_0x2659dc(0x219),'description':_0x2659dc(0x207)+_0x2659dc(0x26a)+_0x2659dc(0x240)+_0x2659dc(0x254)+'Benefits:\x0a'+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x2659dc(0x265)+_0x2659dc(0x214)+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+_0x2659dc(0x1a7)+_0x2659dc(0x2b8)+_0x2659dc(0x2b5)+_0x2659dc(0x202)+_0x2659dc(0x21c)+_0x2659dc(0x1a3)+'Rules:\x0a'+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+_0x2659dc(0x25e)+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x2659dc(0x2a4)+_0x2659dc(0x259)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x2659dc(0x281),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x2659dc(0x20c),'description':_0x2659dc(0x1e0)+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'+_0x2659dc(0x1e9)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x1497ef=_0x15d431[_0x2659dc(0x282)](_0x16c8e9=>{const _0x4f3c3f=_0x2659dc;if(DISABLED_TOOLS['has'](_0x16c8e9[_0x4f3c3f(0x26b)]))return console[_0x4f3c3f(0x271)](_0x4f3c3f(0x1a9)+_0x16c8e9[_0x4f3c3f(0x26b)]+_0x4f3c3f(0x27b)),![];if(_0x4f3c3f(0x1f1)in _0x16c8e9&&_0x16c8e9['requiresApiKey']&&!MORPH_API_KEY)return logMcpStderr(_0x4f3c3f(0x26e)+_0x16c8e9['name']+_0x4f3c3f(0x1ae)),![];return!![];});return{'tools':_0x1497ef[_0x2659dc(0x239)](_0x548f2f=>({'name':_0x548f2f[_0x2659dc(0x26b)],'description':_0x548f2f[_0x2659dc(0x217)],'inputSchema':_0x548f2f[_0x2659dc(0x23b)]}))};}),server[a0_0x5a9e7(0x1c7)](CallToolRequestSchema,async _0x3a84ef=>{const _0x3d061a=a0_0x5a9e7,{name:_0x4e4578,arguments:_0x3b30af}=_0x3a84ef[_0x3d061a(0x2c0)],_0x36d916=Date[_0x3d061a(0x1c5)]();logger[_0x3d061a(0x249)]('MCP','tool_call_received',{'tool':_0x4e4578,'args':_0x4e4578===_0x3d061a(0x219)?{'path':_0x3b30af?.[_0x3d061a(0x223)],'instruction':_0x3b30af?.[_0x3d061a(0x23d)]||_0x3b30af?.[_0x3d061a(0x200)],'dryRun':_0x3b30af?.[_0x3d061a(0x2a0)]}:_0x3b30af});try{if(!MORPH_API_KEY)return{'content':[{'type':'text','text':_0x3d061a(0x1b0)}],'isError':!![]};if(!MORPH_API_KEY[_0x3d061a(0x218)](_0x3d061a(0x2bd))&&!MORPH_API_KEY[_0x3d061a(0x218)](_0x3d061a(0x1ff)))return{'content':[{'type':_0x3d061a(0x2a9),'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[_0x3d061a(0x2c2)](_0x4e4578))return{'content':[{'type':'text','text':_0x3d061a(0x22a)+_0x4e4578+_0x3d061a(0x1e2)}],'isError':![]};switch(_0x4e4578){case'edit_file':{const _0x534175=_0x3b30af&&typeof _0x3b30af==='object'&&_0x3d061a(0x200)in _0x3b30af&&!('instruction'in _0x3b30af)?{..._0x3b30af,'instruction':_0x3b30af[_0x3d061a(0x200)],'instructions':undefined}:_0x3b30af,_0x5cc39a=MorphEditFileArgsSchema['safeParse'](_0x534175);if(!_0x5cc39a[_0x3d061a(0x287)])throw new Error(_0x3d061a(0x273)+_0x5cc39a['error']);const _0x1beafa=await validatePath(_0x5cc39a['data'][_0x3d061a(0x223)]);let _0x13cf29=null,_0x4f2fc4=!![],_0x1da537=null;try{_0x13cf29=await a0_0x179cb1[_0x3d061a(0x22b)](_0x1beafa,_0x3d061a(0x1c3)),logger[_0x3d061a(0x249)](_0x3d061a(0x276),_0x3d061a(0x210),{'path':_0x1beafa,'size_bytes':_0x13cf29[_0x3d061a(0x28c)]});}catch(_0x49df03){const _0x2f99f3=_0x49df03[_0x3d061a(0x1ab)];_0x2f99f3===_0x3d061a(0x1f6)?(_0x4f2fc4=![],_0x13cf29='',logger[_0x3d061a(0x249)]('MCP',_0x3d061a(0x210),{'path':_0x1beafa,'exists':![]})):(_0x1da537='Failed\x20to\x20read\x20file:\x20'+(_0x2f99f3||_0x3d061a(0x212))+_0x3d061a(0x290)+(_0x49df03 instanceof Error?_0x49df03[_0x3d061a(0x1b1)]:String(_0x49df03)),logger['error']('MCP',_0x3d061a(0x1fe),{'path':_0x1beafa,'error':_0x1da537}),logMcpStderr(_0x3d061a(0x26e)+_0x1da537));}let _0x32b7c8;try{const _0x230d5a=MORPH_API_KEY;if(!_0x230d5a)throw new Error(_0x3d061a(0x2bc));const _0x46e301=a0_0x2b211b['dirname'](_0x1beafa),_0x84cca2=a0_0x2b211b[_0x3d061a(0x22d)](_0x1beafa);logger[_0x3d061a(0x249)]('MCP','api_request_start',{'model':_0x3d061a(0x28b),'path':_0x5cc39a['data']['path'],'instruction_len':_0x5cc39a[_0x3d061a(0x244)][_0x3d061a(0x23d)][_0x3d061a(0x28c)],'code_edit_len':_0x5cc39a[_0x3d061a(0x244)][_0x3d061a(0x226)]['length'],'original_code_len':_0x13cf29?.[_0x3d061a(0x28c)]??0x0,'dry_run':_0x5cc39a['data'][_0x3d061a(0x2a0)]});const _0x286b80=Date[_0x3d061a(0x1c5)](),_0xb6be7=await executeEditFile({'target_filepath':_0x84cca2,'code_edit':_0x5cc39a[_0x3d061a(0x244)]['code_edit'],'instruction':_0x5cc39a[_0x3d061a(0x244)][_0x3d061a(0x23d)]},{'morphApiKey':_0x230d5a,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x46e301,'autoWrite':!_0x5cc39a[_0x3d061a(0x244)][_0x3d061a(0x2a0)],'generateUdiff':![],'debug':![]}),_0x2499e9=Date[_0x3d061a(0x1c5)]()-_0x286b80;_0x32b7c8=_0xb6be7[_0x3d061a(0x222)];if(!_0xb6be7[_0x3d061a(0x287)])throw new Error(_0xb6be7[_0x3d061a(0x271)]||_0x3d061a(0x25b));const _0x1edc30=_0xb6be7[_0x3d061a(0x24b)],_0xcf306c='added\x20'+_0x1edc30[_0x3d061a(0x2b1)]+',\x20removed\x20'+_0x1edc30['linesRemoved']+_0x3d061a(0x213)+_0x1edc30[_0x3d061a(0x280)];logger[_0x3d061a(0x249)]('MCP',_0x3d061a(0x1d3),{'tool':_0x3d061a(0x219),'success':!![],'latency_ms':Date[_0x3d061a(0x1c5)]()-_0x36d916,'edit_latency_ms':_0x2499e9,'changes':{'added':_0x1edc30[_0x3d061a(0x2b1)],'removed':_0x1edc30[_0x3d061a(0x27a)],'modified':_0x1edc30[_0x3d061a(0x280)]},'completion_id':_0x32b7c8});if(_0x5cc39a[_0x3d061a(0x244)][_0x3d061a(0x2a0)])return{'content':[{'type':_0x3d061a(0x2a9),'text':'Morph\x20Edit\x20Preview'+(_0x4f2fc4?'':_0x3d061a(0x1f8))+':\x20'+_0x5cc39a['data'][_0x3d061a(0x23d)]+_0x3d061a(0x1ad)+_0xcf306c+_0x3d061a(0x1e7)+_0x5cc39a[_0x3d061a(0x244)][_0x3d061a(0x223)]+'.'}]};return{'content':[{'type':_0x3d061a(0x2a9),'text':_0x3d061a(0x28f)+(_0x4f2fc4?_0x3d061a(0x2be):'Created\x20File')+':\x20'+_0x5cc39a[_0x3d061a(0x244)][_0x3d061a(0x23d)]+'.\x20Changes:\x20'+_0xcf306c+_0x3d061a(0x1e7)+_0x5cc39a[_0x3d061a(0x244)][_0x3d061a(0x223)]+'.'}]};}catch(_0x145687){const _0x18a3fc=handleMorphAPIError(_0x145687);if(_0x18a3fc)return logger['error'](_0x3d061a(0x276),_0x3d061a(0x1ec),{'tool':_0x3d061a(0x219),'error':_0x3d061a(0x1cd),'latency_ms':Date[_0x3d061a(0x1c5)]()-_0x36d916}),_0x18a3fc;const _0x57db0a=_0x145687 instanceof Error?_0x145687['message']:String(_0x145687);return logger['error'](_0x3d061a(0x276),'tool_call_error',{'tool':'edit_file','error':_0x57db0a,'path':_0x5cc39a['data'][_0x3d061a(0x223)],'validated_path':_0x1beafa,'latency_ms':Date[_0x3d061a(0x1c5)]()-_0x36d916,'stack':_0x145687 instanceof Error?_0x145687['stack']:undefined}),reportMorphError({'error_message':_0x57db0a,'error_type':_0x145687 instanceof Error?_0x145687[_0x3d061a(0x220)][_0x3d061a(0x26b)]:_0x3d061a(0x1ac),'context':{'tool':_0x3d061a(0x219),'completion_id':_0x32b7c8,'file_path':_0x5cc39a[_0x3d061a(0x244)][_0x3d061a(0x223)],'validated_path':_0x1beafa,'instruction':_0x5cc39a['data']['instruction'],'model':MORPH_LARGE_APPLY?_0x3d061a(0x225):_0x3d061a(0x28b),'dry_run':_0x5cc39a[_0x3d061a(0x244)][_0x3d061a(0x2a0)],'file_exists':_0x4f2fc4,'file_read_error':_0x1da537,'file_readable':_0x13cf29!==null,'request_content':{'path':_0x5cc39a[_0x3d061a(0x244)][_0x3d061a(0x223)],'code_edit':_0x5cc39a[_0x3d061a(0x244)]['code_edit'],'instruction':_0x5cc39a[_0x3d061a(0x244)][_0x3d061a(0x23d)],'original_code':_0x13cf29!==null?_0x13cf29[_0x3d061a(0x28c)]>0xc350?_0x13cf29[_0x3d061a(0x1de)](0x0,0xc350)+_0x3d061a(0x1ea)+_0x13cf29[_0x3d061a(0x28c)]+_0x3d061a(0x295):_0x13cf29:'[could\x20not\x20read\x20file:\x20'+(_0x1da537||_0x3d061a(0x1ba))+']','original_code_length':_0x13cf29?.[_0x3d061a(0x28c)]??0x0,'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x3d061a(0x28b),'dry_run':_0x5cc39a[_0x3d061a(0x244)][_0x3d061a(0x2a0)]}},'stack_trace':_0x145687 instanceof Error?_0x145687['stack']:undefined,'source':_0x3d061a(0x21d)})[_0x3d061a(0x286)](()=>{}),{'content':[{'type':_0x3d061a(0x2a9),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x57db0a}],'isError':!![]};}}case _0x3d061a(0x20c):{const _0x36caff=WarpGrepArgsSchema[_0x3d061a(0x1b8)](_0x3b30af);if(!_0x36caff[_0x3d061a(0x287)])return{'content':[{'type':_0x3d061a(0x2a9),'text':'Invalid\x20arguments:\x20'+_0x36caff[_0x3d061a(0x271)]}],'isError':!![]};const _0x331a66=_0x1447ed=>{const _0xca6d47=_0x3d061a,_0x379146=[];for(const _0x1db667 of _0x1447ed||[]){if(_0x1db667[_0xca6d47(0x215)]===_0xca6d47(0x22f)&&Array[_0xca6d47(0x1e4)](_0x1db667[_0xca6d47(0x269)]))for(const _0x599387 of _0x1db667[_0xca6d47(0x269)]){try{const _0x1167be=_0x599387[_0xca6d47(0x294)]?.[_0xca6d47(0x26b)],_0x21aa1c=JSON[_0xca6d47(0x1bf)](_0x599387[_0xca6d47(0x294)]?.[_0xca6d47(0x224)]||'{}');if(_0x1167be==='grep_search')_0x379146[_0xca6d47(0x1c6)](_0xca6d47(0x2bf)+_0x21aa1c[_0xca6d47(0x1a8)]+'\x27\x20'+(_0x21aa1c[_0xca6d47(0x223)]||'.'));else{if(_0x1167be===_0xca6d47(0x1d6))_0x379146[_0xca6d47(0x1c6)](_0xca6d47(0x1a1)+_0x21aa1c[_0xca6d47(0x223)]);else{if(_0x1167be===_0xca6d47(0x1d4))_0x379146[_0xca6d47(0x1c6)](_0xca6d47(0x1d7)+(_0x21aa1c[_0xca6d47(0x1bb)]||'.'));else{if(_0x1167be===_0xca6d47(0x2ae))_0x379146[_0xca6d47(0x1c6)](_0xca6d47(0x29a)+_0x21aa1c['pattern']+'\x27\x20'+(_0x21aa1c['path']||'.'));else _0x1167be===_0xca6d47(0x1d9)&&_0x379146['push']('finish');}}}}catch{}}}return _0x379146;},_0xe22731=_0x3d0a94=>{const _0x50feba=_0x3d061a,_0x479154=[];if(!_0x3d0a94||!Array[_0x50feba(0x1e4)](_0x3d0a94))return _0x479154;const _0x3034d1=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x50feba(0x1dd),'tool':_0x50feba(0x1d6)},{'pattern':/\[READ ERROR\]/,'error_type':_0x50feba(0x1e5),'tool':_0x50feba(0x1d6)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':_0x50feba(0x1d6)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x50feba(0x257),'tool':_0x50feba(0x248)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x50feba(0x29c),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':_0x50feba(0x2b6),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x50feba(0x2bb),'tool':_0x50feba(0x1d6)},{'pattern':/not a text file/,'error_type':_0x50feba(0x2b6),'tool':_0x50feba(0x1d6)},{'pattern':/symbolic link/,'error_type':_0x50feba(0x2bb),'tool':'read'},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x50feba(0x1d6)},{'pattern':/status="error"/,'error_type':_0x50feba(0x1db),'tool':'unknown'}];let _0x4797a6=0x0;for(const _0x4ea829 of _0x3d0a94){_0x4ea829[_0x50feba(0x215)]===_0x50feba(0x22f)&&Array[_0x50feba(0x1e4)](_0x4ea829[_0x50feba(0x269)])&&_0x4797a6++;const _0x43d073=_0x4ea829['content'];if((_0x4ea829['role']===_0x50feba(0x1af)||_0x4ea829[_0x50feba(0x215)]===_0x50feba(0x1f2))&&_0x43d073&&typeof _0x43d073===_0x50feba(0x288))for(const {pattern:_0x3acfc3,error_type:_0x21bd00,tool:_0x5f09e4}of _0x3034d1){const _0x161cc4=_0x43d073['match'](new RegExp(_0x3acfc3[_0x50feba(0x20d)],'g'));if(_0x161cc4)for(const _0x187f15 of _0x161cc4){const _0x381704=_0x43d073[_0x50feba(0x29b)](_0x187f15),_0x12b53d=_0x43d073[_0x50feba(0x1de)](_0x381704,Math['min'](_0x381704+0xc8,_0x43d073[_0x50feba(0x28c)]));_0x479154['push']({'tool':_0x5f09e4,'error_type':_0x21bd00,'error_message':_0x12b53d[_0x50feba(0x28d)]('\x0a')[0x0],'turn':_0x4797a6});}}}return _0x479154;};try{const _0x41e478=a0_0x2b211b[_0x3d061a(0x208)](_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x231)]),_0x328a9c=_0x36caff[_0x3d061a(0x244)]['search_type'],_0x2f5aef=_0x328a9c===_0x3d061a(0x261)?{'allowNames':[_0x3d061a(0x261)]}:undefined,_0x38c3e2=new LocalRipgrepProvider(_0x41e478,undefined,_0x2f5aef);logger[_0x3d061a(0x249)](_0x3d061a(0x276),'provider_created',{'type':_0x3d061a(0x216),'repo_root':_0x41e478,'search_type':_0x328a9c||_0x3d061a(0x1a4)}),logger[_0x3d061a(0x249)]('MCP',_0x3d061a(0x1c8),{'query':_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x2af)],'repo_root':_0x41e478,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x396062=Date['now'](),_0x373ef7=await runWarpGrep({'searchTerm':_0x36caff[_0x3d061a(0x244)]['search_string'],'repoRoot':_0x41e478,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x38c3e2,'search_type':_0x328a9c}),_0x23ae6e=Date[_0x3d061a(0x1c5)]()-_0x396062,_0x3b8823=_0x373ef7[_0x3d061a(0x1d9)]?.[_0x3d061a(0x1d8)]?.[_0x3d061a(0x1a2)]?.['length']??0x0;logger[_0x3d061a(0x249)](_0x3d061a(0x276),_0x3d061a(0x283),{'termination':_0x373ef7[_0x3d061a(0x1e8)],'turns':_0x373ef7[_0x3d061a(0x1f9)]?.['turns']??0x0,'files_found':_0x3b8823,'latency_ms':_0x23ae6e});const _0x3184d1=_0xe22731(_0x373ef7[_0x3d061a(0x2c3)]);_0x3184d1['length']>0x0&&reportMorphError({'error_message':_0x3d061a(0x209)+_0x3184d1['length']+_0x3d061a(0x299),'error_type':_0x3d061a(0x229),'level':_0x3d061a(0x1bc),'tool':'codebase_search','context':{'repo_path':_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x231)],'query':_0x36caff['data'][_0x3d061a(0x2af)],'model':_0x3d061a(0x1b4),'termination_reason':_0x373ef7[_0x3d061a(0x1e8)],'sub_tool_errors':_0x3184d1,'timings':_0x373ef7[_0x3d061a(0x1f9)],'tool_calls':_0x331a66(_0x373ef7[_0x3d061a(0x2c3)]),'messages':_0x373ef7[_0x3d061a(0x2c3)]?.[_0x3d061a(0x239)](_0x390169=>({'role':_0x390169[_0x3d061a(0x215)],'content':_0x390169[_0x3d061a(0x1b2)],..._0x390169[_0x3d061a(0x269)]?{'tool_calls':_0x390169['tool_calls'][_0x3d061a(0x28c)]}:{},..._0x390169['tool_call_id']?{'tool_call_id':_0x390169['tool_call_id']}:{}}))},'source':_0x3d061a(0x21d)})[_0x3d061a(0x286)](()=>{});let _0x5f51f9='';if(_0x373ef7['terminationReason']===_0x3d061a(0x270)&&_0x373ef7['finish']?.[_0x3d061a(0x1d8)]?.[_0x3d061a(0x1a2)]){const _0x1b72b6=_0x373ef7[_0x3d061a(0x1d9)][_0x3d061a(0x1d8)]['files'];if(_0x1b72b6['length']===0x0)return _0x5f51f9=_0x373ef7[_0x3d061a(0x1d9)][_0x3d061a(0x1cf)]||_0x3d061a(0x268),{'content':[{'type':_0x3d061a(0x2a9),'text':_0x5f51f9}]};const _0x36d343=[],_0x4a5dbc=[_0x3d061a(0x1f7)];for(const _0x360300 of _0x373ef7[_0x3d061a(0x2c3)]){if(_0x360300[_0x3d061a(0x215)]===_0x3d061a(0x22f)&&Array[_0x3d061a(0x1e4)](_0x360300[_0x3d061a(0x269)]))for(const _0x1b87f4 of _0x360300[_0x3d061a(0x269)]){try{const _0x5c26c6=_0x1b87f4[_0x3d061a(0x294)]?.[_0x3d061a(0x26b)],_0xa67e95=JSON['parse'](_0x1b87f4[_0x3d061a(0x294)]?.[_0x3d061a(0x224)]||'{}');if(_0x5c26c6===_0x3d061a(0x2b3))_0x4a5dbc[_0x3d061a(0x1c6)]('-\x20Grepped\x20\x27'+_0xa67e95['pattern']+_0x3d061a(0x263)+(_0xa67e95[_0x3d061a(0x223)]||'.')+'`');else{if(_0x5c26c6===_0x3d061a(0x1d6))_0x4a5dbc[_0x3d061a(0x1c6)]('-\x20Read\x20file\x20`'+_0xa67e95['path']+'`');else{if(_0x5c26c6===_0x3d061a(0x1d4))_0x4a5dbc[_0x3d061a(0x1c6)](_0x3d061a(0x238)+(_0xa67e95[_0x3d061a(0x1bb)]||'.')+'`');else _0x5c26c6===_0x3d061a(0x2ae)&&_0x4a5dbc[_0x3d061a(0x1c6)](_0x3d061a(0x1cb)+_0xa67e95[_0x3d061a(0x1a8)]+'`\x20in\x20`'+(_0xa67e95[_0x3d061a(0x223)]||'.')+'`');}}}catch{}}}_0x36d343[_0x3d061a(0x1c6)](_0x4a5dbc[_0x3d061a(0x27e)]('\x0a'));const _0x589665=['',_0x3d061a(0x27d)];for(const _0x13d5a0 of _0x1b72b6){if(_0x13d5a0['lines']==='*')_0x589665['push']('-\x20'+_0x13d5a0[_0x3d061a(0x223)]+':*');else{if(Array[_0x3d061a(0x1e4)](_0x13d5a0[_0x3d061a(0x24d)])){const _0x382780=_0x13d5a0[_0x3d061a(0x24d)][_0x3d061a(0x239)](([_0x246f2a,_0x116cbc])=>{if(_0x246f2a===_0x116cbc)return''+_0x246f2a;return _0x246f2a+'-'+_0x116cbc;});_0x589665[_0x3d061a(0x1c6)]('-\x20'+_0x13d5a0[_0x3d061a(0x223)]+':'+_0x382780[_0x3d061a(0x27e)](','));}else _0x589665['push']('-\x20'+_0x13d5a0['path']+':*');}}_0x589665[_0x3d061a(0x1c6)](''),_0x36d343[_0x3d061a(0x1c6)](_0x589665[_0x3d061a(0x27e)]('\x0a')),_0x36d343['push']('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x29d2f9=[],_0x3c312f=[];for(const _0x44c855 of _0x1b72b6){let _0x4d2da3=a0_0x2b211b[_0x3d061a(0x208)](_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x231)],_0x44c855[_0x3d061a(0x223)]),_0xee6b0a=null,_0x2861a8=null;try{_0xee6b0a=await a0_0x179cb1[_0x3d061a(0x22b)](_0x4d2da3,{'encoding':_0x3d061a(0x1c3)});}catch(_0x107771){const _0x4584e3=fixPathRepetition(_0x4d2da3);if(_0x4584e3)try{_0xee6b0a=await a0_0x179cb1['readFile'](_0x4584e3,{'encoding':_0x3d061a(0x1c3)}),_0x4d2da3=_0x4584e3;}catch{_0x2861a8=_0x107771 instanceof Error?_0x107771:new Error(String(_0x107771));}else _0x2861a8=_0x107771 instanceof Error?_0x107771:new Error(String(_0x107771));}if(_0xee6b0a!==null){const _0x163be4=_0xee6b0a[_0x3d061a(0x28d)](/\r?\n/),_0x2676e7=[];if(_0x44c855[_0x3d061a(0x24d)]==='*'||!Array[_0x3d061a(0x1e4)](_0x44c855[_0x3d061a(0x24d)]))for(let _0x312021=0x1;_0x312021<=_0x163be4[_0x3d061a(0x28c)];_0x312021++){const _0x41f446=_0x163be4[_0x312021-0x1];_0x2676e7[_0x3d061a(0x1c6)](_0x312021+'|\x20'+_0x41f446);}else for(const [_0x52b6c0,_0x42ce17]of _0x44c855[_0x3d061a(0x24d)]){_0x2676e7[_0x3d061a(0x28c)]>0x0&&_0x2676e7[_0x3d061a(0x1c6)]('');for(let _0x5c7ab2=_0x52b6c0;_0x5c7ab2<=_0x42ce17&&_0x5c7ab2<=_0x163be4[_0x3d061a(0x28c)];_0x5c7ab2++){const _0x5aa357=_0x163be4[_0x5c7ab2-0x1];_0x2676e7[_0x3d061a(0x1c6)](_0x5c7ab2+'|\x20'+_0x5aa357);}}_0x3c312f[_0x3d061a(0x1c6)]({'path':_0x44c855[_0x3d061a(0x223)],'content':_0x2676e7[_0x3d061a(0x27e)]('\x0a')});}else _0x29d2f9[_0x3d061a(0x1c6)](_0x3d061a(0x2a1)+_0x44c855[_0x3d061a(0x223)]+_0x3d061a(0x1d5)+(_0x2861a8?.[_0x3d061a(0x1b1)]||_0x3d061a(0x1e3))+_0x3d061a(0x24f));}try{const _0x5d9da3=await compactFileContexts(_0x3c312f,_0x36caff['data'][_0x3d061a(0x2af)],MORPH_API_KEY,MORPH_API_URL);for(const _0x1ebb1e of _0x5d9da3){_0x29d2f9[_0x3d061a(0x1c6)]('<file\x20path=\x22'+_0x1ebb1e['path']+_0x3d061a(0x279)+_0x1ebb1e[_0x3d061a(0x1b2)]+'\x0a</file>');}}catch(_0x439f41){logger[_0x3d061a(0x1bc)](_0x3d061a(0x276),'compaction_failed',{'error':_0x439f41 instanceof Error?_0x439f41[_0x3d061a(0x1b1)]:String(_0x439f41),'files_count':_0x3c312f[_0x3d061a(0x28c)]});for(const _0x1cdbfb of _0x3c312f){_0x29d2f9['push']('<file\x20path=\x22'+_0x1cdbfb['path']+_0x3d061a(0x279)+_0x1cdbfb[_0x3d061a(0x1b2)]+_0x3d061a(0x24f));}}_0x36d343[_0x3d061a(0x1c6)](_0x29d2f9['join']('\x0a\x0a')),_0x5f51f9=_0x36d343[_0x3d061a(0x27e)]('\x0a');const _0xc8e0ba=_0x373ef7[_0x3d061a(0x256)]?.['filter'](_0x24fd35=>_0x24fd35[_0x3d061a(0x1b1)]?.[_0x3d061a(0x218)](_0x3d061a(0x2c4)))||[];if(_0xc8e0ba[_0x3d061a(0x28c)]>0x0){const _0x1bab4b=_0xc8e0ba['map'](_0x13caad=>_0x13caad[_0x3d061a(0x1b1)])[_0x3d061a(0x27e)](';\x20');reportMorphError({'error_message':_0x1bab4b,'error_type':_0x3d061a(0x237),'context':{'tool':_0x3d061a(0x20c),'repo_path':_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x231)],'query':_0x36caff[_0x3d061a(0x244)]['search_string'],'model':_0x3d061a(0x1b4),'termination_reason':_0x3d061a(0x221),'error_count':_0xc8e0ba['length'],'is_timeout':![],'timings':_0x373ef7[_0x3d061a(0x1f9)],'files_attempted':_0x1b72b6[_0x3d061a(0x239)](_0x5b78ac=>({'path':_0x5b78ac[_0x3d061a(0x223)],'lines':_0x5b78ac[_0x3d061a(0x24d)]})),'tool_calls':_0x331a66(_0x373ef7[_0x3d061a(0x2c3)]),'messages':_0x373ef7['messages']?.['map'](_0x113b63=>({'role':_0x113b63[_0x3d061a(0x215)],'content':_0x113b63[_0x3d061a(0x1b2)],..._0x113b63[_0x3d061a(0x269)]?{'tool_calls':_0x113b63['tool_calls'][_0x3d061a(0x28c)]}:{},..._0x113b63['tool_call_id']?{'tool_call_id':_0x113b63['tool_call_id']}:{}})),'request_content':{'query':_0x36caff['data'][_0x3d061a(0x2af)],'repo_path':_0x36caff['data']['repo_path'],'repoRoot':a0_0x2b211b[_0x3d061a(0x208)](_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x231)]),'model':_0x3d061a(0x1b4)}},'source':_0x3d061a(0x21d)})[_0x3d061a(0x286)](()=>{});}}else{if(_0x373ef7[_0x3d061a(0x1e8)]===_0x3d061a(0x250)&&_0x373ef7[_0x3d061a(0x256)][_0x3d061a(0x28c)]>0x0){const _0xc15af1=_0x373ef7['errors'][_0x3d061a(0x239)](_0x5abf4f=>_0x5abf4f[_0x3d061a(0x1b1)])[_0x3d061a(0x27e)](';\x20');_0x5f51f9=_0x3d061a(0x23f)+_0xc15af1;const _0x158673=_0xc15af1['toLowerCase']()['includes'](_0x3d061a(0x206))||_0xc15af1[_0x3d061a(0x2a3)]()[_0x3d061a(0x21b)]('timed\x20out')||_0xc15af1['toLowerCase']()[_0x3d061a(0x21b)]('etimedout'),_0x367120=_0x373ef7[_0x3d061a(0x1d9)]?.[_0x3d061a(0x1d8)]?.[_0x3d061a(0x1a2)],_0x1f5bb6=_0x373ef7[_0x3d061a(0x256)][0x0];reportMorphError({'error_message':_0xc15af1,'error_type':_0x158673?_0x3d061a(0x27f):_0x1f5bb6?.[_0x3d061a(0x220)]?.[_0x3d061a(0x26b)]||'WarpGrepError','context':{'tool':_0x3d061a(0x20c),'repo_path':_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x231)],'query':_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x2af)],'model':_0x3d061a(0x1b4),'termination_reason':_0x373ef7[_0x3d061a(0x1e8)],'error_count':_0x373ef7[_0x3d061a(0x256)][_0x3d061a(0x28c)],'is_timeout':_0x158673,'timings':_0x373ef7['timings'],'files_attempted':_0x367120?.[_0x3d061a(0x239)](_0x541d5c=>({'path':_0x541d5c[_0x3d061a(0x223)],'lines':_0x541d5c[_0x3d061a(0x24d)]})),'tool_calls':_0x331a66(_0x373ef7['messages']),'messages':_0x373ef7[_0x3d061a(0x2c3)]?.[_0x3d061a(0x239)](_0x205290=>({'role':_0x205290[_0x3d061a(0x215)],'content':_0x205290[_0x3d061a(0x1b2)],..._0x205290[_0x3d061a(0x269)]?{'tool_calls':_0x205290[_0x3d061a(0x269)][_0x3d061a(0x28c)]}:{},..._0x205290[_0x3d061a(0x253)]?{'tool_call_id':_0x205290[_0x3d061a(0x253)]}:{}})),'request_content':{'query':_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x2af)],'repo_path':_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x231)],'repoRoot':a0_0x2b211b[_0x3d061a(0x208)](_0x36caff['data']['repo_path']),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x1f5bb6?.[_0x3d061a(0x1fb)]||undefined,'source':_0x3d061a(0x21d)})[_0x3d061a(0x286)](()=>{});}else _0x5f51f9=_0x3d061a(0x277);}return{'content':[{'type':_0x3d061a(0x2a9),'text':_0x5f51f9}]};}catch(_0x146565){const _0x3b576f=handleMorphAPIError(_0x146565);if(_0x3b576f)return logger[_0x3d061a(0x271)]('MCP',_0x3d061a(0x1ec),{'tool':_0x3d061a(0x20c),'error':_0x3d061a(0x1cd),'latency_ms':Date[_0x3d061a(0x1c5)]()-_0x36d916}),_0x3b576f;const _0x5cc724=_0x146565 instanceof Error?_0x146565[_0x3d061a(0x1b1)]:String(_0x146565);logger[_0x3d061a(0x271)](_0x3d061a(0x276),_0x3d061a(0x1ec),{'tool':_0x3d061a(0x20c),'error':_0x5cc724,'repo_path':_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x231)],'query':_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x2af)],'latency_ms':Date[_0x3d061a(0x1c5)]()-_0x36d916});const _0xc0337=_0x5cc724['toLowerCase']()[_0x3d061a(0x21b)]('timeout')||_0x5cc724[_0x3d061a(0x2a3)]()['includes']('timed\x20out')||_0x5cc724[_0x3d061a(0x2a3)]()[_0x3d061a(0x21b)](_0x3d061a(0x1b6))||_0x146565 instanceof Error&&_0x146565[_0x3d061a(0x26b)]===_0x3d061a(0x27f);return reportMorphError({'error_message':_0x5cc724,'error_type':_0xc0337?_0x3d061a(0x27f):_0x146565 instanceof Error?_0x146565[_0x3d061a(0x220)][_0x3d061a(0x26b)]:_0x3d061a(0x1ac),'context':{'tool':_0x3d061a(0x20c),'repo_path':_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x231)],'query':_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x2af)],'model':_0x3d061a(0x1b4),'is_timeout':_0xc0337,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x2af)],'repo_path':_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x231)],'repoRoot':a0_0x2b211b[_0x3d061a(0x208)](_0x36caff[_0x3d061a(0x244)][_0x3d061a(0x231)]),'model':_0x3d061a(0x1b4)}},'stack_trace':_0x146565 instanceof Error?_0x146565[_0x3d061a(0x1fb)]:undefined,'source':_0x3d061a(0x21d)})['catch'](()=>{}),{'content':[{'type':_0x3d061a(0x2a9),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x5cc724}],'isError':![]};}}case _0x3d061a(0x2a5):{const _0x2986e1=WarpGrepGitHubArgsSchema[_0x3d061a(0x1b8)](_0x3b30af);if(!_0x2986e1['success'])return{'content':[{'type':_0x3d061a(0x2a9),'text':_0x3d061a(0x1cc)+_0x2986e1['error']}],'isError':!![]};const _0x460ee8=_0x2986e1['data'][_0x3d061a(0x293)]||_0x2986e1[_0x3d061a(0x244)][_0x3d061a(0x1b5)];if(!_0x460ee8)return{'content':[{'type':_0x3d061a(0x2a9),'text':_0x3d061a(0x1c2)}],'isError':!![]};const _0x50e3a9=MORPH_API_KEY;if(!_0x50e3a9)throw new Error(_0x3d061a(0x2bc));const _0x27a752=Date[_0x3d061a(0x1c5)]();logger['debug'](_0x3d061a(0x276),'github_search_start',{'identifier':_0x460ee8,'query':_0x2986e1[_0x3d061a(0x244)][_0x3d061a(0x2af)],'branch':_0x2986e1[_0x3d061a(0x244)][_0x3d061a(0x1a6)]});try{const _0x534dbf=new WarpGrepClient({'morphApiKey':_0x50e3a9,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x435a14=await _0x534dbf[_0x3d061a(0x20a)]({'searchTerm':_0x2986e1[_0x3d061a(0x244)][_0x3d061a(0x2af)],'github':_0x460ee8,'branch':_0x2986e1[_0x3d061a(0x244)][_0x3d061a(0x1a6)]}),_0x314817=Date[_0x3d061a(0x1c5)]()-_0x27a752;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x314817+_0x3d061a(0x1bd)+_0x435a14[_0x3d061a(0x287)]);const _0x2d61b1=formatResult(_0x435a14);return{'content':[{'type':_0x3d061a(0x2a9),'text':_0x2d61b1}]};}catch(_0x547011){const _0x130174=handleMorphAPIError(_0x547011);if(_0x130174)return _0x130174;const _0x27ef5d=Date[_0x3d061a(0x1c5)]()-_0x27a752,_0x553a44=_0x547011 instanceof Error?_0x547011[_0x3d061a(0x1b1)]:String(_0x547011);return logMcpStderr(_0x3d061a(0x25f)+_0x27ef5d+_0x3d061a(0x1f4),_0x553a44),reportMorphError({'error_message':_0x553a44,'error_type':_0x547011 instanceof Error?_0x547011[_0x3d061a(0x220)][_0x3d061a(0x26b)]:'UnknownError','context':{'tool':_0x3d061a(0x2a5),'github_url':_0x460ee8,'search_string':_0x2986e1[_0x3d061a(0x244)]['search_string'],'branch':_0x2986e1['data'][_0x3d061a(0x1a6)]},'stack_trace':_0x547011 instanceof Error?_0x547011[_0x3d061a(0x1fb)]:undefined,'source':'mcp-filesystem','tool':_0x3d061a(0x2a5),'latency_ms':_0x27ef5d})['catch'](()=>{}),{'content':[{'type':_0x3d061a(0x2a9),'text':_0x3d061a(0x23c)+_0x553a44}],'isError':![]};}}default:throw new Error(_0x3d061a(0x1ce)+_0x4e4578);}}catch(_0x26aae8){const _0x7e9c26=_0x26aae8 instanceof Error?_0x26aae8[_0x3d061a(0x1b1)]:String(_0x26aae8);return reportMorphError({'error_message':_0x7e9c26,'error_type':_0x26aae8 instanceof Error?_0x26aae8['constructor'][_0x3d061a(0x26b)]:'UnknownError','context':{'tool':_0x4e4578,'arguments':_0x3b30af?JSON[_0x3d061a(0x2c1)](_0x3b30af)[_0x3d061a(0x1de)](0x0,0x1f4):undefined,'mcp_server_version':_0x3d061a(0x243)},'stack_trace':_0x26aae8 instanceof Error?_0x26aae8[_0x3d061a(0x1fb)]:undefined,'source':_0x3d061a(0x21d)})['catch'](()=>{}),{'content':[{'type':_0x3d061a(0x2a9),'text':_0x3d061a(0x23f)+_0x7e9c26}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x4efe3c){const _0x324703=a0_0x5a9e7,_0x415f41=await getValidRootDirectories(_0x4efe3c);if(_0x415f41[_0x324703(0x28c)]>0x0)allowedDirectories=[..._0x415f41],logMcpStderr(_0x324703(0x236)+_0x415f41['length']+_0x324703(0x205));else{logMcpStderr(_0x324703(0x25a));if(ENABLE_WORKSPACE_MODE)try{const _0x58020b=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x58020b&&(allowedDirectories=[_0x58020b],logMcpStderr(_0x324703(0x2ba)+_0x58020b));}catch(_0x246f8b){logMcpStderr(_0x324703(0x274)+_0x246f8b);}}}server[a0_0x5a9e7(0x260)](RootsListChangedNotificationSchema,async()=>{const _0x271952=a0_0x5a9e7;try{const _0x5ed46a=await server[_0x271952(0x25d)]();_0x5ed46a&&'roots'in _0x5ed46a&&await updateAllowedDirectoriesFromRoots(_0x5ed46a[_0x271952(0x233)]);}catch(_0x55ef3b){logMcpStderr(_0x271952(0x272),_0x55ef3b instanceof Error?_0x55ef3b['message']:String(_0x55ef3b));}}),server[a0_0x5a9e7(0x28e)]=async()=>{const _0x4969c6=a0_0x5a9e7,_0x19629b=server[_0x4969c6(0x1c9)]();if(_0x19629b?.[_0x4969c6(0x233)])try{const _0xe1e5a=await server[_0x4969c6(0x25d)]();_0xe1e5a&&_0x4969c6(0x233)in _0xe1e5a?await updateAllowedDirectoriesFromRoots(_0xe1e5a[_0x4969c6(0x233)]):logMcpStderr(_0x4969c6(0x1fc));}catch(_0x34d740){logMcpStderr(_0x4969c6(0x296),_0x34d740 instanceof Error?_0x34d740[_0x4969c6(0x1b1)]:String(_0x34d740));}else{if(allowedDirectories[_0x4969c6(0x28c)]>0x0)logMcpStderr(_0x4969c6(0x2a6),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x4969c6(0x298));else throw new Error(_0x4969c6(0x275));}}};async function runServer(){const _0x34fff5=a0_0x5a9e7,_0x3e13c4=new StdioServerTransport();await server[_0x34fff5(0x1b9)](_0x3e13c4),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x34fff5(0x28c)]===0x0&&logMcpStderr(_0x34fff5(0x1c0));}runServer()[a0_0x5a9e7(0x286)](_0x482043=>{const _0x556dd1=a0_0x5a9e7;logMcpStderr(_0x556dd1(0x2b2),_0x482043),process[_0x556dd1(0x297)](0x1);});
2
+ const a0_0x52d368=a0_0x179e;(function(_0x117f1f,_0x1ff137){const _0x1861c2=a0_0x179e,_0xb059c8=_0x117f1f();while(!![]){try{const _0x4bc348=parseInt(_0x1861c2(0x13a))/0x1*(-parseInt(_0x1861c2(0x254))/0x2)+-parseInt(_0x1861c2(0x186))/0x3*(parseInt(_0x1861c2(0x1a2))/0x4)+-parseInt(_0x1861c2(0x21e))/0x5+-parseInt(_0x1861c2(0x244))/0x6+parseInt(_0x1861c2(0x210))/0x7*(parseInt(_0x1861c2(0x256))/0x8)+parseInt(_0x1861c2(0x185))/0x9+parseInt(_0x1861c2(0x14b))/0xa;if(_0x4bc348===_0x1ff137)break;else _0xb059c8['push'](_0xb059c8['shift']());}catch(_0x3d202f){_0xb059c8['push'](_0xb059c8['shift']());}}}(a0_0x227d,0x9e8d1));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_0x114a5e from'fs/promises';import a0_0x1c35ef from'path';import a0_0x5d7550 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_0x42921c from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x5dfdf6){const _0x25ae14=a0_0x179e,_0x3defeb=_0x5dfdf6[_0x25ae14(0x228)](a0_0x1c35ef[_0x25ae14(0x243)])[_0x25ae14(0x14f)](Boolean);if(_0x3defeb[_0x25ae14(0x1a1)]<0x2)return null;for(let _0x16cd23=Math[_0x25ae14(0x1d2)](_0x3defeb['length']/0x2);_0x16cd23>=0x1;_0x16cd23--){for(let _0x12c4b6=0x0;_0x12c4b6<=_0x3defeb[_0x25ae14(0x1a1)]-0x2*_0x16cd23;_0x12c4b6++){const _0x387d33=_0x3defeb[_0x25ae14(0x183)](_0x12c4b6,_0x12c4b6+_0x16cd23),_0x98a22f=_0x3defeb[_0x25ae14(0x183)](_0x12c4b6+_0x16cd23,_0x12c4b6+0x2*_0x16cd23);if(_0x387d33['every']((_0x1140cd,_0x2f5ca1)=>_0x1140cd===_0x98a22f[_0x2f5ca1])){const _0x37be2e=[..._0x3defeb[_0x25ae14(0x183)](0x0,_0x12c4b6),..._0x3defeb[_0x25ae14(0x183)](_0x12c4b6+_0x16cd23)];return a0_0x1c35ef['sep']+_0x37be2e['join'](a0_0x1c35ef['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x36a994=a0_0x179e;try{const _0xb47872=require(_0x36a994(0x192));return _0xb47872[_0x36a994(0x202)]??'unknown';}catch(_0x249e17){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x249e17),_0x36a994(0x139);}}function printHelp(){const _0x24dc3c=a0_0x179e;console[_0x24dc3c(0x157)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x24dc3c(0x157)](_0x24dc3c(0x230)),console[_0x24dc3c(0x157)](_0x24dc3c(0x1a7)),console['log'](_0x24dc3c(0x1b0)),console[_0x24dc3c(0x157)](_0x24dc3c(0x18b)),console[_0x24dc3c(0x157)](_0x24dc3c(0x263)),console['log']('\x0aExamples:'),console[_0x24dc3c(0x157)](_0x24dc3c(0x264)),console[_0x24dc3c(0x157)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x52d368(0x253)][a0_0x52d368(0x183)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x52d368(0x195),'-h']);cliArgs[a0_0x52d368(0x251)](_0x3df83d=>VERSION_FLAGS[a0_0x52d368(0x231)](_0x3df83d))&&(console[a0_0x52d368(0x157)](a0_0x52d368(0x1e6)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x52d368(0x251)](_0x416d75=>HELP_FLAGS[a0_0x52d368(0x231)](_0x416d75))&&(printHelp(),process[a0_0x52d368(0x18a)](0x0));function getCliArg(_0x56cb04){const _0x320597=a0_0x52d368;for(let _0x5bc49d=0x0;_0x5bc49d<cliArgs[_0x320597(0x1a1)];_0x5bc49d++){const _0x3f9f64=cliArgs[_0x5bc49d];if(_0x3f9f64[_0x320597(0x242)]('--'+_0x56cb04+'='))return _0x3f9f64['slice'](('--'+_0x56cb04+'=')[_0x320597(0x1a1)]);if(_0x3f9f64==='--'+_0x56cb04&&_0x5bc49d+0x1<cliArgs['length'])return cliArgs[_0x5bc49d+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x52d368(0x1a1)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x52d368(0x231)](arg)||HELP_FLAGS[a0_0x52d368(0x231)](arg))continue;if(arg['startsWith'](a0_0x52d368(0x145)))continue;if(arg===a0_0x52d368(0x16f)){i++;continue;}args[a0_0x52d368(0x224)](arg);}function a0_0x179e(_0xdb5d29,_0x2ec524){_0xdb5d29=_0xdb5d29-0x134;const _0x227da6=a0_0x227d();let _0x179efa=_0x227da6[_0xdb5d29];return _0x179efa;}const WORKSPACE_ROOT=process['env'][a0_0x52d368(0x1d4)]||process[a0_0x52d368(0x229)][a0_0x52d368(0x1a8)]||process[a0_0x52d368(0x234)](),ENABLE_WORKSPACE_MODE=process[a0_0x52d368(0x229)]['ENABLE_WORKSPACE_MODE']!=='false',MORPH_API_KEY=getCliArg(a0_0x52d368(0x143))??process[a0_0x52d368(0x229)][a0_0x52d368(0x1da)],MORPH_API_URL=process[a0_0x52d368(0x229)]['MORPH_API_URL'],MORPH_LARGE_APPLY=process[a0_0x52d368(0x229)][a0_0x52d368(0x21d)]!==a0_0x52d368(0x1e7),MORPH_WARP_GREP_TIMEOUT=process[a0_0x52d368(0x229)][a0_0x52d368(0x250)]?parseInt(process[a0_0x52d368(0x229)][a0_0x52d368(0x250)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x52d368(0x229)]['DISABLED_TOOLS']?new Set(process[a0_0x52d368(0x229)][a0_0x52d368(0x137)]['split'](',')[a0_0x52d368(0x21c)](_0x17d14a=>_0x17d14a[a0_0x52d368(0x259)]())['filter'](_0x19ea9e=>_0x19ea9e['length']>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x52d368(0x220)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x52d368(0x231)](tool)&&console[a0_0x52d368(0x174)](a0_0x52d368(0x17d)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES][a0_0x52d368(0x1cb)](',\x20'));}console[a0_0x52d368(0x174)](a0_0x52d368(0x13c)+[...DISABLED_TOOLS][a0_0x52d368(0x1cb)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x52d368(0x242)](a0_0x52d368(0x166))&&!MORPH_API_KEY[a0_0x52d368(0x242)](a0_0x52d368(0x198))&&logMcpStderr(a0_0x52d368(0x235));function a0_0x227d(){const _0x5df29d=['push','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','data','split','env','path','\x22>\x0a','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','-\x20Listed\x20directory\x20`','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','Morph\x20Edit\x20','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','has','Morph\x20Edit\x20Preview','source','cwd','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','LocalRipgrepProvider','File\x20read\x20error:','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','readFile','GITHUB_CODEBASE_SEARCH','payload','composer.json','realpath','repo_path','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','arguments','oninitialized','startsWith','sep','6737724SLlDQF','tool','turns','number','morph-mcp','utf-8','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','timeout','content','access','Relevant\x20context\x20found:','dryRun','MORPH_WARP_GREP_TIMEOUT','some','boolean','argv','277188eKeskY','toLowerCase','8uxGuma','[could\x20not\x20read\x20file:\x20','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','trim','EDIT_FILE','ToolException','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','Repository\x20identifier','Error\x20running\x20fast\x20context\x20search:\x20','catch','list_directory','\x22>\x0aError\x20reading\x20file:\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','\x20\x20morph-mcp','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','path_validation_failed','etimedout','DISABLED_TOOLS','tool_call_id','unknown','7rFRTGf','Warning:\x20','Disabled\x20tools:\x20','tool_call_error','name','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','Cargo.toml','toISOString','read','api-key','provider_created','--api-key=','linesRemoved','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','terminated','Error:\x20','16191060xbcCJG','timed\x20out','inputSchema','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','filter','For\x20deletions:\x0a','path_validation_start','grep','substring','resolve','\x20chars)','instruction','log','<file\x20path=\x22','RipgrepError','ReadError','enum','github_codebase_search','optional','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Created\x20File','\x20is\x20not\x20a\x20directory','.cursor','normalize','Bearer\x20','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','Tool\x20\x22','sk-','GitHub\x20search\x20failed:\x20','❌\x20Morph\x20Edit\x20Failed:\x20','all','min','path_validation_resolved','string','finish','PathError','--api-key','runWarpGrep_call','search_type','Warning:\x20Workspace\x20fallback\x20failed:\x20','roots','error','tool_calls','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','linesModified','SymlinkError','safeParse','includes','TimeoutError','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','\x20(new\x20file)','node_modules','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Failed\x20to\x20request\x20roots\x20from\x20client:','morph-v3-fast','slice','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','11605878XRmzLv','24bVvxem','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','errors','exit','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','Tool\x20','description','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','Specific\x20commit\x20hash\x20to\x20search','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','../package.json','stack','completed_with_file_errors','--help','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','file_read_complete','morph-','api_request_start','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','CODEBASE_SEARCH','searchGitHub','post','messages','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.','search_string','length','142904aPnkNL','warp_grep_complete','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','SubToolError','RipgrepNotAvailable','\x0aOptions:','PWD','compaction_failed','stringify','github_url','mcp-filesystem','Workspace\x20mode\x20enabled:\x20Using\x20','completionId','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.','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','success','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','codebase_search','changes','text','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','BinaryFile','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','glob','constructor','requiresApiKey','listRoots','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a',',\x20modified\x20','morph-v3-large','files','match','package.json','.vscode','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','parse','[github_codebase_search]\x20Done\x20in\x20','Unknown\x20error','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20','homedir','join','FileReadError','API\x20error\x20(auth/rate-limit)','Failed\x20to\x20read\x20file:\x20','grep_search','glob\x20\x27','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','floor','default','WORKSPACE_ROOT','role','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','.\x20Changes:\x20','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Here\x20is\x20the\x20content\x20of\x20files:\x0a','MORPH_API_KEY','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','ENOENT','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.',',\x20removed\x20','tsconfig.json','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','\x20error(s)','basename','branch','@morphllm/morphmcp\x20','false','edit_file','instructions','morph-warp-grep-v2.1','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','UnknownError','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','timings','params','terminationReason','\x20-\x20','Invalid\x20arguments:\x20','go.mod','assistant','added\x20','unknown\x20error','owner_repo','now','github_search_start','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','https://morphllm.com/api/error-report','dirname','warn','\x0a</file>','0.2.0','isArray','version','function','debug','user','code_edit','metadata','FileNotFound','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Parent\x20directory\x20does\x20not\x20exist:\x20','warp_grep_start','setRequestHandler','[github_codebase_search]\x20Failed\x20in\x20','MCP','Unknown\x20tool:\x20','7506086rceXST','describe','lines','-\x20Glob\x20search\x20`','object','Preview\x20changes\x20without\x20applying\x20them.','response','.git','pattern','`\x20in\x20`','completed','linesAdded','map','MORPH_LARGE_APPLY','4763005yiCeQl','message','size','WarpGrepError','WarpGrep\x20sub-tool\x20errors:\x20','read\x20'];a0_0x227d=function(){return _0x5df29d;};return a0_0x227d();}async function reportMorphError(_0xd616aa){const _0x3c2ee3=a0_0x52d368;try{await a0_0x42921c[_0x3c2ee3(0x19d)](_0x3c2ee3(0x1fc),{..._0xd616aa,'timestamp':new Date()[_0x3c2ee3(0x141)](),'source':_0xd616aa[_0x3c2ee3(0x233)]||_0x3c2ee3(0x1ac),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0xd616aa['context']}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x3c2ee3(0x163)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x520b3d,_0x44dc0d){const _0x40ae4b=a0_0x52d368;if(_0x520b3d&&typeof _0x520b3d===_0x40ae4b(0x214)&&'status'in _0x520b3d)return _0x520b3d['status'];if(_0x520b3d&&typeof _0x520b3d===_0x40ae4b(0x214)&&_0x40ae4b(0x216)in _0x520b3d)return _0x520b3d['response']?.['status'];const _0x3579c4=_0x44dc0d['match'](/\b(401|429)\b/);return _0x3579c4?parseInt(_0x3579c4[0x1],0xa):null;}function handleMorphAPIError(_0x5cc86e){const _0x3c26c4=a0_0x52d368,_0x390c8e=_0x5cc86e instanceof Error?_0x5cc86e[_0x3c26c4(0x21f)]:String(_0x5cc86e),_0x536748=extractStatusCode(_0x5cc86e,_0x390c8e);switch(_0x536748){case 0x191:return{'content':[{'type':_0x3c26c4(0x1b5),'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':'text','text':_0x3c26c4(0x1c4)}],'isError':!![]};default:return null;}}args[a0_0x52d368(0x1a1)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr(a0_0x52d368(0x191)),logMcpStderr(a0_0x52d368(0x1fb)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x52d368(0x209)),logMcpStderr(a0_0x52d368(0x1db)));function normalizePath(_0x5c6db4){const _0x234f86=a0_0x52d368;return a0_0x1c35ef[_0x234f86(0x162)](_0x5c6db4);}function expandHome(_0x2623c7){const _0x492484=a0_0x52d368;if(_0x2623c7[_0x492484(0x242)]('~/')||_0x2623c7==='~')return a0_0x1c35ef[_0x492484(0x1cb)](a0_0x5d7550[_0x492484(0x1ca)](),_0x2623c7[_0x492484(0x183)](0x1));return _0x2623c7;}let allowedDirectories=await Promise[a0_0x52d368(0x169)](args[a0_0x52d368(0x21c)](async _0x4d240d=>{const _0x5f277d=a0_0x52d368,_0x968db0=expandHome(_0x4d240d),_0x8fdb6=a0_0x1c35ef[_0x5f277d(0x154)](_0x968db0);try{const _0x20dc68=await a0_0x114a5e[_0x5f277d(0x23d)](_0x8fdb6);return normalizePath(_0x20dc68);}catch(_0x427206){return normalizePath(_0x8fdb6);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x52d368(0x1a1)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x52d368(0x224)](workspaceDir),logMcpStderr(a0_0x52d368(0x1ad)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x128b1b){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x128b1b);}async function detectWorkspaceRoot(_0x1c7cd0){const _0x8dd621=a0_0x52d368;let _0x535be4=a0_0x1c35ef['resolve'](_0x1c7cd0);const _0x2a1dcc=[_0x8dd621(0x217),_0x8dd621(0x1c3),_0x8dd621(0x1c2),_0x8dd621(0x140),'pyproject.toml',_0x8dd621(0x1f3),_0x8dd621(0x161),_0x8dd621(0x1e1),_0x8dd621(0x23c)];while(_0x535be4!==a0_0x1c35ef[_0x8dd621(0x1fd)](_0x535be4)){for(const _0x308f3a of _0x2a1dcc){const _0x508617=a0_0x1c35ef[_0x8dd621(0x1cb)](_0x535be4,_0x308f3a);try{return await a0_0x114a5e[_0x8dd621(0x24d)](_0x508617),normalizePath(_0x535be4);}catch{}}_0x535be4=a0_0x1c35ef[_0x8dd621(0x1fd)](_0x535be4);}return normalizePath(_0x1c7cd0);}await Promise[a0_0x52d368(0x169)](args['map'](async _0x658c32=>{const _0x39a1a6=a0_0x52d368;try{const _0x5bd8a9=await a0_0x114a5e['stat'](expandHome(_0x658c32));!_0x5bd8a9['isDirectory']()&&(logMcpStderr(_0x39a1a6(0x14a)+_0x658c32+_0x39a1a6(0x160)),process[_0x39a1a6(0x18a)](0x1));}catch(_0xd6a083){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x658c32+':',_0xd6a083),process[_0x39a1a6(0x18a)](0x1);}}));async function validatePath(_0xba31f1){const _0xa7ee44=a0_0x52d368,_0x4ee21e=expandHome(_0xba31f1),_0x7f4624=a0_0x1c35ef[_0xa7ee44(0x154)](_0x4ee21e);logger[_0xa7ee44(0x204)]('MCP',_0xa7ee44(0x151),{'raw_path':_0xba31f1,'absolute':_0x7f4624});try{const _0x30baaa=await a0_0x114a5e['realpath'](_0x7f4624);return logger[_0xa7ee44(0x204)](_0xa7ee44(0x20e),_0xa7ee44(0x16b),{'resolved':_0x30baaa,'symlink':_0x30baaa!==_0x7f4624}),_0x30baaa;}catch(_0x30279d){if(_0x30279d['code']===_0xa7ee44(0x1de)){const _0x53dbc7=a0_0x1c35ef[_0xa7ee44(0x1fd)](_0x7f4624);try{const _0x3abb7e=await a0_0x114a5e[_0xa7ee44(0x23d)](_0x53dbc7),_0x425e6e=a0_0x1c35ef['join'](_0x3abb7e,a0_0x1c35ef[_0xa7ee44(0x1e4)](_0x7f4624));return logger[_0xa7ee44(0x204)](_0xa7ee44(0x20e),'path_validation_resolved',{'resolved':_0x425e6e,'new_file':!![]}),_0x425e6e;}catch{logger[_0xa7ee44(0x174)](_0xa7ee44(0x20e),_0xa7ee44(0x135),{'raw_path':_0xba31f1,'error':_0xa7ee44(0x20a)+_0x53dbc7});throw new Error(_0xa7ee44(0x20a)+_0x53dbc7);}}logger[_0xa7ee44(0x174)]('MCP',_0xa7ee44(0x135),{'raw_path':_0xba31f1,'error':_0x30279d[_0xa7ee44(0x21f)]});throw _0x30279d;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x52d368(0x16c)](),'code_edit':z['string']()[a0_0x52d368(0x211)](a0_0x52d368(0x262)),'instruction':z[a0_0x52d368(0x16c)]()['describe'](a0_0x52d368(0x1df)),'dryRun':z[a0_0x52d368(0x252)]()[a0_0x52d368(0x1d3)](![])[a0_0x52d368(0x211)](a0_0x52d368(0x215))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x52d368(0x1af),WarpGrepArgsSchema=z[a0_0x52d368(0x214)]({'search_string':z[a0_0x52d368(0x16c)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x52d368(0x16c)]()[a0_0x52d368(0x211)]('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'),'search_type':z[a0_0x52d368(0x15b)]([a0_0x52d368(0x1d3),a0_0x52d368(0x17f)])['optional']()[a0_0x52d368(0x211)](a0_0x52d368(0x1e2))}),WarpGrepGitHubArgsSchema=z[a0_0x52d368(0x214)]({'search_string':z['string']()[a0_0x52d368(0x211)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x52d368(0x16c)]()['optional']()[a0_0x52d368(0x211)](a0_0x52d368(0x258)),'owner_repo':z[a0_0x52d368(0x16c)]()['optional']()[a0_0x52d368(0x211)](a0_0x52d368(0x22c)),'branch':z[a0_0x52d368(0x16c)]()['optional']()[a0_0x52d368(0x211)](a0_0x52d368(0x15e))}),CodebaseSearchArgsSchema=z[a0_0x52d368(0x214)]({'query':z[a0_0x52d368(0x16c)]()[a0_0x52d368(0x211)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x52d368(0x16c)]()[a0_0x52d368(0x211)](a0_0x52d368(0x25d)),'branch':z[a0_0x52d368(0x16c)]()[a0_0x52d368(0x15d)]()[a0_0x52d368(0x211)](a0_0x52d368(0x148)),'commitHash':z[a0_0x52d368(0x16c)]()['optional']()[a0_0x52d368(0x211)](a0_0x52d368(0x18f)),'targetDirectories':z['array'](z[a0_0x52d368(0x16c)]())['default']([])['describe'](a0_0x52d368(0x180)),'limit':z[a0_0x52d368(0x247)]()[a0_0x52d368(0x15d)]()['default'](0xa)[a0_0x52d368(0x211)]('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x52d368(0x248),'version':a0_0x52d368(0x200)},{'capabilities':{'tools':{}}});server[a0_0x52d368(0x20c)](ListToolsRequestSchema,async()=>{const _0x255b64=a0_0x52d368,_0x4fd578=[{'name':TOOL_NAMES['EDIT_FILE'],'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+_0x255b64(0x13f)+_0x255b64(0x134)+_0x255b64(0x25c)+'Benefits:\x0a'+_0x255b64(0x1a4)+_0x255b64(0x22e)+_0x255b64(0x176)+_0x255b64(0x1eb)+_0x255b64(0x1c8)+_0x255b64(0x24a)+_0x255b64(0x1dd)+_0x255b64(0x150)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x255b64(0x1dc)+'Rules:\x0a'+_0x255b64(0x14e)+_0x255b64(0x190)+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x255b64(0x23f)+_0x255b64(0x225)+_0x255b64(0x1bd)+_0x255b64(0x1b8),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x255b64(0x19b)],'description':_0x255b64(0x1c9)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x255b64(0x147)+_0x255b64(0x1d6)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x519e3a=_0x4fd578[_0x255b64(0x14f)](_0x6636db=>{const _0x3ad462=_0x255b64;if(DISABLED_TOOLS[_0x3ad462(0x231)](_0x6636db['name']))return console[_0x3ad462(0x174)](_0x3ad462(0x18c)+_0x6636db[_0x3ad462(0x13e)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x3ad462(0x1bb)in _0x6636db&&_0x6636db[_0x3ad462(0x1bb)]&&!MORPH_API_KEY)return logMcpStderr(_0x3ad462(0x13b)+_0x6636db[_0x3ad462(0x13e)]+_0x3ad462(0x196)),![];return!![];});return{'tools':_0x519e3a['map'](_0x1edefd=>({'name':_0x1edefd[_0x255b64(0x13e)],'description':_0x1edefd[_0x255b64(0x18d)],'inputSchema':_0x1edefd[_0x255b64(0x14d)]}))};}),server[a0_0x52d368(0x20c)](CallToolRequestSchema,async _0x214bbf=>{const _0xf4c6c9=a0_0x52d368,{name:_0x22814c,arguments:_0x4e1df1}=_0x214bbf[_0xf4c6c9(0x1ef)],_0xc22f4=Date[_0xf4c6c9(0x1f8)]();logger[_0xf4c6c9(0x204)]('MCP','tool_call_received',{'tool':_0x22814c,'args':_0x22814c==='edit_file'?{'path':_0x4e1df1?.[_0xf4c6c9(0x22a)],'instruction':_0x4e1df1?.[_0xf4c6c9(0x156)]||_0x4e1df1?.[_0xf4c6c9(0x1e9)],'dryRun':_0x4e1df1?.['dryRun']}:_0x4e1df1});try{if(!MORPH_API_KEY)return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x1b6)}],'isError':!![]};if(!MORPH_API_KEY[_0xf4c6c9(0x242)](_0xf4c6c9(0x166))&&!MORPH_API_KEY['startsWith'](_0xf4c6c9(0x198)))return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x19f)}],'isError':!![]};if(DISABLED_TOOLS[_0xf4c6c9(0x231)](_0x22814c))return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x165)+_0x22814c+_0xf4c6c9(0x1ed)}],'isError':![]};switch(_0x22814c){case TOOL_NAMES[_0xf4c6c9(0x25a)]:{const _0x1ab433=_0x4e1df1&&typeof _0x4e1df1===_0xf4c6c9(0x214)&&_0xf4c6c9(0x1e9)in _0x4e1df1&&!(_0xf4c6c9(0x156)in _0x4e1df1)?{..._0x4e1df1,'instruction':_0x4e1df1[_0xf4c6c9(0x1e9)],'instructions':undefined}:_0x4e1df1,_0x378da4=MorphEditFileArgsSchema[_0xf4c6c9(0x17a)](_0x1ab433);if(!_0x378da4[_0xf4c6c9(0x1b1)])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x378da4[_0xf4c6c9(0x174)]);const _0x16b4a2=await validatePath(_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x22a)]);let _0x5bd5a3=null,_0x592b02=!![],_0x15dfc3=null;try{_0x5bd5a3=await a0_0x114a5e[_0xf4c6c9(0x239)](_0x16b4a2,_0xf4c6c9(0x249)),logger['debug']('MCP','file_read_complete',{'path':_0x16b4a2,'size_bytes':_0x5bd5a3[_0xf4c6c9(0x1a1)]});}catch(_0xb4d83d){const _0x5b7b07=_0xb4d83d['code'];_0x5b7b07===_0xf4c6c9(0x1de)?(_0x592b02=![],_0x5bd5a3='',logger['debug']('MCP',_0xf4c6c9(0x197),{'path':_0x16b4a2,'exists':![]})):(_0x15dfc3=_0xf4c6c9(0x1ce)+(_0x5b7b07||_0xf4c6c9(0x139))+_0xf4c6c9(0x1f1)+(_0xb4d83d instanceof Error?_0xb4d83d[_0xf4c6c9(0x21f)]:String(_0xb4d83d)),logger['error'](_0xf4c6c9(0x20e),'file_read_failed',{'path':_0x16b4a2,'error':_0x15dfc3}),logMcpStderr(_0xf4c6c9(0x13b)+_0x15dfc3));}let _0x3f01a4;try{const _0x52506c=MORPH_API_KEY;if(!_0x52506c)throw new Error(_0xf4c6c9(0x187));const _0x35a856=a0_0x1c35ef['dirname'](_0x16b4a2),_0x16e292=a0_0x1c35ef[_0xf4c6c9(0x1e4)](_0x16b4a2);logger[_0xf4c6c9(0x204)](_0xf4c6c9(0x20e),_0xf4c6c9(0x199),{'model':_0xf4c6c9(0x182),'path':_0x378da4['data'][_0xf4c6c9(0x22a)],'instruction_len':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x156)][_0xf4c6c9(0x1a1)],'code_edit_len':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x206)][_0xf4c6c9(0x1a1)],'original_code_len':_0x5bd5a3?.[_0xf4c6c9(0x1a1)]??0x0,'dry_run':_0x378da4[_0xf4c6c9(0x227)]['dryRun']});const _0x24d76d=Date[_0xf4c6c9(0x1f8)](),_0x1ea6a4=await executeEditFile({'target_filepath':_0x16e292,'code_edit':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x206)],'instruction':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x156)]},{'morphApiKey':_0x52506c,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x35a856,'autoWrite':!_0x378da4['data'][_0xf4c6c9(0x24f)],'generateUdiff':![],'debug':![]}),_0x39a5ff=Date[_0xf4c6c9(0x1f8)]()-_0x24d76d;_0x3f01a4=_0x1ea6a4[_0xf4c6c9(0x1ae)];if(!_0x1ea6a4[_0xf4c6c9(0x1b1)])throw new Error(_0x1ea6a4[_0xf4c6c9(0x174)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x4c30d8=_0x1ea6a4[_0xf4c6c9(0x1b4)],_0x334a80=_0xf4c6c9(0x1f5)+_0x4c30d8[_0xf4c6c9(0x21b)]+_0xf4c6c9(0x1e0)+_0x4c30d8[_0xf4c6c9(0x146)]+_0xf4c6c9(0x1be)+_0x4c30d8[_0xf4c6c9(0x178)];logger[_0xf4c6c9(0x204)](_0xf4c6c9(0x20e),'tool_call_complete',{'tool':_0xf4c6c9(0x1e8),'success':!![],'latency_ms':Date['now']()-_0xc22f4,'edit_latency_ms':_0x39a5ff,'changes':{'added':_0x4c30d8[_0xf4c6c9(0x21b)],'removed':_0x4c30d8[_0xf4c6c9(0x146)],'modified':_0x4c30d8['linesModified']},'completion_id':_0x3f01a4});if(_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x24f)])return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x232)+(_0x592b02?'':_0xf4c6c9(0x17e))+':\x20'+_0x378da4['data'][_0xf4c6c9(0x156)]+_0xf4c6c9(0x1d7)+_0x334a80+'.\x20Path:\x20'+_0x378da4['data'][_0xf4c6c9(0x22a)]+'.'}]};return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x22f)+(_0x592b02?'Applied':_0xf4c6c9(0x15f))+':\x20'+_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x156)]+_0xf4c6c9(0x1d7)+_0x334a80+'.\x20Path:\x20'+_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x22a)]+'.'}]};}catch(_0x1aeb5a){const _0x446ff3=handleMorphAPIError(_0x1aeb5a);if(_0x446ff3)return logger['error'](_0xf4c6c9(0x20e),_0xf4c6c9(0x13d),{'tool':'edit_file','error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0xf4c6c9(0x1f8)]()-_0xc22f4}),_0x446ff3;const _0x2fdec9=_0x1aeb5a instanceof Error?_0x1aeb5a[_0xf4c6c9(0x21f)]:String(_0x1aeb5a);return logger[_0xf4c6c9(0x174)](_0xf4c6c9(0x20e),'tool_call_error',{'tool':'edit_file','error':_0x2fdec9,'path':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x22a)],'validated_path':_0x16b4a2,'latency_ms':Date[_0xf4c6c9(0x1f8)]()-_0xc22f4,'stack':_0x1aeb5a instanceof Error?_0x1aeb5a[_0xf4c6c9(0x193)]:undefined}),reportMorphError({'error_message':_0x2fdec9,'error_type':_0x1aeb5a instanceof Error?_0x1aeb5a[_0xf4c6c9(0x1ba)][_0xf4c6c9(0x13e)]:_0xf4c6c9(0x1ec),'context':{'tool':_0xf4c6c9(0x1e8),'completion_id':_0x3f01a4,'file_path':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x22a)],'validated_path':_0x16b4a2,'instruction':_0x378da4[_0xf4c6c9(0x227)]['instruction'],'model':MORPH_LARGE_APPLY?_0xf4c6c9(0x1bf):_0xf4c6c9(0x182),'dry_run':_0x378da4['data']['dryRun'],'file_exists':_0x592b02,'file_read_error':_0x15dfc3,'file_readable':_0x5bd5a3!==null,'request_content':{'path':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x22a)],'code_edit':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x206)],'instruction':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x156)],'original_code':_0x5bd5a3!==null?_0x5bd5a3[_0xf4c6c9(0x1a1)]>0xc350?_0x5bd5a3[_0xf4c6c9(0x153)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x5bd5a3[_0xf4c6c9(0x1a1)]+_0xf4c6c9(0x155):_0x5bd5a3:_0xf4c6c9(0x257)+(_0x15dfc3||_0xf4c6c9(0x1f6))+']','original_code_length':_0x5bd5a3?.[_0xf4c6c9(0x1a1)]??0x0,'model':MORPH_LARGE_APPLY?_0xf4c6c9(0x1bf):_0xf4c6c9(0x182),'dry_run':_0x378da4['data'][_0xf4c6c9(0x24f)]}},'stack_trace':_0x1aeb5a instanceof Error?_0x1aeb5a['stack']:undefined,'source':'mcp-filesystem'})[_0xf4c6c9(0x25f)](()=>{}),{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x168)+_0x2fdec9}],'isError':!![]};}}case TOOL_NAMES[_0xf4c6c9(0x19b)]:{const _0x153b53=WarpGrepArgsSchema[_0xf4c6c9(0x17a)](_0x4e1df1);if(!_0x153b53[_0xf4c6c9(0x1b1)])return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x1f2)+_0x153b53[_0xf4c6c9(0x174)]}],'isError':!![]};const _0x3faed3=_0x5bf861=>{const _0x54277f=_0xf4c6c9,_0x463a6d=[];for(const _0x3c7452 of _0x5bf861||[]){if(_0x3c7452[_0x54277f(0x1d5)]===_0x54277f(0x1f4)&&Array[_0x54277f(0x201)](_0x3c7452[_0x54277f(0x175)]))for(const _0x53910e of _0x3c7452[_0x54277f(0x175)]){try{const _0x50b93e=_0x53910e[_0x54277f(0x203)]?.[_0x54277f(0x13e)],_0x23c70e=JSON['parse'](_0x53910e[_0x54277f(0x203)]?.[_0x54277f(0x240)]||'{}');if(_0x50b93e===_0x54277f(0x1cf))_0x463a6d[_0x54277f(0x224)]('grep\x20\x27'+_0x23c70e[_0x54277f(0x218)]+'\x27\x20'+(_0x23c70e['path']||'.'));else{if(_0x50b93e==='read')_0x463a6d['push'](_0x54277f(0x223)+_0x23c70e[_0x54277f(0x22a)]);else{if(_0x50b93e===_0x54277f(0x260))_0x463a6d[_0x54277f(0x224)]('list_directory\x20'+(_0x23c70e['command']||'.'));else{if(_0x50b93e===_0x54277f(0x1b9))_0x463a6d[_0x54277f(0x224)](_0x54277f(0x1d0)+_0x23c70e[_0x54277f(0x218)]+'\x27\x20'+(_0x23c70e[_0x54277f(0x22a)]||'.'));else _0x50b93e==='finish'&&_0x463a6d['push']('finish');}}}}catch{}}}return _0x463a6d;},_0x80c17b=_0x1d91c9=>{const _0x275d34=_0xf4c6c9,_0x3a612f=[];if(!_0x1d91c9||!Array[_0x275d34(0x201)](_0x1d91c9))return _0x3a612f;const _0x4d980a=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x275d34(0x208),'tool':_0x275d34(0x142)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x275d34(0x16e),'tool':_0x275d34(0x142)},{'pattern':/\[READ ERROR\]/,'error_type':_0x275d34(0x15a),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':_0x275d34(0x142)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x275d34(0x159),'tool':_0x275d34(0x152)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x275d34(0x1a6),'tool':_0x275d34(0x152)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x275d34(0x1b7),'tool':_0x275d34(0x142)},{'pattern':/\[SYMLINK\]/,'error_type':_0x275d34(0x179),'tool':_0x275d34(0x142)},{'pattern':/not a text file/,'error_type':_0x275d34(0x1b7),'tool':'read'},{'pattern':/symbolic link/,'error_type':_0x275d34(0x179),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x275d34(0x15a),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x275d34(0x25b),'tool':_0x275d34(0x139)}];let _0x377e23=0x0;for(const _0x4fa22a of _0x1d91c9){_0x4fa22a[_0x275d34(0x1d5)]===_0x275d34(0x1f4)&&Array[_0x275d34(0x201)](_0x4fa22a[_0x275d34(0x175)])&&_0x377e23++;const _0x9fa899=_0x4fa22a[_0x275d34(0x24c)];if((_0x4fa22a[_0x275d34(0x1d5)]===_0x275d34(0x245)||_0x4fa22a['role']===_0x275d34(0x205))&&_0x9fa899&&typeof _0x9fa899==='string')for(const {pattern:_0x1c151d,error_type:_0x1d5888,tool:_0x5a59c9}of _0x4d980a){const _0xbd3176=_0x9fa899[_0x275d34(0x1c1)](new RegExp(_0x1c151d[_0x275d34(0x233)],'g'));if(_0xbd3176)for(const _0xee4bf of _0xbd3176){const _0x1cee27=_0x9fa899['indexOf'](_0xee4bf),_0x143259=_0x9fa899[_0x275d34(0x153)](_0x1cee27,Math[_0x275d34(0x16a)](_0x1cee27+0xc8,_0x9fa899[_0x275d34(0x1a1)]));_0x3a612f[_0x275d34(0x224)]({'tool':_0x5a59c9,'error_type':_0x1d5888,'error_message':_0x143259['split']('\x0a')[0x0],'turn':_0x377e23});}}}return _0x3a612f;};try{const _0x399039=a0_0x1c35ef['resolve'](_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x23e)]),_0x4adfbe=_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x171)],_0x205cfe=_0x4adfbe===_0xf4c6c9(0x17f)?{'allowNames':[_0xf4c6c9(0x17f)]}:undefined,_0x11eeec=new LocalRipgrepProvider(_0x399039,undefined,_0x205cfe);logger['debug'](_0xf4c6c9(0x20e),_0xf4c6c9(0x144),{'type':_0xf4c6c9(0x236),'repo_root':_0x399039,'search_type':_0x4adfbe||_0xf4c6c9(0x1d3)}),logger[_0xf4c6c9(0x204)](_0xf4c6c9(0x20e),_0xf4c6c9(0x20b),{'query':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],'repo_root':_0x399039,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x1e03c5=Date[_0xf4c6c9(0x1f8)](),_0x12817c=await runWarpGrep({'searchTerm':_0x153b53[_0xf4c6c9(0x227)]['search_string'],'repoRoot':_0x399039,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x11eeec,'search_type':_0x4adfbe}),_0x171851=Date[_0xf4c6c9(0x1f8)]()-_0x1e03c5,_0x47fbea=_0x12817c[_0xf4c6c9(0x16d)]?.[_0xf4c6c9(0x207)]?.['files']?.[_0xf4c6c9(0x1a1)]??0x0;logger[_0xf4c6c9(0x204)]('MCP',_0xf4c6c9(0x1a3),{'termination':_0x12817c[_0xf4c6c9(0x1f0)],'turns':_0x12817c[_0xf4c6c9(0x1ee)]?.[_0xf4c6c9(0x246)]??0x0,'files_found':_0x47fbea,'latency_ms':_0x171851});const _0x234044=_0x80c17b(_0x12817c[_0xf4c6c9(0x19e)]);_0x234044['length']>0x0&&reportMorphError({'error_message':_0xf4c6c9(0x222)+_0x234044[_0xf4c6c9(0x1a1)]+_0xf4c6c9(0x1e3),'error_type':_0xf4c6c9(0x1a5),'level':'warn','tool':_0xf4c6c9(0x1b3),'context':{'repo_path':_0x153b53[_0xf4c6c9(0x227)]['repo_path'],'query':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],'model':_0xf4c6c9(0x1ea),'termination_reason':_0x12817c[_0xf4c6c9(0x1f0)],'sub_tool_errors':_0x234044,'timings':_0x12817c['timings'],'tool_calls':_0x3faed3(_0x12817c[_0xf4c6c9(0x19e)]),'messages':_0x12817c[_0xf4c6c9(0x19e)]?.[_0xf4c6c9(0x21c)](_0x5002b2=>({'role':_0x5002b2[_0xf4c6c9(0x1d5)],'content':_0x5002b2[_0xf4c6c9(0x24c)],..._0x5002b2[_0xf4c6c9(0x175)]?{'tool_calls':_0x5002b2[_0xf4c6c9(0x175)]['length']}:{},..._0x5002b2[_0xf4c6c9(0x138)]?{'tool_call_id':_0x5002b2['tool_call_id']}:{}}))},'source':_0xf4c6c9(0x1ac)})[_0xf4c6c9(0x25f)](()=>{});let _0x32dc5a='';if(_0x12817c[_0xf4c6c9(0x1f0)]===_0xf4c6c9(0x21a)&&_0x12817c[_0xf4c6c9(0x16d)]?.['metadata']?.[_0xf4c6c9(0x1c0)]){const _0x465fe2=_0x12817c[_0xf4c6c9(0x16d)][_0xf4c6c9(0x207)][_0xf4c6c9(0x1c0)];if(_0x465fe2[_0xf4c6c9(0x1a1)]===0x0)return _0x32dc5a=_0x12817c[_0xf4c6c9(0x16d)][_0xf4c6c9(0x23b)]||_0xf4c6c9(0x1fa),{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0x32dc5a}]};const _0x7e6f3d=[],_0x4cacd7=[_0xf4c6c9(0x1b2)];for(const _0x493fb5 of _0x12817c['messages']){if(_0x493fb5['role']===_0xf4c6c9(0x1f4)&&Array[_0xf4c6c9(0x201)](_0x493fb5['tool_calls']))for(const _0x8cb689 of _0x493fb5['tool_calls']){try{const _0x494fba=_0x8cb689[_0xf4c6c9(0x203)]?.[_0xf4c6c9(0x13e)],_0x13276b=JSON[_0xf4c6c9(0x1c5)](_0x8cb689[_0xf4c6c9(0x203)]?.[_0xf4c6c9(0x240)]||'{}');if(_0x494fba===_0xf4c6c9(0x1cf))_0x4cacd7[_0xf4c6c9(0x224)]('-\x20Grepped\x20\x27'+_0x13276b[_0xf4c6c9(0x218)]+'\x27\x20in\x20`'+(_0x13276b[_0xf4c6c9(0x22a)]||'.')+'`');else{if(_0x494fba===_0xf4c6c9(0x142))_0x4cacd7['push']('-\x20Read\x20file\x20`'+_0x13276b[_0xf4c6c9(0x22a)]+'`');else{if(_0x494fba===_0xf4c6c9(0x260))_0x4cacd7[_0xf4c6c9(0x224)](_0xf4c6c9(0x22d)+(_0x13276b['command']||'.')+'`');else _0x494fba===_0xf4c6c9(0x1b9)&&_0x4cacd7['push'](_0xf4c6c9(0x213)+_0x13276b[_0xf4c6c9(0x218)]+_0xf4c6c9(0x219)+(_0x13276b[_0xf4c6c9(0x22a)]||'.')+'`');}}}catch{}}}_0x7e6f3d[_0xf4c6c9(0x224)](_0x4cacd7[_0xf4c6c9(0x1cb)]('\x0a'));const _0x6598e5=['',_0xf4c6c9(0x24e)];for(const _0x4d896a of _0x465fe2){if(_0x4d896a['lines']==='*')_0x6598e5[_0xf4c6c9(0x224)]('-\x20'+_0x4d896a[_0xf4c6c9(0x22a)]+':*');else{if(Array['isArray'](_0x4d896a[_0xf4c6c9(0x212)])){const _0x176b10=_0x4d896a[_0xf4c6c9(0x212)][_0xf4c6c9(0x21c)](([_0x1bd6e3,_0x461fb8])=>{if(_0x1bd6e3===_0x461fb8)return''+_0x1bd6e3;return _0x1bd6e3+'-'+_0x461fb8;});_0x6598e5[_0xf4c6c9(0x224)]('-\x20'+_0x4d896a['path']+':'+_0x176b10[_0xf4c6c9(0x1cb)](','));}else _0x6598e5['push']('-\x20'+_0x4d896a[_0xf4c6c9(0x22a)]+':*');}}_0x6598e5['push'](''),_0x7e6f3d[_0xf4c6c9(0x224)](_0x6598e5['join']('\x0a')),_0x7e6f3d[_0xf4c6c9(0x224)](_0xf4c6c9(0x1d9));const _0x62be28=[],_0x493957=[];for(const _0x2815e8 of _0x465fe2){let _0x5a0eeb=a0_0x1c35ef['resolve'](_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x23e)],_0x2815e8['path']),_0x29aef4=null,_0x241dd7=null;try{_0x29aef4=await a0_0x114a5e[_0xf4c6c9(0x239)](_0x5a0eeb,{'encoding':_0xf4c6c9(0x249)});}catch(_0x5668f3){const _0x6a6179=fixPathRepetition(_0x5a0eeb);if(_0x6a6179)try{_0x29aef4=await a0_0x114a5e['readFile'](_0x6a6179,{'encoding':_0xf4c6c9(0x249)}),_0x5a0eeb=_0x6a6179;}catch{_0x241dd7=_0x5668f3 instanceof Error?_0x5668f3:new Error(String(_0x5668f3));}else _0x241dd7=_0x5668f3 instanceof Error?_0x5668f3:new Error(String(_0x5668f3));}if(_0x29aef4!==null){const _0x1621dc=_0x29aef4[_0xf4c6c9(0x228)](/\r?\n/),_0x2ecee1=[];if(_0x2815e8[_0xf4c6c9(0x212)]==='*'||!Array['isArray'](_0x2815e8['lines']))for(let _0x23a2c8=0x1;_0x23a2c8<=_0x1621dc[_0xf4c6c9(0x1a1)];_0x23a2c8++){const _0x12790f=_0x1621dc[_0x23a2c8-0x1];_0x2ecee1['push'](_0x23a2c8+'|\x20'+_0x12790f);}else for(const [_0x312e91,_0x18128c]of _0x2815e8['lines']){_0x2ecee1['length']>0x0&&_0x2ecee1[_0xf4c6c9(0x224)]('');for(let _0x2fec74=_0x312e91;_0x2fec74<=_0x18128c&&_0x2fec74<=_0x1621dc['length'];_0x2fec74++){const _0x4b04f2=_0x1621dc[_0x2fec74-0x1];_0x2ecee1['push'](_0x2fec74+'|\x20'+_0x4b04f2);}}_0x493957[_0xf4c6c9(0x224)]({'path':_0x2815e8['path'],'content':_0x2ecee1[_0xf4c6c9(0x1cb)]('\x0a')});}else _0x62be28['push'](_0xf4c6c9(0x158)+_0x2815e8[_0xf4c6c9(0x22a)]+_0xf4c6c9(0x261)+(_0x241dd7?.['message']||_0xf4c6c9(0x1c7))+_0xf4c6c9(0x1ff));}try{const _0x28a3f1=await compactFileContexts(_0x493957,_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],MORPH_API_KEY,MORPH_API_URL);for(const _0xa8f2f8 of _0x28a3f1){_0x62be28[_0xf4c6c9(0x224)](_0xf4c6c9(0x158)+_0xa8f2f8[_0xf4c6c9(0x22a)]+_0xf4c6c9(0x22b)+_0xa8f2f8[_0xf4c6c9(0x24c)]+_0xf4c6c9(0x1ff));}}catch(_0x1e70e9){logger[_0xf4c6c9(0x1fe)](_0xf4c6c9(0x20e),_0xf4c6c9(0x1a9),{'error':_0x1e70e9 instanceof Error?_0x1e70e9['message']:String(_0x1e70e9),'files_count':_0x493957['length']});for(const _0x175840 of _0x493957){_0x62be28['push'](_0xf4c6c9(0x158)+_0x175840['path']+_0xf4c6c9(0x22b)+_0x175840[_0xf4c6c9(0x24c)]+_0xf4c6c9(0x1ff));}}_0x7e6f3d[_0xf4c6c9(0x224)](_0x62be28[_0xf4c6c9(0x1cb)]('\x0a\x0a')),_0x32dc5a=_0x7e6f3d[_0xf4c6c9(0x1cb)]('\x0a');const _0x1d7526=_0x12817c[_0xf4c6c9(0x189)]?.[_0xf4c6c9(0x14f)](_0x3f7027=>_0x3f7027[_0xf4c6c9(0x21f)]?.[_0xf4c6c9(0x242)](_0xf4c6c9(0x237)))||[];if(_0x1d7526[_0xf4c6c9(0x1a1)]>0x0){const _0x133e3b=_0x1d7526[_0xf4c6c9(0x21c)](_0x4ae32e=>_0x4ae32e[_0xf4c6c9(0x21f)])[_0xf4c6c9(0x1cb)](';\x20');reportMorphError({'error_message':_0x133e3b,'error_type':_0xf4c6c9(0x1cc),'context':{'tool':_0xf4c6c9(0x1b3),'repo_path':_0x153b53[_0xf4c6c9(0x227)]['repo_path'],'query':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],'model':_0xf4c6c9(0x1ea),'termination_reason':_0xf4c6c9(0x194),'error_count':_0x1d7526[_0xf4c6c9(0x1a1)],'is_timeout':![],'timings':_0x12817c['timings'],'files_attempted':_0x465fe2[_0xf4c6c9(0x21c)](_0xf18267=>({'path':_0xf18267[_0xf4c6c9(0x22a)],'lines':_0xf18267[_0xf4c6c9(0x212)]})),'tool_calls':_0x3faed3(_0x12817c['messages']),'messages':_0x12817c['messages']?.[_0xf4c6c9(0x21c)](_0x2310e2=>({'role':_0x2310e2[_0xf4c6c9(0x1d5)],'content':_0x2310e2[_0xf4c6c9(0x24c)],..._0x2310e2['tool_calls']?{'tool_calls':_0x2310e2[_0xf4c6c9(0x175)][_0xf4c6c9(0x1a1)]}:{},..._0x2310e2[_0xf4c6c9(0x138)]?{'tool_call_id':_0x2310e2[_0xf4c6c9(0x138)]}:{}})),'request_content':{'query':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],'repo_path':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x23e)],'repoRoot':a0_0x1c35ef[_0xf4c6c9(0x154)](_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x23e)]),'model':'morph-warp-grep-v2.1'}},'source':_0xf4c6c9(0x1ac)})[_0xf4c6c9(0x25f)](()=>{});}}else{if(_0x12817c['terminationReason']===_0xf4c6c9(0x149)&&_0x12817c[_0xf4c6c9(0x189)][_0xf4c6c9(0x1a1)]>0x0){const _0x3640b6=_0x12817c['errors'][_0xf4c6c9(0x21c)](_0x2e4a58=>_0x2e4a58[_0xf4c6c9(0x21f)])[_0xf4c6c9(0x1cb)](';\x20');_0x32dc5a='Error:\x20'+_0x3640b6;const _0x5ea0fb=_0x3640b6[_0xf4c6c9(0x255)]()['includes']('timeout')||_0x3640b6['toLowerCase']()[_0xf4c6c9(0x17b)]('timed\x20out')||_0x3640b6[_0xf4c6c9(0x255)]()[_0xf4c6c9(0x17b)](_0xf4c6c9(0x136)),_0x8ec427=_0x12817c[_0xf4c6c9(0x16d)]?.[_0xf4c6c9(0x207)]?.[_0xf4c6c9(0x1c0)],_0x2913e2=_0x12817c[_0xf4c6c9(0x189)][0x0];reportMorphError({'error_message':_0x3640b6,'error_type':_0x5ea0fb?'TimeoutError':_0x2913e2?.[_0xf4c6c9(0x1ba)]?.[_0xf4c6c9(0x13e)]||_0xf4c6c9(0x221),'context':{'tool':_0xf4c6c9(0x1b3),'repo_path':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x23e)],'query':_0x153b53['data']['search_string'],'model':_0xf4c6c9(0x1ea),'termination_reason':_0x12817c[_0xf4c6c9(0x1f0)],'error_count':_0x12817c[_0xf4c6c9(0x189)][_0xf4c6c9(0x1a1)],'is_timeout':_0x5ea0fb,'timings':_0x12817c[_0xf4c6c9(0x1ee)],'files_attempted':_0x8ec427?.['map'](_0x24fdf2=>({'path':_0x24fdf2[_0xf4c6c9(0x22a)],'lines':_0x24fdf2[_0xf4c6c9(0x212)]})),'tool_calls':_0x3faed3(_0x12817c[_0xf4c6c9(0x19e)]),'messages':_0x12817c[_0xf4c6c9(0x19e)]?.[_0xf4c6c9(0x21c)](_0x582257=>({'role':_0x582257[_0xf4c6c9(0x1d5)],'content':_0x582257[_0xf4c6c9(0x24c)],..._0x582257[_0xf4c6c9(0x175)]?{'tool_calls':_0x582257[_0xf4c6c9(0x175)][_0xf4c6c9(0x1a1)]}:{},..._0x582257[_0xf4c6c9(0x138)]?{'tool_call_id':_0x582257[_0xf4c6c9(0x138)]}:{}})),'request_content':{'query':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],'repo_path':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x23e)],'repoRoot':a0_0x1c35ef[_0xf4c6c9(0x154)](_0x153b53[_0xf4c6c9(0x227)]['repo_path']),'model':_0xf4c6c9(0x1ea)}},'stack_trace':_0x2913e2?.['stack']||undefined,'source':_0xf4c6c9(0x1ac)})[_0xf4c6c9(0x25f)](()=>{});}else _0x32dc5a='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0x32dc5a}]};}catch(_0x351a9d){const _0x5cb839=handleMorphAPIError(_0x351a9d);if(_0x5cb839)return logger[_0xf4c6c9(0x174)](_0xf4c6c9(0x20e),_0xf4c6c9(0x13d),{'tool':_0xf4c6c9(0x1b3),'error':_0xf4c6c9(0x1cd),'latency_ms':Date[_0xf4c6c9(0x1f8)]()-_0xc22f4}),_0x5cb839;const _0x51458b=_0x351a9d instanceof Error?_0x351a9d[_0xf4c6c9(0x21f)]:String(_0x351a9d);logger['error'](_0xf4c6c9(0x20e),'tool_call_error',{'tool':_0xf4c6c9(0x1b3),'error':_0x51458b,'repo_path':_0x153b53['data'][_0xf4c6c9(0x23e)],'query':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],'latency_ms':Date['now']()-_0xc22f4});const _0x196592=_0x51458b[_0xf4c6c9(0x255)]()[_0xf4c6c9(0x17b)](_0xf4c6c9(0x24b))||_0x51458b[_0xf4c6c9(0x255)]()[_0xf4c6c9(0x17b)](_0xf4c6c9(0x14c))||_0x51458b[_0xf4c6c9(0x255)]()[_0xf4c6c9(0x17b)](_0xf4c6c9(0x136))||_0x351a9d instanceof Error&&_0x351a9d[_0xf4c6c9(0x13e)]===_0xf4c6c9(0x17c);return reportMorphError({'error_message':_0x51458b,'error_type':_0x196592?_0xf4c6c9(0x17c):_0x351a9d instanceof Error?_0x351a9d['constructor']['name']:_0xf4c6c9(0x1ec),'context':{'tool':'codebase_search','repo_path':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x23e)],'query':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],'model':_0xf4c6c9(0x1ea),'is_timeout':_0x196592,'exception_phase':_0xf4c6c9(0x170),'request_content':{'query':_0x153b53['data'][_0xf4c6c9(0x1a0)],'repo_path':_0x153b53[_0xf4c6c9(0x227)]['repo_path'],'repoRoot':a0_0x1c35ef[_0xf4c6c9(0x154)](_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x23e)]),'model':_0xf4c6c9(0x1ea)}},'stack_trace':_0x351a9d instanceof Error?_0x351a9d[_0xf4c6c9(0x193)]:undefined,'source':'mcp-filesystem'})[_0xf4c6c9(0x25f)](()=>{}),{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x25e)+_0x51458b}],'isError':![]};}}case TOOL_NAMES[_0xf4c6c9(0x23a)]:{const _0x298a53=WarpGrepGitHubArgsSchema['safeParse'](_0x4e1df1);if(!_0x298a53['success'])return{'content':[{'type':_0xf4c6c9(0x1b5),'text':'Invalid\x20arguments:\x20'+_0x298a53[_0xf4c6c9(0x174)]}],'isError':!![]};const _0x213f01=_0x298a53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1ab)]||_0x298a53['data'][_0xf4c6c9(0x1f7)];if(!_0x213f01)return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x188)}],'isError':!![]};const _0x2641f2=MORPH_API_KEY;if(!_0x2641f2)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x4274b7=Date[_0xf4c6c9(0x1f8)]();logger[_0xf4c6c9(0x204)](_0xf4c6c9(0x20e),_0xf4c6c9(0x1f9),{'identifier':_0x213f01,'query':_0x298a53['data']['search_string'],'branch':_0x298a53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1e5)]});try{const _0x190f23=new WarpGrepClient({'morphApiKey':_0x2641f2,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x424e3d=await _0x190f23[_0xf4c6c9(0x19c)]({'searchTerm':_0x298a53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],'github':_0x213f01,'branch':_0x298a53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1e5)]}),_0x17f540=Date[_0xf4c6c9(0x1f8)]()-_0x4274b7;logMcpStderr(_0xf4c6c9(0x1c6)+_0x17f540+'ms.\x20Success:\x20'+_0x424e3d['success']);const _0x33d137=formatResult(_0x424e3d);return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0x33d137}]};}catch(_0x28ce3f){const _0x5027f4=handleMorphAPIError(_0x28ce3f);if(_0x5027f4)return _0x5027f4;const _0x13a03a=Date[_0xf4c6c9(0x1f8)]()-_0x4274b7,_0x3d69a6=_0x28ce3f instanceof Error?_0x28ce3f[_0xf4c6c9(0x21f)]:String(_0x28ce3f);return logMcpStderr(_0xf4c6c9(0x20d)+_0x13a03a+'ms:',_0x3d69a6),reportMorphError({'error_message':_0x3d69a6,'error_type':_0x28ce3f instanceof Error?_0x28ce3f[_0xf4c6c9(0x1ba)][_0xf4c6c9(0x13e)]:_0xf4c6c9(0x1ec),'context':{'tool':_0xf4c6c9(0x15c),'github_url':_0x213f01,'search_string':_0x298a53[_0xf4c6c9(0x227)]['search_string'],'branch':_0x298a53['data'][_0xf4c6c9(0x1e5)]},'stack_trace':_0x28ce3f instanceof Error?_0x28ce3f[_0xf4c6c9(0x193)]:undefined,'source':_0xf4c6c9(0x1ac),'tool':_0xf4c6c9(0x15c),'latency_ms':_0x13a03a})['catch'](()=>{}),{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x167)+_0x3d69a6}],'isError':![]};}}default:throw new Error(_0xf4c6c9(0x20f)+_0x22814c);}}catch(_0x242897){const _0x533c2e=_0x242897 instanceof Error?_0x242897[_0xf4c6c9(0x21f)]:String(_0x242897);return reportMorphError({'error_message':_0x533c2e,'error_type':_0x242897 instanceof Error?_0x242897[_0xf4c6c9(0x1ba)][_0xf4c6c9(0x13e)]:_0xf4c6c9(0x1ec),'context':{'tool':_0x22814c,'arguments':_0x4e1df1?JSON[_0xf4c6c9(0x1aa)](_0x4e1df1)[_0xf4c6c9(0x153)](0x0,0x1f4):undefined,'mcp_server_version':_0xf4c6c9(0x200)},'stack_trace':_0x242897 instanceof Error?_0x242897[_0xf4c6c9(0x193)]:undefined,'source':'mcp-filesystem'})[_0xf4c6c9(0x25f)](()=>{}),{'content':[{'type':'text','text':_0xf4c6c9(0x14a)+_0x533c2e}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x5f484f){const _0x1a3938=a0_0x52d368,_0x3f68e4=await getValidRootDirectories(_0x5f484f);if(_0x3f68e4[_0x1a3938(0x1a1)]>0x0)allowedDirectories=[..._0x3f68e4],logMcpStderr(_0x1a3938(0x1d1)+_0x3f68e4[_0x1a3938(0x1a1)]+'\x20valid\x20directories');else{logMcpStderr(_0x1a3938(0x18e));if(ENABLE_WORKSPACE_MODE)try{const _0x5af0c9=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x5af0c9&&(allowedDirectories=[_0x5af0c9],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x5af0c9));}catch(_0x176c7e){logMcpStderr(_0x1a3938(0x172)+_0x176c7e);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x59a24d=a0_0x52d368;try{const _0x2e4f3d=await server[_0x59a24d(0x1bc)]();_0x2e4f3d&&_0x59a24d(0x173)in _0x2e4f3d&&await updateAllowedDirectoriesFromRoots(_0x2e4f3d[_0x59a24d(0x173)]);}catch(_0x2b3e38){logMcpStderr(_0x59a24d(0x181),_0x2b3e38 instanceof Error?_0x2b3e38[_0x59a24d(0x21f)]:String(_0x2b3e38));}}),server[a0_0x52d368(0x241)]=async()=>{const _0x4eaa63=a0_0x52d368,_0xd73753=server['getClientCapabilities']();if(_0xd73753?.['roots'])try{const _0x42659e=await server[_0x4eaa63(0x1bc)]();_0x42659e&&_0x4eaa63(0x173)in _0x42659e?await updateAllowedDirectoriesFromRoots(_0x42659e[_0x4eaa63(0x173)]):logMcpStderr(_0x4eaa63(0x226));}catch(_0x574e1c){logMcpStderr(_0x4eaa63(0x1d8),_0x574e1c instanceof Error?_0x574e1c[_0x4eaa63(0x21f)]:String(_0x574e1c));}else{if(allowedDirectories[_0x4eaa63(0x1a1)]>0x0)logMcpStderr(_0x4eaa63(0x19a),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x4eaa63(0x184));else throw new Error(_0x4eaa63(0x177));}}};async function runServer(){const _0x1a08aa=a0_0x52d368,_0x578952=new StdioServerTransport();await server['connect'](_0x578952),logMcpStderr(_0x1a08aa(0x164)),allowedDirectories[_0x1a08aa(0x1a1)]===0x0&&logMcpStderr(_0x1a08aa(0x238));}runServer()[a0_0x52d368(0x25f)](_0x846a20=>{const _0x49ce42=a0_0x52d368;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x846a20),process[_0x49ce42(0x18a)](0x1);});
package/dist/log-utils.js CHANGED
@@ -1 +1 @@
1
- var a1_0x3d500b=a1_0x4ae8;(function(_0x1c8f95,_0x17c6dc){var _0x3228b6=a1_0x4ae8,_0x952997=_0x1c8f95();while(!![]){try{var _0x51c472=-parseInt(_0x3228b6(0x127))/0x1*(parseInt(_0x3228b6(0x12a))/0x2)+-parseInt(_0x3228b6(0x11c))/0x3+-parseInt(_0x3228b6(0x124))/0x4+parseInt(_0x3228b6(0x121))/0x5+parseInt(_0x3228b6(0x120))/0x6*(-parseInt(_0x3228b6(0x126))/0x7)+-parseInt(_0x3228b6(0x11f))/0x8*(parseInt(_0x3228b6(0x128))/0x9)+parseInt(_0x3228b6(0x119))/0xa;if(_0x51c472===_0x17c6dc)break;else _0x952997['push'](_0x952997['shift']());}catch(_0x3cf336){_0x952997['push'](_0x952997['shift']());}}}(a1_0x48cb,0x6bdba));import a1_0xfff234 from'os';import{logger}from'./logger.js';function a1_0x4ae8(_0x3c9dde,_0x456ab1){_0x3c9dde=_0x3c9dde-0x118;var _0x48cbdd=a1_0x48cb();var _0x4ae87b=_0x48cbdd[_0x3c9dde];return _0x4ae87b;}function a1_0x48cb(){var _0x250d82=['platform','1503184kIqjxP','2207298tVcqtS','3517720CZPbqh','darwin','linux','3218168utTeIF','win32','14ggDpse','2158YtGdyy','9oxsUla','macOS','466YjfHkp','length','MCP','27276510lNxbdy','info','Unknown','2275167mwgtID','[os='];a1_0x48cb=function(){return _0x250d82;};return a1_0x48cb();}export function getOperatingSystemType(_0x582fd1=a1_0xfff234[a1_0x3d500b(0x11e)]()){var _0x4fe7f9=a1_0x3d500b;switch(_0x582fd1){case _0x4fe7f9(0x122):return _0x4fe7f9(0x129);case _0x4fe7f9(0x125):return'Windows';case _0x4fe7f9(0x123):return'Linux';default:return _0x4fe7f9(0x11b);}}export function formatMcpLogMessage(_0x2b7230,_0x476ed5=a1_0xfff234[a1_0x3d500b(0x11e)]()){var _0x57d79e=a1_0x3d500b;return _0x57d79e(0x11d)+getOperatingSystemType(_0x476ed5)+']\x20'+_0x2b7230;}export function logMcpStderr(_0x41a6ac,..._0x1c0f44){var _0x579b81=a1_0x3d500b;console['error'](formatMcpLogMessage(_0x41a6ac),..._0x1c0f44),logger[_0x579b81(0x11a)](_0x579b81(0x118),_0x41a6ac,_0x1c0f44[_0x579b81(0x12b)]?{'args':_0x1c0f44['map'](_0x3555a0=>String(_0x3555a0))}:undefined);}
1
+ var a1_0x55fc21=a1_0x1eea;(function(_0x5788c0,_0x30b3b1){var _0x1fd56e=a1_0x1eea,_0x3027fe=_0x5788c0();while(!![]){try{var _0x4f074b=parseInt(_0x1fd56e(0xdc))/0x1+-parseInt(_0x1fd56e(0xd9))/0x2*(-parseInt(_0x1fd56e(0xd5))/0x3)+parseInt(_0x1fd56e(0xe5))/0x4+parseInt(_0x1fd56e(0xde))/0x5+parseInt(_0x1fd56e(0xe1))/0x6*(parseInt(_0x1fd56e(0xdb))/0x7)+parseInt(_0x1fd56e(0xe4))/0x8+-parseInt(_0x1fd56e(0xd8))/0x9;if(_0x4f074b===_0x30b3b1)break;else _0x3027fe['push'](_0x3027fe['shift']());}catch(_0x55bab4){_0x3027fe['push'](_0x3027fe['shift']());}}}(a1_0x4ab8,0x967e8));function a1_0x1eea(_0x481d4a,_0x37376c){_0x481d4a=_0x481d4a-0xd4;var _0x4ab8a8=a1_0x4ab8();var _0x1eea3b=_0x4ab8a8[_0x481d4a];return _0x1eea3b;}import a1_0x4f52c5 from'os';import{logger}from'./logger.js';export function getOperatingSystemType(_0x2748aa=a1_0x4f52c5[a1_0x55fc21(0xdf)]()){var _0x256733=a1_0x55fc21;switch(_0x2748aa){case'darwin':return _0x256733(0xe6);case _0x256733(0xd7):return _0x256733(0xd6);case _0x256733(0xda):return _0x256733(0xe0);default:return _0x256733(0xdd);}}function a1_0x4ab8(){var _0x3eb925=['Unknown','4364060fuCTnN','platform','Linux','599598BLSFvy','length','map','5265176JAvmWZ','777320EfjcLu','macOS','MCP','3CAFwPI','Windows','win32','34579701LFKZZF','1940496wCgErh','linux','49YYYOop','1063545CgBPmi'];a1_0x4ab8=function(){return _0x3eb925;};return a1_0x4ab8();}export function formatMcpLogMessage(_0x4d59de,_0x40ec4f=a1_0x4f52c5['platform']()){return'[os='+getOperatingSystemType(_0x40ec4f)+']\x20'+_0x4d59de;}export function logMcpStderr(_0x3599b2,..._0x300155){var _0x4ad55c=a1_0x55fc21;console['error'](formatMcpLogMessage(_0x3599b2),..._0x300155),logger['info'](_0x4ad55c(0xd4),_0x3599b2,_0x300155[_0x4ad55c(0xe2)]?{'args':_0x300155[_0x4ad55c(0xe3)](_0x101b67=>String(_0x101b67))}:undefined);}
package/dist/logger.js CHANGED
@@ -1 +1 @@
1
- function a2_0x35a2(){const _0x5ed58f=['_log','enabled','15334eqOAqz','1134ShCilG','5085PUgkTx','write','810qelIJY','4912zUZkqo','info','5IGiPyJ','toUpperCase','fileStream','7415760fdqTWb','8022qThTmY',']\x20[','159717AOEkTC','toISOString','isEnabled','env','enable','stringify','MORPH_LOG_FILE','debug','error','445812LqjQeM','MORPH_DEBUG','414428WFpTMa','16bEprfk'];a2_0x35a2=function(){return _0x5ed58f;};return a2_0x35a2();}const a2_0x4c5b84=a2_0x3c85;(function(_0xbf6934,_0x3cba63){const _0x3b3ffa=a2_0x3c85,_0x1ed5b4=_0xbf6934();while(!![]){try{const _0x27531e=-parseInt(_0x3b3ffa(0x1b7))/0x1+parseInt(_0x3b3ffa(0x1b8))/0x2*(-parseInt(_0x3b3ffa(0x1c8))/0x3)+-parseInt(_0x3b3ffa(0x1b5))/0x4*(parseInt(_0x3b3ffa(0x1c2))/0x5)+-parseInt(_0x3b3ffa(0x1c6))/0x6*(-parseInt(_0x3b3ffa(0x1bc))/0x7)+-parseInt(_0x3b3ffa(0x1c0))/0x8*(-parseInt(_0x3b3ffa(0x1bd))/0x9)+parseInt(_0x3b3ffa(0x1bf))/0xa*(parseInt(_0x3b3ffa(0x1bb))/0xb)+parseInt(_0x3b3ffa(0x1c5))/0xc;if(_0x27531e===_0x3cba63)break;else _0x1ed5b4['push'](_0x1ed5b4['shift']());}catch(_0x2287eb){_0x1ed5b4['push'](_0x1ed5b4['shift']());}}}(a2_0x35a2,0x53a4d));import{createWriteStream}from'fs';function a2_0x3c85(_0x2a1ddb,_0x391f1e){_0x2a1ddb=_0x2a1ddb-0x1af;const _0x35a27f=a2_0x35a2();let _0x3c855f=_0x35a27f[_0x2a1ddb];return _0x3c855f;}class MorphLogger{[a2_0x4c5b84(0x1ba)];[a2_0x4c5b84(0x1c4)];constructor(){const _0x33b37d=a2_0x4c5b84;this[_0x33b37d(0x1ba)]=process['env'][_0x33b37d(0x1b6)]==='1'||!!process[_0x33b37d(0x1af)][_0x33b37d(0x1b2)];const _0x30c084=process[_0x33b37d(0x1af)][_0x33b37d(0x1b2)];this[_0x33b37d(0x1c4)]=_0x30c084?createWriteStream(_0x30c084,{'flags':'a'}):null;}['debug'](_0x33dde2,_0x2863cb,_0x3b14ee){const _0x1bb67f=a2_0x4c5b84;this[_0x1bb67f(0x1b9)](_0x1bb67f(0x1b3),_0x33dde2,_0x2863cb,_0x3b14ee);}[a2_0x4c5b84(0x1c1)](_0x1c9bee,_0x2d46ea,_0x52acb1){const _0x13c6cf=a2_0x4c5b84;this[_0x13c6cf(0x1b9)](_0x13c6cf(0x1c1),_0x1c9bee,_0x2d46ea,_0x52acb1);}['warn'](_0x582320,_0x765b99,_0x3051a9){this['_log']('warn',_0x582320,_0x765b99,_0x3051a9);}['error'](_0x3da180,_0x4af7ff,_0x3394b6){const _0x252ad6=a2_0x4c5b84;this[_0x252ad6(0x1b9)](_0x252ad6(0x1b4),_0x3da180,_0x4af7ff,_0x3394b6);}[a2_0x4c5b84(0x1b0)](){this['enabled']=!![];}get[a2_0x4c5b84(0x1ca)](){const _0x252c8d=a2_0x4c5b84;return this[_0x252c8d(0x1ba)];}[a2_0x4c5b84(0x1b9)](_0x300f21,_0x7e8671,_0x5982b0,_0x57ddc3){const _0x11ba6b=a2_0x4c5b84;if(_0x300f21!==_0x11ba6b(0x1b4)&&!this[_0x11ba6b(0x1ba)])return;const _0x110b2b=new Date()[_0x11ba6b(0x1c9)](),_0x40c0e2='['+_0x110b2b+_0x11ba6b(0x1c7)+_0x300f21[_0x11ba6b(0x1c3)]()+']\x20['+_0x7e8671+']';console[_0x11ba6b(0x1b4)](_0x57ddc3?_0x40c0e2+'\x20'+_0x5982b0+'\x20'+JSON[_0x11ba6b(0x1b1)](_0x57ddc3):_0x40c0e2+'\x20'+_0x5982b0),this['fileStream']?.[_0x11ba6b(0x1be)](JSON[_0x11ba6b(0x1b1)]({'ts':_0x110b2b,'level':_0x300f21,'component':_0x7e8671,'msg':_0x5982b0,..._0x57ddc3&&{'data':_0x57ddc3}})+'\x0a');}}export const logger=new MorphLogger();
1
+ const a2_0x2f48a5=a2_0x2ae2;(function(_0x2eb1b3,_0x1993e5){const _0x13ab66=a2_0x2ae2,_0x53701c=_0x2eb1b3();while(!![]){try{const _0x5ac4ad=-parseInt(_0x13ab66(0x162))/0x1*(-parseInt(_0x13ab66(0x161))/0x2)+-parseInt(_0x13ab66(0x16f))/0x3+-parseInt(_0x13ab66(0x165))/0x4+parseInt(_0x13ab66(0x164))/0x5+parseInt(_0x13ab66(0x171))/0x6+-parseInt(_0x13ab66(0x16d))/0x7+parseInt(_0x13ab66(0x16a))/0x8*(-parseInt(_0x13ab66(0x16c))/0x9);if(_0x5ac4ad===_0x1993e5)break;else _0x53701c['push'](_0x53701c['shift']());}catch(_0x362af){_0x53701c['push'](_0x53701c['shift']());}}}(a2_0x7510,0xa912a));function a2_0x7510(){const _0x29d9db=['19IdkBIG','stringify','3129555MzpUHq','390708jIZKgO','env','enable','warn','info','8UTNtHp','enabled','155817juHCdC','6165649MswGay','MORPH_DEBUG','1012563TqYaMT','fileStream','6110682UowhQo','debug',']\x20[','error','_log','toUpperCase','40156XLunVc'];a2_0x7510=function(){return _0x29d9db;};return a2_0x7510();}import{createWriteStream}from'fs';function a2_0x2ae2(_0x26d52e,_0x1c7cba){_0x26d52e=_0x26d52e-0x161;const _0x7510e=a2_0x7510();let _0x2ae2e8=_0x7510e[_0x26d52e];return _0x2ae2e8;}class MorphLogger{[a2_0x2f48a5(0x16b)];[a2_0x2f48a5(0x170)];constructor(){const _0x56fa55=a2_0x2f48a5;this[_0x56fa55(0x16b)]=process[_0x56fa55(0x166)][_0x56fa55(0x16e)]==='1'||!!process[_0x56fa55(0x166)]['MORPH_LOG_FILE'];const _0x43213f=process[_0x56fa55(0x166)]['MORPH_LOG_FILE'];this[_0x56fa55(0x170)]=_0x43213f?createWriteStream(_0x43213f,{'flags':'a'}):null;}['debug'](_0xc1c681,_0x50316e,_0x1cad0c){const _0x122896=a2_0x2f48a5;this[_0x122896(0x175)](_0x122896(0x172),_0xc1c681,_0x50316e,_0x1cad0c);}[a2_0x2f48a5(0x169)](_0xaee7ce,_0x13c72,_0x112568){const _0x424a97=a2_0x2f48a5;this['_log'](_0x424a97(0x169),_0xaee7ce,_0x13c72,_0x112568);}[a2_0x2f48a5(0x168)](_0x1315a6,_0x1f23b3,_0x1500c2){const _0x28a59c=a2_0x2f48a5;this['_log'](_0x28a59c(0x168),_0x1315a6,_0x1f23b3,_0x1500c2);}['error'](_0x3dad08,_0x4d5aa3,_0x4c4777){const _0x67e0b5=a2_0x2f48a5;this[_0x67e0b5(0x175)](_0x67e0b5(0x174),_0x3dad08,_0x4d5aa3,_0x4c4777);}[a2_0x2f48a5(0x167)](){const _0x20f3d7=a2_0x2f48a5;this[_0x20f3d7(0x16b)]=!![];}get['isEnabled'](){const _0x8cc845=a2_0x2f48a5;return this[_0x8cc845(0x16b)];}['_log'](_0x49cb40,_0x4f2817,_0x39fbb4,_0x5b7872){const _0x332d7f=a2_0x2f48a5;if(_0x49cb40!==_0x332d7f(0x174)&&!this[_0x332d7f(0x16b)])return;const _0x32df2b=new Date()['toISOString'](),_0x2f1aaa='['+_0x32df2b+_0x332d7f(0x173)+_0x49cb40[_0x332d7f(0x176)]()+_0x332d7f(0x173)+_0x4f2817+']';console[_0x332d7f(0x174)](_0x5b7872?_0x2f1aaa+'\x20'+_0x39fbb4+'\x20'+JSON[_0x332d7f(0x163)](_0x5b7872):_0x2f1aaa+'\x20'+_0x39fbb4),this[_0x332d7f(0x170)]?.['write'](JSON[_0x332d7f(0x163)]({'ts':_0x32df2b,'level':_0x49cb40,'component':_0x4f2817,'msg':_0x39fbb4,..._0x5b7872&&{'data':_0x5b7872}})+'\x0a');}}export const logger=new MorphLogger();
@@ -1 +1 @@
1
- (function(_0x549530,_0x645601){const _0x308bc2=a3_0x3959,_0x5bfede=_0x549530();while(!![]){try{const _0x5ab872=-parseInt(_0x308bc2(0x196))/0x1+-parseInt(_0x308bc2(0x1a1))/0x2*(parseInt(_0x308bc2(0x1a0))/0x3)+parseInt(_0x308bc2(0x195))/0x4+-parseInt(_0x308bc2(0x1a2))/0x5+parseInt(_0x308bc2(0x1a4))/0x6*(-parseInt(_0x308bc2(0x199))/0x7)+parseInt(_0x308bc2(0x192))/0x8*(-parseInt(_0x308bc2(0x19f))/0x9)+-parseInt(_0x308bc2(0x19c))/0xa*(-parseInt(_0x308bc2(0x198))/0xb);if(_0x5ab872===_0x645601)break;else _0x5bfede['push'](_0x5bfede['shift']());}catch(_0x218aa2){_0x5bfede['push'](_0x5bfede['shift']());}}}(a3_0x164b,0xb9fa7));function a3_0x3959(_0x6b2f47,_0x216fa3){_0x6b2f47=_0x6b2f47-0x190;const _0x164b84=a3_0x164b();let _0x39595d=_0x164b84[_0x6b2f47];return _0x39595d;}import a3_0x41732a from'path';function a3_0x164b(){const _0x32b6fc=['3823192zWvPgg','join','/mnt/','4970760LuEHOc','158628LESjyp','match','768977ExLlxX','29351CzDwBx','normalize','slice','430IptJyg','substring','toUpperCase','9HrmLET','63CiPgDW','55794MOFXIj','6563745wWJRye','startsWith','1362kOXrct','homedir','charAt','trim','replace'];a3_0x164b=function(){return _0x32b6fc;};return a3_0x164b();}import a3_0x5cdd7a from'os';export function convertToWindowsPath(_0x428ae6){const _0x3195db=a3_0x3959;if(_0x428ae6[_0x3195db(0x1a3)](_0x3195db(0x194))){const _0x134843=_0x428ae6['charAt'](0x5)[_0x3195db(0x19e)](),_0x494654=_0x428ae6[_0x3195db(0x19b)](0x6)['replace'](/\//g,'\x5c');return _0x134843+':'+_0x494654;}if(_0x428ae6[_0x3195db(0x197)](/^\/[a-zA-Z]\//)){const _0x5d528c=_0x428ae6[_0x3195db(0x1a6)](0x1)[_0x3195db(0x19e)](),_0x66b487=_0x428ae6[_0x3195db(0x19b)](0x2)[_0x3195db(0x191)](/\//g,'\x5c');return _0x5d528c+':'+_0x66b487;}if(_0x428ae6[_0x3195db(0x197)](/^[a-zA-Z]:/))return _0x428ae6[_0x3195db(0x191)](/\//g,'\x5c');return _0x428ae6;}export function normalizePath(_0x372ef3){const _0x1fd0a8=a3_0x3959;_0x372ef3=_0x372ef3[_0x1fd0a8(0x190)]()['replace'](/^["']|["']$/g,'');const _0x4cc5b9=_0x372ef3['startsWith']('/')&&!_0x372ef3[_0x1fd0a8(0x197)](/^\/mnt\/[a-z]\//i)&&!_0x372ef3[_0x1fd0a8(0x197)](/^\/[a-zA-Z]\//);if(_0x4cc5b9)return _0x372ef3[_0x1fd0a8(0x191)](/\/+/g,'/')[_0x1fd0a8(0x191)](/\/+$/,'');_0x372ef3=convertToWindowsPath(_0x372ef3);if(_0x372ef3[_0x1fd0a8(0x1a3)]('\x5c\x5c')){let _0x1408cc=_0x372ef3;_0x1408cc=_0x1408cc[_0x1fd0a8(0x191)](/^\\{2,}/,'\x5c\x5c');const _0x50f27d=_0x1408cc[_0x1fd0a8(0x19d)](0x2)['replace'](/\\\\/g,'\x5c');_0x372ef3='\x5c\x5c'+_0x50f27d;}else _0x372ef3=_0x372ef3[_0x1fd0a8(0x191)](/\\\\/g,'\x5c');let _0x52363f=a3_0x41732a[_0x1fd0a8(0x19a)](_0x372ef3);_0x372ef3[_0x1fd0a8(0x1a3)]('\x5c\x5c')&&!_0x52363f[_0x1fd0a8(0x1a3)]('\x5c\x5c')&&(_0x52363f='\x5c'+_0x52363f);if(_0x52363f['match'](/^[a-zA-Z]:/)){let _0x5f3ca0=_0x52363f[_0x1fd0a8(0x191)](/\//g,'\x5c');return/^[a-z]:/['test'](_0x5f3ca0)&&(_0x5f3ca0=_0x5f3ca0[_0x1fd0a8(0x1a6)](0x0)[_0x1fd0a8(0x19e)]()+_0x5f3ca0[_0x1fd0a8(0x19b)](0x1)),_0x5f3ca0;}return _0x52363f[_0x1fd0a8(0x191)](/\//g,'\x5c');}export function expandHome(_0x34ba27){const _0x192197=a3_0x3959;if(_0x34ba27[_0x192197(0x1a3)]('~/')||_0x34ba27==='~')return a3_0x41732a[_0x192197(0x193)](a3_0x5cdd7a[_0x192197(0x1a5)](),_0x34ba27['slice'](0x1));return _0x34ba27;}
1
+ (function(_0x504165,_0x5a9320){const _0x2a68ee=a3_0x12cc,_0x5b556e=_0x504165();while(!![]){try{const _0x581fcd=parseInt(_0x2a68ee(0x1ca))/0x1+parseInt(_0x2a68ee(0x1c9))/0x2*(parseInt(_0x2a68ee(0x1e0))/0x3)+-parseInt(_0x2a68ee(0x1d8))/0x4*(-parseInt(_0x2a68ee(0x1d6))/0x5)+parseInt(_0x2a68ee(0x1cd))/0x6+parseInt(_0x2a68ee(0x1d7))/0x7*(-parseInt(_0x2a68ee(0x1d5))/0x8)+-parseInt(_0x2a68ee(0x1da))/0x9+-parseInt(_0x2a68ee(0x1df))/0xa*(parseInt(_0x2a68ee(0x1de))/0xb);if(_0x581fcd===_0x5a9320)break;else _0x5b556e['push'](_0x5b556e['shift']());}catch(_0x9ebebf){_0x5b556e['push'](_0x5b556e['shift']());}}}(a3_0x9a67,0x6b56b));import a3_0x5e02a8 from'path';function a3_0x12cc(_0x2ef19e,_0x11a0ea){_0x2ef19e=_0x2ef19e-0x1c9;const _0x9a678e=a3_0x9a67();let _0x12cc26=_0x9a678e[_0x2ef19e];return _0x12cc26;}function a3_0x9a67(){const _0xb46d28=['16dRgvgy','5WVwhYX','1133461ktENuC','449028hgLauz','homedir','3990744OxclFj','join','slice','toUpperCase','1504063CCXGOP','40WwjudB','3UcbhaR','653202MCFzGC','871276zrHFfS','startsWith','match','2662314QyvJLn','replace','/mnt/','charAt','substring','normalize','test','trim'];a3_0x9a67=function(){return _0xb46d28;};return a3_0x9a67();}import a3_0x380b00 from'os';export function convertToWindowsPath(_0x96b4c5){const _0x32ad91=a3_0x12cc;if(_0x96b4c5[_0x32ad91(0x1cb)](_0x32ad91(0x1cf))){const _0x210bd6=_0x96b4c5[_0x32ad91(0x1d0)](0x5)[_0x32ad91(0x1dd)](),_0x11230e=_0x96b4c5[_0x32ad91(0x1dc)](0x6)['replace'](/\//g,'\x5c');return _0x210bd6+':'+_0x11230e;}if(_0x96b4c5[_0x32ad91(0x1cc)](/^\/[a-zA-Z]\//)){const _0x29bb4f=_0x96b4c5['charAt'](0x1)[_0x32ad91(0x1dd)](),_0x2dbd48=_0x96b4c5[_0x32ad91(0x1dc)](0x2)[_0x32ad91(0x1ce)](/\//g,'\x5c');return _0x29bb4f+':'+_0x2dbd48;}if(_0x96b4c5[_0x32ad91(0x1cc)](/^[a-zA-Z]:/))return _0x96b4c5[_0x32ad91(0x1ce)](/\//g,'\x5c');return _0x96b4c5;}export function normalizePath(_0x4dfc6f){const _0x400e80=a3_0x12cc;_0x4dfc6f=_0x4dfc6f[_0x400e80(0x1d4)]()[_0x400e80(0x1ce)](/^["']|["']$/g,'');const _0x3c274e=_0x4dfc6f['startsWith']('/')&&!_0x4dfc6f[_0x400e80(0x1cc)](/^\/mnt\/[a-z]\//i)&&!_0x4dfc6f[_0x400e80(0x1cc)](/^\/[a-zA-Z]\//);if(_0x3c274e)return _0x4dfc6f[_0x400e80(0x1ce)](/\/+/g,'/')['replace'](/\/+$/,'');_0x4dfc6f=convertToWindowsPath(_0x4dfc6f);if(_0x4dfc6f[_0x400e80(0x1cb)]('\x5c\x5c')){let _0x5c7782=_0x4dfc6f;_0x5c7782=_0x5c7782[_0x400e80(0x1ce)](/^\\{2,}/,'\x5c\x5c');const _0xe6d217=_0x5c7782[_0x400e80(0x1d1)](0x2)['replace'](/\\\\/g,'\x5c');_0x4dfc6f='\x5c\x5c'+_0xe6d217;}else _0x4dfc6f=_0x4dfc6f[_0x400e80(0x1ce)](/\\\\/g,'\x5c');let _0x51113f=a3_0x5e02a8[_0x400e80(0x1d2)](_0x4dfc6f);_0x4dfc6f['startsWith']('\x5c\x5c')&&!_0x51113f[_0x400e80(0x1cb)]('\x5c\x5c')&&(_0x51113f='\x5c'+_0x51113f);if(_0x51113f[_0x400e80(0x1cc)](/^[a-zA-Z]:/)){let _0x43f715=_0x51113f[_0x400e80(0x1ce)](/\//g,'\x5c');return/^[a-z]:/[_0x400e80(0x1d3)](_0x43f715)&&(_0x43f715=_0x43f715['charAt'](0x0)[_0x400e80(0x1dd)]()+_0x43f715[_0x400e80(0x1dc)](0x1)),_0x43f715;}return _0x51113f[_0x400e80(0x1ce)](/\//g,'\x5c');}export function expandHome(_0x17d368){const _0x20325f=a3_0x12cc;if(_0x17d368[_0x20325f(0x1cb)]('~/')||_0x17d368==='~')return a3_0x5e02a8[_0x20325f(0x1db)](a3_0x380b00[_0x20325f(0x1d9)](),_0x17d368[_0x20325f(0x1dc)](0x1));return _0x17d368;}
@@ -1 +1 @@
1
- (function(_0x365a06,_0x380f99){const _0x379f95=a4_0x4fc2,_0x21196a=_0x365a06();while(!![]){try{const _0xe6ffb2=parseInt(_0x379f95(0x1ae))/0x1*(parseInt(_0x379f95(0x1a2))/0x2)+parseInt(_0x379f95(0x1ac))/0x3+-parseInt(_0x379f95(0x1ad))/0x4+parseInt(_0x379f95(0x1a9))/0x5+parseInt(_0x379f95(0x1a3))/0x6*(-parseInt(_0x379f95(0x19d))/0x7)+-parseInt(_0x379f95(0x1aa))/0x8*(parseInt(_0x379f95(0x19e))/0x9)+-parseInt(_0x379f95(0x1a0))/0xa;if(_0xe6ffb2===_0x380f99)break;else _0x21196a['push'](_0x21196a['shift']());}catch(_0x3dfe0f){_0x21196a['push'](_0x21196a['shift']());}}}(a4_0x228e,0x7108a));function a4_0x228e(){const _0x3a9919=['4072nqaRWz','isArray','isAbsolute','2677171uLxrsZ','468PreSaH','string','4214420URSpYo','sep','316fiPfaS','6JzkHKo','Path\x20must\x20be\x20absolute\x20after\x20normalization','normalize','length','includes','startsWith','2226535fGZLQT','61648abvIGu','some','1805037MITQVR','91076TpjvPU'];a4_0x228e=function(){return _0x3a9919;};return a4_0x228e();}import a4_0x142641 from'path';function a4_0x4fc2(_0x4cbddf,_0x55bd72){_0x4cbddf=_0x4cbddf-0x19c;const _0x228ee0=a4_0x228e();let _0x4fc2ea=_0x228ee0[_0x4cbddf];return _0x4fc2ea;}export function isPathWithinAllowedDirectories(_0x216156,_0x2e35bd){const _0x4521be=a4_0x4fc2;if(typeof _0x216156!==_0x4521be(0x19f)||!Array[_0x4521be(0x1af)](_0x2e35bd))return![];if(!_0x216156||_0x2e35bd[_0x4521be(0x1a6)]===0x0)return![];if(_0x216156['includes']('\x00'))return![];let _0x592255;try{_0x592255=a4_0x142641['resolve'](a4_0x142641[_0x4521be(0x1a5)](_0x216156));}catch{return![];}if(!a4_0x142641['isAbsolute'](_0x592255))throw new Error(_0x4521be(0x1a4));return _0x2e35bd[_0x4521be(0x1ab)](_0x265d90=>{const _0x3272d5=_0x4521be;if(typeof _0x265d90!==_0x3272d5(0x19f)||!_0x265d90)return![];if(_0x265d90[_0x3272d5(0x1a7)]('\x00'))return![];let _0x420ea0;try{_0x420ea0=a4_0x142641['resolve'](a4_0x142641[_0x3272d5(0x1a5)](_0x265d90));}catch{return![];}if(!a4_0x142641[_0x3272d5(0x19c)](_0x420ea0))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0x592255===_0x420ea0)return!![];if(_0x420ea0===a4_0x142641[_0x3272d5(0x1a1)])return _0x592255[_0x3272d5(0x1a8)](a4_0x142641[_0x3272d5(0x1a1)]);return _0x592255[_0x3272d5(0x1a8)](_0x420ea0+a4_0x142641[_0x3272d5(0x1a1)]);});}
1
+ (function(_0x5d219c,_0x250648){const _0x3ea2e1=a4_0xb027,_0x27f4a5=_0x5d219c();while(!![]){try{const _0xabd224=-parseInt(_0x3ea2e1(0xd8))/0x1*(-parseInt(_0x3ea2e1(0xdb))/0x2)+-parseInt(_0x3ea2e1(0xe6))/0x3+-parseInt(_0x3ea2e1(0xde))/0x4+parseInt(_0x3ea2e1(0xdc))/0x5+-parseInt(_0x3ea2e1(0xd4))/0x6+-parseInt(_0x3ea2e1(0xe4))/0x7*(-parseInt(_0x3ea2e1(0xd6))/0x8)+parseInt(_0x3ea2e1(0xd9))/0x9*(parseInt(_0x3ea2e1(0xd7))/0xa);if(_0xabd224===_0x250648)break;else _0x27f4a5['push'](_0x27f4a5['shift']());}catch(_0x1f37e8){_0x27f4a5['push'](_0x27f4a5['shift']());}}}(a4_0x2b9e,0x3900f));function a4_0x2b9e(){const _0x3655c0=['startsWith','resolve','Path\x20must\x20be\x20absolute\x20after\x20normalization','1271459NBrkFo','sep','1229127lcMbJj','includes','1943568LrHmlM','string','16RTskAs','230KemyRu','213ASGZxz','172764qYlZtX','normalize','2642BymTrt','1338030hXGKXT','some','1546548xNcRXG','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','isAbsolute'];a4_0x2b9e=function(){return _0x3655c0;};return a4_0x2b9e();}function a4_0xb027(_0x266749,_0x8d6734){_0x266749=_0x266749-0xd3;const _0x2b9e22=a4_0x2b9e();let _0xb027b0=_0x2b9e22[_0x266749];return _0xb027b0;}import a4_0x3633f9 from'path';export function isPathWithinAllowedDirectories(_0x44f146,_0x34e2b9){const _0x327f44=a4_0xb027;if(typeof _0x44f146!==_0x327f44(0xd5)||!Array['isArray'](_0x34e2b9))return![];if(!_0x44f146||_0x34e2b9['length']===0x0)return![];if(_0x44f146['includes']('\x00'))return![];let _0x828ade;try{_0x828ade=a4_0x3633f9[_0x327f44(0xe2)](a4_0x3633f9[_0x327f44(0xda)](_0x44f146));}catch{return![];}if(!a4_0x3633f9[_0x327f44(0xe0)](_0x828ade))throw new Error(_0x327f44(0xe3));return _0x34e2b9[_0x327f44(0xdd)](_0x2930aa=>{const _0x1f9340=_0x327f44;if(typeof _0x2930aa!==_0x1f9340(0xd5)||!_0x2930aa)return![];if(_0x2930aa[_0x1f9340(0xd3)]('\x00'))return![];let _0x52c5d7;try{_0x52c5d7=a4_0x3633f9['resolve'](a4_0x3633f9[_0x1f9340(0xda)](_0x2930aa));}catch{return![];}if(!a4_0x3633f9[_0x1f9340(0xe0)](_0x52c5d7))throw new Error(_0x1f9340(0xdf));if(_0x828ade===_0x52c5d7)return!![];if(_0x52c5d7===a4_0x3633f9[_0x1f9340(0xe5)])return _0x828ade[_0x1f9340(0xe1)](a4_0x3633f9[_0x1f9340(0xe5)]);return _0x828ade[_0x1f9340(0xe1)](_0x52c5d7+a4_0x3633f9['sep']);});}
@@ -1 +1 @@
1
- (function(_0x1429e3,_0x438663){const _0x3dab4c=a5_0x5af5,_0x3a3d50=_0x1429e3();while(!![]){try{const _0x5a2153=parseInt(_0x3dab4c(0x147))/0x1*(parseInt(_0x3dab4c(0x144))/0x2)+parseInt(_0x3dab4c(0x14c))/0x3*(parseInt(_0x3dab4c(0x14e))/0x4)+parseInt(_0x3dab4c(0x141))/0x5+parseInt(_0x3dab4c(0x13d))/0x6*(parseInt(_0x3dab4c(0x146))/0x7)+-parseInt(_0x3dab4c(0x135))/0x8*(parseInt(_0x3dab4c(0x14a))/0x9)+-parseInt(_0x3dab4c(0x137))/0xa*(-parseInt(_0x3dab4c(0x142))/0xb)+-parseInt(_0x3dab4c(0x13c))/0xc*(parseInt(_0x3dab4c(0x136))/0xd);if(_0x5a2153===_0x438663)break;else _0x3a3d50['push'](_0x3a3d50['shift']());}catch(_0x14040e){_0x3a3d50['push'](_0x3a3d50['shift']());}}}(a5_0x5b0f,0x849ae));function a5_0x5af5(_0x593e5b,_0x440271){_0x593e5b=_0x593e5b-0x135;const _0x5b0fad=a5_0x5b0f();let _0x5af5e7=_0x5b0fad[_0x593e5b];return _0x5af5e7;}import{promises as a5_0x2a6db5}from'fs';import a5_0x1818b6 from'path';import a5_0x210b9b from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x44a0a5){const _0x36aba3=a5_0x5af5;try{const _0x571b05=_0x44a0a5[_0x36aba3(0x140)](_0x36aba3(0x145))?_0x44a0a5[_0x36aba3(0x149)](0x7):_0x44a0a5,_0x4d7929=_0x571b05[_0x36aba3(0x140)]('~/')||_0x571b05==='~'?a5_0x1818b6[_0x36aba3(0x13b)](a5_0x210b9b[_0x36aba3(0x148)](),_0x571b05[_0x36aba3(0x149)](0x1)):_0x571b05,_0xabcac6=a5_0x1818b6[_0x36aba3(0x13e)](_0x4d7929),_0x322440=await a5_0x2a6db5[_0x36aba3(0x13a)](_0xabcac6);return normalizePath(_0x322440);}catch{return null;}}function formatDirectoryError(_0xf19455,_0x255483,_0x2d81d1){const _0x14505c=a5_0x5af5;if(_0x2d81d1)return'Skipping\x20'+_0x2d81d1+':\x20'+_0xf19455;const _0x3d9754=_0x255483 instanceof Error?_0x255483[_0x14505c(0x14b)]:String(_0x255483);return _0x14505c(0x143)+_0xf19455+_0x14505c(0x14d)+_0x3d9754;}function a5_0x5b0f(){const _0x36ab3c=['369HMwVlw','message','3MYNSIh','\x20due\x20to\x20error:\x20','4100180hSgIab','196952ugnMtS','78XTNsYV','493390xFqMiW','stat','uri','realpath','join','910644cdNohA','6vJFvsT','resolve','isDirectory','startsWith','3384050MpwSuo','11QwGijD','Skipping\x20invalid\x20directory:\x20','3452tDMJVJ','file://','1301237jMapyU','41qGPjwf','homedir','slice'];a5_0x5b0f=function(){return _0x36ab3c;};return a5_0x5b0f();}export async function getValidRootDirectories(_0xffa23f){const _0x21284a=a5_0x5af5,_0x10f973=[];for(const _0x4e4497 of _0xffa23f){const _0x2f13e9=await parseRootUri(_0x4e4497[_0x21284a(0x139)]);if(!_0x2f13e9){logMcpStderr(formatDirectoryError(_0x4e4497[_0x21284a(0x139)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x3e90f6=await a5_0x2a6db5[_0x21284a(0x138)](_0x2f13e9);_0x3e90f6[_0x21284a(0x13f)]()?_0x10f973['push'](_0x2f13e9):logMcpStderr(formatDirectoryError(_0x2f13e9,undefined,'non-directory\x20root'));}catch(_0x2383c7){logMcpStderr(formatDirectoryError(_0x2f13e9,_0x2383c7));}}return _0x10f973;}
1
+ (function(_0xa0c7b8,_0x38baec){const _0x24dc21=a5_0x3046,_0x345437=_0xa0c7b8();while(!![]){try{const _0x38b37f=-parseInt(_0x24dc21(0x163))/0x1*(-parseInt(_0x24dc21(0x166))/0x2)+parseInt(_0x24dc21(0x155))/0x3*(-parseInt(_0x24dc21(0x168))/0x4)+-parseInt(_0x24dc21(0x159))/0x5*(-parseInt(_0x24dc21(0x160))/0x6)+parseInt(_0x24dc21(0x15e))/0x7+-parseInt(_0x24dc21(0x158))/0x8+parseInt(_0x24dc21(0x15a))/0x9+-parseInt(_0x24dc21(0x154))/0xa*(parseInt(_0x24dc21(0x15c))/0xb);if(_0x38b37f===_0x38baec)break;else _0x345437['push'](_0x345437['shift']());}catch(_0x51150e){_0x345437['push'](_0x345437['shift']());}}}(a5_0x462c,0x3c541));import{promises as a5_0x48abf6}from'fs';function a5_0x462c(){const _0x51916f=['2uVNqCN','\x20due\x20to\x20error:\x20','30028BUtFTV','isDirectory','10hfPgHx','183dgnmJY','Skipping\x20invalid\x20directory:\x20','push','1193048SehmTo','10HSdEfL','2527470LjkQgy','uri','2103761SeItIT','realpath','1549737Lfhguk','Skipping\x20','1018728bkZOFZ','join','message','203617oRCLCx','slice','non-directory\x20root'];a5_0x462c=function(){return _0x51916f;};return a5_0x462c();}import a5_0x32a4fd from'path';import a5_0x1effb2 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';function a5_0x3046(_0x2b53d3,_0x4d067a){_0x2b53d3=_0x2b53d3-0x154;const _0x462c41=a5_0x462c();let _0x3046f9=_0x462c41[_0x2b53d3];return _0x3046f9;}async function parseRootUri(_0x57a859){const _0x2f6d25=a5_0x3046;try{const _0x25530e=_0x57a859['startsWith']('file://')?_0x57a859[_0x2f6d25(0x164)](0x7):_0x57a859,_0xfe7942=_0x25530e['startsWith']('~/')||_0x25530e==='~'?a5_0x32a4fd[_0x2f6d25(0x161)](a5_0x1effb2['homedir'](),_0x25530e[_0x2f6d25(0x164)](0x1)):_0x25530e,_0x224aaf=a5_0x32a4fd['resolve'](_0xfe7942),_0x4e300f=await a5_0x48abf6[_0x2f6d25(0x15d)](_0x224aaf);return normalizePath(_0x4e300f);}catch{return null;}}function formatDirectoryError(_0x3c59d6,_0x963c0f,_0x219792){const _0x4acf0c=a5_0x3046;if(_0x219792)return _0x4acf0c(0x15f)+_0x219792+':\x20'+_0x3c59d6;const _0x1db556=_0x963c0f instanceof Error?_0x963c0f[_0x4acf0c(0x162)]:String(_0x963c0f);return _0x4acf0c(0x156)+_0x3c59d6+_0x4acf0c(0x167)+_0x1db556;}export async function getValidRootDirectories(_0x11350b){const _0x4e6298=a5_0x3046,_0x18b172=[];for(const _0x37756f of _0x11350b){const _0x450330=await parseRootUri(_0x37756f[_0x4e6298(0x15b)]);if(!_0x450330){logMcpStderr(formatDirectoryError(_0x37756f[_0x4e6298(0x15b)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x5645ef=await a5_0x48abf6['stat'](_0x450330);_0x5645ef[_0x4e6298(0x169)]()?_0x18b172[_0x4e6298(0x157)](_0x450330):logMcpStderr(formatDirectoryError(_0x450330,undefined,_0x4e6298(0x165)));}catch(_0x1fa206){logMcpStderr(formatDirectoryError(_0x450330,_0x1fa206));}}return _0x18b172;}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Canonical MCP tool names.
3
+ *
4
+ * Both the server (index.ts) and tests import from here so
5
+ * the set of advertised tools stays in sync.
6
+ */
7
+ export declare const TOOL_NAMES: {
8
+ readonly EDIT_FILE: "edit_file";
9
+ readonly CODEBASE_SEARCH: "codebase_search";
10
+ readonly GITHUB_CODEBASE_SEARCH: "github_codebase_search";
11
+ };
12
+ export type ToolName = (typeof TOOL_NAMES)[keyof typeof TOOL_NAMES];
13
+ export declare const ALL_TOOL_NAMES: readonly ToolName[];
14
+ export declare const KNOWN_TOOL_NAMES: Set<string>;
@@ -0,0 +1 @@
1
+ function a6_0x38b9(_0x3a3150,_0x1fc209){_0x3a3150=_0x3a3150-0x74;const _0x36bdae=a6_0x36bd();let _0x38b9f8=_0x36bdae[_0x3a3150];return _0x38b9f8;}const a6_0x34434c=a6_0x38b9;function a6_0x36bd(){const _0x155873=['4518441AFftjT','6HORzZB','21832ubmEYu','189qjfDMj','11NFyWzh','622228mmQWTw','codebase_search','184050UGdhsF','github_codebase_search','18498kzttsQ','1964750bmgIzO','295YXdXBn','edit_file','929060KwWomh'];a6_0x36bd=function(){return _0x155873;};return a6_0x36bd();}(function(_0x98ba3d,_0x3c793e){const _0xed665=a6_0x38b9,_0x317040=_0x98ba3d();while(!![]){try{const _0x155fd2=-parseInt(_0xed665(0x74))/0x1+-parseInt(_0xed665(0x7a))/0x2+-parseInt(_0xed665(0x7c))/0x3*(-parseInt(_0xed665(0x80))/0x4)+parseInt(_0xed665(0x78))/0x5*(-parseInt(_0xed665(0x76))/0x6)+-parseInt(_0xed665(0x7e))/0x7*(-parseInt(_0xed665(0x7d))/0x8)+parseInt(_0xed665(0x7b))/0x9+-parseInt(_0xed665(0x77))/0xa*(-parseInt(_0xed665(0x7f))/0xb);if(_0x155fd2===_0x3c793e)break;else _0x317040['push'](_0x317040['shift']());}catch(_0xf67d64){_0x317040['push'](_0x317040['shift']());}}}(a6_0x36bd,0x3dbac));export const TOOL_NAMES={'EDIT_FILE':a6_0x34434c(0x79),'CODEBASE_SEARCH':a6_0x34434c(0x81),'GITHUB_CODEBASE_SEARCH':a6_0x34434c(0x75)};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.164",
3
+ "version": "0.8.166",
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.163",
38
+ "@morphllm/morphsdk": "0.2.166",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",