@morphllm/morphmcp 0.8.156 → 0.8.157

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_0xcc9db7=a0_0x3cea;(function(_0x57c828,_0x447205){const _0x39fe2b=a0_0x3cea,_0x2a5b71=_0x57c828();while(!![]){try{const _0x1978b7=-parseInt(_0x39fe2b(0x22c))/0x1+parseInt(_0x39fe2b(0x2ec))/0x2+parseInt(_0x39fe2b(0x243))/0x3+-parseInt(_0x39fe2b(0x2d3))/0x4*(parseInt(_0x39fe2b(0x2bc))/0x5)+parseInt(_0x39fe2b(0x2d5))/0x6*(parseInt(_0x39fe2b(0x25d))/0x7)+-parseInt(_0x39fe2b(0x2a0))/0x8+-parseInt(_0x39fe2b(0x26c))/0x9*(-parseInt(_0x39fe2b(0x1da))/0xa);if(_0x1978b7===_0x447205)break;else _0x2a5b71['push'](_0x2a5b71['shift']());}catch(_0x25cdad){_0x2a5b71['push'](_0x2a5b71['shift']());}}}(a0_0x43fc,0xd0980));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_0xcc5c7c from'fs/promises';import a0_0x40dc77 from'path';function a0_0x43fc(){const _0x42685b=['payload','Failed\x20to\x20read\x20file:\x20','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','-\x20Grepped\x20\x27','metadata','\x22.\x20Known\x20tools:\x20','WarpGrep\x20sub-tool\x20errors:\x20','startsWith','TimeoutError','Error\x20running\x20fast\x20context\x20search:\x20','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','searchGitHub','false','6744776VLqtRQ','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','\x22>\x0a','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','utf-8','path','describe','stat','\x22>\x0aError\x20reading\x20file:\x20','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Unknown\x20tool:\x20','setRequestHandler','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','Applied','pattern','toLowerCase','runWarpGrep_call','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','Failed\x20to\x20request\x20roots\x20from\x20client:','MORPH_WARP_GREP_TIMEOUT','number','--help','timeout','owner_repo','<file\x20path=\x22','match','Fatal\x20error\x20running\x20server:','795eaHySg','GitHub\x20search\x20failed:\x20','FileReadError','Repository\x20identifier','mcp-filesystem','FileNotFound','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','stack','\x20valid\x20directories','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','glob\x20\x27','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','normalize','search_string','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','completed','\x20-\x20','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','sk-','DISABLED_TOOLS','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','15648TgdNSl','repo_path','371526AMEMsA','stringify','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','filter','name','messages','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','optional','node_modules','timed\x20out','now','--api-key=','grep_search','ENOENT','context','constructor','github_codebase_search','Bearer\x20','code','\x20\x20morph-mcp','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','--api-key','886312LmYrkq','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','SubToolError',',\x20removed\x20','oninitialized','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','PathError','success','boolean','function','finish','api-key','every','getClientCapabilities','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','70bRbbtN','cwd','catch','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','Warning:\x20','tsconfig.json','[codebase_search]\x20compaction\x20failed','string','enum','tool_call_id','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.','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','dirname','size','\x20as\x20allowed\x20directory','edit_file','Cargo.toml','morph-mcp','Fallback:\x20Using\x20workspace\x20root\x20','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.',',\x20modified\x20','composer.json','ENABLE_WORKSPACE_MODE','`\x20in\x20`','instruction','ms.\x20Success:\x20','errors','tool_calls','\x27\x20in\x20`','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','isDirectory','read\x20','has','Invalid\x20arguments:\x20','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','min','timings','map','access','For\x20deletions:\x0a','❌\x20Morph\x20Edit\x20Failed:\x20','indexOf','safeParse','assistant','source','unknown','--version','Benefits:\x0a','unknown\x20error','Preview\x20changes\x20without\x20applying\x20them.','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','terminated','readFile','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','\x20for:\x20\x22','version','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','text','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','ms:','tool','sep','Error\x20accessing\x20directory\x20','application/json','content','terminationReason','WORKSPACE_ROOT','Unknown\x20error','.\x20Path:\x20','list_directory','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','BinaryFile','user','basename','morph-','MORPH_API_KEY','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.','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','linesAdded','.\x20Changes:\x20','@morphllm/morphmcp\x20','916204rcQbdJ','morph-warp-grep-v2.1','warn','pyproject.toml','\x0a...\x20(truncated,\x20total:\x20','-\x20Listed\x20directory\x20`','object','roots','error','read','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','linesModified','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Disabled\x20tools:\x20','[github_codebase_search]\x20Failed\x20in\x20','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','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','trim','0.2.0','parse','params','join','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','595716rOpXzp','linesRemoved','go.mod','floor','\x20error(s)','command','env','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','Rules:\x0a','changes','\x20is\x20not\x20a\x20directory','added\x20','ReadError','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','data','argv','status','includes','PWD','push','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','https://morphllm.com/api/error-report','some','../package.json','substring','lines','63lILcnQ','[github_codebase_search]\x20Searching\x20','default','File\x20read\x20error:','length','resolve','slice','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','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.','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.','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','log','exit','MORPH_API_URL','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','2618604cqXZjc','listRoots','\x0a</file>','.cursor','\x20disabled\x20via\x20DISABLED_TOOLS','message','.git','glob','list_directory\x20','codebase_search','Created\x20File','isArray','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','split','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','description','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','role','[github_codebase_search]\x20Done\x20in\x20','requiresApiKey','response','instructions','arguments','SymlinkError','UnknownError','realpath','etimedout','-\x20Read\x20file\x20`','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','toISOString','Error:\x20','homedir','morph-v3-fast','Here\x20is\x20the\x20content\x20of\x20files:\x0a','grep','dryRun','[could\x20not\x20read\x20file:\x20','ToolException'];a0_0x43fc=function(){return _0x42685b;};return a0_0x43fc();}import a0_0x5a0768 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{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_0x4f84fa from'axios';function fixPathRepetition(_0x21e2c9){const _0x28d7a8=a0_0x3cea,_0x33003a=_0x21e2c9[_0x28d7a8(0x279)](a0_0x40dc77[_0x28d7a8(0x218)])[_0x28d7a8(0x2d8)](Boolean);if(_0x33003a[_0x28d7a8(0x261)]<0x2)return null;for(let _0x3e9247=Math[_0x28d7a8(0x246)](_0x33003a[_0x28d7a8(0x261)]/0x2);_0x3e9247>=0x1;_0x3e9247--){for(let _0x435fed=0x0;_0x435fed<=_0x33003a[_0x28d7a8(0x261)]-0x2*_0x3e9247;_0x435fed++){const _0x5084f4=_0x33003a[_0x28d7a8(0x263)](_0x435fed,_0x435fed+_0x3e9247),_0x50e3e5=_0x33003a[_0x28d7a8(0x263)](_0x435fed+_0x3e9247,_0x435fed+0x2*_0x3e9247);if(_0x5084f4[_0x28d7a8(0x2f9)]((_0x5f239a,_0x5f3b27)=>_0x5f239a===_0x50e3e5[_0x5f3b27])){const _0x2a64a2=[..._0x33003a[_0x28d7a8(0x263)](0x0,_0x435fed),..._0x33003a['slice'](_0x435fed+_0x3e9247)];return a0_0x40dc77[_0x28d7a8(0x218)]+_0x2a64a2[_0x28d7a8(0x241)](a0_0x40dc77[_0x28d7a8(0x218)]);}}}return null;}function a0_0x3cea(_0x1cb5c5,_0x57c1d5){_0x1cb5c5=_0x1cb5c5-0x1d8;const _0x43fc58=a0_0x43fc();let _0x3ceac3=_0x43fc58[_0x1cb5c5];return _0x3ceac3;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x5a9254=a0_0x3cea;try{const _0x1e2126=require(_0x5a9254(0x25a));return _0x1e2126[_0x5a9254(0x212)]??_0x5a9254(0x207);}catch(_0x4e6557){return logMcpStderr(_0x5a9254(0x20f),_0x4e6557),_0x5a9254(0x207);}}function printHelp(){const _0x2223a6=a0_0x3cea;console[_0x2223a6(0x268)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x2223a6(0x268)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console['log']('\x0aOptions:'),console['log'](_0x2223a6(0x1d9)),console['log'](_0x2223a6(0x23c)),console[_0x2223a6(0x268)](_0x2223a6(0x2ee)),console[_0x2223a6(0x268)]('\x0aExamples:'),console[_0x2223a6(0x268)](_0x2223a6(0x2e9)),console[_0x2223a6(0x268)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0xcc9db7(0x252)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0xcc9db7(0x208),'-v','-V']),HELP_FLAGS=new Set([a0_0xcc9db7(0x2b6),'-h']);cliArgs[a0_0xcc9db7(0x259)](_0x24a3e1=>VERSION_FLAGS['has'](_0x24a3e1))&&(console['log'](a0_0xcc9db7(0x22b)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0xcc9db7(0x259)](_0x244caf=>HELP_FLAGS['has'](_0x244caf))&&(printHelp(),process[a0_0xcc9db7(0x269)](0x0));function getCliArg(_0x4a0438){const _0x22e87f=a0_0xcc9db7;for(let _0x22ff9b=0x0;_0x22ff9b<cliArgs[_0x22e87f(0x261)];_0x22ff9b++){const _0x12892d=cliArgs[_0x22ff9b];if(_0x12892d[_0x22e87f(0x29a)]('--'+_0x4a0438+'='))return _0x12892d[_0x22e87f(0x263)](('--'+_0x4a0438+'=')[_0x22e87f(0x261)]);if(_0x12892d==='--'+_0x4a0438&&_0x22ff9b+0x1<cliArgs[_0x22e87f(0x261)])return cliArgs[_0x22ff9b+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0xcc9db7(0x261)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0xcc9db7(0x1fa)](arg))continue;if(arg[a0_0xcc9db7(0x29a)](a0_0xcc9db7(0x2e1)))continue;if(arg===a0_0xcc9db7(0x2eb)){i++;continue;}args[a0_0xcc9db7(0x256)](arg);}const WORKSPACE_ROOT=process[a0_0xcc9db7(0x249)][a0_0xcc9db7(0x21d)]||process[a0_0xcc9db7(0x249)][a0_0xcc9db7(0x255)]||process[a0_0xcc9db7(0x1db)](),ENABLE_WORKSPACE_MODE=process[a0_0xcc9db7(0x249)][a0_0xcc9db7(0x1f0)]!==a0_0xcc9db7(0x29f),MORPH_API_KEY=getCliArg(a0_0xcc9db7(0x2f8))??process[a0_0xcc9db7(0x249)][a0_0xcc9db7(0x226)],MORPH_API_URL=process[a0_0xcc9db7(0x249)][a0_0xcc9db7(0x26a)],MORPH_WARP_GREP_TIMEOUT=process[a0_0xcc9db7(0x249)][a0_0xcc9db7(0x2b4)]?parseInt(process['env'][a0_0xcc9db7(0x2b4)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0xcc9db7(0x1e9),a0_0xcc9db7(0x275),a0_0xcc9db7(0x2e6)]),DISABLED_TOOLS=process[a0_0xcc9db7(0x249)][a0_0xcc9db7(0x2d1)]?new Set(process['env']['DISABLED_TOOLS'][a0_0xcc9db7(0x279)](',')[a0_0xcc9db7(0x1ff)](_0x538835=>_0x538835[a0_0xcc9db7(0x23d)]())[a0_0xcc9db7(0x2d8)](_0x3b8212=>_0x3b8212[a0_0xcc9db7(0x261)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0xcc9db7(0x1e7)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0xcc9db7(0x234)]('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+a0_0xcc9db7(0x298)+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console[a0_0xcc9db7(0x234)](a0_0xcc9db7(0x239)+[...DISABLED_TOOLS][a0_0xcc9db7(0x241)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0xcc9db7(0x29a)](a0_0xcc9db7(0x2d0))&&!MORPH_API_KEY[a0_0xcc9db7(0x29a)](a0_0xcc9db7(0x225))&&logMcpStderr(a0_0xcc9db7(0x2ac));async function reportMorphError(_0x3a5ddc){const _0x43b6d9=a0_0xcc9db7;try{await a0_0x4f84fa['post'](_0x43b6d9(0x258),{..._0x3a5ddc,'timestamp':new Date()[_0x43b6d9(0x28a)](),'source':_0x3a5ddc[_0x43b6d9(0x206)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x3a5ddc[_0x43b6d9(0x2e4)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x43b6d9(0x21a),'Authorization':_0x43b6d9(0x2e7)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x3957e2,_0x4aefca){const _0x570e84=a0_0xcc9db7;if(_0x3957e2&&typeof _0x3957e2==='object'&&_0x570e84(0x253)in _0x3957e2)return _0x3957e2[_0x570e84(0x253)];if(_0x3957e2&&typeof _0x3957e2===_0x570e84(0x232)&&_0x570e84(0x281)in _0x3957e2)return _0x3957e2['response']?.[_0x570e84(0x253)];const _0x140c18=_0x4aefca[_0x570e84(0x2ba)](/\b(401|429)\b/);return _0x140c18?parseInt(_0x140c18[0x1],0xa):null;}function handleMorphAPIError(_0x2b6185){const _0x5847db=a0_0xcc9db7,_0x41951a=_0x2b6185 instanceof Error?_0x2b6185[_0x5847db(0x271)]:String(_0x2b6185),_0xf6b881=extractStatusCode(_0x2b6185,_0x41951a);switch(_0xf6b881){case 0x191:return{'content':[{'type':_0x5847db(0x214),'text':_0x5847db(0x265)}],'isError':!![]};case 0x1ad:return{'content':[{'type':'text','text':_0x5847db(0x2c7)}],'isError':!![]};default:return null;}}args[a0_0xcc9db7(0x261)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0xcc9db7(0x2dc)),logMcpStderr(a0_0xcc9db7(0x295)),logMcpStderr(a0_0xcc9db7(0x2cf)),logMcpStderr(a0_0xcc9db7(0x264)),logMcpStderr(a0_0xcc9db7(0x1fc)),logMcpStderr(a0_0xcc9db7(0x1d8)));function normalizePath(_0x5b84b7){const _0x55707b=a0_0xcc9db7;return a0_0x40dc77[_0x55707b(0x2c9)](_0x5b84b7);}function expandHome(_0x455405){const _0x13b435=a0_0xcc9db7;if(_0x455405[_0x13b435(0x29a)]('~/')||_0x455405==='~')return a0_0x40dc77[_0x13b435(0x241)](a0_0x5a0768[_0x13b435(0x28c)](),_0x455405['slice'](0x1));return _0x455405;}let allowedDirectories=await Promise['all'](args[a0_0xcc9db7(0x1ff)](async _0x485c34=>{const _0x1824eb=a0_0xcc9db7,_0x544a39=expandHome(_0x485c34),_0x187a93=a0_0x40dc77[_0x1824eb(0x262)](_0x544a39);try{const _0x31fdf7=await a0_0xcc5c7c[_0x1824eb(0x286)](_0x187a93);return normalizePath(_0x31fdf7);}catch(_0x44cab0){return normalizePath(_0x187a93);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0xcc9db7(0x261)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0xcc9db7(0x256)](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0xcc9db7(0x1e8)));}catch(a0_0x58947b){logMcpStderr(a0_0xcc9db7(0x2d2)+a0_0x58947b);}async function detectWorkspaceRoot(_0x26154b){const _0x44a37c=a0_0xcc9db7;let _0x415379=a0_0x40dc77[_0x44a37c(0x262)](_0x26154b);const _0x338df1=[_0x44a37c(0x272),'.vscode','package.json',_0x44a37c(0x1ea),_0x44a37c(0x22f),_0x44a37c(0x245),_0x44a37c(0x26f),_0x44a37c(0x1df),_0x44a37c(0x1ef)];while(_0x415379!==a0_0x40dc77[_0x44a37c(0x1e6)](_0x415379)){for(const _0x43cbe9 of _0x338df1){const _0x23d940=a0_0x40dc77[_0x44a37c(0x241)](_0x415379,_0x43cbe9);try{return await a0_0xcc5c7c[_0x44a37c(0x200)](_0x23d940),normalizePath(_0x415379);}catch{}}_0x415379=a0_0x40dc77[_0x44a37c(0x1e6)](_0x415379);}return normalizePath(_0x26154b);}await Promise['all'](args['map'](async _0xc9d6aa=>{const _0x1ec0b2=a0_0xcc9db7;try{const _0x34fe22=await a0_0xcc5c7c[_0x1ec0b2(0x2a7)](expandHome(_0xc9d6aa));!_0x34fe22[_0x1ec0b2(0x1f8)]()&&(logMcpStderr(_0x1ec0b2(0x28b)+_0xc9d6aa+_0x1ec0b2(0x24d)),process[_0x1ec0b2(0x269)](0x1));}catch(_0x35190c){logMcpStderr(_0x1ec0b2(0x219)+_0xc9d6aa+':',_0x35190c),process[_0x1ec0b2(0x269)](0x1);}}));async function validatePath(_0x3263d0){const _0x3d90f0=a0_0xcc9db7,_0x43add7=expandHome(_0x3263d0),_0x22c865=a0_0x40dc77['resolve'](_0x43add7);try{const _0x19b926=await a0_0xcc5c7c[_0x3d90f0(0x286)](_0x22c865);return _0x19b926;}catch(_0x4e9c9c){if(_0x4e9c9c[_0x3d90f0(0x2e8)]===_0x3d90f0(0x2e3)){const _0x5be397=a0_0x40dc77[_0x3d90f0(0x1e6)](_0x22c865);try{const _0x1c523a=await a0_0xcc5c7c['realpath'](_0x5be397);return a0_0x40dc77['join'](_0x1c523a,a0_0x40dc77[_0x3d90f0(0x224)](_0x22c865));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x5be397);}}throw _0x4e9c9c;}}const MorphEditFileArgsSchema=z[a0_0xcc9db7(0x232)]({'path':z['string'](),'code_edit':z[a0_0xcc9db7(0x1e1)]()['describe'](a0_0xcc9db7(0x289)),'instruction':z[a0_0xcc9db7(0x1e1)]()['describe'](a0_0xcc9db7(0x210)),'dryRun':z[a0_0xcc9db7(0x2f5)]()[a0_0xcc9db7(0x25f)](![])['describe'](a0_0xcc9db7(0x20b))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0xcc9db7(0x1e4),WarpGrepArgsSchema=z[a0_0xcc9db7(0x232)]({'search_string':z[a0_0xcc9db7(0x1e1)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0xcc9db7(0x2a6)](a0_0xcc9db7(0x2f2)),'search_type':z[a0_0xcc9db7(0x1e2)]([a0_0xcc9db7(0x25f),a0_0xcc9db7(0x2de)])[a0_0xcc9db7(0x2dd)]()[a0_0xcc9db7(0x2a6)](a0_0xcc9db7(0x2fb))}),WarpGrepGitHubArgsSchema=z[a0_0xcc9db7(0x232)]({'search_string':z['string']()[a0_0xcc9db7(0x2a6)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()['optional']()[a0_0xcc9db7(0x2a6)](a0_0xcc9db7(0x227)),'owner_repo':z[a0_0xcc9db7(0x1e1)]()[a0_0xcc9db7(0x2dd)]()[a0_0xcc9db7(0x2a6)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0xcc9db7(0x1e1)]()['optional']()['describe'](a0_0xcc9db7(0x2c5))}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0xcc9db7(0x1e1)]()[a0_0xcc9db7(0x2a6)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0xcc9db7(0x1e1)]()[a0_0xcc9db7(0x2a6)](a0_0xcc9db7(0x2bf)),'branch':z['string']()[a0_0xcc9db7(0x2dd)]()[a0_0xcc9db7(0x2a6)](a0_0xcc9db7(0x250)),'commitHash':z[a0_0xcc9db7(0x1e1)]()[a0_0xcc9db7(0x2dd)]()['describe']('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z['array'](z['string']())[a0_0xcc9db7(0x25f)]([])[a0_0xcc9db7(0x2a6)](a0_0xcc9db7(0x257)),'limit':z[a0_0xcc9db7(0x2b5)]()['optional']()['default'](0xa)[a0_0xcc9db7(0x2a6)]('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0xcc9db7(0x1eb),'version':a0_0xcc9db7(0x23e)},{'capabilities':{'tools':{}}});server[a0_0xcc9db7(0x2ab)](ListToolsRequestSchema,async()=>{const _0x3c445f=a0_0xcc9db7,_0x10a89c=[{'name':_0x3c445f(0x1e9),'description':_0x3c445f(0x2ed)+_0x3c445f(0x27d)+_0x3c445f(0x27a)+_0x3c445f(0x2c8)+_0x3c445f(0x209)+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x3c445f(0x267)+_0x3c445f(0x29d)+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+_0x3c445f(0x1e5)+_0x3c445f(0x24a)+_0x3c445f(0x278)+_0x3c445f(0x201)+_0x3c445f(0x2a1)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x3c445f(0x24b)+_0x3c445f(0x2db)+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0x3c445f(0x2a9)+_0x3c445f(0x242)+_0x3c445f(0x2d7)+_0x3c445f(0x1dd)+_0x3c445f(0x23b),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':'codebase_search','description':_0x3c445f(0x228)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x3c445f(0x2ad)+_0x3c445f(0x2cb)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x46a089=_0x10a89c['filter'](_0x30947c=>{const _0x5320ea=_0x3c445f;if(DISABLED_TOOLS[_0x5320ea(0x1fa)](_0x30947c[_0x5320ea(0x2d9)]))return console[_0x5320ea(0x234)]('Tool\x20'+_0x30947c[_0x5320ea(0x2d9)]+_0x5320ea(0x270)),![];if(_0x5320ea(0x280)in _0x30947c&&_0x30947c[_0x5320ea(0x280)]&&!MORPH_API_KEY)return logMcpStderr(_0x5320ea(0x1de)+_0x30947c[_0x5320ea(0x2d9)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x46a089[_0x3c445f(0x1ff)](_0x244c52=>({'name':_0x244c52[_0x3c445f(0x2d9)],'description':_0x244c52[_0x3c445f(0x27b)],'inputSchema':_0x244c52['inputSchema']}))};}),server[a0_0xcc9db7(0x2ab)](CallToolRequestSchema,async _0x3518ea=>{const _0x2c3668=a0_0xcc9db7,{name:_0x9d8cd8,arguments:_0x35abc6}=_0x3518ea[_0x2c3668(0x240)];try{if(!MORPH_API_KEY)return{'content':[{'type':'text','text':_0x2c3668(0x1ed)}],'isError':!![]};if(!MORPH_API_KEY['startsWith'](_0x2c3668(0x2d0))&&!MORPH_API_KEY[_0x2c3668(0x29a)]('morph-'))return{'content':[{'type':'text','text':_0x2c3668(0x266)}],'isError':!![]};if(DISABLED_TOOLS[_0x2c3668(0x1fa)](_0x9d8cd8))throw new Error('Tool\x20\x22'+_0x9d8cd8+_0x2c3668(0x2ea));switch(_0x9d8cd8){case'edit_file':{const _0x232eb8=_0x35abc6&&typeof _0x35abc6===_0x2c3668(0x232)&&_0x2c3668(0x282)in _0x35abc6&&!(_0x2c3668(0x1f2)in _0x35abc6)?{..._0x35abc6,'instruction':_0x35abc6[_0x2c3668(0x282)],'instructions':undefined}:_0x35abc6,_0x5523aa=MorphEditFileArgsSchema[_0x2c3668(0x204)](_0x232eb8);if(!_0x5523aa[_0x2c3668(0x2f4)])throw new Error(_0x2c3668(0x213)+_0x5523aa['error']);const _0x384a3b=await validatePath(_0x5523aa[_0x2c3668(0x251)][_0x2c3668(0x2a5)]);let _0x3dfc8d=null,_0x37c3a7=!![],_0x4c62d6=null;try{_0x3dfc8d=await a0_0xcc5c7c[_0x2c3668(0x20e)](_0x384a3b,_0x2c3668(0x2a4));}catch(_0x10a6eb){const _0x51d2bc=_0x10a6eb[_0x2c3668(0x2e8)];_0x51d2bc===_0x2c3668(0x2e3)?(_0x37c3a7=![],_0x3dfc8d=''):(_0x4c62d6=_0x2c3668(0x294)+(_0x51d2bc||_0x2c3668(0x207))+_0x2c3668(0x2ce)+(_0x10a6eb instanceof Error?_0x10a6eb[_0x2c3668(0x271)]:String(_0x10a6eb)),logMcpStderr(_0x2c3668(0x1de)+_0x4c62d6));}let _0x56d989;try{const _0x43f0ec=MORPH_API_KEY;if(!_0x43f0ec)throw new Error(_0x2c3668(0x26b));const _0x49a78f=a0_0x40dc77[_0x2c3668(0x1e6)](_0x384a3b),_0x1b1965=a0_0x40dc77['basename'](_0x384a3b),_0x12b53c=await executeEditFile({'target_filepath':_0x1b1965,'code_edit':_0x5523aa[_0x2c3668(0x251)]['code_edit'],'instruction':_0x5523aa[_0x2c3668(0x251)][_0x2c3668(0x1f2)]},{'morphApiKey':_0x43f0ec,'morphApiUrl':MORPH_API_URL,'baseDir':_0x49a78f,'autoWrite':!_0x5523aa[_0x2c3668(0x251)][_0x2c3668(0x290)],'generateUdiff':![],'debug':![]});_0x56d989=_0x12b53c['completionId'];if(!_0x12b53c[_0x2c3668(0x2f4)])throw new Error(_0x12b53c[_0x2c3668(0x234)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x5eaeac=_0x12b53c[_0x2c3668(0x24c)],_0x12d753=_0x2c3668(0x24e)+_0x5eaeac[_0x2c3668(0x229)]+_0x2c3668(0x2f0)+_0x5eaeac[_0x2c3668(0x244)]+_0x2c3668(0x1ee)+_0x5eaeac[_0x2c3668(0x237)];if(_0x5523aa[_0x2c3668(0x251)]['dryRun'])return{'content':[{'type':'text','text':'Morph\x20Edit\x20Preview'+(_0x37c3a7?'':'\x20(new\x20file)')+':\x20'+_0x5523aa[_0x2c3668(0x251)]['instruction']+_0x2c3668(0x22a)+_0x12d753+_0x2c3668(0x21f)+_0x5523aa[_0x2c3668(0x251)]['path']+'.'}]};return{'content':[{'type':_0x2c3668(0x214),'text':'Morph\x20Edit\x20'+(_0x37c3a7?_0x2c3668(0x2ae):_0x2c3668(0x276))+':\x20'+_0x5523aa[_0x2c3668(0x251)]['instruction']+_0x2c3668(0x22a)+_0x12d753+_0x2c3668(0x21f)+_0x5523aa['data'][_0x2c3668(0x2a5)]+'.'}]};}catch(_0x5c23eb){const _0x1fbcb8=handleMorphAPIError(_0x5c23eb);if(_0x1fbcb8)return _0x1fbcb8;const _0x12b0d1=_0x5c23eb instanceof Error?_0x5c23eb[_0x2c3668(0x271)]:String(_0x5c23eb);return reportMorphError({'error_message':_0x12b0d1,'error_type':_0x5c23eb instanceof Error?_0x5c23eb[_0x2c3668(0x2e5)]['name']:_0x2c3668(0x285),'context':{'tool':'edit_file','completion_id':_0x56d989,'file_path':_0x5523aa[_0x2c3668(0x251)][_0x2c3668(0x2a5)],'validated_path':_0x384a3b,'instruction':_0x5523aa[_0x2c3668(0x251)][_0x2c3668(0x1f2)],'model':_0x2c3668(0x28d),'dry_run':_0x5523aa[_0x2c3668(0x251)][_0x2c3668(0x290)],'file_exists':_0x37c3a7,'file_read_error':_0x4c62d6,'file_readable':_0x3dfc8d!==null,'request_content':{'path':_0x5523aa[_0x2c3668(0x251)]['path'],'code_edit':_0x5523aa['data']['code_edit'],'instruction':_0x5523aa['data']['instruction'],'original_code':_0x3dfc8d!==null?_0x3dfc8d[_0x2c3668(0x261)]>0xc350?_0x3dfc8d['substring'](0x0,0xc350)+_0x2c3668(0x230)+_0x3dfc8d[_0x2c3668(0x261)]+'\x20chars)':_0x3dfc8d:_0x2c3668(0x291)+(_0x4c62d6||_0x2c3668(0x20a))+']','original_code_length':_0x3dfc8d?.[_0x2c3668(0x261)]??0x0,'model':'morph-v3-fast','dry_run':_0x5523aa[_0x2c3668(0x251)][_0x2c3668(0x290)]}},'stack_trace':_0x5c23eb instanceof Error?_0x5c23eb['stack']:undefined,'source':_0x2c3668(0x2c0)})['catch'](()=>{}),{'content':[{'type':_0x2c3668(0x214),'text':_0x2c3668(0x202)+_0x12b0d1}],'isError':!![]};}}case _0x2c3668(0x275):{const _0x1bd2ab=WarpGrepArgsSchema[_0x2c3668(0x204)](_0x35abc6);if(!_0x1bd2ab[_0x2c3668(0x2f4)])return{'content':[{'type':'text','text':_0x2c3668(0x1fb)+_0x1bd2ab[_0x2c3668(0x234)]}],'isError':!![]};const _0x27c401=_0x2e922e=>{const _0x545dd5=_0x2c3668,_0x3a9e0f=[];for(const _0x272948 of _0x2e922e||[]){if(_0x272948['role']===_0x545dd5(0x205)&&Array[_0x545dd5(0x277)](_0x272948['tool_calls']))for(const _0x462884 of _0x272948[_0x545dd5(0x1f5)]){try{const _0x532bc4=_0x462884['function']?.[_0x545dd5(0x2d9)],_0x4ff428=JSON[_0x545dd5(0x23f)](_0x462884[_0x545dd5(0x2f6)]?.[_0x545dd5(0x283)]||'{}');if(_0x532bc4===_0x545dd5(0x2e2))_0x3a9e0f[_0x545dd5(0x256)]('grep\x20\x27'+_0x4ff428[_0x545dd5(0x2af)]+'\x27\x20'+(_0x4ff428[_0x545dd5(0x2a5)]||'.'));else{if(_0x532bc4===_0x545dd5(0x235))_0x3a9e0f['push'](_0x545dd5(0x1f9)+_0x4ff428[_0x545dd5(0x2a5)]);else{if(_0x532bc4===_0x545dd5(0x220))_0x3a9e0f[_0x545dd5(0x256)](_0x545dd5(0x274)+(_0x4ff428[_0x545dd5(0x248)]||'.'));else{if(_0x532bc4===_0x545dd5(0x273))_0x3a9e0f[_0x545dd5(0x256)](_0x545dd5(0x2c6)+_0x4ff428['pattern']+'\x27\x20'+(_0x4ff428[_0x545dd5(0x2a5)]||'.'));else _0x532bc4===_0x545dd5(0x2f7)&&_0x3a9e0f['push'](_0x545dd5(0x2f7));}}}}catch{}}}return _0x3a9e0f;},_0x27aa2d=_0x578d80=>{const _0x467608=_0x2c3668,_0x2e6c0e=[];if(!_0x578d80||!Array[_0x467608(0x277)](_0x578d80))return _0x2e6c0e;const _0x1d0ecd=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x467608(0x2c1),'tool':_0x467608(0x235)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x467608(0x2f3),'tool':_0x467608(0x235)},{'pattern':/\[READ ERROR\]/,'error_type':_0x467608(0x24f),'tool':_0x467608(0x235)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x467608(0x222),'tool':_0x467608(0x235)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':_0x467608(0x28f)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x467608(0x28f)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':_0x467608(0x235)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':'read'},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':'read'},{'pattern':/symbolic link/,'error_type':_0x467608(0x284),'tool':_0x467608(0x235)},{'pattern':/Error reading file:/,'error_type':_0x467608(0x24f),'tool':_0x467608(0x235)},{'pattern':/status="error"/,'error_type':_0x467608(0x292),'tool':_0x467608(0x207)}];let _0x599f9a=0x0;for(const _0x1f3d25 of _0x578d80){_0x1f3d25[_0x467608(0x27e)]===_0x467608(0x205)&&Array[_0x467608(0x277)](_0x1f3d25['tool_calls'])&&_0x599f9a++;const _0x26730e=_0x1f3d25[_0x467608(0x21b)];if((_0x1f3d25[_0x467608(0x27e)]===_0x467608(0x217)||_0x1f3d25[_0x467608(0x27e)]===_0x467608(0x223))&&_0x26730e&&typeof _0x26730e==='string')for(const {pattern:_0x4f6f52,error_type:_0x51959e,tool:_0x297723}of _0x1d0ecd){const _0x50dd6d=_0x26730e[_0x467608(0x2ba)](new RegExp(_0x4f6f52[_0x467608(0x206)],'g'));if(_0x50dd6d)for(const _0x1f6c6e of _0x50dd6d){const _0xe931=_0x26730e[_0x467608(0x203)](_0x1f6c6e),_0x51a7c8=_0x26730e[_0x467608(0x25b)](_0xe931,Math[_0x467608(0x1fd)](_0xe931+0xc8,_0x26730e['length']));_0x2e6c0e[_0x467608(0x256)]({'tool':_0x297723,'error_type':_0x51959e,'error_message':_0x51a7c8[_0x467608(0x279)]('\x0a')[0x0],'turn':_0x599f9a});}}}return _0x2e6c0e;};try{const _0xfea0fb=a0_0x40dc77[_0x2c3668(0x262)](_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2d4)]),_0x325c08=_0x1bd2ab['data']['search_type'],_0xef556=_0x325c08===_0x2c3668(0x2de)?{'allowNames':[_0x2c3668(0x2de)]}:undefined,_0x34a9f0=new LocalRipgrepProvider(_0xfea0fb,undefined,_0xef556),_0x27e87e=await runWarpGrep({'searchTerm':_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2ca)],'repoRoot':_0xfea0fb,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x34a9f0,'search_type':_0x325c08}),_0x48b1b2=_0x27aa2d(_0x27e87e[_0x2c3668(0x2da)]);_0x48b1b2[_0x2c3668(0x261)]>0x0&&reportMorphError({'error_message':_0x2c3668(0x299)+_0x48b1b2[_0x2c3668(0x261)]+_0x2c3668(0x247),'error_type':_0x2c3668(0x2ef),'level':_0x2c3668(0x22e),'tool':'codebase_search','context':{'repo_path':_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2d4)],'query':_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2ca)],'model':_0x2c3668(0x22d),'termination_reason':_0x27e87e['terminationReason'],'sub_tool_errors':_0x48b1b2,'timings':_0x27e87e['timings'],'tool_calls':_0x27c401(_0x27e87e[_0x2c3668(0x2da)]),'messages':_0x27e87e['messages']?.[_0x2c3668(0x1ff)](_0x4728cc=>({'role':_0x4728cc['role'],'content':_0x4728cc[_0x2c3668(0x21b)],..._0x4728cc['tool_calls']?{'tool_calls':_0x4728cc['tool_calls'][_0x2c3668(0x261)]}:{},..._0x4728cc[_0x2c3668(0x1e3)]?{'tool_call_id':_0x4728cc[_0x2c3668(0x1e3)]}:{}}))},'source':_0x2c3668(0x2c0)})[_0x2c3668(0x1dc)](()=>{});let _0x5c8dd6='';if(_0x27e87e[_0x2c3668(0x21c)]===_0x2c3668(0x2cd)&&_0x27e87e['finish']?.[_0x2c3668(0x297)]?.['files']){const _0x17b958=_0x27e87e['finish']['metadata']['files'];if(_0x17b958['length']===0x0)return _0x5c8dd6=_0x27e87e[_0x2c3668(0x2f7)][_0x2c3668(0x293)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x2c3668(0x214),'text':_0x5c8dd6}]};const _0x20e2d7=[],_0x5eb3f7=[_0x2c3668(0x27c)];for(const _0x516079 of _0x27e87e['messages']){if(_0x516079[_0x2c3668(0x27e)]===_0x2c3668(0x205)&&Array[_0x2c3668(0x277)](_0x516079[_0x2c3668(0x1f5)]))for(const _0x3be807 of _0x516079[_0x2c3668(0x1f5)]){try{const _0x353ea3=_0x3be807['function']?.[_0x2c3668(0x2d9)],_0x1af6d2=JSON[_0x2c3668(0x23f)](_0x3be807['function']?.[_0x2c3668(0x283)]||'{}');if(_0x353ea3===_0x2c3668(0x2e2))_0x5eb3f7[_0x2c3668(0x256)](_0x2c3668(0x296)+_0x1af6d2['pattern']+_0x2c3668(0x1f6)+(_0x1af6d2[_0x2c3668(0x2a5)]||'.')+'`');else{if(_0x353ea3===_0x2c3668(0x235))_0x5eb3f7[_0x2c3668(0x256)](_0x2c3668(0x288)+_0x1af6d2[_0x2c3668(0x2a5)]+'`');else{if(_0x353ea3===_0x2c3668(0x220))_0x5eb3f7[_0x2c3668(0x256)](_0x2c3668(0x231)+(_0x1af6d2[_0x2c3668(0x248)]||'.')+'`');else _0x353ea3===_0x2c3668(0x273)&&_0x5eb3f7['push']('-\x20Glob\x20search\x20`'+_0x1af6d2[_0x2c3668(0x2af)]+_0x2c3668(0x1f1)+(_0x1af6d2[_0x2c3668(0x2a5)]||'.')+'`');}}}catch{}}}_0x20e2d7[_0x2c3668(0x256)](_0x5eb3f7[_0x2c3668(0x241)]('\x0a'));const _0x2ede9b=['','Relevant\x20context\x20found:'];for(const _0x1433e3 of _0x17b958){if(_0x1433e3['lines']==='*')_0x2ede9b[_0x2c3668(0x256)]('-\x20'+_0x1433e3[_0x2c3668(0x2a5)]+':*');else{if(Array[_0x2c3668(0x277)](_0x1433e3[_0x2c3668(0x25c)])){const _0x22a914=_0x1433e3[_0x2c3668(0x25c)]['map'](([_0x12a017,_0x46024d])=>{if(_0x12a017===_0x46024d)return''+_0x12a017;return _0x12a017+'-'+_0x46024d;});_0x2ede9b[_0x2c3668(0x256)]('-\x20'+_0x1433e3['path']+':'+_0x22a914[_0x2c3668(0x241)](','));}else _0x2ede9b['push']('-\x20'+_0x1433e3[_0x2c3668(0x2a5)]+':*');}}_0x2ede9b[_0x2c3668(0x256)](''),_0x20e2d7[_0x2c3668(0x256)](_0x2ede9b[_0x2c3668(0x241)]('\x0a')),_0x20e2d7[_0x2c3668(0x256)](_0x2c3668(0x28e));const _0x457cee=[],_0x44b758=[];for(const _0x2b1e59 of _0x17b958){let _0x591d28=a0_0x40dc77[_0x2c3668(0x262)](_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2d4)],_0x2b1e59[_0x2c3668(0x2a5)]),_0x23ad70=null,_0x450106=null;try{_0x23ad70=await a0_0xcc5c7c[_0x2c3668(0x20e)](_0x591d28,{'encoding':'utf-8'});}catch(_0x45819a){const _0x2bcce7=fixPathRepetition(_0x591d28);if(_0x2bcce7)try{_0x23ad70=await a0_0xcc5c7c[_0x2c3668(0x20e)](_0x2bcce7,{'encoding':_0x2c3668(0x2a4)}),_0x591d28=_0x2bcce7;}catch{_0x450106=_0x45819a instanceof Error?_0x45819a:new Error(String(_0x45819a));}else _0x450106=_0x45819a instanceof Error?_0x45819a:new Error(String(_0x45819a));}if(_0x23ad70!==null){const _0x3c8f2e=_0x23ad70[_0x2c3668(0x279)](/\r?\n/),_0x5ba42a=[];if(_0x2b1e59['lines']==='*'||!Array[_0x2c3668(0x277)](_0x2b1e59[_0x2c3668(0x25c)]))for(let _0x179390=0x1;_0x179390<=_0x3c8f2e[_0x2c3668(0x261)];_0x179390++){const _0x291534=_0x3c8f2e[_0x179390-0x1];_0x5ba42a[_0x2c3668(0x256)](_0x179390+'|\x20'+_0x291534);}else for(const [_0x94ba9b,_0x316eab]of _0x2b1e59[_0x2c3668(0x25c)]){_0x5ba42a[_0x2c3668(0x261)]>0x0&&_0x5ba42a[_0x2c3668(0x256)]('');for(let _0x181508=_0x94ba9b;_0x181508<=_0x316eab&&_0x181508<=_0x3c8f2e[_0x2c3668(0x261)];_0x181508++){const _0x26ee76=_0x3c8f2e[_0x181508-0x1];_0x5ba42a[_0x2c3668(0x256)](_0x181508+'|\x20'+_0x26ee76);}}_0x44b758[_0x2c3668(0x256)]({'path':_0x2b1e59[_0x2c3668(0x2a5)],'content':_0x5ba42a['join']('\x0a')});}else _0x457cee[_0x2c3668(0x256)](_0x2c3668(0x2b9)+_0x2b1e59[_0x2c3668(0x2a5)]+_0x2c3668(0x2a8)+(_0x450106?.[_0x2c3668(0x271)]||_0x2c3668(0x21e))+_0x2c3668(0x26e));}try{const _0x509161=await compactFileContexts(_0x44b758,_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2ca)],MORPH_API_KEY,MORPH_API_URL);for(const _0x30981f of _0x509161){_0x457cee[_0x2c3668(0x256)](_0x2c3668(0x2b9)+_0x30981f[_0x2c3668(0x2a5)]+_0x2c3668(0x2a2)+_0x30981f[_0x2c3668(0x21b)]+_0x2c3668(0x26e));}}catch(_0x579bc3){console['error'](_0x2c3668(0x1e0),_0x579bc3);for(const _0x202181 of _0x44b758){_0x457cee[_0x2c3668(0x256)]('<file\x20path=\x22'+_0x202181[_0x2c3668(0x2a5)]+_0x2c3668(0x2a2)+_0x202181[_0x2c3668(0x21b)]+_0x2c3668(0x26e));}}_0x20e2d7['push'](_0x457cee[_0x2c3668(0x241)]('\x0a\x0a')),_0x5c8dd6=_0x20e2d7[_0x2c3668(0x241)]('\x0a');const _0x25b718=_0x27e87e[_0x2c3668(0x1f4)]?.[_0x2c3668(0x2d8)](_0x48b132=>_0x48b132['message']?.[_0x2c3668(0x29a)](_0x2c3668(0x260)))||[];if(_0x25b718[_0x2c3668(0x261)]>0x0){const _0x25b67e=_0x25b718['map'](_0x35ec11=>_0x35ec11['message'])['join'](';\x20');reportMorphError({'error_message':_0x25b67e,'error_type':_0x2c3668(0x2be),'context':{'tool':_0x2c3668(0x275),'repo_path':_0x1bd2ab['data'][_0x2c3668(0x2d4)],'query':_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2ca)],'model':_0x2c3668(0x22d),'termination_reason':'completed_with_file_errors','error_count':_0x25b718[_0x2c3668(0x261)],'is_timeout':![],'timings':_0x27e87e['timings'],'files_attempted':_0x17b958[_0x2c3668(0x1ff)](_0x3a1fd9=>({'path':_0x3a1fd9[_0x2c3668(0x2a5)],'lines':_0x3a1fd9[_0x2c3668(0x25c)]})),'tool_calls':_0x27c401(_0x27e87e[_0x2c3668(0x2da)]),'messages':_0x27e87e[_0x2c3668(0x2da)]?.[_0x2c3668(0x1ff)](_0x544264=>({'role':_0x544264[_0x2c3668(0x27e)],'content':_0x544264[_0x2c3668(0x21b)],..._0x544264[_0x2c3668(0x1f5)]?{'tool_calls':_0x544264[_0x2c3668(0x1f5)][_0x2c3668(0x261)]}:{},..._0x544264[_0x2c3668(0x1e3)]?{'tool_call_id':_0x544264[_0x2c3668(0x1e3)]}:{}})),'request_content':{'query':_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2ca)],'repo_path':_0x1bd2ab['data'][_0x2c3668(0x2d4)],'repoRoot':a0_0x40dc77[_0x2c3668(0x262)](_0x1bd2ab[_0x2c3668(0x251)]['repo_path']),'model':_0x2c3668(0x22d)}},'source':_0x2c3668(0x2c0)})['catch'](()=>{});}}else{if(_0x27e87e[_0x2c3668(0x21c)]===_0x2c3668(0x20d)&&_0x27e87e[_0x2c3668(0x1f4)][_0x2c3668(0x261)]>0x0){const _0x3fa56d=_0x27e87e['errors'][_0x2c3668(0x1ff)](_0x5778dd=>_0x5778dd['message'])[_0x2c3668(0x241)](';\x20');_0x5c8dd6=_0x2c3668(0x28b)+_0x3fa56d;const _0x43a019=_0x3fa56d[_0x2c3668(0x2b0)]()[_0x2c3668(0x254)](_0x2c3668(0x2b7))||_0x3fa56d[_0x2c3668(0x2b0)]()[_0x2c3668(0x254)](_0x2c3668(0x2df))||_0x3fa56d[_0x2c3668(0x2b0)]()[_0x2c3668(0x254)](_0x2c3668(0x287)),_0x51b65c=_0x27e87e[_0x2c3668(0x2f7)]?.['metadata']?.['files'],_0x546b17=_0x27e87e[_0x2c3668(0x1f4)][0x0];reportMorphError({'error_message':_0x3fa56d,'error_type':_0x43a019?_0x2c3668(0x29b):_0x546b17?.[_0x2c3668(0x2e5)]?.['name']||'WarpGrepError','context':{'tool':_0x2c3668(0x275),'repo_path':_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2d4)],'query':_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2ca)],'model':_0x2c3668(0x22d),'termination_reason':_0x27e87e[_0x2c3668(0x21c)],'error_count':_0x27e87e[_0x2c3668(0x1f4)][_0x2c3668(0x261)],'is_timeout':_0x43a019,'timings':_0x27e87e[_0x2c3668(0x1fe)],'files_attempted':_0x51b65c?.['map'](_0x4e9ac3=>({'path':_0x4e9ac3[_0x2c3668(0x2a5)],'lines':_0x4e9ac3[_0x2c3668(0x25c)]})),'tool_calls':_0x27c401(_0x27e87e[_0x2c3668(0x2da)]),'messages':_0x27e87e[_0x2c3668(0x2da)]?.[_0x2c3668(0x1ff)](_0x50eb44=>({'role':_0x50eb44['role'],'content':_0x50eb44[_0x2c3668(0x21b)],..._0x50eb44[_0x2c3668(0x1f5)]?{'tool_calls':_0x50eb44[_0x2c3668(0x1f5)]['length']}:{},..._0x50eb44['tool_call_id']?{'tool_call_id':_0x50eb44[_0x2c3668(0x1e3)]}:{}})),'request_content':{'query':_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2ca)],'repo_path':_0x1bd2ab['data'][_0x2c3668(0x2d4)],'repoRoot':a0_0x40dc77['resolve'](_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2d4)]),'model':_0x2c3668(0x22d)}},'stack_trace':_0x546b17?.[_0x2c3668(0x2c3)]||undefined,'source':_0x2c3668(0x2c0)})[_0x2c3668(0x1dc)](()=>{});}else _0x5c8dd6=_0x2c3668(0x2c2);}return{'content':[{'type':_0x2c3668(0x214),'text':_0x5c8dd6}]};}catch(_0xeaecc0){const _0x4e7972=handleMorphAPIError(_0xeaecc0);if(_0x4e7972)return _0x4e7972;const _0x3ba742=_0xeaecc0 instanceof Error?_0xeaecc0['message']:String(_0xeaecc0),_0x4da7f0=_0x3ba742[_0x2c3668(0x2b0)]()[_0x2c3668(0x254)]('timeout')||_0x3ba742[_0x2c3668(0x2b0)]()[_0x2c3668(0x254)](_0x2c3668(0x2df))||_0x3ba742['toLowerCase']()[_0x2c3668(0x254)](_0x2c3668(0x287))||_0xeaecc0 instanceof Error&&_0xeaecc0[_0x2c3668(0x2d9)]===_0x2c3668(0x29b);return reportMorphError({'error_message':_0x3ba742,'error_type':_0x4da7f0?'TimeoutError':_0xeaecc0 instanceof Error?_0xeaecc0['constructor']['name']:_0x2c3668(0x285),'context':{'tool':_0x2c3668(0x275),'repo_path':_0x1bd2ab[_0x2c3668(0x251)]['repo_path'],'query':_0x1bd2ab[_0x2c3668(0x251)]['search_string'],'model':'morph-warp-grep-v2.1','is_timeout':_0x4da7f0,'exception_phase':_0x2c3668(0x2b1),'request_content':{'query':_0x1bd2ab['data'][_0x2c3668(0x2ca)],'repo_path':_0x1bd2ab[_0x2c3668(0x251)]['repo_path'],'repoRoot':a0_0x40dc77[_0x2c3668(0x262)](_0x1bd2ab[_0x2c3668(0x251)]['repo_path']),'model':_0x2c3668(0x22d)}},'stack_trace':_0xeaecc0 instanceof Error?_0xeaecc0[_0x2c3668(0x2c3)]:undefined,'source':_0x2c3668(0x2c0)})['catch'](()=>{}),{'content':[{'type':_0x2c3668(0x214),'text':_0x2c3668(0x29c)+_0x3ba742}],'isError':![]};}}case _0x2c3668(0x2e6):{const _0x3c3a1b=WarpGrepGitHubArgsSchema[_0x2c3668(0x204)](_0x35abc6);if(!_0x3c3a1b['success'])return{'content':[{'type':_0x2c3668(0x214),'text':_0x2c3668(0x1fb)+_0x3c3a1b['error']}],'isError':!![]};const _0x290cf9=_0x3c3a1b[_0x2c3668(0x251)]['github_url']||_0x3c3a1b[_0x2c3668(0x251)][_0x2c3668(0x2b8)];if(!_0x290cf9)return{'content':[{'type':_0x2c3668(0x214),'text':_0x2c3668(0x20c)}],'isError':!![]};const _0x172deb=MORPH_API_KEY;if(!_0x172deb)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x4e93c5=Date['now']();logMcpStderr(_0x2c3668(0x25e)+_0x290cf9+_0x2c3668(0x211)+_0x3c3a1b[_0x2c3668(0x251)][_0x2c3668(0x2ca)]+'\x22');try{const _0x3b66af=new WarpGrepClient({'morphApiKey':_0x172deb,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x80e7d3=await _0x3b66af[_0x2c3668(0x29e)]({'searchTerm':_0x3c3a1b[_0x2c3668(0x251)][_0x2c3668(0x2ca)],'github':_0x290cf9,'branch':_0x3c3a1b['data']['branch']}),_0x300493=Date[_0x2c3668(0x2e0)]()-_0x4e93c5;logMcpStderr(_0x2c3668(0x27f)+_0x300493+_0x2c3668(0x1f3)+_0x80e7d3[_0x2c3668(0x2f4)]);const _0x1940b7=formatResult(_0x80e7d3);return{'content':[{'type':'text','text':_0x1940b7}]};}catch(_0x4950cf){const _0x381af0=handleMorphAPIError(_0x4950cf);if(_0x381af0)return _0x381af0;const _0x39ffd7=Date['now']()-_0x4e93c5,_0x4d0f58=_0x4950cf instanceof Error?_0x4950cf[_0x2c3668(0x271)]:String(_0x4950cf);return logMcpStderr(_0x2c3668(0x23a)+_0x39ffd7+_0x2c3668(0x216),_0x4d0f58),reportMorphError({'error_message':_0x4d0f58,'error_type':_0x4950cf instanceof Error?_0x4950cf[_0x2c3668(0x2e5)][_0x2c3668(0x2d9)]:_0x2c3668(0x285),'context':{'tool':_0x2c3668(0x2e6),'github_url':_0x290cf9,'search_string':_0x3c3a1b[_0x2c3668(0x251)][_0x2c3668(0x2ca)],'branch':_0x3c3a1b[_0x2c3668(0x251)]['branch']},'stack_trace':_0x4950cf instanceof Error?_0x4950cf[_0x2c3668(0x2c3)]:undefined,'source':_0x2c3668(0x2c0),'tool':_0x2c3668(0x2e6),'latency_ms':_0x39ffd7})['catch'](()=>{}),{'content':[{'type':'text','text':_0x2c3668(0x2bd)+_0x4d0f58}],'isError':![]};}}default:throw new Error(_0x2c3668(0x2aa)+_0x9d8cd8);}}catch(_0x27d3c9){const _0x331d70=_0x27d3c9 instanceof Error?_0x27d3c9['message']:String(_0x27d3c9);return reportMorphError({'error_message':_0x331d70,'error_type':_0x27d3c9 instanceof Error?_0x27d3c9[_0x2c3668(0x2e5)][_0x2c3668(0x2d9)]:'UnknownError','context':{'tool':_0x9d8cd8,'arguments':_0x35abc6?JSON[_0x2c3668(0x2d6)](_0x35abc6)[_0x2c3668(0x25b)](0x0,0x1f4):undefined,'mcp_server_version':_0x2c3668(0x23e)},'stack_trace':_0x27d3c9 instanceof Error?_0x27d3c9[_0x2c3668(0x2c3)]:undefined,'source':_0x2c3668(0x2c0)})['catch'](()=>{}),{'content':[{'type':'text','text':_0x2c3668(0x28b)+_0x331d70}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x59df11){const _0x1e08cb=a0_0xcc9db7,_0x4ed221=await getValidRootDirectories(_0x59df11);if(_0x4ed221[_0x1e08cb(0x261)]>0x0)allowedDirectories=[..._0x4ed221],logMcpStderr(_0x1e08cb(0x236)+_0x4ed221[_0x1e08cb(0x261)]+_0x1e08cb(0x2c4));else{logMcpStderr(_0x1e08cb(0x2b2));if(ENABLE_WORKSPACE_MODE)try{const _0x4df004=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x4df004&&(allowedDirectories=[_0x4df004],logMcpStderr(_0x1e08cb(0x1ec)+_0x4df004));}catch(_0x52f958){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x52f958);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x21fdce=a0_0xcc9db7;try{const _0x2c031f=await server[_0x21fdce(0x26d)]();_0x2c031f&&_0x21fdce(0x233)in _0x2c031f&&await updateAllowedDirectoriesFromRoots(_0x2c031f[_0x21fdce(0x233)]);}catch(_0x369aa4){logMcpStderr(_0x21fdce(0x2b3),_0x369aa4 instanceof Error?_0x369aa4[_0x21fdce(0x271)]:String(_0x369aa4));}}),server[a0_0xcc9db7(0x2f1)]=async()=>{const _0x5d20ca=a0_0xcc9db7,_0x17215d=server[_0x5d20ca(0x2fa)]();if(_0x17215d?.['roots'])try{const _0x3f9e08=await server[_0x5d20ca(0x26d)]();_0x3f9e08&&_0x5d20ca(0x233)in _0x3f9e08?await updateAllowedDirectoriesFromRoots(_0x3f9e08[_0x5d20ca(0x233)]):logMcpStderr(_0x5d20ca(0x1f7));}catch(_0x4a2d3d){logMcpStderr(_0x5d20ca(0x221),_0x4a2d3d instanceof Error?_0x4a2d3d[_0x5d20ca(0x271)]:String(_0x4a2d3d));}else{if(allowedDirectories[_0x5d20ca(0x261)]>0x0)logMcpStderr(_0x5d20ca(0x215),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x5d20ca(0x238));else throw new Error(_0x5d20ca(0x2cc));}}};async function runServer(){const _0x193444=a0_0xcc9db7,_0x51c1ec=new StdioServerTransport();await server['connect'](_0x51c1ec),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x193444(0x261)]===0x0&&logMcpStderr(_0x193444(0x2a3));}runServer()[a0_0xcc9db7(0x1dc)](_0x18f61f=>{const _0x5efce1=a0_0xcc9db7;logMcpStderr(_0x5efce1(0x2bb),_0x18f61f),process['exit'](0x1);});
2
+ const a0_0x10d739=a0_0x14cf;(function(_0x25931c,_0x130c8a){const _0x2f1e8f=a0_0x14cf,_0x3fd1f1=_0x25931c();while(!![]){try{const _0x511946=-parseInt(_0x2f1e8f(0x217))/0x1*(parseInt(_0x2f1e8f(0x1dc))/0x2)+parseInt(_0x2f1e8f(0x26e))/0x3*(-parseInt(_0x2f1e8f(0x238))/0x4)+-parseInt(_0x2f1e8f(0x205))/0x5*(-parseInt(_0x2f1e8f(0x1c0))/0x6)+-parseInt(_0x2f1e8f(0x23e))/0x7*(-parseInt(_0x2f1e8f(0x1a9))/0x8)+parseInt(_0x2f1e8f(0x212))/0x9+parseInt(_0x2f1e8f(0x1f6))/0xa*(-parseInt(_0x2f1e8f(0x195))/0xb)+parseInt(_0x2f1e8f(0x19c))/0xc*(-parseInt(_0x2f1e8f(0x20c))/0xd);if(_0x511946===_0x130c8a)break;else _0x3fd1f1['push'](_0x3fd1f1['shift']());}catch(_0x3dfd0c){_0x3fd1f1['push'](_0x3fd1f1['shift']());}}}(a0_0x323f,0x90c86));function a0_0x14cf(_0x251874,_0x4ecd33){_0x251874=_0x251874-0x195;const _0x323ff6=a0_0x323f();let _0x14cf39=_0x323ff6[_0x251874];return _0x14cf39;}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_0x49b6f5 from'fs/promises';import a0_0x11fbeb from'path';import a0_0x7bb45d 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{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';function a0_0x323f(){const _0x4f05ac=['substring','grep_search','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','Failed\x20to\x20request\x20roots\x20from\x20client:','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','instruction','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','exit','source','\x22>\x0a','env','@morphllm/morphmcp\x20','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','lines','290480LrEhIN','morph-v3-fast','includes','Morph\x20FastApply\x20failed\x20without\x20error\x20message','morph-warp-grep-v2.1','\x20chars)','[could\x20not\x20read\x20file:\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','SubToolError','push','pyproject.toml','etimedout','--version','[github_codebase_search]\x20Searching\x20','realpath','20BXOFeK','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','completionId','name','has','access','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','325SbemOn','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','log','MORPH_WARP_GREP_TIMEOUT','instructions','all','10640088dVoisU','linesRemoved','../package.json','homedir','floor','11qBAGPU','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','listRoots','-\x20Read\x20file\x20`','warn','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','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','Error\x20running\x20fast\x20context\x20search:\x20','description','Here\x20is\x20the\x20content\x20of\x20files:\x0a','Morph\x20Edit\x20Preview','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','\x20-\x20','Workspace\x20mode\x20enabled:\x20Using\x20','added\x20','split','ReadError','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','inputSchema','list_directory','error','Invalid\x20arguments:\x20','timed\x20out','\x0aOptions:','Disabled\x20tools:\x20','stringify','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','\x20\x20morph-mcp','connect','Warning:\x20','Applied','object',',\x20removed\x20','4nYbfmt','mcp-filesystem','TimeoutError','GitHub\x20search\x20failed:\x20','\x20valid\x20directories','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','91hhcPli','0.2.0','glob','trim','cwd','status','match','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','startsWith','list_directory\x20','oninitialized','owner_repo','context','code','map','stack','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','Morph\x20Edit\x20','arguments','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','SymlinkError','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','array','response','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','filter','completed','boolean','normalize','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','linesModified','isDirectory','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.',',\x20modified\x20','command','payload','toLowerCase','RipgrepNotAvailable','edit_file','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos','tool_call_id','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','pattern','WarpGrepError','MORPH_API_URL','1392981qcZlBM','timeout','isArray','getClientCapabilities','roots','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','tool_calls','codebase_search','search_type','sep','constructor','-\x20Grepped\x20\x27','describe','content','[github_codebase_search]\x20Done\x20in\x20','application/json','search_string','branch','length','\x27\x20in\x20`','grep\x20\x27','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','slice','\x20error(s)','indexOf','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','requiresApiKey','https://morphllm.com/api/error-report','join','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','\x20is\x20not\x20a\x20directory','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.','\x0aExamples:','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','readFile','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','enum','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.','Fatal\x20error\x20running\x20server:','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.','params','read','github_url','data','ToolException','searchGitHub','ms:','Parent\x20directory\x20does\x20not\x20exist:\x20','[github_codebase_search]\x20Failed\x20in\x20','<file\x20path=\x22','\x20for:\x20\x22','dryRun','metadata','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','.\x20Path:\x20','WORKSPACE_ROOT','44zsgirh','Preview\x20changes\x20without\x20applying\x20them.','FileReadError','Unknown\x20error','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','Failed\x20to\x20read\x20file:\x20','safeParse','140172wGznxS','ENOENT','setNotificationHandler','package.json','BinaryFile','function','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.','Max\x20results\x20to\x20return','For\x20deletions:\x0a','parse','DISABLED_TOOLS','glob\x20\x27','text','59080bpnedo','github_codebase_search','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','utf-8','.\x20Changes:\x20','\x0a</file>','-\x20Listed\x20directory\x20`','--help','Bearer\x20','--api-key','false','stat','--api-key=','timings','catch','Rules:\x0a','dirname','setRequestHandler','basename','number','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','UnknownError','.git','1741272WCfbEK','Error:\x20','FileNotFound','resolve','errors','unknown','default','Repository\x20identifier','terminated','success','messages','node_modules','File\x20read\x20error:','terminationReason','string','sk-','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','repo_path','finish','message','code_edit','grep','Specific\x20commit\x20hash\x20to\x20search','optional','Relevant\x20context\x20found:','\x0a...\x20(truncated,\x20total:\x20','role','Benefits:\x0a','177002fAGthD','path','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','MORPH_API_KEY','files','now','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.','\x22.\x20Known\x20tools:\x20','assistant'];a0_0x323f=function(){return _0x4f05ac;};return a0_0x323f();}import a0_0x1221e4 from'axios';function fixPathRepetition(_0x40608a){const _0x32838d=a0_0x14cf,_0x138b1c=_0x40608a[_0x32838d(0x226)](a0_0x11fbeb[_0x32838d(0x277)])[_0x32838d(0x259)](Boolean);if(_0x138b1c[_0x32838d(0x280)]<0x2)return null;for(let _0x33ae7e=Math[_0x32838d(0x216)](_0x138b1c[_0x32838d(0x280)]/0x2);_0x33ae7e>=0x1;_0x33ae7e--){for(let _0x4b66c3=0x0;_0x4b66c3<=_0x138b1c[_0x32838d(0x280)]-0x2*_0x33ae7e;_0x4b66c3++){const _0x2a03a9=_0x138b1c['slice'](_0x4b66c3,_0x4b66c3+_0x33ae7e),_0x1b4602=_0x138b1c['slice'](_0x4b66c3+_0x33ae7e,_0x4b66c3+0x2*_0x33ae7e);if(_0x2a03a9['every']((_0x30017d,_0xc429e6)=>_0x30017d===_0x1b4602[_0xc429e6])){const _0x36548f=[..._0x138b1c[_0x32838d(0x284)](0x0,_0x4b66c3),..._0x138b1c[_0x32838d(0x284)](_0x4b66c3+_0x33ae7e)];return a0_0x11fbeb[_0x32838d(0x277)]+_0x36548f[_0x32838d(0x28a)](a0_0x11fbeb[_0x32838d(0x277)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x4d9cbc=a0_0x14cf;try{const _0x4e3475=require(_0x4d9cbc(0x214));return _0x4e3475['version']??_0x4d9cbc(0x1c5);}catch(_0x1b02c2){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x1b02c2),_0x4d9cbc(0x1c5);}}function printHelp(){const _0x485a68=a0_0x14cf;console[_0x485a68(0x20e)](_0x485a68(0x1f3)+getPackageVersion()),console['log'](_0x485a68(0x283)),console['log'](_0x485a68(0x22e)),console['log'](_0x485a68(0x1d0)),console[_0x485a68(0x20e)]('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0x485a68(0x20e)](_0x485a68(0x20b)),console[_0x485a68(0x20e)](_0x485a68(0x28e)),console[_0x485a68(0x20e)](_0x485a68(0x232)),console[_0x485a68(0x20e)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process['argv'][a0_0x10d739(0x284)](0x2),VERSION_FLAGS=new Set([a0_0x10d739(0x202),'-v','-V']),HELP_FLAGS=new Set([a0_0x10d739(0x1b0),'-h']);cliArgs['some'](_0x2706e3=>VERSION_FLAGS[a0_0x10d739(0x209)](_0x2706e3))&&(console[a0_0x10d739(0x20e)]('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x10d739(0x1ef)](0x0));cliArgs['some'](_0x30ef2f=>HELP_FLAGS[a0_0x10d739(0x209)](_0x30ef2f))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x34a9ed){const _0xa24fd4=a0_0x10d739;for(let _0x177ce6=0x0;_0x177ce6<cliArgs[_0xa24fd4(0x280)];_0x177ce6++){const _0x81d3b=cliArgs[_0x177ce6];if(_0x81d3b[_0xa24fd4(0x246)]('--'+_0x34a9ed+'='))return _0x81d3b[_0xa24fd4(0x284)](('--'+_0x34a9ed+'=')['length']);if(_0x81d3b==='--'+_0x34a9ed&&_0x177ce6+0x1<cliArgs['length'])return cliArgs[_0x177ce6+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x10d739(0x280)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x10d739(0x209)](arg)||HELP_FLAGS[a0_0x10d739(0x209)](arg))continue;if(arg[a0_0x10d739(0x246)](a0_0x10d739(0x1b5)))continue;if(arg===a0_0x10d739(0x1b2)){i++;continue;}args[a0_0x10d739(0x1ff)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x10d739(0x2a5)]||process[a0_0x10d739(0x1f2)]['PWD']||process[a0_0x10d739(0x242)](),ENABLE_WORKSPACE_MODE=process[a0_0x10d739(0x1f2)]['ENABLE_WORKSPACE_MODE']!==a0_0x10d739(0x1b3),MORPH_API_KEY=getCliArg('api-key')??process['env'][a0_0x10d739(0x1e1)],MORPH_API_URL=process[a0_0x10d739(0x1f2)][a0_0x10d739(0x26d)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x10d739(0x1f2)][a0_0x10d739(0x20f)]?parseInt(process[a0_0x10d739(0x1f2)][a0_0x10d739(0x20f)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x10d739(0x266),a0_0x10d739(0x275),'github_codebase_search']),DISABLED_TOOLS=process[a0_0x10d739(0x1f2)][a0_0x10d739(0x1a6)]?new Set(process[a0_0x10d739(0x1f2)][a0_0x10d739(0x1a6)][a0_0x10d739(0x226)](',')[a0_0x10d739(0x24c)](_0x3488aa=>_0x3488aa[a0_0x10d739(0x241)]())['filter'](_0xee6ddc=>_0xee6ddc[a0_0x10d739(0x280)]>0x0)):new Set();if(DISABLED_TOOLS['size']>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x10d739(0x22b)](a0_0x10d739(0x255)+tool+a0_0x10d739(0x1e5)+[...KNOWN_TOOL_NAMES][a0_0x10d739(0x28a)](',\x20'));}console[a0_0x10d739(0x22b)](a0_0x10d739(0x22f)+[...DISABLED_TOOLS][a0_0x10d739(0x28a)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith']('sk-')&&!MORPH_API_KEY[a0_0x10d739(0x246)]('morph-')&&logMcpStderr(a0_0x10d739(0x222));async function reportMorphError(_0x4cc09b){const _0x2573ac=a0_0x10d739;try{await a0_0x1221e4['post'](_0x2573ac(0x289),{..._0x4cc09b,'timestamp':new Date()['toISOString'](),'source':_0x4cc09b[_0x2573ac(0x1f0)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x4cc09b[_0x2573ac(0x24a)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x2573ac(0x27d),'Authorization':_0x2573ac(0x1b1)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x41a649,_0x13a539){const _0x4189b4=a0_0x10d739;if(_0x41a649&&typeof _0x41a649===_0x4189b4(0x236)&&_0x4189b4(0x243)in _0x41a649)return _0x41a649[_0x4189b4(0x243)];if(_0x41a649&&typeof _0x41a649===_0x4189b4(0x236)&&_0x4189b4(0x257)in _0x41a649)return _0x41a649[_0x4189b4(0x257)]?.[_0x4189b4(0x243)];const _0x279230=_0x13a539[_0x4189b4(0x244)](/\b(401|429)\b/);return _0x279230?parseInt(_0x279230[0x1],0xa):null;}function handleMorphAPIError(_0x569540){const _0x188309=a0_0x10d739,_0x41ea9c=_0x569540 instanceof Error?_0x569540[_0x188309(0x1d3)]:String(_0x569540),_0x3d9dc4=extractStatusCode(_0x569540,_0x41ea9c);switch(_0x3d9dc4){case 0x191:return{'content':[{'type':_0x188309(0x1a8),'text':_0x188309(0x293)}],'isError':!![]};case 0x1ad:return{'content':[{'type':'text','text':'Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.'}],'isError':!![]};default:return null;}}args[a0_0x10d739(0x280)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x10d739(0x1ee)),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr(a0_0x10d739(0x267)),logMcpStderr(a0_0x10d739(0x273)),logMcpStderr(a0_0x10d739(0x1fd)));function normalizePath(_0x563a61){const _0x4a8f80=a0_0x10d739;return a0_0x11fbeb[_0x4a8f80(0x25c)](_0x563a61);}function expandHome(_0x57a98a){const _0x32b1cf=a0_0x10d739;if(_0x57a98a[_0x32b1cf(0x246)]('~/')||_0x57a98a==='~')return a0_0x11fbeb[_0x32b1cf(0x28a)](a0_0x7bb45d[_0x32b1cf(0x215)](),_0x57a98a[_0x32b1cf(0x284)](0x1));return _0x57a98a;}let allowedDirectories=await Promise[a0_0x10d739(0x211)](args['map'](async _0x34b22d=>{const _0x2be306=a0_0x10d739,_0x3fa3cd=expandHome(_0x34b22d),_0x3c0633=a0_0x11fbeb[_0x2be306(0x1c3)](_0x3fa3cd);try{const _0x4dbac2=await a0_0x49b6f5[_0x2be306(0x204)](_0x3c0633);return normalizePath(_0x4dbac2);}catch(_0x44f299){return normalizePath(_0x3c0633);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x10d739(0x1ff)](workspaceDir),logMcpStderr(a0_0x10d739(0x224)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x51c2d9){logMcpStderr(a0_0x10d739(0x228)+a0_0x51c2d9);}async function detectWorkspaceRoot(_0x5a42ae){const _0x13c060=a0_0x10d739;let _0x2f732e=a0_0x11fbeb[_0x13c060(0x1c3)](_0x5a42ae);const _0x2300ad=[_0x13c060(0x1bf),'.vscode',_0x13c060(0x19f),'Cargo.toml',_0x13c060(0x200),'go.mod','.cursor','tsconfig.json','composer.json'];while(_0x2f732e!==a0_0x11fbeb['dirname'](_0x2f732e)){for(const _0x470050 of _0x2300ad){const _0x3af959=a0_0x11fbeb[_0x13c060(0x28a)](_0x2f732e,_0x470050);try{return await a0_0x49b6f5[_0x13c060(0x20a)](_0x3af959),normalizePath(_0x2f732e);}catch{}}_0x2f732e=a0_0x11fbeb[_0x13c060(0x1b9)](_0x2f732e);}return normalizePath(_0x5a42ae);}await Promise[a0_0x10d739(0x211)](args[a0_0x10d739(0x24c)](async _0x30ee42=>{const _0x3b522a=a0_0x10d739;try{const _0x13752d=await a0_0x49b6f5[_0x3b522a(0x1b4)](expandHome(_0x30ee42));!_0x13752d[_0x3b522a(0x25f)]()&&(logMcpStderr(_0x3b522a(0x1c1)+_0x30ee42+_0x3b522a(0x28c)),process[_0x3b522a(0x1ef)](0x1));}catch(_0x535e48){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x30ee42+':',_0x535e48),process[_0x3b522a(0x1ef)](0x1);}}));async function validatePath(_0x460738){const _0x5a3b05=a0_0x10d739,_0x1de9e7=expandHome(_0x460738),_0x3ce312=a0_0x11fbeb[_0x5a3b05(0x1c3)](_0x1de9e7);try{const _0x118762=await a0_0x49b6f5[_0x5a3b05(0x204)](_0x3ce312);return _0x118762;}catch(_0x3c8d7d){if(_0x3c8d7d[_0x5a3b05(0x24b)]===_0x5a3b05(0x19d)){const _0x2a8b2f=a0_0x11fbeb[_0x5a3b05(0x1b9)](_0x3ce312);try{const _0x1be535=await a0_0x49b6f5[_0x5a3b05(0x204)](_0x2a8b2f);return a0_0x11fbeb[_0x5a3b05(0x28a)](_0x1be535,a0_0x11fbeb[_0x5a3b05(0x1bb)](_0x3ce312));}catch{throw new Error(_0x5a3b05(0x29d)+_0x2a8b2f);}}throw _0x3c8d7d;}}const MorphEditFileArgsSchema=z[a0_0x10d739(0x236)]({'path':z['string'](),'code_edit':z[a0_0x10d739(0x1ce)]()['describe'](a0_0x10d739(0x28b)),'instruction':z[a0_0x10d739(0x1ce)]()[a0_0x10d739(0x27a)](a0_0x10d739(0x25d)),'dryRun':z[a0_0x10d739(0x25b)]()[a0_0x10d739(0x1c6)](![])['describe'](a0_0x10d739(0x196))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x10d739(0x1e4),WarpGrepArgsSchema=z[a0_0x10d739(0x236)]({'search_string':z['string']()[a0_0x10d739(0x27a)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x10d739(0x1ce)]()[a0_0x10d739(0x27a)](a0_0x10d739(0x268)),'search_type':z[a0_0x10d739(0x292)]([a0_0x10d739(0x1c6),a0_0x10d739(0x1cb)])[a0_0x10d739(0x1d7)]()[a0_0x10d739(0x27a)]('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z[a0_0x10d739(0x236)]({'search_string':z[a0_0x10d739(0x1ce)]()[a0_0x10d739(0x27a)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x10d739(0x1ce)]()[a0_0x10d739(0x1d7)]()[a0_0x10d739(0x27a)](a0_0x10d739(0x1a2)),'owner_repo':z[a0_0x10d739(0x1ce)]()[a0_0x10d739(0x1d7)]()[a0_0x10d739(0x27a)]('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_0x10d739(0x1d7)]()['describe'](a0_0x10d739(0x245))}),CodebaseSearchArgsSchema=z[a0_0x10d739(0x236)]({'query':z['string']()[a0_0x10d739(0x27a)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x10d739(0x1ce)]()[a0_0x10d739(0x27a)](a0_0x10d739(0x1c7)),'branch':z['string']()['optional']()[a0_0x10d739(0x27a)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x10d739(0x1ce)]()[a0_0x10d739(0x1d7)]()['describe'](a0_0x10d739(0x1d6)),'targetDirectories':z[a0_0x10d739(0x256)](z[a0_0x10d739(0x1ce)]())[a0_0x10d739(0x1c6)]([])['describe'](a0_0x10d739(0x1df)),'limit':z[a0_0x10d739(0x1bc)]()[a0_0x10d739(0x1d7)]()['default'](0xa)[a0_0x10d739(0x27a)](a0_0x10d739(0x1a3))}),server=new Server({'name':'morph-mcp','version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x10d739(0x1ba)](ListToolsRequestSchema,async()=>{const _0x308370=a0_0x10d739,_0x222df2=[{'name':_0x308370(0x266),'description':_0x308370(0x28f)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+_0x308370(0x206)+_0x308370(0x1db)+_0x308370(0x20d)+_0x308370(0x24e)+_0x308370(0x1ec)+_0x308370(0x21d)+_0x308370(0x253)+'ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a'+'Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'+_0x308370(0x1a4)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x308370(0x218)+_0x308370(0x1b8)+_0x308370(0x1f4)+_0x308370(0x2a3)+_0x308370(0x1e9)+'-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a'+_0x308370(0x1bd)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x308370(0x199),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x308370(0x275),'description':_0x308370(0x21c)+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'+_0x308370(0x26a)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x55dcbe=_0x222df2['filter'](_0x236cdf=>{const _0x58d859=_0x308370;if(DISABLED_TOOLS[_0x58d859(0x209)](_0x236cdf['name']))return console[_0x58d859(0x22b)]('Tool\x20'+_0x236cdf[_0x58d859(0x208)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x58d859(0x288)in _0x236cdf&&_0x236cdf[_0x58d859(0x288)]&&!MORPH_API_KEY)return logMcpStderr(_0x58d859(0x234)+_0x236cdf[_0x58d859(0x208)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x55dcbe[_0x308370(0x24c)](_0x162a8b=>({'name':_0x162a8b[_0x308370(0x208)],'description':_0x162a8b[_0x308370(0x21f)],'inputSchema':_0x162a8b[_0x308370(0x229)]}))};}),server[a0_0x10d739(0x1ba)](CallToolRequestSchema,async _0x172d88=>{const _0x2066e3=a0_0x10d739,{name:_0x1a7f10,arguments:_0x36826a}=_0x172d88[_0x2066e3(0x296)];try{if(!MORPH_API_KEY)return{'content':[{'type':_0x2066e3(0x1a8),'text':_0x2066e3(0x231)}],'isError':!![]};if(!MORPH_API_KEY[_0x2066e3(0x246)](_0x2066e3(0x1cf))&&!MORPH_API_KEY['startsWith']('morph-'))return{'content':[{'type':_0x2066e3(0x1a8),'text':_0x2066e3(0x295)}],'isError':!![]};if(DISABLED_TOOLS[_0x2066e3(0x209)](_0x1a7f10))throw new Error('Tool\x20\x22'+_0x1a7f10+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x1a7f10){case'edit_file':{const _0x250468=_0x36826a&&typeof _0x36826a===_0x2066e3(0x236)&&_0x2066e3(0x210)in _0x36826a&&!('instruction'in _0x36826a)?{..._0x36826a,'instruction':_0x36826a[_0x2066e3(0x210)],'instructions':undefined}:_0x36826a,_0x53bf71=MorphEditFileArgsSchema[_0x2066e3(0x19b)](_0x250468);if(!_0x53bf71['success'])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x53bf71[_0x2066e3(0x22b)]);const _0x2eb369=await validatePath(_0x53bf71[_0x2066e3(0x299)][_0x2066e3(0x1dd)]);let _0x55163f=null,_0x5d33cd=!![],_0x1d4476=null;try{_0x55163f=await a0_0x49b6f5[_0x2066e3(0x290)](_0x2eb369,_0x2066e3(0x1ac));}catch(_0x2e12ff){const _0x2efa77=_0x2e12ff['code'];_0x2efa77===_0x2066e3(0x19d)?(_0x5d33cd=![],_0x55163f=''):(_0x1d4476=_0x2066e3(0x19a)+(_0x2efa77||_0x2066e3(0x1c5))+_0x2066e3(0x223)+(_0x2e12ff instanceof Error?_0x2e12ff[_0x2066e3(0x1d3)]:String(_0x2e12ff)),logMcpStderr('Warning:\x20'+_0x1d4476));}let _0x4b7d9a;try{const _0x14e4e7=MORPH_API_KEY;if(!_0x14e4e7)throw new Error(_0x2066e3(0x260));const _0x59bbab=a0_0x11fbeb[_0x2066e3(0x1b9)](_0x2eb369),_0x34e75c=a0_0x11fbeb[_0x2066e3(0x1bb)](_0x2eb369),_0x25d681=await executeEditFile({'target_filepath':_0x34e75c,'code_edit':_0x53bf71[_0x2066e3(0x299)][_0x2066e3(0x1d4)],'instruction':_0x53bf71[_0x2066e3(0x299)][_0x2066e3(0x1ed)]},{'morphApiKey':_0x14e4e7,'morphApiUrl':MORPH_API_URL,'baseDir':_0x59bbab,'autoWrite':!_0x53bf71['data'][_0x2066e3(0x2a1)],'generateUdiff':![],'debug':![]});_0x4b7d9a=_0x25d681[_0x2066e3(0x207)];if(!_0x25d681[_0x2066e3(0x1c9)])throw new Error(_0x25d681[_0x2066e3(0x22b)]||_0x2066e3(0x1f9));const _0x10d3d2=_0x25d681['changes'],_0x37b361=_0x2066e3(0x225)+_0x10d3d2['linesAdded']+_0x2066e3(0x237)+_0x10d3d2[_0x2066e3(0x213)]+_0x2066e3(0x261)+_0x10d3d2[_0x2066e3(0x25e)];if(_0x53bf71[_0x2066e3(0x299)][_0x2066e3(0x2a1)])return{'content':[{'type':'text','text':_0x2066e3(0x221)+(_0x5d33cd?'':'\x20(new\x20file)')+':\x20'+_0x53bf71[_0x2066e3(0x299)][_0x2066e3(0x1ed)]+_0x2066e3(0x1ad)+_0x37b361+_0x2066e3(0x2a4)+_0x53bf71[_0x2066e3(0x299)][_0x2066e3(0x1dd)]+'.'}]};return{'content':[{'type':_0x2066e3(0x1a8),'text':_0x2066e3(0x24f)+(_0x5d33cd?_0x2066e3(0x235):'Created\x20File')+':\x20'+_0x53bf71[_0x2066e3(0x299)]['instruction']+_0x2066e3(0x1ad)+_0x37b361+'.\x20Path:\x20'+_0x53bf71['data'][_0x2066e3(0x1dd)]+'.'}]};}catch(_0x4ac705){const _0x2f1d87=handleMorphAPIError(_0x4ac705);if(_0x2f1d87)return _0x2f1d87;const _0x4925a8=_0x4ac705 instanceof Error?_0x4ac705[_0x2066e3(0x1d3)]:String(_0x4ac705);return reportMorphError({'error_message':_0x4925a8,'error_type':_0x4ac705 instanceof Error?_0x4ac705['constructor'][_0x2066e3(0x208)]:_0x2066e3(0x1be),'context':{'tool':'edit_file','completion_id':_0x4b7d9a,'file_path':_0x53bf71[_0x2066e3(0x299)][_0x2066e3(0x1dd)],'validated_path':_0x2eb369,'instruction':_0x53bf71['data'][_0x2066e3(0x1ed)],'model':_0x2066e3(0x1f7),'dry_run':_0x53bf71['data'][_0x2066e3(0x2a1)],'file_exists':_0x5d33cd,'file_read_error':_0x1d4476,'file_readable':_0x55163f!==null,'request_content':{'path':_0x53bf71[_0x2066e3(0x299)][_0x2066e3(0x1dd)],'code_edit':_0x53bf71[_0x2066e3(0x299)]['code_edit'],'instruction':_0x53bf71['data'][_0x2066e3(0x1ed)],'original_code':_0x55163f!==null?_0x55163f['length']>0xc350?_0x55163f['substring'](0x0,0xc350)+_0x2066e3(0x1d9)+_0x55163f[_0x2066e3(0x280)]+_0x2066e3(0x1fb):_0x55163f:_0x2066e3(0x1fc)+(_0x1d4476||'unknown\x20error')+']','original_code_length':_0x55163f?.['length']??0x0,'model':_0x2066e3(0x1f7),'dry_run':_0x53bf71['data']['dryRun']}},'stack_trace':_0x4ac705 instanceof Error?_0x4ac705[_0x2066e3(0x24d)]:undefined,'source':_0x2066e3(0x239)})[_0x2066e3(0x1b7)](()=>{}),{'content':[{'type':'text','text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x4925a8}],'isError':!![]};}}case _0x2066e3(0x275):{const _0x3018e7=WarpGrepArgsSchema[_0x2066e3(0x19b)](_0x36826a);if(!_0x3018e7[_0x2066e3(0x1c9)])return{'content':[{'type':_0x2066e3(0x1a8),'text':_0x2066e3(0x22c)+_0x3018e7['error']}],'isError':!![]};const _0x4e0457=_0x387a4d=>{const _0x2a4b01=_0x2066e3,_0xcf33ba=[];for(const _0x18c322 of _0x387a4d||[]){if(_0x18c322[_0x2a4b01(0x1da)]===_0x2a4b01(0x1e6)&&Array[_0x2a4b01(0x270)](_0x18c322[_0x2a4b01(0x274)]))for(const _0x23fd1f of _0x18c322[_0x2a4b01(0x274)]){try{const _0x534c10=_0x23fd1f[_0x2a4b01(0x1a1)]?.['name'],_0x34810a=JSON[_0x2a4b01(0x1a5)](_0x23fd1f[_0x2a4b01(0x1a1)]?.['arguments']||'{}');if(_0x534c10===_0x2a4b01(0x1e8))_0xcf33ba['push'](_0x2a4b01(0x282)+_0x34810a[_0x2a4b01(0x26b)]+'\x27\x20'+(_0x34810a[_0x2a4b01(0x1dd)]||'.'));else{if(_0x534c10===_0x2a4b01(0x297))_0xcf33ba[_0x2a4b01(0x1ff)]('read\x20'+_0x34810a[_0x2a4b01(0x1dd)]);else{if(_0x534c10===_0x2a4b01(0x22a))_0xcf33ba[_0x2a4b01(0x1ff)](_0x2a4b01(0x247)+(_0x34810a[_0x2a4b01(0x262)]||'.'));else{if(_0x534c10==='glob')_0xcf33ba[_0x2a4b01(0x1ff)](_0x2a4b01(0x1a7)+_0x34810a[_0x2a4b01(0x26b)]+'\x27\x20'+(_0x34810a[_0x2a4b01(0x1dd)]||'.'));else _0x534c10===_0x2a4b01(0x1d2)&&_0xcf33ba[_0x2a4b01(0x1ff)](_0x2a4b01(0x1d2));}}}}catch{}}}return _0xcf33ba;},_0x43911b=_0xe01f67=>{const _0x2fbdd6=_0x2066e3,_0x152324=[];if(!_0xe01f67||!Array[_0x2fbdd6(0x270)](_0xe01f67))return _0x152324;const _0x597b00=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x2fbdd6(0x1c2),'tool':_0x2fbdd6(0x297)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x2fbdd6(0x297)},{'pattern':/\[READ ERROR\]/,'error_type':_0x2fbdd6(0x227),'tool':_0x2fbdd6(0x297)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x2fbdd6(0x1a0),'tool':_0x2fbdd6(0x297)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':_0x2fbdd6(0x1d5)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x2fbdd6(0x265),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':_0x2fbdd6(0x1a0),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x2fbdd6(0x254),'tool':_0x2fbdd6(0x297)},{'pattern':/not a text file/,'error_type':_0x2fbdd6(0x1a0),'tool':_0x2fbdd6(0x297)},{'pattern':/symbolic link/,'error_type':_0x2fbdd6(0x254),'tool':_0x2fbdd6(0x297)},{'pattern':/Error reading file:/,'error_type':_0x2fbdd6(0x227),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x2fbdd6(0x29a),'tool':_0x2fbdd6(0x1c5)}];let _0x1ed04a=0x0;for(const _0x7f45fe of _0xe01f67){_0x7f45fe[_0x2fbdd6(0x1da)]===_0x2fbdd6(0x1e6)&&Array[_0x2fbdd6(0x270)](_0x7f45fe[_0x2fbdd6(0x274)])&&_0x1ed04a++;const _0x462fbc=_0x7f45fe[_0x2fbdd6(0x27b)];if((_0x7f45fe[_0x2fbdd6(0x1da)]==='tool'||_0x7f45fe[_0x2fbdd6(0x1da)]==='user')&&_0x462fbc&&typeof _0x462fbc===_0x2fbdd6(0x1ce))for(const {pattern:_0x29c2e3,error_type:_0x18bf3d,tool:_0x3e20ec}of _0x597b00){const _0x329093=_0x462fbc[_0x2fbdd6(0x244)](new RegExp(_0x29c2e3['source'],'g'));if(_0x329093)for(const _0xc45fd2 of _0x329093){const _0x211efe=_0x462fbc[_0x2fbdd6(0x286)](_0xc45fd2),_0xa7fc0f=_0x462fbc[_0x2fbdd6(0x1e7)](_0x211efe,Math['min'](_0x211efe+0xc8,_0x462fbc['length']));_0x152324[_0x2fbdd6(0x1ff)]({'tool':_0x3e20ec,'error_type':_0x18bf3d,'error_message':_0xa7fc0f[_0x2fbdd6(0x226)]('\x0a')[0x0],'turn':_0x1ed04a});}}}return _0x152324;};try{const _0x191e95=a0_0x11fbeb[_0x2066e3(0x1c3)](_0x3018e7[_0x2066e3(0x299)][_0x2066e3(0x1d1)]),_0x15fe65=_0x3018e7[_0x2066e3(0x299)][_0x2066e3(0x276)],_0xb5c800=_0x15fe65===_0x2066e3(0x1cb)?{'allowNames':['node_modules']}:undefined,_0x1e8bc7=new LocalRipgrepProvider(_0x191e95,undefined,_0xb5c800),_0x56667d=await runWarpGrep({'searchTerm':_0x3018e7['data'][_0x2066e3(0x27e)],'repoRoot':_0x191e95,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x1e8bc7,'search_type':_0x15fe65}),_0x2926fd=_0x43911b(_0x56667d[_0x2066e3(0x1ca)]);_0x2926fd[_0x2066e3(0x280)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x2926fd['length']+_0x2066e3(0x285),'error_type':_0x2066e3(0x1fe),'level':_0x2066e3(0x21b),'tool':_0x2066e3(0x275),'context':{'repo_path':_0x3018e7[_0x2066e3(0x299)][_0x2066e3(0x1d1)],'query':_0x3018e7[_0x2066e3(0x299)][_0x2066e3(0x27e)],'model':_0x2066e3(0x1fa),'termination_reason':_0x56667d[_0x2066e3(0x1cd)],'sub_tool_errors':_0x2926fd,'timings':_0x56667d['timings'],'tool_calls':_0x4e0457(_0x56667d[_0x2066e3(0x1ca)]),'messages':_0x56667d['messages']?.[_0x2066e3(0x24c)](_0x359dd2=>({'role':_0x359dd2[_0x2066e3(0x1da)],'content':_0x359dd2['content'],..._0x359dd2['tool_calls']?{'tool_calls':_0x359dd2[_0x2066e3(0x274)][_0x2066e3(0x280)]}:{},..._0x359dd2[_0x2066e3(0x269)]?{'tool_call_id':_0x359dd2[_0x2066e3(0x269)]}:{}}))},'source':_0x2066e3(0x239)})['catch'](()=>{});let _0xffd7c8='';if(_0x56667d['terminationReason']===_0x2066e3(0x25a)&&_0x56667d[_0x2066e3(0x1d2)]?.[_0x2066e3(0x2a2)]?.[_0x2066e3(0x1e2)]){const _0x509d1e=_0x56667d['finish'][_0x2066e3(0x2a2)][_0x2066e3(0x1e2)];if(_0x509d1e[_0x2066e3(0x280)]===0x0)return _0xffd7c8=_0x56667d[_0x2066e3(0x1d2)][_0x2066e3(0x263)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x2066e3(0x1a8),'text':_0xffd7c8}]};const _0x354e59=[],_0x17816c=[_0x2066e3(0x251)];for(const _0x41e1b4 of _0x56667d[_0x2066e3(0x1ca)]){if(_0x41e1b4[_0x2066e3(0x1da)]===_0x2066e3(0x1e6)&&Array['isArray'](_0x41e1b4[_0x2066e3(0x274)]))for(const _0x75edb7 of _0x41e1b4[_0x2066e3(0x274)]){try{const _0x4b0b78=_0x75edb7[_0x2066e3(0x1a1)]?.[_0x2066e3(0x208)],_0x1a3b37=JSON[_0x2066e3(0x1a5)](_0x75edb7['function']?.[_0x2066e3(0x250)]||'{}');if(_0x4b0b78===_0x2066e3(0x1e8))_0x17816c[_0x2066e3(0x1ff)](_0x2066e3(0x279)+_0x1a3b37[_0x2066e3(0x26b)]+_0x2066e3(0x281)+(_0x1a3b37[_0x2066e3(0x1dd)]||'.')+'`');else{if(_0x4b0b78===_0x2066e3(0x297))_0x17816c[_0x2066e3(0x1ff)](_0x2066e3(0x21a)+_0x1a3b37[_0x2066e3(0x1dd)]+'`');else{if(_0x4b0b78===_0x2066e3(0x22a))_0x17816c[_0x2066e3(0x1ff)](_0x2066e3(0x1af)+(_0x1a3b37[_0x2066e3(0x262)]||'.')+'`');else _0x4b0b78===_0x2066e3(0x240)&&_0x17816c[_0x2066e3(0x1ff)]('-\x20Glob\x20search\x20`'+_0x1a3b37[_0x2066e3(0x26b)]+'`\x20in\x20`'+(_0x1a3b37[_0x2066e3(0x1dd)]||'.')+'`');}}}catch{}}}_0x354e59[_0x2066e3(0x1ff)](_0x17816c[_0x2066e3(0x28a)]('\x0a'));const _0x3944b3=['',_0x2066e3(0x1d8)];for(const _0x323da5 of _0x509d1e){if(_0x323da5[_0x2066e3(0x1f5)]==='*')_0x3944b3[_0x2066e3(0x1ff)]('-\x20'+_0x323da5['path']+':*');else{if(Array[_0x2066e3(0x270)](_0x323da5[_0x2066e3(0x1f5)])){const _0x2a1173=_0x323da5[_0x2066e3(0x1f5)][_0x2066e3(0x24c)](([_0x5289cf,_0x5f59cf])=>{if(_0x5289cf===_0x5f59cf)return''+_0x5289cf;return _0x5289cf+'-'+_0x5f59cf;});_0x3944b3[_0x2066e3(0x1ff)]('-\x20'+_0x323da5[_0x2066e3(0x1dd)]+':'+_0x2a1173[_0x2066e3(0x28a)](','));}else _0x3944b3['push']('-\x20'+_0x323da5['path']+':*');}}_0x3944b3[_0x2066e3(0x1ff)](''),_0x354e59['push'](_0x3944b3[_0x2066e3(0x28a)]('\x0a')),_0x354e59[_0x2066e3(0x1ff)](_0x2066e3(0x220));const _0x401eb4=[],_0x1730ac=[];for(const _0x25f0d1 of _0x509d1e){let _0x43a3f8=a0_0x11fbeb[_0x2066e3(0x1c3)](_0x3018e7['data']['repo_path'],_0x25f0d1[_0x2066e3(0x1dd)]),_0x559750=null,_0x2cf284=null;try{_0x559750=await a0_0x49b6f5[_0x2066e3(0x290)](_0x43a3f8,{'encoding':_0x2066e3(0x1ac)});}catch(_0x3c354c){const _0x5ae589=fixPathRepetition(_0x43a3f8);if(_0x5ae589)try{_0x559750=await a0_0x49b6f5[_0x2066e3(0x290)](_0x5ae589,{'encoding':_0x2066e3(0x1ac)}),_0x43a3f8=_0x5ae589;}catch{_0x2cf284=_0x3c354c instanceof Error?_0x3c354c:new Error(String(_0x3c354c));}else _0x2cf284=_0x3c354c instanceof Error?_0x3c354c:new Error(String(_0x3c354c));}if(_0x559750!==null){const _0x2cb78a=_0x559750[_0x2066e3(0x226)](/\r?\n/),_0x5a65f8=[];if(_0x25f0d1[_0x2066e3(0x1f5)]==='*'||!Array[_0x2066e3(0x270)](_0x25f0d1['lines']))for(let _0x19aa35=0x1;_0x19aa35<=_0x2cb78a[_0x2066e3(0x280)];_0x19aa35++){const _0xc978ba=_0x2cb78a[_0x19aa35-0x1];_0x5a65f8['push'](_0x19aa35+'|\x20'+_0xc978ba);}else for(const [_0x59b7a7,_0x2c947b]of _0x25f0d1['lines']){_0x5a65f8[_0x2066e3(0x280)]>0x0&&_0x5a65f8[_0x2066e3(0x1ff)]('');for(let _0x1c2536=_0x59b7a7;_0x1c2536<=_0x2c947b&&_0x1c2536<=_0x2cb78a[_0x2066e3(0x280)];_0x1c2536++){const _0x4d0179=_0x2cb78a[_0x1c2536-0x1];_0x5a65f8[_0x2066e3(0x1ff)](_0x1c2536+'|\x20'+_0x4d0179);}}_0x1730ac['push']({'path':_0x25f0d1[_0x2066e3(0x1dd)],'content':_0x5a65f8[_0x2066e3(0x28a)]('\x0a')});}else _0x401eb4[_0x2066e3(0x1ff)](_0x2066e3(0x29f)+_0x25f0d1[_0x2066e3(0x1dd)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x2cf284?.[_0x2066e3(0x1d3)]||_0x2066e3(0x198))+'\x0a</file>');}try{const _0x106486=await compactFileContexts(_0x1730ac,_0x3018e7['data'][_0x2066e3(0x27e)],MORPH_API_KEY,MORPH_API_URL);for(const _0x59dcd5 of _0x106486){_0x401eb4[_0x2066e3(0x1ff)](_0x2066e3(0x29f)+_0x59dcd5[_0x2066e3(0x1dd)]+_0x2066e3(0x1f1)+_0x59dcd5[_0x2066e3(0x27b)]+_0x2066e3(0x1ae));}}catch(_0x2e1350){console[_0x2066e3(0x22b)]('[codebase_search]\x20compaction\x20failed',_0x2e1350);for(const _0x256718 of _0x1730ac){_0x401eb4['push'](_0x2066e3(0x29f)+_0x256718['path']+_0x2066e3(0x1f1)+_0x256718[_0x2066e3(0x27b)]+_0x2066e3(0x1ae));}}_0x354e59[_0x2066e3(0x1ff)](_0x401eb4[_0x2066e3(0x28a)]('\x0a\x0a')),_0xffd7c8=_0x354e59[_0x2066e3(0x28a)]('\x0a');const _0x3d9d70=_0x56667d[_0x2066e3(0x1c4)]?.[_0x2066e3(0x259)](_0x1b08d8=>_0x1b08d8[_0x2066e3(0x1d3)]?.[_0x2066e3(0x246)](_0x2066e3(0x1cc)))||[];if(_0x3d9d70[_0x2066e3(0x280)]>0x0){const _0x3d0cc3=_0x3d9d70[_0x2066e3(0x24c)](_0x4815fc=>_0x4815fc[_0x2066e3(0x1d3)])['join'](';\x20');reportMorphError({'error_message':_0x3d0cc3,'error_type':_0x2066e3(0x197),'context':{'tool':_0x2066e3(0x275),'repo_path':_0x3018e7[_0x2066e3(0x299)][_0x2066e3(0x1d1)],'query':_0x3018e7['data'][_0x2066e3(0x27e)],'model':_0x2066e3(0x1fa),'termination_reason':'completed_with_file_errors','error_count':_0x3d9d70[_0x2066e3(0x280)],'is_timeout':![],'timings':_0x56667d[_0x2066e3(0x1b6)],'files_attempted':_0x509d1e[_0x2066e3(0x24c)](_0x375548=>({'path':_0x375548[_0x2066e3(0x1dd)],'lines':_0x375548[_0x2066e3(0x1f5)]})),'tool_calls':_0x4e0457(_0x56667d[_0x2066e3(0x1ca)]),'messages':_0x56667d[_0x2066e3(0x1ca)]?.[_0x2066e3(0x24c)](_0x58509f=>({'role':_0x58509f[_0x2066e3(0x1da)],'content':_0x58509f['content'],..._0x58509f[_0x2066e3(0x274)]?{'tool_calls':_0x58509f[_0x2066e3(0x274)][_0x2066e3(0x280)]}:{},..._0x58509f[_0x2066e3(0x269)]?{'tool_call_id':_0x58509f[_0x2066e3(0x269)]}:{}})),'request_content':{'query':_0x3018e7[_0x2066e3(0x299)]['search_string'],'repo_path':_0x3018e7[_0x2066e3(0x299)][_0x2066e3(0x1d1)],'repoRoot':a0_0x11fbeb[_0x2066e3(0x1c3)](_0x3018e7[_0x2066e3(0x299)]['repo_path']),'model':'morph-warp-grep-v2.1'}},'source':_0x2066e3(0x239)})[_0x2066e3(0x1b7)](()=>{});}}else{if(_0x56667d['terminationReason']===_0x2066e3(0x1c8)&&_0x56667d['errors'][_0x2066e3(0x280)]>0x0){const _0x57d5e3=_0x56667d[_0x2066e3(0x1c4)]['map'](_0xf48d87=>_0xf48d87[_0x2066e3(0x1d3)])[_0x2066e3(0x28a)](';\x20');_0xffd7c8=_0x2066e3(0x1c1)+_0x57d5e3;const _0x20b53d=_0x57d5e3[_0x2066e3(0x264)]()['includes']('timeout')||_0x57d5e3[_0x2066e3(0x264)]()['includes'](_0x2066e3(0x22d))||_0x57d5e3[_0x2066e3(0x264)]()[_0x2066e3(0x1f8)](_0x2066e3(0x201)),_0x52560c=_0x56667d[_0x2066e3(0x1d2)]?.[_0x2066e3(0x2a2)]?.['files'],_0x2dc15b=_0x56667d[_0x2066e3(0x1c4)][0x0];reportMorphError({'error_message':_0x57d5e3,'error_type':_0x20b53d?_0x2066e3(0x23a):_0x2dc15b?.[_0x2066e3(0x278)]?.['name']||_0x2066e3(0x26c),'context':{'tool':_0x2066e3(0x275),'repo_path':_0x3018e7[_0x2066e3(0x299)][_0x2066e3(0x1d1)],'query':_0x3018e7['data'][_0x2066e3(0x27e)],'model':_0x2066e3(0x1fa),'termination_reason':_0x56667d['terminationReason'],'error_count':_0x56667d[_0x2066e3(0x1c4)][_0x2066e3(0x280)],'is_timeout':_0x20b53d,'timings':_0x56667d[_0x2066e3(0x1b6)],'files_attempted':_0x52560c?.[_0x2066e3(0x24c)](_0x2fcc87=>({'path':_0x2fcc87[_0x2066e3(0x1dd)],'lines':_0x2fcc87[_0x2066e3(0x1f5)]})),'tool_calls':_0x4e0457(_0x56667d[_0x2066e3(0x1ca)]),'messages':_0x56667d[_0x2066e3(0x1ca)]?.[_0x2066e3(0x24c)](_0x8c8afa=>({'role':_0x8c8afa[_0x2066e3(0x1da)],'content':_0x8c8afa[_0x2066e3(0x27b)],..._0x8c8afa[_0x2066e3(0x274)]?{'tool_calls':_0x8c8afa[_0x2066e3(0x274)][_0x2066e3(0x280)]}:{},..._0x8c8afa[_0x2066e3(0x269)]?{'tool_call_id':_0x8c8afa[_0x2066e3(0x269)]}:{}})),'request_content':{'query':_0x3018e7[_0x2066e3(0x299)][_0x2066e3(0x27e)],'repo_path':_0x3018e7[_0x2066e3(0x299)][_0x2066e3(0x1d1)],'repoRoot':a0_0x11fbeb[_0x2066e3(0x1c3)](_0x3018e7[_0x2066e3(0x299)][_0x2066e3(0x1d1)]),'model':_0x2066e3(0x1fa)}},'stack_trace':_0x2dc15b?.[_0x2066e3(0x24d)]||undefined,'source':_0x2066e3(0x239)})[_0x2066e3(0x1b7)](()=>{});}else _0xffd7c8=_0x2066e3(0x252);}return{'content':[{'type':'text','text':_0xffd7c8}]};}catch(_0x268047){const _0x49e50d=handleMorphAPIError(_0x268047);if(_0x49e50d)return _0x49e50d;const _0x3a1637=_0x268047 instanceof Error?_0x268047[_0x2066e3(0x1d3)]:String(_0x268047),_0x962b25=_0x3a1637['toLowerCase']()[_0x2066e3(0x1f8)](_0x2066e3(0x26f))||_0x3a1637[_0x2066e3(0x264)]()[_0x2066e3(0x1f8)](_0x2066e3(0x22d))||_0x3a1637[_0x2066e3(0x264)]()[_0x2066e3(0x1f8)]('etimedout')||_0x268047 instanceof Error&&_0x268047[_0x2066e3(0x208)]===_0x2066e3(0x23a);return reportMorphError({'error_message':_0x3a1637,'error_type':_0x962b25?_0x2066e3(0x23a):_0x268047 instanceof Error?_0x268047[_0x2066e3(0x278)][_0x2066e3(0x208)]:_0x2066e3(0x1be),'context':{'tool':_0x2066e3(0x275),'repo_path':_0x3018e7['data'][_0x2066e3(0x1d1)],'query':_0x3018e7[_0x2066e3(0x299)][_0x2066e3(0x27e)],'model':_0x2066e3(0x1fa),'is_timeout':_0x962b25,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x3018e7[_0x2066e3(0x299)]['search_string'],'repo_path':_0x3018e7[_0x2066e3(0x299)][_0x2066e3(0x1d1)],'repoRoot':a0_0x11fbeb[_0x2066e3(0x1c3)](_0x3018e7['data']['repo_path']),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x268047 instanceof Error?_0x268047[_0x2066e3(0x24d)]:undefined,'source':_0x2066e3(0x239)})[_0x2066e3(0x1b7)](()=>{}),{'content':[{'type':_0x2066e3(0x1a8),'text':_0x2066e3(0x21e)+_0x3a1637}],'isError':![]};}}case _0x2066e3(0x1aa):{const _0x16916c=WarpGrepGitHubArgsSchema['safeParse'](_0x36826a);if(!_0x16916c[_0x2066e3(0x1c9)])return{'content':[{'type':'text','text':_0x2066e3(0x22c)+_0x16916c[_0x2066e3(0x22b)]}],'isError':!![]};const _0xe49ddf=_0x16916c[_0x2066e3(0x299)][_0x2066e3(0x298)]||_0x16916c['data'][_0x2066e3(0x249)];if(!_0xe49ddf)return{'content':[{'type':'text','text':_0x2066e3(0x287)}],'isError':!![]};const _0x4da59d=MORPH_API_KEY;if(!_0x4da59d)throw new Error(_0x2066e3(0x260));const _0x44d0e3=Date[_0x2066e3(0x1e3)]();logMcpStderr(_0x2066e3(0x203)+_0xe49ddf+_0x2066e3(0x2a0)+_0x16916c['data']['search_string']+'\x22');try{const _0x1b53e2=new WarpGrepClient({'morphApiKey':_0x4da59d,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x4ae7e8=await _0x1b53e2[_0x2066e3(0x29b)]({'searchTerm':_0x16916c[_0x2066e3(0x299)][_0x2066e3(0x27e)],'github':_0xe49ddf,'branch':_0x16916c['data']['branch']}),_0x244d3e=Date['now']()-_0x44d0e3;logMcpStderr(_0x2066e3(0x27c)+_0x244d3e+'ms.\x20Success:\x20'+_0x4ae7e8[_0x2066e3(0x1c9)]);const _0x25fb4c=formatResult(_0x4ae7e8);return{'content':[{'type':'text','text':_0x25fb4c}]};}catch(_0x3d005b){const _0x3f6a69=handleMorphAPIError(_0x3d005b);if(_0x3f6a69)return _0x3f6a69;const _0x3df6ca=Date[_0x2066e3(0x1e3)]()-_0x44d0e3,_0x16a6eb=_0x3d005b instanceof Error?_0x3d005b[_0x2066e3(0x1d3)]:String(_0x3d005b);return logMcpStderr(_0x2066e3(0x29e)+_0x3df6ca+_0x2066e3(0x29c),_0x16a6eb),reportMorphError({'error_message':_0x16a6eb,'error_type':_0x3d005b instanceof Error?_0x3d005b[_0x2066e3(0x278)][_0x2066e3(0x208)]:_0x2066e3(0x1be),'context':{'tool':'github_codebase_search','github_url':_0xe49ddf,'search_string':_0x16916c[_0x2066e3(0x299)]['search_string'],'branch':_0x16916c[_0x2066e3(0x299)][_0x2066e3(0x27f)]},'stack_trace':_0x3d005b instanceof Error?_0x3d005b[_0x2066e3(0x24d)]:undefined,'source':_0x2066e3(0x239),'tool':_0x2066e3(0x1aa),'latency_ms':_0x3df6ca})[_0x2066e3(0x1b7)](()=>{}),{'content':[{'type':_0x2066e3(0x1a8),'text':_0x2066e3(0x23b)+_0x16a6eb}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x1a7f10);}}catch(_0x45c974){const _0x4cae71=_0x45c974 instanceof Error?_0x45c974[_0x2066e3(0x1d3)]:String(_0x45c974);return reportMorphError({'error_message':_0x4cae71,'error_type':_0x45c974 instanceof Error?_0x45c974[_0x2066e3(0x278)]['name']:_0x2066e3(0x1be),'context':{'tool':_0x1a7f10,'arguments':_0x36826a?JSON[_0x2066e3(0x230)](_0x36826a)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x2066e3(0x23f)},'stack_trace':_0x45c974 instanceof Error?_0x45c974[_0x2066e3(0x24d)]:undefined,'source':_0x2066e3(0x239)})[_0x2066e3(0x1b7)](()=>{}),{'content':[{'type':_0x2066e3(0x1a8),'text':'Error:\x20'+_0x4cae71}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x32aad6){const _0x4745f3=a0_0x10d739,_0x42379b=await getValidRootDirectories(_0x32aad6);if(_0x42379b[_0x4745f3(0x280)]>0x0)allowedDirectories=[..._0x42379b],logMcpStderr(_0x4745f3(0x258)+_0x42379b[_0x4745f3(0x280)]+_0x4745f3(0x23c));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x156d58=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x156d58&&(allowedDirectories=[_0x156d58],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x156d58));}catch(_0x2a9dec){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x2a9dec);}}}server[a0_0x10d739(0x19e)](RootsListChangedNotificationSchema,async()=>{const _0xec168a=a0_0x10d739;try{const _0x30d074=await server[_0xec168a(0x219)]();_0x30d074&&_0xec168a(0x272)in _0x30d074&&await updateAllowedDirectoriesFromRoots(_0x30d074[_0xec168a(0x272)]);}catch(_0x5480bd){logMcpStderr(_0xec168a(0x1eb),_0x5480bd instanceof Error?_0x5480bd[_0xec168a(0x1d3)]:String(_0x5480bd));}}),server[a0_0x10d739(0x248)]=async()=>{const _0x380edc=a0_0x10d739,_0x50cc38=server[_0x380edc(0x271)]();if(_0x50cc38?.[_0x380edc(0x272)])try{const _0xdc152e=await server[_0x380edc(0x219)]();_0xdc152e&&_0x380edc(0x272)in _0xdc152e?await updateAllowedDirectoriesFromRoots(_0xdc152e[_0x380edc(0x272)]):logMcpStderr(_0x380edc(0x1de));}catch(_0x3a2c5f){logMcpStderr(_0x380edc(0x291),_0x3a2c5f instanceof Error?_0x3a2c5f[_0x380edc(0x1d3)]:String(_0x3a2c5f));}else{if(allowedDirectories[_0x380edc(0x280)]>0x0)logMcpStderr(_0x380edc(0x1e0),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x380edc(0x1ab));else throw new Error(_0x380edc(0x28d));}}};async function runServer(){const _0x275d12=a0_0x10d739,_0x604a1b=new StdioServerTransport();await server[_0x275d12(0x233)](_0x604a1b),logMcpStderr(_0x275d12(0x1ea)),allowedDirectories['length']===0x0&&logMcpStderr(_0x275d12(0x23d));}runServer()['catch'](_0x17db16=>{const _0x21acca=a0_0x10d739;logMcpStderr(_0x21acca(0x294),_0x17db16),process[_0x21acca(0x1ef)](0x1);});
package/dist/log-utils.js CHANGED
@@ -1 +1 @@
1
- var a1_0x155fbd=a1_0x1c82;function a1_0x1c82(_0x333bed,_0xea02f2){_0x333bed=_0x333bed-0x1a6;var _0x3d1c0d=a1_0x3d1c();var _0x1c8255=_0x3d1c0d[_0x333bed];return _0x1c8255;}(function(_0x13504f,_0x2e007b){var _0x1816d2=a1_0x1c82,_0x48d18c=_0x13504f();while(!![]){try{var _0x5f2f91=-parseInt(_0x1816d2(0x1a9))/0x1*(-parseInt(_0x1816d2(0x1b4))/0x2)+parseInt(_0x1816d2(0x1aa))/0x3*(parseInt(_0x1816d2(0x1b5))/0x4)+parseInt(_0x1816d2(0x1b6))/0x5+parseInt(_0x1816d2(0x1b2))/0x6+-parseInt(_0x1816d2(0x1a6))/0x7*(parseInt(_0x1816d2(0x1a8))/0x8)+parseInt(_0x1816d2(0x1b1))/0x9*(parseInt(_0x1816d2(0x1ae))/0xa)+-parseInt(_0x1816d2(0x1a7))/0xb*(parseInt(_0x1816d2(0x1ac))/0xc);if(_0x5f2f91===_0x2e007b)break;else _0x48d18c['push'](_0x48d18c['shift']());}catch(_0x435043){_0x48d18c['push'](_0x48d18c['shift']());}}}(a1_0x3d1c,0x6e698));import a1_0xb616ea from'os';function a1_0x3d1c(){var _0x1d668d=['Windows','Linux','21539MGkBGH','2288ObOItl','1136JKdEif','587UjDBzL','822939wYVPev','darwin','88008dPXEvH','Unknown','8810yQHbJw','win32','platform','189cLikDH','3660684QYOSUH','macOS','602SQxVzW','12shKxtF','3932065WFJDar'];a1_0x3d1c=function(){return _0x1d668d;};return a1_0x3d1c();}export function getOperatingSystemType(_0xb4323c=a1_0xb616ea['platform']()){var _0x5520d0=a1_0x1c82;switch(_0xb4323c){case _0x5520d0(0x1ab):return _0x5520d0(0x1b3);case _0x5520d0(0x1af):return _0x5520d0(0x1b7);case'linux':return _0x5520d0(0x1b8);default:return _0x5520d0(0x1ad);}}export function formatMcpLogMessage(_0x3052a6,_0x4be12c=a1_0xb616ea[a1_0x155fbd(0x1b0)]()){return'[os='+getOperatingSystemType(_0x4be12c)+']\x20'+_0x3052a6;}export function logMcpStderr(_0x29be5e,..._0x6d5a40){console['error'](formatMcpLogMessage(_0x29be5e),..._0x6d5a40);}
1
+ function a1_0x56fe(){var _0x40577a=['win32','10080kZEafV','Unknown','linux','938934NXrMkT','[os=','6616137aQhQOF','8788LkbONz','Linux','platform','1338jHlNcl','darwin','60OtymZs','4614XuzVla','10SIEHsR','Windows','1069752ieyhys','259860TRWAhx','7032695fmHfmt'];a1_0x56fe=function(){return _0x40577a;};return a1_0x56fe();}function a1_0x2e06(_0x1da249,_0x5a1e89){_0x1da249=_0x1da249-0xa4;var _0x56fece=a1_0x56fe();var _0x2e06f6=_0x56fece[_0x1da249];return _0x2e06f6;}var a1_0x3573c1=a1_0x2e06;(function(_0x193fe9,_0x5b4d50){var _0x31809e=a1_0x2e06,_0x2486d1=_0x193fe9();while(!![]){try{var _0x4cbb3f=parseInt(_0x31809e(0xa8))/0x1*(-parseInt(_0x31809e(0xab))/0x2)+parseInt(_0x31809e(0xa4))/0x3*(parseInt(_0x31809e(0xb4))/0x4)+parseInt(_0x31809e(0xac))/0x5+-parseInt(_0x31809e(0xa7))/0x6*(-parseInt(_0x31809e(0xae))/0x7)+-parseInt(_0x31809e(0xaa))/0x8+parseInt(_0x31809e(0xb1))/0x9*(-parseInt(_0x31809e(0xa6))/0xa)+-parseInt(_0x31809e(0xb3))/0xb;if(_0x4cbb3f===_0x5b4d50)break;else _0x2486d1['push'](_0x2486d1['shift']());}catch(_0x58980b){_0x2486d1['push'](_0x2486d1['shift']());}}}(a1_0x56fe,0xcb727));import a1_0x1e20e6 from'os';export function getOperatingSystemType(_0x36c500=a1_0x1e20e6[a1_0x3573c1(0xb6)]()){var _0x31d2a5=a1_0x3573c1;switch(_0x36c500){case _0x31d2a5(0xa5):return'macOS';case _0x31d2a5(0xad):return _0x31d2a5(0xa9);case _0x31d2a5(0xb0):return _0x31d2a5(0xb5);default:return _0x31d2a5(0xaf);}}export function formatMcpLogMessage(_0x27d6f5,_0x5a9e29=a1_0x1e20e6[a1_0x3573c1(0xb6)]()){var _0x35b208=a1_0x3573c1;return _0x35b208(0xb2)+getOperatingSystemType(_0x5a9e29)+']\x20'+_0x27d6f5;}export function logMcpStderr(_0xe86e11,..._0x3b8475){console['error'](formatMcpLogMessage(_0xe86e11),..._0x3b8475);}
@@ -1 +1 @@
1
- function a2_0x23d3(){const _0x359a55=['join','trim','8391195MOgNyQ','4508424FdjIkv','925466yrzkNX','startsWith','241083GaDToC','charAt','/mnt/','replace','homedir','6ktsyET','substring','match','6EeKTRI','normalize','1184386XyvePo','slice','441930hFhOFD','722176KyVXin','toUpperCase'];a2_0x23d3=function(){return _0x359a55;};return a2_0x23d3();}(function(_0x5d885e,_0x10e45c){const _0x206b14=a2_0x5a34,_0x2e4b1e=_0x5d885e();while(!![]){try{const _0x29ab70=-parseInt(_0x206b14(0x1e7))/0x1+-parseInt(_0x206b14(0x1e5))/0x2+parseInt(_0x206b14(0x1ec))/0x3*(parseInt(_0x206b14(0x1df))/0x4)+-parseInt(_0x206b14(0x1f3))/0x5*(-parseInt(_0x206b14(0x1ef))/0x6)+parseInt(_0x206b14(0x1f1))/0x7+-parseInt(_0x206b14(0x1e4))/0x8+parseInt(_0x206b14(0x1e3))/0x9;if(_0x29ab70===_0x10e45c)break;else _0x2e4b1e['push'](_0x2e4b1e['shift']());}catch(_0x5a7837){_0x2e4b1e['push'](_0x2e4b1e['shift']());}}}(a2_0x23d3,0x4540a));import a2_0x3625e2 from'path';import a2_0x4734cd from'os';export function convertToWindowsPath(_0x366f6f){const _0x499dad=a2_0x5a34;if(_0x366f6f[_0x499dad(0x1e6)](_0x499dad(0x1e9))){const _0x2179d1=_0x366f6f[_0x499dad(0x1e8)](0x5)[_0x499dad(0x1e0)](),_0x6c84d=_0x366f6f['slice'](0x6)['replace'](/\//g,'\x5c');return _0x2179d1+':'+_0x6c84d;}if(_0x366f6f[_0x499dad(0x1ee)](/^\/[a-zA-Z]\//)){const _0x2d821a=_0x366f6f['charAt'](0x1)[_0x499dad(0x1e0)](),_0x1a1e94=_0x366f6f[_0x499dad(0x1f2)](0x2)[_0x499dad(0x1ea)](/\//g,'\x5c');return _0x2d821a+':'+_0x1a1e94;}if(_0x366f6f[_0x499dad(0x1ee)](/^[a-zA-Z]:/))return _0x366f6f[_0x499dad(0x1ea)](/\//g,'\x5c');return _0x366f6f;}function a2_0x5a34(_0x3a002d,_0x46c659){_0x3a002d=_0x3a002d-0x1df;const _0x23d37e=a2_0x23d3();let _0x5a34c0=_0x23d37e[_0x3a002d];return _0x5a34c0;}export function normalizePath(_0x5e50d1){const _0x14262f=a2_0x5a34;_0x5e50d1=_0x5e50d1[_0x14262f(0x1e2)]()['replace'](/^["']|["']$/g,'');const _0x1fa642=_0x5e50d1[_0x14262f(0x1e6)]('/')&&!_0x5e50d1[_0x14262f(0x1ee)](/^\/mnt\/[a-z]\//i)&&!_0x5e50d1['match'](/^\/[a-zA-Z]\//);if(_0x1fa642)return _0x5e50d1[_0x14262f(0x1ea)](/\/+/g,'/')[_0x14262f(0x1ea)](/\/+$/,'');_0x5e50d1=convertToWindowsPath(_0x5e50d1);if(_0x5e50d1['startsWith']('\x5c\x5c')){let _0x6ee45f=_0x5e50d1;_0x6ee45f=_0x6ee45f[_0x14262f(0x1ea)](/^\\{2,}/,'\x5c\x5c');const _0x583fa4=_0x6ee45f[_0x14262f(0x1ed)](0x2)[_0x14262f(0x1ea)](/\\\\/g,'\x5c');_0x5e50d1='\x5c\x5c'+_0x583fa4;}else _0x5e50d1=_0x5e50d1[_0x14262f(0x1ea)](/\\\\/g,'\x5c');let _0x1e4120=a2_0x3625e2[_0x14262f(0x1f0)](_0x5e50d1);_0x5e50d1['startsWith']('\x5c\x5c')&&!_0x1e4120['startsWith']('\x5c\x5c')&&(_0x1e4120='\x5c'+_0x1e4120);if(_0x1e4120[_0x14262f(0x1ee)](/^[a-zA-Z]:/)){let _0x4da860=_0x1e4120[_0x14262f(0x1ea)](/\//g,'\x5c');return/^[a-z]:/['test'](_0x4da860)&&(_0x4da860=_0x4da860[_0x14262f(0x1e8)](0x0)[_0x14262f(0x1e0)]()+_0x4da860[_0x14262f(0x1f2)](0x1)),_0x4da860;}return _0x1e4120['replace'](/\//g,'\x5c');}export function expandHome(_0x551885){const _0x922373=a2_0x5a34;if(_0x551885['startsWith']('~/')||_0x551885==='~')return a2_0x3625e2[_0x922373(0x1e1)](a2_0x4734cd[_0x922373(0x1eb)](),_0x551885['slice'](0x1));return _0x551885;}
1
+ (function(_0x60f885,_0x5d410c){const _0x5df8b6=a2_0xc41c,_0x48548a=_0x60f885();while(!![]){try{const _0x2fb422=parseInt(_0x5df8b6(0x125))/0x1*(-parseInt(_0x5df8b6(0x121))/0x2)+parseInt(_0x5df8b6(0x116))/0x3+-parseInt(_0x5df8b6(0x11a))/0x4*(-parseInt(_0x5df8b6(0x119))/0x5)+-parseInt(_0x5df8b6(0x129))/0x6+-parseInt(_0x5df8b6(0x124))/0x7*(-parseInt(_0x5df8b6(0x11f))/0x8)+-parseInt(_0x5df8b6(0x11e))/0x9+parseInt(_0x5df8b6(0x11b))/0xa;if(_0x2fb422===_0x5d410c)break;else _0x48548a['push'](_0x48548a['shift']());}catch(_0x478324){_0x48548a['push'](_0x48548a['shift']());}}}(a2_0x22b2,0xc4dc1));function a2_0x22b2(){const _0x15b2b7=['1505355JxRyBJ','normalize','charAt','9210VJfHVP','2564xgdvaf','10193970qELvxI','match','/mnt/','5095422kmEhBD','48ltOxrK','join','10MEsBIb','homedir','toUpperCase','360458ISmywy','16967UORIkp','slice','trim','substring','9321228hSkZug','replace','startsWith'];a2_0x22b2=function(){return _0x15b2b7;};return a2_0x22b2();}import a2_0x16d211 from'path';import a2_0x13b61f from'os';export function convertToWindowsPath(_0x399d44){const _0x1c92b1=a2_0xc41c;if(_0x399d44[_0x1c92b1(0x115)](_0x1c92b1(0x11d))){const _0xfe5b28=_0x399d44[_0x1c92b1(0x118)](0x5)[_0x1c92b1(0x123)](),_0x217925=_0x399d44['slice'](0x6)['replace'](/\//g,'\x5c');return _0xfe5b28+':'+_0x217925;}if(_0x399d44[_0x1c92b1(0x11c)](/^\/[a-zA-Z]\//)){const _0x499f5d=_0x399d44[_0x1c92b1(0x118)](0x1)[_0x1c92b1(0x123)](),_0x2e92bc=_0x399d44[_0x1c92b1(0x126)](0x2)[_0x1c92b1(0x114)](/\//g,'\x5c');return _0x499f5d+':'+_0x2e92bc;}if(_0x399d44[_0x1c92b1(0x11c)](/^[a-zA-Z]:/))return _0x399d44[_0x1c92b1(0x114)](/\//g,'\x5c');return _0x399d44;}function a2_0xc41c(_0x43d12d,_0xd4d1eb){_0x43d12d=_0x43d12d-0x114;const _0x22b286=a2_0x22b2();let _0xc41c44=_0x22b286[_0x43d12d];return _0xc41c44;}export function normalizePath(_0x4958d3){const _0x5cc727=a2_0xc41c;_0x4958d3=_0x4958d3[_0x5cc727(0x127)]()[_0x5cc727(0x114)](/^["']|["']$/g,'');const _0xe757b0=_0x4958d3[_0x5cc727(0x115)]('/')&&!_0x4958d3[_0x5cc727(0x11c)](/^\/mnt\/[a-z]\//i)&&!_0x4958d3[_0x5cc727(0x11c)](/^\/[a-zA-Z]\//);if(_0xe757b0)return _0x4958d3[_0x5cc727(0x114)](/\/+/g,'/')['replace'](/\/+$/,'');_0x4958d3=convertToWindowsPath(_0x4958d3);if(_0x4958d3[_0x5cc727(0x115)]('\x5c\x5c')){let _0x12175e=_0x4958d3;_0x12175e=_0x12175e[_0x5cc727(0x114)](/^\\{2,}/,'\x5c\x5c');const _0x5622ab=_0x12175e[_0x5cc727(0x128)](0x2)[_0x5cc727(0x114)](/\\\\/g,'\x5c');_0x4958d3='\x5c\x5c'+_0x5622ab;}else _0x4958d3=_0x4958d3[_0x5cc727(0x114)](/\\\\/g,'\x5c');let _0xe06dd2=a2_0x16d211[_0x5cc727(0x117)](_0x4958d3);_0x4958d3[_0x5cc727(0x115)]('\x5c\x5c')&&!_0xe06dd2[_0x5cc727(0x115)]('\x5c\x5c')&&(_0xe06dd2='\x5c'+_0xe06dd2);if(_0xe06dd2[_0x5cc727(0x11c)](/^[a-zA-Z]:/)){let _0x5b1137=_0xe06dd2[_0x5cc727(0x114)](/\//g,'\x5c');return/^[a-z]:/['test'](_0x5b1137)&&(_0x5b1137=_0x5b1137[_0x5cc727(0x118)](0x0)[_0x5cc727(0x123)]()+_0x5b1137[_0x5cc727(0x126)](0x1)),_0x5b1137;}return _0xe06dd2[_0x5cc727(0x114)](/\//g,'\x5c');}export function expandHome(_0x68ddb6){const _0x36592a=a2_0xc41c;if(_0x68ddb6[_0x36592a(0x115)]('~/')||_0x68ddb6==='~')return a2_0x16d211[_0x36592a(0x120)](a2_0x13b61f[_0x36592a(0x122)](),_0x68ddb6[_0x36592a(0x126)](0x1));return _0x68ddb6;}
@@ -1 +1 @@
1
- function a3_0x5832(){const _0x2f2278=['length','Path\x20must\x20be\x20absolute\x20after\x20normalization','352210omBidL','isArray','string','30YIwwTz','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','normalize','isAbsolute','3439840kqxujT','690278ZDVoKS','4dPpJKT','resolve','includes','startsWith','some','3cQpEuQ','1668870GhPHJH','14866140RVgjqq','93842ZQoGjj','sep','460285DuGdPU'];a3_0x5832=function(){return _0x2f2278;};return a3_0x5832();}function a3_0x45c6(_0x392540,_0x4c7dc3){_0x392540=_0x392540-0xd3;const _0x5832ef=a3_0x5832();let _0x45c61c=_0x5832ef[_0x392540];return _0x45c61c;}(function(_0x267a46,_0x53a5fa){const _0x47f6d8=a3_0x45c6,_0x16bbd2=_0x267a46();while(!![]){try{const _0x394e9f=-parseInt(_0x47f6d8(0xd7))/0x1+parseInt(_0x47f6d8(0xe0))/0x2*(parseInt(_0x47f6d8(0xdd))/0x3)+-parseInt(_0x47f6d8(0xd8))/0x4*(parseInt(_0x47f6d8(0xe5))/0x5)+-parseInt(_0x47f6d8(0xe8))/0x6*(-parseInt(_0x47f6d8(0xe2))/0x7)+-parseInt(_0x47f6d8(0xd6))/0x8+-parseInt(_0x47f6d8(0xde))/0x9+parseInt(_0x47f6d8(0xdf))/0xa;if(_0x394e9f===_0x53a5fa)break;else _0x16bbd2['push'](_0x16bbd2['shift']());}catch(_0x4eab23){_0x16bbd2['push'](_0x16bbd2['shift']());}}}(a3_0x5832,0x76b24));import a3_0x2c02f9 from'path';export function isPathWithinAllowedDirectories(_0x428479,_0x4ca59d){const _0x5aa6a6=a3_0x45c6;if(typeof _0x428479!==_0x5aa6a6(0xe7)||!Array[_0x5aa6a6(0xe6)](_0x4ca59d))return![];if(!_0x428479||_0x4ca59d[_0x5aa6a6(0xe3)]===0x0)return![];if(_0x428479[_0x5aa6a6(0xda)]('\x00'))return![];let _0xce1b98;try{_0xce1b98=a3_0x2c02f9[_0x5aa6a6(0xd9)](a3_0x2c02f9['normalize'](_0x428479));}catch{return![];}if(!a3_0x2c02f9['isAbsolute'](_0xce1b98))throw new Error(_0x5aa6a6(0xe4));return _0x4ca59d[_0x5aa6a6(0xdc)](_0x445765=>{const _0x123367=_0x5aa6a6;if(typeof _0x445765!==_0x123367(0xe7)||!_0x445765)return![];if(_0x445765[_0x123367(0xda)]('\x00'))return![];let _0xe72f50;try{_0xe72f50=a3_0x2c02f9[_0x123367(0xd9)](a3_0x2c02f9[_0x123367(0xd4)](_0x445765));}catch{return![];}if(!a3_0x2c02f9[_0x123367(0xd5)](_0xe72f50))throw new Error(_0x123367(0xd3));if(_0xce1b98===_0xe72f50)return!![];if(_0xe72f50===a3_0x2c02f9[_0x123367(0xe1)])return _0xce1b98[_0x123367(0xdb)](a3_0x2c02f9[_0x123367(0xe1)]);return _0xce1b98[_0x123367(0xdb)](_0xe72f50+a3_0x2c02f9[_0x123367(0xe1)]);});}
1
+ (function(_0x5e712d,_0x5ac9a0){const _0x1a6457=a3_0x44bc,_0x363727=_0x5e712d();while(!![]){try{const _0x360acf=parseInt(_0x1a6457(0x147))/0x1*(-parseInt(_0x1a6457(0x146))/0x2)+parseInt(_0x1a6457(0x13e))/0x3+parseInt(_0x1a6457(0x14c))/0x4*(parseInt(_0x1a6457(0x14a))/0x5)+parseInt(_0x1a6457(0x153))/0x6*(-parseInt(_0x1a6457(0x145))/0x7)+-parseInt(_0x1a6457(0x14b))/0x8*(parseInt(_0x1a6457(0x151))/0x9)+-parseInt(_0x1a6457(0x141))/0xa+parseInt(_0x1a6457(0x13f))/0xb;if(_0x360acf===_0x5ac9a0)break;else _0x363727['push'](_0x363727['shift']());}catch(_0x1e16ad){_0x363727['push'](_0x363727['shift']());}}}(a3_0x1123,0xe3d8d));import a3_0x57a1fc from'path';function a3_0x1123(){const _0x4eb09c=['231831HmBoDw','11353056ENeFBL','includes','16171020Xaiugr','resolve','startsWith','sep','150843nBMyEs','1442vIVqUP','61uTCcvY','some','Path\x20must\x20be\x20absolute\x20after\x20normalization','700490JneNUS','535288qbttqA','48DvJAJK','normalize','length','isAbsolute','string','9Qmicix','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','36MqLTrz'];a3_0x1123=function(){return _0x4eb09c;};return a3_0x1123();}function a3_0x44bc(_0x4c25ee,_0x5ee88f){_0x4c25ee=_0x4c25ee-0x13e;const _0x112349=a3_0x1123();let _0x44bc1b=_0x112349[_0x4c25ee];return _0x44bc1b;}export function isPathWithinAllowedDirectories(_0x77f4e6,_0x209a6e){const _0x276271=a3_0x44bc;if(typeof _0x77f4e6!==_0x276271(0x150)||!Array['isArray'](_0x209a6e))return![];if(!_0x77f4e6||_0x209a6e[_0x276271(0x14e)]===0x0)return![];if(_0x77f4e6[_0x276271(0x140)]('\x00'))return![];let _0x37e9c6;try{_0x37e9c6=a3_0x57a1fc[_0x276271(0x142)](a3_0x57a1fc[_0x276271(0x14d)](_0x77f4e6));}catch{return![];}if(!a3_0x57a1fc[_0x276271(0x14f)](_0x37e9c6))throw new Error(_0x276271(0x149));return _0x209a6e[_0x276271(0x148)](_0xe98f66=>{const _0x5863fd=_0x276271;if(typeof _0xe98f66!==_0x5863fd(0x150)||!_0xe98f66)return![];if(_0xe98f66[_0x5863fd(0x140)]('\x00'))return![];let _0x2350fc;try{_0x2350fc=a3_0x57a1fc[_0x5863fd(0x142)](a3_0x57a1fc[_0x5863fd(0x14d)](_0xe98f66));}catch{return![];}if(!a3_0x57a1fc[_0x5863fd(0x14f)](_0x2350fc))throw new Error(_0x5863fd(0x152));if(_0x37e9c6===_0x2350fc)return!![];if(_0x2350fc===a3_0x57a1fc[_0x5863fd(0x144)])return _0x37e9c6[_0x5863fd(0x143)](a3_0x57a1fc[_0x5863fd(0x144)]);return _0x37e9c6['startsWith'](_0x2350fc+a3_0x57a1fc[_0x5863fd(0x144)]);});}
@@ -1 +1 @@
1
- function a4_0x41dd(){const _0x37acb1=['file://','realpath','9zGijgf','1417256cBoXcI','140992hmtwDq','homedir','515170KFWqWq','startsWith','347600mCGhIu','invalid\x20path\x20or\x20inaccessible','73071RmhGFF','resolve','non-directory\x20root','5POeCcn','push','Skipping\x20','18ZLPNLd','isDirectory','492435fSfocZ','stat','slice','712684NYmcql','message','uri'];a4_0x41dd=function(){return _0x37acb1;};return a4_0x41dd();}(function(_0xa0d7f2,_0x437102){const _0x54499b=a4_0x22b9,_0x4e1ad6=_0xa0d7f2();while(!![]){try{const _0x5ab002=-parseInt(_0x54499b(0xfe))/0x1*(parseInt(_0x54499b(0x10d))/0x2)+parseInt(_0x54499b(0xfb))/0x3+parseInt(_0x54499b(0x10c))/0x4+parseInt(_0x54499b(0x103))/0x5*(parseInt(_0x54499b(0x101))/0x6)+-parseInt(_0x54499b(0x106))/0x7+parseInt(_0x54499b(0xf9))/0x8+parseInt(_0x54499b(0x10b))/0x9*(-parseInt(_0x54499b(0x10f))/0xa);if(_0x5ab002===_0x437102)break;else _0x4e1ad6['push'](_0x4e1ad6['shift']());}catch(_0x15bdf5){_0x4e1ad6['push'](_0x4e1ad6['shift']());}}}(a4_0x41dd,0x33b3d));import{promises as a4_0x3f2423}from'fs';function a4_0x22b9(_0x4bb215,_0x583119){_0x4bb215=_0x4bb215-0xf9;const _0x41dd81=a4_0x41dd();let _0x22b938=_0x41dd81[_0x4bb215];return _0x22b938;}import a4_0x38c6f7 from'path';import a4_0x2080e0 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x16ce43){const _0x5363be=a4_0x22b9;try{const _0x5905cf=_0x16ce43[_0x5363be(0x110)](_0x5363be(0x109))?_0x16ce43['slice'](0x7):_0x16ce43,_0x6fab41=_0x5905cf[_0x5363be(0x110)]('~/')||_0x5905cf==='~'?a4_0x38c6f7['join'](a4_0x2080e0[_0x5363be(0x10e)](),_0x5905cf[_0x5363be(0x105)](0x1)):_0x5905cf,_0x8d669a=a4_0x38c6f7[_0x5363be(0xfc)](_0x6fab41),_0x56cf7f=await a4_0x3f2423[_0x5363be(0x10a)](_0x8d669a);return normalizePath(_0x56cf7f);}catch{return null;}}function formatDirectoryError(_0xbc3118,_0x16e605,_0x4fe58c){const _0x245484=a4_0x22b9;if(_0x4fe58c)return _0x245484(0x100)+_0x4fe58c+':\x20'+_0xbc3118;const _0x2eff80=_0x16e605 instanceof Error?_0x16e605[_0x245484(0x107)]:String(_0x16e605);return'Skipping\x20invalid\x20directory:\x20'+_0xbc3118+'\x20due\x20to\x20error:\x20'+_0x2eff80;}export async function getValidRootDirectories(_0x200b3b){const _0x415f2b=a4_0x22b9,_0x59cd6b=[];for(const _0x148adc of _0x200b3b){const _0x11061d=await parseRootUri(_0x148adc[_0x415f2b(0x108)]);if(!_0x11061d){logMcpStderr(formatDirectoryError(_0x148adc[_0x415f2b(0x108)],undefined,_0x415f2b(0xfa)));continue;}try{const _0x5e8932=await a4_0x3f2423[_0x415f2b(0x104)](_0x11061d);_0x5e8932[_0x415f2b(0x102)]()?_0x59cd6b[_0x415f2b(0xff)](_0x11061d):logMcpStderr(formatDirectoryError(_0x11061d,undefined,_0x415f2b(0xfd)));}catch(_0x1cc542){logMcpStderr(formatDirectoryError(_0x11061d,_0x1cc542));}}return _0x59cd6b;}
1
+ (function(_0x27a42d,_0x1a5417){const _0x42cdb2=a4_0x3005,_0x38cf69=_0x27a42d();while(!![]){try{const _0x40b114=parseInt(_0x42cdb2(0x1ac))/0x1*(-parseInt(_0x42cdb2(0x1af))/0x2)+-parseInt(_0x42cdb2(0x1bf))/0x3+-parseInt(_0x42cdb2(0x1ab))/0x4*(parseInt(_0x42cdb2(0x1c2))/0x5)+parseInt(_0x42cdb2(0x1b2))/0x6+-parseInt(_0x42cdb2(0x1b0))/0x7*(parseInt(_0x42cdb2(0x1bd))/0x8)+parseInt(_0x42cdb2(0x1b6))/0x9+parseInt(_0x42cdb2(0x1b5))/0xa;if(_0x40b114===_0x1a5417)break;else _0x38cf69['push'](_0x38cf69['shift']());}catch(_0x33a8d6){_0x38cf69['push'](_0x38cf69['shift']());}}}(a4_0x204a,0x6e1df));import{promises as a4_0x488c1e}from'fs';import a4_0x3d59fd from'path';function a4_0x3005(_0x143631,_0x373932){_0x143631=_0x143631-0x1aa;const _0x204acc=a4_0x204a();let _0x300529=_0x204acc[_0x143631];return _0x300529;}import a4_0x1be421 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x34f2ce){const _0x45518e=a4_0x3005;try{const _0x5338bb=_0x34f2ce[_0x45518e(0x1aa)](_0x45518e(0x1b4))?_0x34f2ce[_0x45518e(0x1ba)](0x7):_0x34f2ce,_0x291bdb=_0x5338bb[_0x45518e(0x1aa)]('~/')||_0x5338bb==='~'?a4_0x3d59fd[_0x45518e(0x1c1)](a4_0x1be421[_0x45518e(0x1c0)](),_0x5338bb[_0x45518e(0x1ba)](0x1)):_0x5338bb,_0x55193d=a4_0x3d59fd[_0x45518e(0x1ae)](_0x291bdb),_0x7438c6=await a4_0x488c1e[_0x45518e(0x1b9)](_0x55193d);return normalizePath(_0x7438c6);}catch{return null;}}function formatDirectoryError(_0x3a02a0,_0x3ea0cd,_0x485179){const _0x32b80d=a4_0x3005;if(_0x485179)return'Skipping\x20'+_0x485179+':\x20'+_0x3a02a0;const _0x40f294=_0x3ea0cd instanceof Error?_0x3ea0cd[_0x32b80d(0x1b8)]:String(_0x3ea0cd);return _0x32b80d(0x1b1)+_0x3a02a0+_0x32b80d(0x1be)+_0x40f294;}function a4_0x204a(){const _0x1921ab=['resolve','18RblBaC','63WxhAGV','Skipping\x20invalid\x20directory:\x20','2798520IRayGK','uri','file://','10646590iclWTJ','4908429qocOMl','stat','message','realpath','slice','non-directory\x20root','invalid\x20path\x20or\x20inaccessible','272784jbctdZ','\x20due\x20to\x20error:\x20','2588358NZflBX','homedir','join','2249875yRoIyn','startsWith','4hieDLQ','642PXUDOd','push'];a4_0x204a=function(){return _0x1921ab;};return a4_0x204a();}export async function getValidRootDirectories(_0x5cb47f){const _0x2d4326=a4_0x3005,_0x27e28f=[];for(const _0x3ac09e of _0x5cb47f){const _0x49d6a5=await parseRootUri(_0x3ac09e[_0x2d4326(0x1b3)]);if(!_0x49d6a5){logMcpStderr(formatDirectoryError(_0x3ac09e['uri'],undefined,_0x2d4326(0x1bc)));continue;}try{const _0x5a5c6b=await a4_0x488c1e[_0x2d4326(0x1b7)](_0x49d6a5);_0x5a5c6b['isDirectory']()?_0x27e28f[_0x2d4326(0x1ad)](_0x49d6a5):logMcpStderr(formatDirectoryError(_0x49d6a5,undefined,_0x2d4326(0x1bb)));}catch(_0x5ac6b3){logMcpStderr(formatDirectoryError(_0x49d6a5,_0x5ac6b3));}}return _0x27e28f;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.156",
3
+ "version": "0.8.157",
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.159",
38
+ "@morphllm/morphsdk": "0.2.160",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",