@morphllm/morphmcp 0.8.164 → 0.8.165

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_0x415e44=a0_0x1052;function a0_0x47df(){const _0x5dd144=['assistant','timed\x20out','Unknown\x20error','homedir','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','TimeoutError','trim','Here\x20is\x20the\x20content\x20of\x20files:\x0a','UnknownError','code_edit','unknown','env','oninitialized','isDirectory','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','catch','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','[github_codebase_search]\x20Failed\x20in\x20','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','api_request_start','user','status','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','PWD','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','has','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','API\x20error\x20(auth/rate-limit)','10190640ZswQqT','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','--version','list_directory\x20','github_url','role','enum','-\x20Glob\x20search\x20`','dryRun','Workspace\x20mode\x20enabled:\x20Using\x20','linesAdded','Cargo.toml','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','every','edit_file','realpath','name','getClientCapabilities','api-key','.\x20Path:\x20','metadata','Rules:\x0a','map','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Invalid\x20arguments:\x20','Error\x20running\x20fast\x20context\x20search:\x20','go.mod','github_codebase_search','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','completed','floor','split','8692888Igzuev','default','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','tool_calls','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','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.','16JWVqHJ','basename','timings','WORKSPACE_ROOT','command','SubToolError','added\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.','ReadError','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','substring','payload','GitHub\x20search\x20failed:\x20','startsWith','lines','params','grep\x20\x27','slice','unknown\x20error','File\x20read\x20error:','FileReadError','instructions','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','tsconfig.json','log','finish','boolean','tool_call_complete','branch','stat','path_validation_failed','parse','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','object','github_search_start','completionId','source','922705naWXwP','error','MORPH_WARP_GREP_TIMEOUT','success','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','access','MORPH_API_URL','dirname',',\x20modified\x20','readFile','Morph\x20Edit\x20Preview','instruction','search_string','runWarpGrep_call','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','read','context','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','linesModified','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','RipgrepNotAvailable','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','\x20\x20morph-mcp','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','messages','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.','match','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','https://morphllm.com/api/error-report','length','MORPH_LARGE_APPLY','stringify','.\x20Changes:\x20','content','\x22>\x0aError\x20reading\x20file:\x20','toLowerCase','Unknown\x20tool:\x20','Disabled\x20tools:\x20','ms:','-\x20Read\x20file\x20`','sk-','../package.json','Created\x20File','array','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','\x20error(s)','version','argv','arguments','read\x20','errors','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','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\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','morph-','Fallback:\x20Using\x20workspace\x20root\x20','number','search_type','mcp-filesystem','resolve','text','etimedout','tool_call_error','WarpGrep\x20sub-tool\x20errors:\x20','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','application/json','owner_repo','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','isArray','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','timeout','roots','FileNotFound','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','❌\x20Morph\x20Edit\x20Failed:\x20','toISOString','\x0a...\x20(truncated,\x20total:\x20','sep','MORPH_API_KEY','Morph\x20Edit\x20','Error\x20accessing\x20directory\x20','response','debug','RipgrepError','path_validation_start','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','BinaryFile','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','262CmjPOG','safeParse','--help','SymlinkError','completed_with_file_errors','warn','<file\x20path=\x22','searchGitHub','MCP','\x0a</file>','requiresApiKey','[could\x20not\x20read\x20file:\x20','-\x20Grepped\x20\x27','code','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.','path','setRequestHandler','.vscode','push','ENABLE_WORKSPACE_MODE','Failed\x20to\x20request\x20roots\x20from\x20client:','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','ENOENT','tool_call_id','glob\x20\x27','inputSchema','join','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','Morph\x20FastApply\x20failed\x20without\x20error\x20message','Applied','warp_grep_start','pattern','setNotificationHandler','Warning:\x20','\x20is\x20not\x20a\x20directory','filter','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','compaction_failed','exit','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','list_directory','now','morph-v3-fast','listRoots','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','composer.json','`\x20in\x20`','0.2.0','optional','Fatal\x20error\x20running\x20server:','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','24600BrvZHH','pyproject.toml','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Benefits:\x0a','linesRemoved','\x22.\x20Known\x20tools:\x20','string','description','some','files','For\x20deletions:\x0a','repo_path','terminationReason','function','file_read_complete','Tool\x20','data','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','normalize','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','codebase_search','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','--api-key=','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','grep_search','terminated','Specific\x20commit\x20hash\x20to\x20search','glob','constructor','Tool\x20\x22','Repository\x20identifier','node_modules','morph-v3-large','grep','utf-8','includes','--api-key','false','10085782upkddK','Preview\x20changes\x20without\x20applying\x20them.','ToolException','connect','stack','16761708akEyCo','min','\x0aOptions:','describe','path_validation_resolved','DISABLED_TOOLS','803447qWkFhG','morph-warp-grep-v2.1','Parent\x20directory\x20does\x20not\x20exist:\x20','message','cwd','\x20-\x20'];a0_0x47df=function(){return _0x5dd144;};return a0_0x47df();}(function(_0x2ef058,_0x3f276c){const _0x4ed1c3=a0_0x1052,_0x47f689=_0x2ef058();while(!![]){try{const _0x338caf=parseInt(_0x4ed1c3(0x1a6))/0x1+parseInt(_0x4ed1c3(0x142))/0x2*(-parseInt(_0x4ed1c3(0x175))/0x3)+-parseInt(_0x4ed1c3(0x1ef))/0x4*(-parseInt(_0x4ed1c3(0x214))/0x5)+-parseInt(_0x4ed1c3(0x1c9))/0x6+parseInt(_0x4ed1c3(0x19b))/0x7+-parseInt(_0x4ed1c3(0x1e9))/0x8+parseInt(_0x4ed1c3(0x1a0))/0x9;if(_0x338caf===_0x3f276c)break;else _0x47f689['push'](_0x47f689['shift']());}catch(_0x561e9d){_0x47f689['push'](_0x47f689['shift']());}}}(a0_0x47df,0xf09fe));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_0x5043e6 from'fs/promises';import a0_0x5053d5 from'path';import a0_0x192da8 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_0x2c9a83 from'axios';function fixPathRepetition(_0x2c225e){const _0x2f0f8b=a0_0x1052,_0x5962f9=_0x2c225e[_0x2f0f8b(0x1e8)](a0_0x5053d5[_0x2f0f8b(0x137)])[_0x2f0f8b(0x165)](Boolean);if(_0x5962f9[_0x2f0f8b(0x231)]<0x2)return null;for(let _0x5987a6=Math[_0x2f0f8b(0x1e7)](_0x5962f9['length']/0x2);_0x5987a6>=0x1;_0x5987a6--){for(let _0x285391=0x0;_0x285391<=_0x5962f9[_0x2f0f8b(0x231)]-0x2*_0x5987a6;_0x285391++){const _0x5d28c6=_0x5962f9[_0x2f0f8b(0x200)](_0x285391,_0x285391+_0x5987a6),_0x2500b0=_0x5962f9[_0x2f0f8b(0x200)](_0x285391+_0x5987a6,_0x285391+0x2*_0x5987a6);if(_0x5d28c6[_0x2f0f8b(0x1d6)]((_0x36d334,_0x8e5afe)=>_0x36d334===_0x2500b0[_0x8e5afe])){const _0xdfb6ef=[..._0x5962f9[_0x2f0f8b(0x200)](0x0,_0x285391),..._0x5962f9[_0x2f0f8b(0x200)](_0x285391+_0x5987a6)];return a0_0x5053d5[_0x2f0f8b(0x137)]+_0xdfb6ef[_0x2f0f8b(0x15c)](a0_0x5053d5[_0x2f0f8b(0x137)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x14dd23=a0_0x1052;try{const _0x2b1c48=require(_0x14dd23(0x23d));return _0x2b1c48[_0x14dd23(0x242)]??_0x14dd23(0x1b6);}catch(_0x2bcbd8){return logMcpStderr(_0x14dd23(0x205),_0x2bcbd8),_0x14dd23(0x1b6);}}function printHelp(){const _0x20ef8f=a0_0x1052;console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x20ef8f(0x207)](_0x20ef8f(0x13f)),console['log'](_0x20ef8f(0x1a2)),console['log'](_0x20ef8f(0x133)),console[_0x20ef8f(0x207)](_0x20ef8f(0x1b0)),console['log'](_0x20ef8f(0x12f)),console[_0x20ef8f(0x207)]('\x0aExamples:'),console[_0x20ef8f(0x207)](_0x20ef8f(0x22a)),console[_0x20ef8f(0x207)](_0x20ef8f(0x249));}const cliArgs=process[a0_0x415e44(0x243)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x415e44(0x1cb),'-v','-V']),HELP_FLAGS=new Set([a0_0x415e44(0x144),'-h']);function a0_0x1052(_0x5ce040,_0x3e13e5){_0x5ce040=_0x5ce040-0x126;const _0x47dfd4=a0_0x47df();let _0x1052d1=_0x47dfd4[_0x5ce040];return _0x1052d1;}cliArgs['some'](_0x3e9fec=>VERSION_FLAGS[a0_0x415e44(0x1c6)](_0x3e9fec))&&(console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x415e44(0x168)](0x0));cliArgs[a0_0x415e44(0x17d)](_0x50a00a=>HELP_FLAGS[a0_0x415e44(0x1c6)](_0x50a00a))&&(printHelp(),process[a0_0x415e44(0x168)](0x0));function getCliArg(_0x58953b){const _0x522523=a0_0x415e44;for(let _0xabb8cd=0x0;_0xabb8cd<cliArgs[_0x522523(0x231)];_0xabb8cd++){const _0x116ac1=cliArgs[_0xabb8cd];if(_0x116ac1[_0x522523(0x1fc)]('--'+_0x58953b+'='))return _0x116ac1[_0x522523(0x200)](('--'+_0x58953b+'=')[_0x522523(0x231)]);if(_0x116ac1==='--'+_0x58953b&&_0xabb8cd+0x1<cliArgs[_0x522523(0x231)])return cliArgs[_0xabb8cd+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x415e44(0x231)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x415e44(0x1c6)](arg)||HELP_FLAGS[a0_0x415e44(0x1c6)](arg))continue;if(arg[a0_0x415e44(0x1fc)](a0_0x415e44(0x18b)))continue;if(arg===a0_0x415e44(0x199)){i++;continue;}args[a0_0x415e44(0x154)](arg);}const WORKSPACE_ROOT=process[a0_0x415e44(0x1b7)][a0_0x415e44(0x1f2)]||process[a0_0x415e44(0x1b7)][a0_0x415e44(0x1c4)]||process[a0_0x415e44(0x1aa)](),ENABLE_WORKSPACE_MODE=process[a0_0x415e44(0x1b7)][a0_0x415e44(0x155)]!==a0_0x415e44(0x19a),MORPH_API_KEY=getCliArg(a0_0x415e44(0x1db))??process[a0_0x415e44(0x1b7)][a0_0x415e44(0x138)],MORPH_API_URL=process[a0_0x415e44(0x1b7)][a0_0x415e44(0x21a)],MORPH_LARGE_APPLY=process[a0_0x415e44(0x1b7)][a0_0x415e44(0x232)]!==a0_0x415e44(0x19a),MORPH_WARP_GREP_TIMEOUT=process[a0_0x415e44(0x1b7)][a0_0x415e44(0x216)]?parseInt(process[a0_0x415e44(0x1b7)][a0_0x415e44(0x216)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x415e44(0x1d7),a0_0x415e44(0x189),a0_0x415e44(0x1e4)]),DEFAULT_DISABLED_TOOLS=new Set(['edit_file']),DISABLED_TOOLS=process['env'][a0_0x415e44(0x1a5)]?new Set(process[a0_0x415e44(0x1b7)]['DISABLED_TOOLS'][a0_0x415e44(0x1e8)](',')[a0_0x415e44(0x1df)](_0x470f66=>_0x470f66[a0_0x415e44(0x1b2)]())[a0_0x415e44(0x165)](_0x541c98=>_0x541c98[a0_0x415e44(0x231)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS['size']>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x415e44(0x1c6)](tool)&&console[a0_0x415e44(0x215)](a0_0x415e44(0x1c7)+tool+a0_0x415e44(0x17a)+[...KNOWN_TOOL_NAMES][a0_0x415e44(0x15c)](',\x20'));}console[a0_0x415e44(0x215)](a0_0x415e44(0x239)+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x415e44(0x1fc)](a0_0x415e44(0x23c))&&!MORPH_API_KEY['startsWith'](a0_0x415e44(0x24a))&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x3db515){const _0x26010f=a0_0x415e44;try{await a0_0x2c9a83['post'](_0x26010f(0x230),{..._0x3db515,'timestamp':new Date()[_0x26010f(0x135)](),'source':_0x3db515['source']||_0x26010f(0x24e),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x3db515[_0x26010f(0x224)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x26010f(0x12b),'Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x487b9d,_0x108f95){const _0x47782d=a0_0x415e44;if(_0x487b9d&&typeof _0x487b9d===_0x47782d(0x210)&&_0x47782d(0x1c2)in _0x487b9d)return _0x487b9d['status'];if(_0x487b9d&&typeof _0x487b9d===_0x47782d(0x210)&&_0x47782d(0x13b)in _0x487b9d)return _0x487b9d[_0x47782d(0x13b)]?.['status'];const _0x2a62a1=_0x108f95[_0x47782d(0x22e)](/\b(401|429)\b/);return _0x2a62a1?parseInt(_0x2a62a1[0x1],0xa):null;}function handleMorphAPIError(_0x4ee477){const _0x57637e=a0_0x415e44,_0x479c83=_0x4ee477 instanceof Error?_0x4ee477[_0x57637e(0x1a9)]:String(_0x4ee477),_0x597fd3=extractStatusCode(_0x4ee477,_0x479c83);switch(_0x597fd3){case 0x191:return{'content':[{'type':'text','text':_0x57637e(0x150)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x57637e(0x126),'text':_0x57637e(0x1c3)}],'isError':!![]};default:return null;}}args[a0_0x415e44(0x231)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x415e44(0x1f8)),logMcpStderr(a0_0x415e44(0x225)),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x415e44(0x1ed)),logMcpStderr(a0_0x415e44(0x18c)));function normalizePath(_0x458df4){const _0x16c6ee=a0_0x415e44;return a0_0x5053d5[_0x16c6ee(0x187)](_0x458df4);}function expandHome(_0x1aff37){const _0x5f4d1c=a0_0x415e44;if(_0x1aff37[_0x5f4d1c(0x1fc)]('~/')||_0x1aff37==='~')return a0_0x5053d5[_0x5f4d1c(0x15c)](a0_0x192da8[_0x5f4d1c(0x1af)](),_0x1aff37['slice'](0x1));return _0x1aff37;}let allowedDirectories=await Promise['all'](args['map'](async _0x2dab3a=>{const _0x4028b3=a0_0x415e44,_0x42843e=expandHome(_0x2dab3a),_0x11d8d9=a0_0x5053d5[_0x4028b3(0x24f)](_0x42843e);try{const _0x58ebfc=await a0_0x5043e6[_0x4028b3(0x1d8)](_0x11d8d9);return normalizePath(_0x58ebfc);}catch(_0x4a9031){return normalizePath(_0x11d8d9);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),logMcpStderr(a0_0x415e44(0x1d2)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x186804){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x186804);}async function detectWorkspaceRoot(_0x746e1d){const _0x2e6c0d=a0_0x415e44;let _0x22286b=a0_0x5053d5['resolve'](_0x746e1d);const _0x514366=['.git',_0x2e6c0d(0x153),'package.json',_0x2e6c0d(0x1d4),_0x2e6c0d(0x176),_0x2e6c0d(0x1e3),'.cursor',_0x2e6c0d(0x206),_0x2e6c0d(0x16f)];while(_0x22286b!==a0_0x5053d5['dirname'](_0x22286b)){for(const _0x3eaa4e of _0x514366){const _0x18a63d=a0_0x5053d5['join'](_0x22286b,_0x3eaa4e);try{return await a0_0x5043e6[_0x2e6c0d(0x219)](_0x18a63d),normalizePath(_0x22286b);}catch{}}_0x22286b=a0_0x5053d5[_0x2e6c0d(0x21b)](_0x22286b);}return normalizePath(_0x746e1d);}await Promise['all'](args[a0_0x415e44(0x1df)](async _0x4dc292=>{const _0x55b2f0=a0_0x415e44;try{const _0xdf897c=await a0_0x5043e6[_0x55b2f0(0x20c)](expandHome(_0x4dc292));!_0xdf897c[_0x55b2f0(0x1b9)]()&&(logMcpStderr('Error:\x20'+_0x4dc292+_0x55b2f0(0x164)),process[_0x55b2f0(0x168)](0x1));}catch(_0x216186){logMcpStderr(_0x55b2f0(0x13a)+_0x4dc292+':',_0x216186),process[_0x55b2f0(0x168)](0x1);}}));async function validatePath(_0x11aa68){const _0x34280b=a0_0x415e44,_0x134e0=expandHome(_0x11aa68),_0x37c0b5=a0_0x5053d5[_0x34280b(0x24f)](_0x134e0);logger[_0x34280b(0x13c)](_0x34280b(0x14a),_0x34280b(0x13e),{'raw_path':_0x11aa68,'absolute':_0x37c0b5});try{const _0x4d9583=await a0_0x5043e6[_0x34280b(0x1d8)](_0x37c0b5);return logger['debug'](_0x34280b(0x14a),_0x34280b(0x1a4),{'resolved':_0x4d9583,'symlink':_0x4d9583!==_0x37c0b5}),_0x4d9583;}catch(_0x508f24){if(_0x508f24[_0x34280b(0x14f)]==='ENOENT'){const _0x4ed7a9=a0_0x5053d5[_0x34280b(0x21b)](_0x37c0b5);try{const _0xd2b024=await a0_0x5043e6['realpath'](_0x4ed7a9),_0x17d1a7=a0_0x5053d5['join'](_0xd2b024,a0_0x5053d5[_0x34280b(0x1f0)](_0x37c0b5));return logger[_0x34280b(0x13c)](_0x34280b(0x14a),'path_validation_resolved',{'resolved':_0x17d1a7,'new_file':!![]}),_0x17d1a7;}catch{logger[_0x34280b(0x215)](_0x34280b(0x14a),_0x34280b(0x20d),{'raw_path':_0x11aa68,'error':_0x34280b(0x1a8)+_0x4ed7a9});throw new Error(_0x34280b(0x1a8)+_0x4ed7a9);}}logger[_0x34280b(0x215)]('MCP',_0x34280b(0x20d),{'raw_path':_0x11aa68,'error':_0x508f24[_0x34280b(0x1a9)]});throw _0x508f24;}}const MorphEditFileArgsSchema=z[a0_0x415e44(0x210)]({'path':z[a0_0x415e44(0x17b)](),'code_edit':z[a0_0x415e44(0x17b)]()[a0_0x415e44(0x1a3)](a0_0x415e44(0x141)),'instruction':z['string']()[a0_0x415e44(0x1a3)](a0_0x415e44(0x22f)),'dryRun':z[a0_0x415e44(0x209)]()[a0_0x415e44(0x1ea)](![])['describe'](a0_0x415e44(0x19c))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x415e44(0x248),WarpGrepArgsSchema=z[a0_0x415e44(0x210)]({'search_string':z[a0_0x415e44(0x17b)]()[a0_0x415e44(0x1a3)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x415e44(0x17b)]()['describe'](a0_0x415e44(0x229)),'search_type':z[a0_0x415e44(0x1cf)](['default',a0_0x415e44(0x194)])['optional']()[a0_0x415e44(0x1a3)]('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z['string']()[a0_0x415e44(0x1a3)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x415e44(0x17b)]()[a0_0x415e44(0x172)]()[a0_0x415e44(0x1a3)](a0_0x415e44(0x1f6)),'owner_repo':z[a0_0x415e44(0x17b)]()[a0_0x415e44(0x172)]()[a0_0x415e44(0x1a3)](a0_0x415e44(0x12a)),'branch':z['string']()[a0_0x415e44(0x172)]()[a0_0x415e44(0x1a3)](a0_0x415e44(0x166))}),CodebaseSearchArgsSchema=z[a0_0x415e44(0x210)]({'query':z[a0_0x415e44(0x17b)]()[a0_0x415e44(0x1a3)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x415e44(0x17b)]()[a0_0x415e44(0x1a3)](a0_0x415e44(0x193)),'branch':z[a0_0x415e44(0x17b)]()[a0_0x415e44(0x172)]()[a0_0x415e44(0x1a3)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x415e44(0x17b)]()[a0_0x415e44(0x172)]()[a0_0x415e44(0x1a3)](a0_0x415e44(0x18f)),'targetDirectories':z[a0_0x415e44(0x23f)](z[a0_0x415e44(0x17b)]())[a0_0x415e44(0x1ea)]([])[a0_0x415e44(0x1a3)](a0_0x415e44(0x1e5)),'limit':z[a0_0x415e44(0x24c)]()[a0_0x415e44(0x172)]()[a0_0x415e44(0x1ea)](0xa)[a0_0x415e44(0x1a3)]('Max\x20results\x20to\x20return')}),server=new Server({'name':'morph-mcp','version':a0_0x415e44(0x171)},{'capabilities':{'tools':{}}});server[a0_0x415e44(0x152)](ListToolsRequestSchema,async()=>{const _0x396b05=a0_0x415e44,_0x1cad55=[{'name':_0x396b05(0x1d7),'description':_0x396b05(0x12d)+_0x396b05(0x1d5)+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+_0x396b05(0x1eb)+_0x396b05(0x178)+_0x396b05(0x169)+_0x396b05(0x218)+_0x396b05(0x186)+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+_0x396b05(0x1bc)+'Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'+_0x396b05(0x17f)+_0x396b05(0x15d)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x396b05(0x1de)+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0x396b05(0x247)+'-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a'+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x396b05(0x240),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x396b05(0x189),'description':_0x396b05(0x20f)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x396b05(0x22b)+_0x396b05(0x188)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x289aaf=_0x1cad55[_0x396b05(0x165)](_0x1c31d0=>{const _0x48343d=_0x396b05;if(DISABLED_TOOLS['has'](_0x1c31d0[_0x48343d(0x1d9)]))return console[_0x48343d(0x215)](_0x48343d(0x184)+_0x1c31d0['name']+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if('requiresApiKey'in _0x1c31d0&&_0x1c31d0[_0x48343d(0x14c)]&&!MORPH_API_KEY)return logMcpStderr(_0x48343d(0x163)+_0x1c31d0['name']+_0x48343d(0x222)),![];return!![];});return{'tools':_0x289aaf[_0x396b05(0x1df)](_0x58a888=>({'name':_0x58a888[_0x396b05(0x1d9)],'description':_0x58a888[_0x396b05(0x17c)],'inputSchema':_0x58a888[_0x396b05(0x15b)]}))};}),server[a0_0x415e44(0x152)](CallToolRequestSchema,async _0x480115=>{const _0x3d0ec9=a0_0x415e44,{name:_0x406c0b,arguments:_0x4f30d9}=_0x480115[_0x3d0ec9(0x1fe)],_0x3124bb=Date[_0x3d0ec9(0x16b)]();logger[_0x3d0ec9(0x13c)]('MCP','tool_call_received',{'tool':_0x406c0b,'args':_0x406c0b===_0x3d0ec9(0x1d7)?{'path':_0x4f30d9?.['path'],'instruction':_0x4f30d9?.['instruction']||_0x4f30d9?.['instructions'],'dryRun':_0x4f30d9?.[_0x3d0ec9(0x1d1)]}:_0x4f30d9});try{if(!MORPH_API_KEY)return{'content':[{'type':'text','text':'No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.'}],'isError':!![]};if(!MORPH_API_KEY[_0x3d0ec9(0x1fc)]('sk-')&&!MORPH_API_KEY[_0x3d0ec9(0x1fc)]('morph-'))return{'content':[{'type':'text','text':_0x3d0ec9(0x1ee)}],'isError':!![]};if(DISABLED_TOOLS[_0x3d0ec9(0x1c6)](_0x406c0b))return{'content':[{'type':_0x3d0ec9(0x126),'text':_0x3d0ec9(0x192)+_0x406c0b+'\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.'}],'isError':![]};switch(_0x406c0b){case'edit_file':{const _0x45182f=_0x4f30d9&&typeof _0x4f30d9===_0x3d0ec9(0x210)&&_0x3d0ec9(0x204)in _0x4f30d9&&!(_0x3d0ec9(0x21f)in _0x4f30d9)?{..._0x4f30d9,'instruction':_0x4f30d9[_0x3d0ec9(0x204)],'instructions':undefined}:_0x4f30d9,_0x37bed7=MorphEditFileArgsSchema[_0x3d0ec9(0x143)](_0x45182f);if(!_0x37bed7[_0x3d0ec9(0x217)])throw new Error(_0x3d0ec9(0x227)+_0x37bed7[_0x3d0ec9(0x215)]);const _0x27f3fe=await validatePath(_0x37bed7['data'][_0x3d0ec9(0x151)]);let _0x57579e=null,_0x2eaf37=!![],_0x3b2cda=null;try{_0x57579e=await a0_0x5043e6[_0x3d0ec9(0x21d)](_0x27f3fe,_0x3d0ec9(0x197)),logger[_0x3d0ec9(0x13c)](_0x3d0ec9(0x14a),_0x3d0ec9(0x183),{'path':_0x27f3fe,'size_bytes':_0x57579e['length']});}catch(_0x331ea6){const _0x2ee86a=_0x331ea6[_0x3d0ec9(0x14f)];_0x2ee86a===_0x3d0ec9(0x158)?(_0x2eaf37=![],_0x57579e='',logger[_0x3d0ec9(0x13c)](_0x3d0ec9(0x14a),_0x3d0ec9(0x183),{'path':_0x27f3fe,'exists':![]})):(_0x3b2cda='Failed\x20to\x20read\x20file:\x20'+(_0x2ee86a||'unknown')+_0x3d0ec9(0x1ab)+(_0x331ea6 instanceof Error?_0x331ea6[_0x3d0ec9(0x1a9)]:String(_0x331ea6)),logger[_0x3d0ec9(0x215)](_0x3d0ec9(0x14a),'file_read_failed',{'path':_0x27f3fe,'error':_0x3b2cda}),logMcpStderr(_0x3d0ec9(0x163)+_0x3b2cda));}let _0x1402cd;try{const _0x803515=MORPH_API_KEY;if(!_0x803515)throw new Error(_0x3d0ec9(0x1e0));const _0x3c1a4b=a0_0x5053d5[_0x3d0ec9(0x21b)](_0x27f3fe),_0x5b66e0=a0_0x5053d5[_0x3d0ec9(0x1f0)](_0x27f3fe);logger[_0x3d0ec9(0x13c)](_0x3d0ec9(0x14a),_0x3d0ec9(0x1c0),{'model':_0x3d0ec9(0x16c),'path':_0x37bed7[_0x3d0ec9(0x185)][_0x3d0ec9(0x151)],'instruction_len':_0x37bed7[_0x3d0ec9(0x185)][_0x3d0ec9(0x21f)][_0x3d0ec9(0x231)],'code_edit_len':_0x37bed7['data']['code_edit'][_0x3d0ec9(0x231)],'original_code_len':_0x57579e?.['length']??0x0,'dry_run':_0x37bed7[_0x3d0ec9(0x185)][_0x3d0ec9(0x1d1)]});const _0x229167=Date['now'](),_0x29696b=await executeEditFile({'target_filepath':_0x5b66e0,'code_edit':_0x37bed7['data'][_0x3d0ec9(0x1b5)],'instruction':_0x37bed7[_0x3d0ec9(0x185)]['instruction']},{'morphApiKey':_0x803515,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x3c1a4b,'autoWrite':!_0x37bed7[_0x3d0ec9(0x185)]['dryRun'],'generateUdiff':![],'debug':![]}),_0x75bdbc=Date[_0x3d0ec9(0x16b)]()-_0x229167;_0x1402cd=_0x29696b[_0x3d0ec9(0x212)];if(!_0x29696b[_0x3d0ec9(0x217)])throw new Error(_0x29696b['error']||_0x3d0ec9(0x15e));const _0x138103=_0x29696b['changes'],_0x3aeaf4=_0x3d0ec9(0x1f5)+_0x138103['linesAdded']+',\x20removed\x20'+_0x138103[_0x3d0ec9(0x179)]+_0x3d0ec9(0x21c)+_0x138103[_0x3d0ec9(0x226)];logger['debug'](_0x3d0ec9(0x14a),_0x3d0ec9(0x20a),{'tool':'edit_file','success':!![],'latency_ms':Date[_0x3d0ec9(0x16b)]()-_0x3124bb,'edit_latency_ms':_0x75bdbc,'changes':{'added':_0x138103[_0x3d0ec9(0x1d3)],'removed':_0x138103[_0x3d0ec9(0x179)],'modified':_0x138103[_0x3d0ec9(0x226)]},'completion_id':_0x1402cd});if(_0x37bed7[_0x3d0ec9(0x185)][_0x3d0ec9(0x1d1)])return{'content':[{'type':_0x3d0ec9(0x126),'text':_0x3d0ec9(0x21e)+(_0x2eaf37?'':'\x20(new\x20file)')+':\x20'+_0x37bed7['data']['instruction']+_0x3d0ec9(0x234)+_0x3aeaf4+_0x3d0ec9(0x1dc)+_0x37bed7[_0x3d0ec9(0x185)]['path']+'.'}]};return{'content':[{'type':_0x3d0ec9(0x126),'text':_0x3d0ec9(0x139)+(_0x2eaf37?_0x3d0ec9(0x15f):_0x3d0ec9(0x23e))+':\x20'+_0x37bed7['data'][_0x3d0ec9(0x21f)]+_0x3d0ec9(0x234)+_0x3aeaf4+'.\x20Path:\x20'+_0x37bed7[_0x3d0ec9(0x185)][_0x3d0ec9(0x151)]+'.'}]};}catch(_0x101588){const _0x2039fb=handleMorphAPIError(_0x101588);if(_0x2039fb)return logger[_0x3d0ec9(0x215)](_0x3d0ec9(0x14a),_0x3d0ec9(0x128),{'tool':_0x3d0ec9(0x1d7),'error':_0x3d0ec9(0x1c8),'latency_ms':Date[_0x3d0ec9(0x16b)]()-_0x3124bb}),_0x2039fb;const _0x12f78a=_0x101588 instanceof Error?_0x101588[_0x3d0ec9(0x1a9)]:String(_0x101588);return logger[_0x3d0ec9(0x215)](_0x3d0ec9(0x14a),_0x3d0ec9(0x128),{'tool':_0x3d0ec9(0x1d7),'error':_0x12f78a,'path':_0x37bed7[_0x3d0ec9(0x185)][_0x3d0ec9(0x151)],'validated_path':_0x27f3fe,'latency_ms':Date['now']()-_0x3124bb,'stack':_0x101588 instanceof Error?_0x101588[_0x3d0ec9(0x19f)]:undefined}),reportMorphError({'error_message':_0x12f78a,'error_type':_0x101588 instanceof Error?_0x101588[_0x3d0ec9(0x191)][_0x3d0ec9(0x1d9)]:'UnknownError','context':{'tool':'edit_file','completion_id':_0x1402cd,'file_path':_0x37bed7[_0x3d0ec9(0x185)][_0x3d0ec9(0x151)],'validated_path':_0x27f3fe,'instruction':_0x37bed7[_0x3d0ec9(0x185)][_0x3d0ec9(0x21f)],'model':MORPH_LARGE_APPLY?_0x3d0ec9(0x195):'morph-v3-fast','dry_run':_0x37bed7[_0x3d0ec9(0x185)][_0x3d0ec9(0x1d1)],'file_exists':_0x2eaf37,'file_read_error':_0x3b2cda,'file_readable':_0x57579e!==null,'request_content':{'path':_0x37bed7[_0x3d0ec9(0x185)][_0x3d0ec9(0x151)],'code_edit':_0x37bed7[_0x3d0ec9(0x185)]['code_edit'],'instruction':_0x37bed7[_0x3d0ec9(0x185)][_0x3d0ec9(0x21f)],'original_code':_0x57579e!==null?_0x57579e[_0x3d0ec9(0x231)]>0xc350?_0x57579e[_0x3d0ec9(0x1f9)](0x0,0xc350)+_0x3d0ec9(0x136)+_0x57579e[_0x3d0ec9(0x231)]+'\x20chars)':_0x57579e:_0x3d0ec9(0x14d)+(_0x3b2cda||_0x3d0ec9(0x201))+']','original_code_length':_0x57579e?.[_0x3d0ec9(0x231)]??0x0,'model':MORPH_LARGE_APPLY?_0x3d0ec9(0x195):'morph-v3-fast','dry_run':_0x37bed7[_0x3d0ec9(0x185)][_0x3d0ec9(0x1d1)]}},'stack_trace':_0x101588 instanceof Error?_0x101588['stack']:undefined,'source':_0x3d0ec9(0x24e)})[_0x3d0ec9(0x1bb)](()=>{}),{'content':[{'type':_0x3d0ec9(0x126),'text':_0x3d0ec9(0x134)+_0x12f78a}],'isError':!![]};}}case _0x3d0ec9(0x189):{const _0x4d950d=WarpGrepArgsSchema['safeParse'](_0x4f30d9);if(!_0x4d950d[_0x3d0ec9(0x217)])return{'content':[{'type':_0x3d0ec9(0x126),'text':_0x3d0ec9(0x1e1)+_0x4d950d['error']}],'isError':!![]};const _0x3318d3=_0x2d8c18=>{const _0x2e15c3=_0x3d0ec9,_0x559329=[];for(const _0x4fad64 of _0x2d8c18||[]){if(_0x4fad64[_0x2e15c3(0x1ce)]==='assistant'&&Array[_0x2e15c3(0x12e)](_0x4fad64['tool_calls']))for(const _0x44df38 of _0x4fad64[_0x2e15c3(0x1ec)]){try{const _0x19869e=_0x44df38['function']?.[_0x2e15c3(0x1d9)],_0x638af1=JSON[_0x2e15c3(0x20e)](_0x44df38[_0x2e15c3(0x182)]?.[_0x2e15c3(0x244)]||'{}');if(_0x19869e===_0x2e15c3(0x18d))_0x559329[_0x2e15c3(0x154)](_0x2e15c3(0x1ff)+_0x638af1[_0x2e15c3(0x161)]+'\x27\x20'+(_0x638af1[_0x2e15c3(0x151)]||'.'));else{if(_0x19869e===_0x2e15c3(0x223))_0x559329[_0x2e15c3(0x154)](_0x2e15c3(0x245)+_0x638af1['path']);else{if(_0x19869e===_0x2e15c3(0x16a))_0x559329[_0x2e15c3(0x154)](_0x2e15c3(0x1cc)+(_0x638af1[_0x2e15c3(0x1f3)]||'.'));else{if(_0x19869e==='glob')_0x559329['push'](_0x2e15c3(0x15a)+_0x638af1[_0x2e15c3(0x161)]+'\x27\x20'+(_0x638af1[_0x2e15c3(0x151)]||'.'));else _0x19869e===_0x2e15c3(0x208)&&_0x559329[_0x2e15c3(0x154)](_0x2e15c3(0x208));}}}}catch{}}}return _0x559329;},_0x55a272=_0x106bec=>{const _0x33a621=_0x3d0ec9,_0x19bc5a=[];if(!_0x106bec||!Array[_0x33a621(0x12e)](_0x106bec))return _0x19bc5a;const _0x52c8cb=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x33a621(0x132),'tool':_0x33a621(0x223)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x33a621(0x223)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':_0x33a621(0x223)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x33a621(0x140),'tool':_0x33a621(0x223)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x33a621(0x13d),'tool':_0x33a621(0x196)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x33a621(0x228),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':_0x33a621(0x140),'tool':_0x33a621(0x223)},{'pattern':/\[SYMLINK\]/,'error_type':_0x33a621(0x145),'tool':_0x33a621(0x223)},{'pattern':/not a text file/,'error_type':_0x33a621(0x140),'tool':_0x33a621(0x223)},{'pattern':/symbolic link/,'error_type':_0x33a621(0x145),'tool':_0x33a621(0x223)},{'pattern':/Error reading file:/,'error_type':_0x33a621(0x1f7),'tool':_0x33a621(0x223)},{'pattern':/status="error"/,'error_type':_0x33a621(0x19d),'tool':_0x33a621(0x1b6)}];let _0x203572=0x0;for(const _0x418a2b of _0x106bec){_0x418a2b[_0x33a621(0x1ce)]===_0x33a621(0x1ac)&&Array[_0x33a621(0x12e)](_0x418a2b[_0x33a621(0x1ec)])&&_0x203572++;const _0x875e78=_0x418a2b[_0x33a621(0x235)];if((_0x418a2b[_0x33a621(0x1ce)]==='tool'||_0x418a2b['role']===_0x33a621(0x1c1))&&_0x875e78&&typeof _0x875e78==='string')for(const {pattern:_0x51486b,error_type:_0xe5d755,tool:_0x3e8bad}of _0x52c8cb){const _0x35bd31=_0x875e78[_0x33a621(0x22e)](new RegExp(_0x51486b[_0x33a621(0x213)],'g'));if(_0x35bd31)for(const _0x582981 of _0x35bd31){const _0x3f7bda=_0x875e78['indexOf'](_0x582981),_0x40d519=_0x875e78[_0x33a621(0x1f9)](_0x3f7bda,Math[_0x33a621(0x1a1)](_0x3f7bda+0xc8,_0x875e78[_0x33a621(0x231)]));_0x19bc5a['push']({'tool':_0x3e8bad,'error_type':_0xe5d755,'error_message':_0x40d519[_0x33a621(0x1e8)]('\x0a')[0x0],'turn':_0x203572});}}}return _0x19bc5a;};try{const _0x235771=a0_0x5053d5[_0x3d0ec9(0x24f)](_0x4d950d[_0x3d0ec9(0x185)][_0x3d0ec9(0x180)]),_0x31d763=_0x4d950d[_0x3d0ec9(0x185)][_0x3d0ec9(0x24d)],_0x58e9d6=_0x31d763===_0x3d0ec9(0x194)?{'allowNames':['node_modules']}:undefined,_0x352deb=new LocalRipgrepProvider(_0x235771,undefined,_0x58e9d6);logger[_0x3d0ec9(0x13c)](_0x3d0ec9(0x14a),'provider_created',{'type':'LocalRipgrepProvider','repo_root':_0x235771,'search_type':_0x31d763||_0x3d0ec9(0x1ea)}),logger[_0x3d0ec9(0x13c)](_0x3d0ec9(0x14a),_0x3d0ec9(0x160),{'query':_0x4d950d['data'][_0x3d0ec9(0x220)],'repo_root':_0x235771,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x389dba=Date[_0x3d0ec9(0x16b)](),_0x41cedf=await runWarpGrep({'searchTerm':_0x4d950d['data'][_0x3d0ec9(0x220)],'repoRoot':_0x235771,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x352deb,'search_type':_0x31d763}),_0x4e87fd=Date['now']()-_0x389dba,_0x10d189=_0x41cedf[_0x3d0ec9(0x208)]?.[_0x3d0ec9(0x1dd)]?.[_0x3d0ec9(0x17e)]?.[_0x3d0ec9(0x231)]??0x0;logger[_0x3d0ec9(0x13c)](_0x3d0ec9(0x14a),'warp_grep_complete',{'termination':_0x41cedf[_0x3d0ec9(0x181)],'turns':_0x41cedf[_0x3d0ec9(0x1f1)]?.['turns']??0x0,'files_found':_0x10d189,'latency_ms':_0x4e87fd});const _0x27300d=_0x55a272(_0x41cedf[_0x3d0ec9(0x22c)]);_0x27300d[_0x3d0ec9(0x231)]>0x0&&reportMorphError({'error_message':_0x3d0ec9(0x129)+_0x27300d['length']+_0x3d0ec9(0x241),'error_type':_0x3d0ec9(0x1f4),'level':_0x3d0ec9(0x147),'tool':_0x3d0ec9(0x189),'context':{'repo_path':_0x4d950d[_0x3d0ec9(0x185)]['repo_path'],'query':_0x4d950d['data']['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x41cedf[_0x3d0ec9(0x181)],'sub_tool_errors':_0x27300d,'timings':_0x41cedf[_0x3d0ec9(0x1f1)],'tool_calls':_0x3318d3(_0x41cedf[_0x3d0ec9(0x22c)]),'messages':_0x41cedf[_0x3d0ec9(0x22c)]?.['map'](_0x59364b=>({'role':_0x59364b[_0x3d0ec9(0x1ce)],'content':_0x59364b[_0x3d0ec9(0x235)],..._0x59364b['tool_calls']?{'tool_calls':_0x59364b[_0x3d0ec9(0x1ec)]['length']}:{},..._0x59364b[_0x3d0ec9(0x159)]?{'tool_call_id':_0x59364b[_0x3d0ec9(0x159)]}:{}}))},'source':_0x3d0ec9(0x24e)})[_0x3d0ec9(0x1bb)](()=>{});let _0x4e82ad='';if(_0x41cedf['terminationReason']===_0x3d0ec9(0x1e6)&&_0x41cedf[_0x3d0ec9(0x208)]?.[_0x3d0ec9(0x1dd)]?.[_0x3d0ec9(0x17e)]){const _0x24f17f=_0x41cedf[_0x3d0ec9(0x208)][_0x3d0ec9(0x1dd)][_0x3d0ec9(0x17e)];if(_0x24f17f[_0x3d0ec9(0x231)]===0x0)return _0x4e82ad=_0x41cedf[_0x3d0ec9(0x208)][_0x3d0ec9(0x1fa)]||_0x3d0ec9(0x177),{'content':[{'type':_0x3d0ec9(0x126),'text':_0x4e82ad}]};const _0x3db54e=[],_0x40c012=[_0x3d0ec9(0x1ca)];for(const _0x376401 of _0x41cedf[_0x3d0ec9(0x22c)]){if(_0x376401[_0x3d0ec9(0x1ce)]===_0x3d0ec9(0x1ac)&&Array[_0x3d0ec9(0x12e)](_0x376401[_0x3d0ec9(0x1ec)]))for(const _0x8fbd8a of _0x376401['tool_calls']){try{const _0x10206e=_0x8fbd8a[_0x3d0ec9(0x182)]?.[_0x3d0ec9(0x1d9)],_0x38faf5=JSON[_0x3d0ec9(0x20e)](_0x8fbd8a[_0x3d0ec9(0x182)]?.[_0x3d0ec9(0x244)]||'{}');if(_0x10206e===_0x3d0ec9(0x18d))_0x40c012[_0x3d0ec9(0x154)](_0x3d0ec9(0x14e)+_0x38faf5['pattern']+'\x27\x20in\x20`'+(_0x38faf5[_0x3d0ec9(0x151)]||'.')+'`');else{if(_0x10206e==='read')_0x40c012[_0x3d0ec9(0x154)](_0x3d0ec9(0x23b)+_0x38faf5[_0x3d0ec9(0x151)]+'`');else{if(_0x10206e==='list_directory')_0x40c012[_0x3d0ec9(0x154)]('-\x20Listed\x20directory\x20`'+(_0x38faf5[_0x3d0ec9(0x1f3)]||'.')+'`');else _0x10206e===_0x3d0ec9(0x190)&&_0x40c012[_0x3d0ec9(0x154)](_0x3d0ec9(0x1d0)+_0x38faf5['pattern']+_0x3d0ec9(0x170)+(_0x38faf5[_0x3d0ec9(0x151)]||'.')+'`');}}}catch{}}}_0x3db54e[_0x3d0ec9(0x154)](_0x40c012['join']('\x0a'));const _0x2c60a1=['','Relevant\x20context\x20found:'];for(const _0x56a83a of _0x24f17f){if(_0x56a83a[_0x3d0ec9(0x1fd)]==='*')_0x2c60a1[_0x3d0ec9(0x154)]('-\x20'+_0x56a83a[_0x3d0ec9(0x151)]+':*');else{if(Array[_0x3d0ec9(0x12e)](_0x56a83a[_0x3d0ec9(0x1fd)])){const _0x47eccc=_0x56a83a[_0x3d0ec9(0x1fd)]['map'](([_0x1a00b4,_0xb6924d])=>{if(_0x1a00b4===_0xb6924d)return''+_0x1a00b4;return _0x1a00b4+'-'+_0xb6924d;});_0x2c60a1['push']('-\x20'+_0x56a83a[_0x3d0ec9(0x151)]+':'+_0x47eccc['join'](','));}else _0x2c60a1[_0x3d0ec9(0x154)]('-\x20'+_0x56a83a[_0x3d0ec9(0x151)]+':*');}}_0x2c60a1[_0x3d0ec9(0x154)](''),_0x3db54e[_0x3d0ec9(0x154)](_0x2c60a1[_0x3d0ec9(0x15c)]('\x0a')),_0x3db54e[_0x3d0ec9(0x154)](_0x3d0ec9(0x1b3));const _0x5db25a=[],_0x5e6255=[];for(const _0x52329e of _0x24f17f){let _0x52b7f7=a0_0x5053d5[_0x3d0ec9(0x24f)](_0x4d950d[_0x3d0ec9(0x185)][_0x3d0ec9(0x180)],_0x52329e[_0x3d0ec9(0x151)]),_0x2be325=null,_0x4c0310=null;try{_0x2be325=await a0_0x5043e6['readFile'](_0x52b7f7,{'encoding':_0x3d0ec9(0x197)});}catch(_0x269763){const _0x4e16b9=fixPathRepetition(_0x52b7f7);if(_0x4e16b9)try{_0x2be325=await a0_0x5043e6[_0x3d0ec9(0x21d)](_0x4e16b9,{'encoding':_0x3d0ec9(0x197)}),_0x52b7f7=_0x4e16b9;}catch{_0x4c0310=_0x269763 instanceof Error?_0x269763:new Error(String(_0x269763));}else _0x4c0310=_0x269763 instanceof Error?_0x269763:new Error(String(_0x269763));}if(_0x2be325!==null){const _0x4fb047=_0x2be325[_0x3d0ec9(0x1e8)](/\r?\n/),_0x4dd74c=[];if(_0x52329e[_0x3d0ec9(0x1fd)]==='*'||!Array['isArray'](_0x52329e[_0x3d0ec9(0x1fd)]))for(let _0x39f744=0x1;_0x39f744<=_0x4fb047['length'];_0x39f744++){const _0x270238=_0x4fb047[_0x39f744-0x1];_0x4dd74c[_0x3d0ec9(0x154)](_0x39f744+'|\x20'+_0x270238);}else for(const [_0x3be264,_0x257d10]of _0x52329e[_0x3d0ec9(0x1fd)]){_0x4dd74c['length']>0x0&&_0x4dd74c[_0x3d0ec9(0x154)]('');for(let _0x4326e7=_0x3be264;_0x4326e7<=_0x257d10&&_0x4326e7<=_0x4fb047[_0x3d0ec9(0x231)];_0x4326e7++){const _0x3840af=_0x4fb047[_0x4326e7-0x1];_0x4dd74c[_0x3d0ec9(0x154)](_0x4326e7+'|\x20'+_0x3840af);}}_0x5e6255[_0x3d0ec9(0x154)]({'path':_0x52329e[_0x3d0ec9(0x151)],'content':_0x4dd74c[_0x3d0ec9(0x15c)]('\x0a')});}else _0x5db25a[_0x3d0ec9(0x154)](_0x3d0ec9(0x148)+_0x52329e['path']+_0x3d0ec9(0x236)+(_0x4c0310?.[_0x3d0ec9(0x1a9)]||_0x3d0ec9(0x1ae))+'\x0a</file>');}try{const _0x642728=await compactFileContexts(_0x5e6255,_0x4d950d[_0x3d0ec9(0x185)][_0x3d0ec9(0x220)],MORPH_API_KEY,MORPH_API_URL);for(const _0xb0c3a6 of _0x642728){_0x5db25a[_0x3d0ec9(0x154)](_0x3d0ec9(0x148)+_0xb0c3a6['path']+'\x22>\x0a'+_0xb0c3a6[_0x3d0ec9(0x235)]+_0x3d0ec9(0x14b));}}catch(_0x17c107){logger[_0x3d0ec9(0x147)](_0x3d0ec9(0x14a),_0x3d0ec9(0x167),{'error':_0x17c107 instanceof Error?_0x17c107[_0x3d0ec9(0x1a9)]:String(_0x17c107),'files_count':_0x5e6255[_0x3d0ec9(0x231)]});for(const _0x495827 of _0x5e6255){_0x5db25a['push'](_0x3d0ec9(0x148)+_0x495827[_0x3d0ec9(0x151)]+'\x22>\x0a'+_0x495827[_0x3d0ec9(0x235)]+_0x3d0ec9(0x14b));}}_0x3db54e['push'](_0x5db25a[_0x3d0ec9(0x15c)]('\x0a\x0a')),_0x4e82ad=_0x3db54e[_0x3d0ec9(0x15c)]('\x0a');const _0x1893d4=_0x41cedf[_0x3d0ec9(0x246)]?.['filter'](_0x4d0895=>_0x4d0895[_0x3d0ec9(0x1a9)]?.[_0x3d0ec9(0x1fc)](_0x3d0ec9(0x202)))||[];if(_0x1893d4[_0x3d0ec9(0x231)]>0x0){const _0x45b3e4=_0x1893d4[_0x3d0ec9(0x1df)](_0x529db7=>_0x529db7[_0x3d0ec9(0x1a9)])[_0x3d0ec9(0x15c)](';\x20');reportMorphError({'error_message':_0x45b3e4,'error_type':_0x3d0ec9(0x203),'context':{'tool':_0x3d0ec9(0x189),'repo_path':_0x4d950d['data'][_0x3d0ec9(0x180)],'query':_0x4d950d['data'][_0x3d0ec9(0x220)],'model':'morph-warp-grep-v2.1','termination_reason':_0x3d0ec9(0x146),'error_count':_0x1893d4[_0x3d0ec9(0x231)],'is_timeout':![],'timings':_0x41cedf[_0x3d0ec9(0x1f1)],'files_attempted':_0x24f17f[_0x3d0ec9(0x1df)](_0x5747de=>({'path':_0x5747de[_0x3d0ec9(0x151)],'lines':_0x5747de[_0x3d0ec9(0x1fd)]})),'tool_calls':_0x3318d3(_0x41cedf['messages']),'messages':_0x41cedf[_0x3d0ec9(0x22c)]?.[_0x3d0ec9(0x1df)](_0x4b536d=>({'role':_0x4b536d['role'],'content':_0x4b536d[_0x3d0ec9(0x235)],..._0x4b536d['tool_calls']?{'tool_calls':_0x4b536d['tool_calls']['length']}:{},..._0x4b536d[_0x3d0ec9(0x159)]?{'tool_call_id':_0x4b536d[_0x3d0ec9(0x159)]}:{}})),'request_content':{'query':_0x4d950d[_0x3d0ec9(0x185)][_0x3d0ec9(0x220)],'repo_path':_0x4d950d[_0x3d0ec9(0x185)]['repo_path'],'repoRoot':a0_0x5053d5['resolve'](_0x4d950d[_0x3d0ec9(0x185)][_0x3d0ec9(0x180)]),'model':_0x3d0ec9(0x1a7)}},'source':_0x3d0ec9(0x24e)})[_0x3d0ec9(0x1bb)](()=>{});}}else{if(_0x41cedf[_0x3d0ec9(0x181)]===_0x3d0ec9(0x18e)&&_0x41cedf[_0x3d0ec9(0x246)]['length']>0x0){const _0x4080ac=_0x41cedf[_0x3d0ec9(0x246)][_0x3d0ec9(0x1df)](_0x12c835=>_0x12c835[_0x3d0ec9(0x1a9)])[_0x3d0ec9(0x15c)](';\x20');_0x4e82ad='Error:\x20'+_0x4080ac;const _0x10bf92=_0x4080ac[_0x3d0ec9(0x237)]()[_0x3d0ec9(0x198)](_0x3d0ec9(0x130))||_0x4080ac[_0x3d0ec9(0x237)]()[_0x3d0ec9(0x198)]('timed\x20out')||_0x4080ac[_0x3d0ec9(0x237)]()[_0x3d0ec9(0x198)](_0x3d0ec9(0x127)),_0x3226ac=_0x41cedf[_0x3d0ec9(0x208)]?.[_0x3d0ec9(0x1dd)]?.[_0x3d0ec9(0x17e)],_0x36028c=_0x41cedf['errors'][0x0];reportMorphError({'error_message':_0x4080ac,'error_type':_0x10bf92?_0x3d0ec9(0x1b1):_0x36028c?.[_0x3d0ec9(0x191)]?.[_0x3d0ec9(0x1d9)]||'WarpGrepError','context':{'tool':'codebase_search','repo_path':_0x4d950d[_0x3d0ec9(0x185)]['repo_path'],'query':_0x4d950d[_0x3d0ec9(0x185)][_0x3d0ec9(0x220)],'model':_0x3d0ec9(0x1a7),'termination_reason':_0x41cedf[_0x3d0ec9(0x181)],'error_count':_0x41cedf[_0x3d0ec9(0x246)][_0x3d0ec9(0x231)],'is_timeout':_0x10bf92,'timings':_0x41cedf[_0x3d0ec9(0x1f1)],'files_attempted':_0x3226ac?.['map'](_0x5288fe=>({'path':_0x5288fe[_0x3d0ec9(0x151)],'lines':_0x5288fe[_0x3d0ec9(0x1fd)]})),'tool_calls':_0x3318d3(_0x41cedf[_0x3d0ec9(0x22c)]),'messages':_0x41cedf[_0x3d0ec9(0x22c)]?.[_0x3d0ec9(0x1df)](_0x5eaf4a=>({'role':_0x5eaf4a[_0x3d0ec9(0x1ce)],'content':_0x5eaf4a[_0x3d0ec9(0x235)],..._0x5eaf4a[_0x3d0ec9(0x1ec)]?{'tool_calls':_0x5eaf4a[_0x3d0ec9(0x1ec)][_0x3d0ec9(0x231)]}:{},..._0x5eaf4a[_0x3d0ec9(0x159)]?{'tool_call_id':_0x5eaf4a[_0x3d0ec9(0x159)]}:{}})),'request_content':{'query':_0x4d950d[_0x3d0ec9(0x185)]['search_string'],'repo_path':_0x4d950d['data']['repo_path'],'repoRoot':a0_0x5053d5[_0x3d0ec9(0x24f)](_0x4d950d[_0x3d0ec9(0x185)][_0x3d0ec9(0x180)]),'model':_0x3d0ec9(0x1a7)}},'stack_trace':_0x36028c?.[_0x3d0ec9(0x19f)]||undefined,'source':_0x3d0ec9(0x24e)})['catch'](()=>{});}else _0x4e82ad='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0x3d0ec9(0x126),'text':_0x4e82ad}]};}catch(_0x485396){const _0xadd2ef=handleMorphAPIError(_0x485396);if(_0xadd2ef)return logger[_0x3d0ec9(0x215)](_0x3d0ec9(0x14a),_0x3d0ec9(0x128),{'tool':'codebase_search','error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x3d0ec9(0x16b)]()-_0x3124bb}),_0xadd2ef;const _0xef5905=_0x485396 instanceof Error?_0x485396[_0x3d0ec9(0x1a9)]:String(_0x485396);logger[_0x3d0ec9(0x215)]('MCP',_0x3d0ec9(0x128),{'tool':_0x3d0ec9(0x189),'error':_0xef5905,'repo_path':_0x4d950d[_0x3d0ec9(0x185)][_0x3d0ec9(0x180)],'query':_0x4d950d[_0x3d0ec9(0x185)][_0x3d0ec9(0x220)],'latency_ms':Date[_0x3d0ec9(0x16b)]()-_0x3124bb});const _0x2f68f8=_0xef5905[_0x3d0ec9(0x237)]()['includes'](_0x3d0ec9(0x130))||_0xef5905[_0x3d0ec9(0x237)]()[_0x3d0ec9(0x198)](_0x3d0ec9(0x1ad))||_0xef5905[_0x3d0ec9(0x237)]()[_0x3d0ec9(0x198)](_0x3d0ec9(0x127))||_0x485396 instanceof Error&&_0x485396[_0x3d0ec9(0x1d9)]===_0x3d0ec9(0x1b1);return reportMorphError({'error_message':_0xef5905,'error_type':_0x2f68f8?'TimeoutError':_0x485396 instanceof Error?_0x485396[_0x3d0ec9(0x191)][_0x3d0ec9(0x1d9)]:_0x3d0ec9(0x1b4),'context':{'tool':_0x3d0ec9(0x189),'repo_path':_0x4d950d[_0x3d0ec9(0x185)][_0x3d0ec9(0x180)],'query':_0x4d950d[_0x3d0ec9(0x185)][_0x3d0ec9(0x220)],'model':_0x3d0ec9(0x1a7),'is_timeout':_0x2f68f8,'exception_phase':_0x3d0ec9(0x221),'request_content':{'query':_0x4d950d[_0x3d0ec9(0x185)][_0x3d0ec9(0x220)],'repo_path':_0x4d950d['data'][_0x3d0ec9(0x180)],'repoRoot':a0_0x5053d5[_0x3d0ec9(0x24f)](_0x4d950d[_0x3d0ec9(0x185)]['repo_path']),'model':_0x3d0ec9(0x1a7)}},'stack_trace':_0x485396 instanceof Error?_0x485396[_0x3d0ec9(0x19f)]:undefined,'source':'mcp-filesystem'})[_0x3d0ec9(0x1bb)](()=>{}),{'content':[{'type':_0x3d0ec9(0x126),'text':_0x3d0ec9(0x1e2)+_0xef5905}],'isError':![]};}}case'github_codebase_search':{const _0x26052e=WarpGrepGitHubArgsSchema[_0x3d0ec9(0x143)](_0x4f30d9);if(!_0x26052e[_0x3d0ec9(0x217)])return{'content':[{'type':_0x3d0ec9(0x126),'text':_0x3d0ec9(0x1e1)+_0x26052e['error']}],'isError':!![]};const _0x58b323=_0x26052e[_0x3d0ec9(0x185)][_0x3d0ec9(0x1cd)]||_0x26052e[_0x3d0ec9(0x185)][_0x3d0ec9(0x12c)];if(!_0x58b323)return{'content':[{'type':_0x3d0ec9(0x126),'text':_0x3d0ec9(0x1bd)}],'isError':!![]};const _0x14ddf4=MORPH_API_KEY;if(!_0x14ddf4)throw new Error(_0x3d0ec9(0x1e0));const _0x1b2a5e=Date[_0x3d0ec9(0x16b)]();logger['debug']('MCP',_0x3d0ec9(0x211),{'identifier':_0x58b323,'query':_0x26052e['data'][_0x3d0ec9(0x220)],'branch':_0x26052e[_0x3d0ec9(0x185)][_0x3d0ec9(0x20b)]});try{const _0x20a8cc=new WarpGrepClient({'morphApiKey':_0x14ddf4,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x3f7a08=await _0x20a8cc[_0x3d0ec9(0x149)]({'searchTerm':_0x26052e['data'][_0x3d0ec9(0x220)],'github':_0x58b323,'branch':_0x26052e['data'][_0x3d0ec9(0x20b)]}),_0x4f265e=Date[_0x3d0ec9(0x16b)]()-_0x1b2a5e;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x4f265e+'ms.\x20Success:\x20'+_0x3f7a08[_0x3d0ec9(0x217)]);const _0x58930f=formatResult(_0x3f7a08);return{'content':[{'type':'text','text':_0x58930f}]};}catch(_0x394899){const _0x36be6b=handleMorphAPIError(_0x394899);if(_0x36be6b)return _0x36be6b;const _0x3ca6c1=Date[_0x3d0ec9(0x16b)]()-_0x1b2a5e,_0x41fbdd=_0x394899 instanceof Error?_0x394899['message']:String(_0x394899);return logMcpStderr(_0x3d0ec9(0x1be)+_0x3ca6c1+_0x3d0ec9(0x23a),_0x41fbdd),reportMorphError({'error_message':_0x41fbdd,'error_type':_0x394899 instanceof Error?_0x394899[_0x3d0ec9(0x191)][_0x3d0ec9(0x1d9)]:_0x3d0ec9(0x1b4),'context':{'tool':'github_codebase_search','github_url':_0x58b323,'search_string':_0x26052e['data'][_0x3d0ec9(0x220)],'branch':_0x26052e[_0x3d0ec9(0x185)][_0x3d0ec9(0x20b)]},'stack_trace':_0x394899 instanceof Error?_0x394899[_0x3d0ec9(0x19f)]:undefined,'source':_0x3d0ec9(0x24e),'tool':_0x3d0ec9(0x1e4),'latency_ms':_0x3ca6c1})[_0x3d0ec9(0x1bb)](()=>{}),{'content':[{'type':_0x3d0ec9(0x126),'text':_0x3d0ec9(0x1fb)+_0x41fbdd}],'isError':![]};}}default:throw new Error(_0x3d0ec9(0x238)+_0x406c0b);}}catch(_0x24ed2a){const _0x5b40b6=_0x24ed2a instanceof Error?_0x24ed2a['message']:String(_0x24ed2a);return reportMorphError({'error_message':_0x5b40b6,'error_type':_0x24ed2a instanceof Error?_0x24ed2a[_0x3d0ec9(0x191)][_0x3d0ec9(0x1d9)]:_0x3d0ec9(0x1b4),'context':{'tool':_0x406c0b,'arguments':_0x4f30d9?JSON[_0x3d0ec9(0x233)](_0x4f30d9)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x3d0ec9(0x171)},'stack_trace':_0x24ed2a instanceof Error?_0x24ed2a[_0x3d0ec9(0x19f)]:undefined,'source':_0x3d0ec9(0x24e)})[_0x3d0ec9(0x1bb)](()=>{}),{'content':[{'type':'text','text':'Error:\x20'+_0x5b40b6}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x4850f3){const _0x3736b7=a0_0x415e44,_0x26f8b3=await getValidRootDirectories(_0x4850f3);if(_0x26f8b3['length']>0x0)allowedDirectories=[..._0x26f8b3],logMcpStderr(_0x3736b7(0x18a)+_0x26f8b3[_0x3736b7(0x231)]+'\x20valid\x20directories');else{logMcpStderr(_0x3736b7(0x1bf));if(ENABLE_WORKSPACE_MODE)try{const _0x4a79fe=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x4a79fe&&(allowedDirectories=[_0x4a79fe],logMcpStderr(_0x3736b7(0x24b)+_0x4a79fe));}catch(_0x45db7e){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x45db7e);}}}server[a0_0x415e44(0x162)](RootsListChangedNotificationSchema,async()=>{const _0x451702=a0_0x415e44;try{const _0x576e0e=await server['listRoots']();_0x576e0e&&_0x451702(0x131)in _0x576e0e&&await updateAllowedDirectoriesFromRoots(_0x576e0e[_0x451702(0x131)]);}catch(_0x52cfa3){logMcpStderr(_0x451702(0x156),_0x52cfa3 instanceof Error?_0x52cfa3[_0x451702(0x1a9)]:String(_0x52cfa3));}}),server[a0_0x415e44(0x1b8)]=async()=>{const _0x1766ab=a0_0x415e44,_0x3dd653=server[_0x1766ab(0x1da)]();if(_0x3dd653?.[_0x1766ab(0x131)])try{const _0x477677=await server[_0x1766ab(0x16d)]();_0x477677&&_0x1766ab(0x131)in _0x477677?await updateAllowedDirectoriesFromRoots(_0x477677[_0x1766ab(0x131)]):logMcpStderr(_0x1766ab(0x16e));}catch(_0x4c9924){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x4c9924 instanceof Error?_0x4c9924[_0x1766ab(0x1a9)]:String(_0x4c9924));}else{if(allowedDirectories['length']>0x0)logMcpStderr(_0x1766ab(0x157),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x1766ab(0x174));else throw new Error(_0x1766ab(0x22d));}}};async function runServer(){const _0x4a179c=a0_0x415e44,_0x4c6691=new StdioServerTransport();await server[_0x4a179c(0x19e)](_0x4c6691),logMcpStderr(_0x4a179c(0x1ba)),allowedDirectories[_0x4a179c(0x231)]===0x0&&logMcpStderr(_0x4a179c(0x1c5));}runServer()[a0_0x415e44(0x1bb)](_0x2204f3=>{const _0x4a4e31=a0_0x415e44;logMcpStderr(_0x4a4e31(0x173),_0x2204f3),process[_0x4a4e31(0x168)](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_0x260a34=a1_0x2967;(function(_0x2b69cf,_0x2bb809){var _0x5f07e2=a1_0x2967,_0x285821=_0x2b69cf();while(!![]){try{var _0x9d82aa=parseInt(_0x5f07e2(0xb2))/0x1+parseInt(_0x5f07e2(0xbe))/0x2*(-parseInt(_0x5f07e2(0xbf))/0x3)+-parseInt(_0x5f07e2(0xba))/0x4+parseInt(_0x5f07e2(0xb8))/0x5*(parseInt(_0x5f07e2(0xc0))/0x6)+parseInt(_0x5f07e2(0xb9))/0x7+-parseInt(_0x5f07e2(0xc3))/0x8+parseInt(_0x5f07e2(0xc4))/0x9;if(_0x9d82aa===_0x2bb809)break;else _0x285821['push'](_0x285821['shift']());}catch(_0x39799c){_0x285821['push'](_0x285821['shift']());}}}(a1_0x329b,0x253f8));function a1_0x329b(){var _0x151af8=['win32','Windows','map','darwin','766730HmANAS','1681666eBEHVg','982280TBzlrp','info','MCP','macOS','135334aSGDtc','9VxrtpD','6abPUst','[os=','platform','1285496coTyFP','2129904ljRMus','error','131586ARXADx','length'];a1_0x329b=function(){return _0x151af8;};return a1_0x329b();}import a1_0x1fa4ab from'os';import{logger}from'./logger.js';function a1_0x2967(_0x9ec5c9,_0x591abd){_0x9ec5c9=_0x9ec5c9-0xb2;var _0x329b58=a1_0x329b();var _0x296743=_0x329b58[_0x9ec5c9];return _0x296743;}export function getOperatingSystemType(_0x421b29=a1_0x1fa4ab[a1_0x260a34(0xc2)]()){var _0x51d62c=a1_0x260a34;switch(_0x421b29){case _0x51d62c(0xb7):return _0x51d62c(0xbd);case _0x51d62c(0xb4):return _0x51d62c(0xb5);case'linux':return'Linux';default:return'Unknown';}}export function formatMcpLogMessage(_0xf7d8ef,_0x554279=a1_0x1fa4ab[a1_0x260a34(0xc2)]()){var _0x288f93=a1_0x260a34;return _0x288f93(0xc1)+getOperatingSystemType(_0x554279)+']\x20'+_0xf7d8ef;}export function logMcpStderr(_0x43d112,..._0x273a2c){var _0x7a70d0=a1_0x260a34;console[_0x7a70d0(0xc5)](formatMcpLogMessage(_0x43d112),..._0x273a2c),logger[_0x7a70d0(0xbb)](_0x7a70d0(0xbc),_0x43d112,_0x273a2c[_0x7a70d0(0xb3)]?{'args':_0x273a2c[_0x7a70d0(0xb6)](_0x36c2c7=>String(_0x36c2c7))}: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_0x5226cb=a2_0x4bb5;(function(_0x1a0983,_0x411c90){const _0x44413e=a2_0x4bb5,_0x52b50a=_0x1a0983();while(!![]){try{const _0x49810f=parseInt(_0x44413e(0x1d6))/0x1+parseInt(_0x44413e(0x1d3))/0x2*(-parseInt(_0x44413e(0x1c6))/0x3)+parseInt(_0x44413e(0x1cd))/0x4+-parseInt(_0x44413e(0x1c5))/0x5+parseInt(_0x44413e(0x1cb))/0x6+parseInt(_0x44413e(0x1d7))/0x7*(-parseInt(_0x44413e(0x1cf))/0x8)+parseInt(_0x44413e(0x1c4))/0x9;if(_0x49810f===_0x411c90)break;else _0x52b50a['push'](_0x52b50a['shift']());}catch(_0x46728f){_0x52b50a['push'](_0x52b50a['shift']());}}}(a2_0x15c4,0x958a8));import{createWriteStream}from'fs';class MorphLogger{['enabled'];['fileStream'];constructor(){const _0x7513e7=a2_0x4bb5;this[_0x7513e7(0x1c7)]=process[_0x7513e7(0x1d5)][_0x7513e7(0x1c2)]==='1'||!!process[_0x7513e7(0x1d5)][_0x7513e7(0x1d8)];const _0x2307e5=process[_0x7513e7(0x1d5)][_0x7513e7(0x1d8)];this[_0x7513e7(0x1cc)]=_0x2307e5?createWriteStream(_0x2307e5,{'flags':'a'}):null;}[a2_0x5226cb(0x1c0)](_0x5f3ffe,_0x280a94,_0x204590){const _0x3b9add=a2_0x5226cb;this[_0x3b9add(0x1d4)](_0x3b9add(0x1c0),_0x5f3ffe,_0x280a94,_0x204590);}[a2_0x5226cb(0x1ce)](_0x4cf4ae,_0x44d849,_0x4da8b3){const _0x3ec65f=a2_0x5226cb;this[_0x3ec65f(0x1d4)](_0x3ec65f(0x1ce),_0x4cf4ae,_0x44d849,_0x4da8b3);}[a2_0x5226cb(0x1d2)](_0xf94ab4,_0x25b97b,_0xc9eb64){const _0x28089a=a2_0x5226cb;this[_0x28089a(0x1d4)](_0x28089a(0x1d2),_0xf94ab4,_0x25b97b,_0xc9eb64);}[a2_0x5226cb(0x1d1)](_0x2692c0,_0x4b4065,_0x4a96a7){const _0x293974=a2_0x5226cb;this[_0x293974(0x1d4)](_0x293974(0x1d1),_0x2692c0,_0x4b4065,_0x4a96a7);}[a2_0x5226cb(0x1d0)](){const _0x5cb2e3=a2_0x5226cb;this[_0x5cb2e3(0x1c7)]=!![];}get[a2_0x5226cb(0x1ca)](){const _0x5c37a4=a2_0x5226cb;return this[_0x5c37a4(0x1c7)];}['_log'](_0x28bc11,_0x155394,_0x4655f7,_0x4afde4){const _0x31fe7f=a2_0x5226cb;if(_0x28bc11!==_0x31fe7f(0x1d1)&&!this['enabled'])return;const _0x12ae89=new Date()[_0x31fe7f(0x1c8)](),_0x16add2='['+_0x12ae89+']\x20['+_0x28bc11[_0x31fe7f(0x1c9)]()+']\x20['+_0x155394+']';console[_0x31fe7f(0x1d1)](_0x4afde4?_0x16add2+'\x20'+_0x4655f7+'\x20'+JSON[_0x31fe7f(0x1c3)](_0x4afde4):_0x16add2+'\x20'+_0x4655f7),this[_0x31fe7f(0x1cc)]?.[_0x31fe7f(0x1c1)](JSON[_0x31fe7f(0x1c3)]({'ts':_0x12ae89,'level':_0x28bc11,'component':_0x155394,'msg':_0x4655f7,..._0x4afde4&&{'data':_0x4afde4}})+'\x0a');}}function a2_0x15c4(){const _0x52bc88=['error','warn','2nyFqwK','_log','env','78633MFxCji','301588pgfxJC','MORPH_LOG_FILE','debug','write','MORPH_DEBUG','stringify','4384296OgCyjQ','5742450KQTXQp','152964zTAXqy','enabled','toISOString','toUpperCase','isEnabled','2135826WRWsrI','fileStream','3905672trlvMX','info','16oMPjOA','enable'];a2_0x15c4=function(){return _0x52bc88;};return a2_0x15c4();}function a2_0x4bb5(_0x1723fa,_0x3efd10){_0x1723fa=_0x1723fa-0x1c0;const _0x15c43f=a2_0x15c4();let _0x4bb5ea=_0x15c43f[_0x1723fa];return _0x4bb5ea;}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(_0x18136e,_0x17c8c7){const _0x21d491=a3_0x3abf,_0x514fcf=_0x18136e();while(!![]){try{const _0x5d054b=parseInt(_0x21d491(0x190))/0x1+parseInt(_0x21d491(0x196))/0x2+parseInt(_0x21d491(0x198))/0x3*(-parseInt(_0x21d491(0x188))/0x4)+-parseInt(_0x21d491(0x187))/0x5+parseInt(_0x21d491(0x189))/0x6*(parseInt(_0x21d491(0x199))/0x7)+-parseInt(_0x21d491(0x192))/0x8*(parseInt(_0x21d491(0x191))/0x9)+-parseInt(_0x21d491(0x197))/0xa*(parseInt(_0x21d491(0x18d))/0xb);if(_0x5d054b===_0x17c8c7)break;else _0x514fcf['push'](_0x514fcf['shift']());}catch(_0x42ad38){_0x514fcf['push'](_0x514fcf['shift']());}}}(a3_0x3f1d,0xdb028));import a3_0x453b06 from'path';import a3_0x102973 from'os';export function convertToWindowsPath(_0x459c2f){const _0x325567=a3_0x3abf;if(_0x459c2f[_0x325567(0x18a)]('/mnt/')){const _0x45a7f=_0x459c2f[_0x325567(0x18c)](0x5)['toUpperCase'](),_0x561aaf=_0x459c2f[_0x325567(0x193)](0x6)[_0x325567(0x194)](/\//g,'\x5c');return _0x45a7f+':'+_0x561aaf;}if(_0x459c2f[_0x325567(0x18e)](/^\/[a-zA-Z]\//)){const _0xe31746=_0x459c2f[_0x325567(0x18c)](0x1)['toUpperCase'](),_0x440e29=_0x459c2f[_0x325567(0x193)](0x2)[_0x325567(0x194)](/\//g,'\x5c');return _0xe31746+':'+_0x440e29;}if(_0x459c2f['match'](/^[a-zA-Z]:/))return _0x459c2f[_0x325567(0x194)](/\//g,'\x5c');return _0x459c2f;}export function normalizePath(_0x20dccf){const _0x694287=a3_0x3abf;_0x20dccf=_0x20dccf['trim']()[_0x694287(0x194)](/^["']|["']$/g,'');const _0x1068cd=_0x20dccf[_0x694287(0x18a)]('/')&&!_0x20dccf['match'](/^\/mnt\/[a-z]\//i)&&!_0x20dccf[_0x694287(0x18e)](/^\/[a-zA-Z]\//);if(_0x1068cd)return _0x20dccf[_0x694287(0x194)](/\/+/g,'/')[_0x694287(0x194)](/\/+$/,'');_0x20dccf=convertToWindowsPath(_0x20dccf);if(_0x20dccf[_0x694287(0x18a)]('\x5c\x5c')){let _0x1e1dc6=_0x20dccf;_0x1e1dc6=_0x1e1dc6['replace'](/^\\{2,}/,'\x5c\x5c');const _0x1906a8=_0x1e1dc6[_0x694287(0x18b)](0x2)[_0x694287(0x194)](/\\\\/g,'\x5c');_0x20dccf='\x5c\x5c'+_0x1906a8;}else _0x20dccf=_0x20dccf[_0x694287(0x194)](/\\\\/g,'\x5c');let _0x4922ac=a3_0x453b06['normalize'](_0x20dccf);_0x20dccf['startsWith']('\x5c\x5c')&&!_0x4922ac[_0x694287(0x18a)]('\x5c\x5c')&&(_0x4922ac='\x5c'+_0x4922ac);if(_0x4922ac[_0x694287(0x18e)](/^[a-zA-Z]:/)){let _0x48372f=_0x4922ac[_0x694287(0x194)](/\//g,'\x5c');return/^[a-z]:/[_0x694287(0x195)](_0x48372f)&&(_0x48372f=_0x48372f[_0x694287(0x18c)](0x0)[_0x694287(0x186)]()+_0x48372f[_0x694287(0x193)](0x1)),_0x48372f;}return _0x4922ac['replace'](/\//g,'\x5c');}export function expandHome(_0x3a5f99){const _0x101a43=a3_0x3abf;if(_0x3a5f99[_0x101a43(0x18a)]('~/')||_0x3a5f99==='~')return a3_0x453b06['join'](a3_0x102973[_0x101a43(0x18f)](),_0x3a5f99[_0x101a43(0x193)](0x1));return _0x3a5f99;}function a3_0x3abf(_0x1e64ac,_0x334e2e){_0x1e64ac=_0x1e64ac-0x186;const _0x3f1de8=a3_0x3f1d();let _0x3abf45=_0x3f1de8[_0x1e64ac];return _0x3abf45;}function a3_0x3f1d(){const _0x4be2a9=['954WMvOkc','startsWith','substring','charAt','4708033GYdvAe','match','homedir','1582988rviypK','535833twkFRk','40SOhMOp','slice','replace','test','3159674qxHMjc','20RNveRm','777888cVOsQI','742iTSPMH','toUpperCase','1755180emyKId','12Ksujom'];a3_0x3f1d=function(){return _0x4be2a9;};return a3_0x3f1d();}
@@ -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 a4_0x3199(){const _0x5b074b=['normalize','198BBJIQV','2288930amRFAh','6iOoueK','isArray','1090zjbeMY','4172232VQBlRl','75427rhmaVF','15532CnPDLi','2415807skEJhL','907494TzviGc','sep','resolve','isAbsolute','501lnRegU','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','some','string','includes','4288mwfXCg','16XWkGvx','Path\x20must\x20be\x20absolute\x20after\x20normalization'];a4_0x3199=function(){return _0x5b074b;};return a4_0x3199();}(function(_0x1ff8f7,_0x52f931){const _0x3780c3=a4_0x2476,_0x24b467=_0x1ff8f7();while(!![]){try{const _0x38f81a=parseInt(_0x3780c3(0x1c2))/0x1*(-parseInt(_0x3780c3(0x1c6))/0x2)+-parseInt(_0x3780c3(0x1bd))/0x3*(-parseInt(_0x3780c3(0x1cd))/0x4)+parseInt(_0x3780c3(0x1c7))/0x5*(parseInt(_0x3780c3(0x1c8))/0x6)+parseInt(_0x3780c3(0x1cf))/0x7+-parseInt(_0x3780c3(0x1c3))/0x8*(parseInt(_0x3780c3(0x1ce))/0x9)+-parseInt(_0x3780c3(0x1ca))/0xa*(-parseInt(_0x3780c3(0x1cc))/0xb)+-parseInt(_0x3780c3(0x1cb))/0xc;if(_0x38f81a===_0x52f931)break;else _0x24b467['push'](_0x24b467['shift']());}catch(_0x4431fc){_0x24b467['push'](_0x24b467['shift']());}}}(a4_0x3199,0xa49d2));function a4_0x2476(_0x34f40e,_0x209605){_0x34f40e=_0x34f40e-0x1bc;const _0x31991f=a4_0x3199();let _0x2476ff=_0x31991f[_0x34f40e];return _0x2476ff;}import a4_0x1eeeb3 from'path';export function isPathWithinAllowedDirectories(_0xda619e,_0x33914f){const _0x4d23f8=a4_0x2476;if(typeof _0xda619e!=='string'||!Array[_0x4d23f8(0x1c9)](_0x33914f))return![];if(!_0xda619e||_0x33914f['length']===0x0)return![];if(_0xda619e['includes']('\x00'))return![];let _0x38aec8;try{_0x38aec8=a4_0x1eeeb3[_0x4d23f8(0x1d1)](a4_0x1eeeb3[_0x4d23f8(0x1c5)](_0xda619e));}catch{return![];}if(!a4_0x1eeeb3[_0x4d23f8(0x1bc)](_0x38aec8))throw new Error(_0x4d23f8(0x1c4));return _0x33914f[_0x4d23f8(0x1bf)](_0x40647e=>{const _0x26ec3a=_0x4d23f8;if(typeof _0x40647e!==_0x26ec3a(0x1c0)||!_0x40647e)return![];if(_0x40647e[_0x26ec3a(0x1c1)]('\x00'))return![];let _0x49a49d;try{_0x49a49d=a4_0x1eeeb3[_0x26ec3a(0x1d1)](a4_0x1eeeb3['normalize'](_0x40647e));}catch{return![];}if(!a4_0x1eeeb3[_0x26ec3a(0x1bc)](_0x49a49d))throw new Error(_0x26ec3a(0x1be));if(_0x38aec8===_0x49a49d)return!![];if(_0x49a49d===a4_0x1eeeb3[_0x26ec3a(0x1d0)])return _0x38aec8['startsWith'](a4_0x1eeeb3[_0x26ec3a(0x1d0)]);return _0x38aec8['startsWith'](_0x49a49d+a4_0x1eeeb3[_0x26ec3a(0x1d0)]);});}
@@ -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(_0x14add4,_0x5b247b){const _0x4cf208=a5_0x21d9,_0x31e407=_0x14add4();while(!![]){try{const _0x4c75fa=-parseInt(_0x4cf208(0x16d))/0x1+-parseInt(_0x4cf208(0x164))/0x2*(parseInt(_0x4cf208(0x16c))/0x3)+parseInt(_0x4cf208(0x170))/0x4*(parseInt(_0x4cf208(0x15e))/0x5)+parseInt(_0x4cf208(0x16f))/0x6*(parseInt(_0x4cf208(0x163))/0x7)+-parseInt(_0x4cf208(0x167))/0x8+parseInt(_0x4cf208(0x160))/0x9*(-parseInt(_0x4cf208(0x166))/0xa)+-parseInt(_0x4cf208(0x169))/0xb*(-parseInt(_0x4cf208(0x168))/0xc);if(_0x4c75fa===_0x5b247b)break;else _0x31e407['push'](_0x31e407['shift']());}catch(_0x349c2c){_0x31e407['push'](_0x31e407['shift']());}}}(a5_0x6067,0x1d5ef));import{promises as a5_0x472eb2}from'fs';import a5_0x11bf4d from'path';import a5_0x5738d2 from'os';function a5_0x6067(){const _0x4be585=['\x20due\x20to\x20error:\x20','non-directory\x20root','invalid\x20path\x20or\x20inaccessible','9965sKHKoV','resolve','9WfOAXO','join','uri','14Nhtbzi','52ZnYnNJ','startsWith','2194190JgjUyp','1736680bOcxZO','200628MhABvu','605JWoDYT','file://','Skipping\x20','25182VClrzb','217215MEuCWs','slice','80646OBvkGt','92WZsnbt','message','realpath','homedir'];a5_0x6067=function(){return _0x4be585;};return a5_0x6067();}import{normalizePath}from'./path-utils.js';function a5_0x21d9(_0x525119,_0x3d5af2){_0x525119=_0x525119-0x15a;const _0x606712=a5_0x6067();let _0x21d9df=_0x606712[_0x525119];return _0x21d9df;}import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x22981b){const _0x2c002d=a5_0x21d9;try{const _0x407b8a=_0x22981b['startsWith'](_0x2c002d(0x16a))?_0x22981b[_0x2c002d(0x16e)](0x7):_0x22981b,_0x3a3f7e=_0x407b8a[_0x2c002d(0x165)]('~/')||_0x407b8a==='~'?a5_0x11bf4d[_0x2c002d(0x161)](a5_0x5738d2[_0x2c002d(0x15a)](),_0x407b8a['slice'](0x1)):_0x407b8a,_0x21ad64=a5_0x11bf4d[_0x2c002d(0x15f)](_0x3a3f7e),_0x5dc9c2=await a5_0x472eb2[_0x2c002d(0x172)](_0x21ad64);return normalizePath(_0x5dc9c2);}catch{return null;}}function formatDirectoryError(_0x15b76e,_0x5980b7,_0x5f3a4f){const _0x3b133f=a5_0x21d9;if(_0x5f3a4f)return _0x3b133f(0x16b)+_0x5f3a4f+':\x20'+_0x15b76e;const _0x2c87fb=_0x5980b7 instanceof Error?_0x5980b7[_0x3b133f(0x171)]:String(_0x5980b7);return'Skipping\x20invalid\x20directory:\x20'+_0x15b76e+_0x3b133f(0x15b)+_0x2c87fb;}export async function getValidRootDirectories(_0x155dab){const _0x3a0969=a5_0x21d9,_0x5e779b=[];for(const _0x615fce of _0x155dab){const _0x3f6877=await parseRootUri(_0x615fce['uri']);if(!_0x3f6877){logMcpStderr(formatDirectoryError(_0x615fce[_0x3a0969(0x162)],undefined,_0x3a0969(0x15d)));continue;}try{const _0x22f2ae=await a5_0x472eb2['stat'](_0x3f6877);_0x22f2ae['isDirectory']()?_0x5e779b['push'](_0x3f6877):logMcpStderr(formatDirectoryError(_0x3f6877,undefined,_0x3a0969(0x15c)));}catch(_0xb135f9){logMcpStderr(formatDirectoryError(_0x3f6877,_0xb135f9));}}return _0x5e779b;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.164",
3
+ "version": "0.8.165",
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.164",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",