@morphllm/morphmcp 0.8.194 → 0.8.195

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_0x56a8fe=a0_0x4e75;(function(_0x59f9e7,_0x435f22){const _0x4e2c9f=a0_0x4e75,_0x52c45c=_0x59f9e7();while(!![]){try{const _0x49d585=parseInt(_0x4e2c9f(0x258))/0x1*(parseInt(_0x4e2c9f(0x1da))/0x2)+parseInt(_0x4e2c9f(0x1e9))/0x3*(-parseInt(_0x4e2c9f(0x1bb))/0x4)+-parseInt(_0x4e2c9f(0x25b))/0x5*(-parseInt(_0x4e2c9f(0x1be))/0x6)+-parseInt(_0x4e2c9f(0x1d5))/0x7+parseInt(_0x4e2c9f(0x16d))/0x8*(-parseInt(_0x4e2c9f(0x19d))/0x9)+-parseInt(_0x4e2c9f(0x262))/0xa+parseInt(_0x4e2c9f(0x161))/0xb*(parseInt(_0x4e2c9f(0x223))/0xc);if(_0x49d585===_0x435f22)break;else _0x52c45c['push'](_0x52c45c['shift']());}catch(_0x45d84f){_0x52c45c['push'](_0x52c45c['shift']());}}}(a0_0x30e6,0x7c4f4));import{Server}from'@modelcontextprotocol/sdk/server/index.js';function a0_0x30e6(){const _0x1904c5=['includes','unknown','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','\x22>\x0a','\x0a...\x20(truncated,\x20total:\x20','push','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','linesModified','Tool\x20\x22','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','Preview\x20changes\x20without\x20applying\x20them.','GitHub\x20search\x20failed:\x20','map','Parent\x20directory\x20does\x20not\x20exist:\x20','mcp-filesystem','default','description','go.mod','composer.json','../package.json','optional','listRoots','all','list_directory\x20','size','214713mSGgMZ','\x20error(s)','isDirectory','exit','min','false','-\x20Read\x20file\x20`','Rules:\x0a','Example\x20format:\x0a','❌\x20Morph\x20Edit\x20Failed:\x20','Failed\x20to\x20read\x20file:\x20','text','tool_call_error','Warning:\x20','lines','warn','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.','-\x20Listed\x20directory\x20`','messages','Morph\x20FastApply\x20failed\x20without\x20error\x20message','@morphllm/morphmcp\x20','success','response','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','\x20disabled\x20via\x20DISABLED_TOOLS','toISOString','path_validation_failed','Bearer\x20','post','startsWith','4ZtQEmW','dirname','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','6ILunZG','inputSchema','TimeoutError','resolve','errors','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','FileNotFound','setNotificationHandler','branch','File\x20read\x20error:','--version','stack','toLowerCase','roots','search_type','substring','Specific\x20commit\x20hash\x20to\x20search','0.2.0','split','edit','Here\x20is\x20the\x20content\x20of\x20files:\x0a','file_read_complete','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','6543411Gpgyxi','morph-','Error\x20running\x20fast\x20context\x20search:\x20','instructions','stat','322068VlbNJo','now','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','oninitialized','completed','PathError','BinaryFile','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\x20arguments\x20for\x20morph_edit_file:\x20','version','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','number','api-key','terminated','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.','2300913WdBoOU','Applied','Created\x20File','argv','Unknown\x20tool:\x20','RipgrepNotAvailable','\x22.\x20Known\x20tools:\x20','\x0a</file>','WarpGrep\x20sub-tool\x20errors:\x20','FileReadError','\x22>\x0aError\x20reading\x20file:\x20','Max\x20results\x20to\x20return','glob','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\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.','[github_codebase_search]\x20Failed\x20in\x20','trim','MORPH_WARP_GREP_TIMEOUT','Failed\x20to\x20request\x20roots\x20from\x20client:','instruction','EDIT_FILE','list_directory','describe','UnknownError','read','SymlinkError','.\x20Path:\x20','boolean','morph-v3-large','floor','message','isArray','github_search_start','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','catch','timeout','requiresApiKey','Unknown\x20error','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','\x0aOptions:','changes','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','Error\x20accessing\x20directory\x20','<file\x20path=\x22','grep','log','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','setRequestHandler','PWD','ENABLE_WORKSPACE_MODE','ms:','file_read_failed','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','tool_call_received','132564hcpKTQ','connect','https://morphllm.com/api/error-report','repo_path','MCP','stringify','some','code','\x20is\x20not\x20a\x20directory','unknown\x20error','linesRemoved','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','new_string','file','CODEBASE_SEARCH','.vscode','-\x20Grepped\x20\x27','user','object','turns','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','function','completionId','edit_file','LocalRipgrepProvider','array','MORPH_API_URL','code_edit','timed\x20out','morph-mcp','tsconfig.json','.\x20Changes:\x20',',\x20modified\x20','ReadError','parse','payload','metadata','timings','normalize','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','target_filepath','linesAdded','files','morph-v3-fast','github_codebase_search','context','utf-8','ms.\x20Success:\x20','data','\x20as\x20allowed\x20directory','owner_repo','2CfQBNa','Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a','grep\x20\x27','384315NeiIHT','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','name','morph-warp-grep-v2.1','etimedout','readFile','4204470zFEkrg','node_modules','.cursor','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','finish','homedir','role','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','api_request_start','Error:\x20','path_validation_resolved','env','API\x20error\x20(auth/rate-limit)','--help','length','tool_call_id','dryRun','runWarpGrep_call','sk-','warp_grep_complete','\x20-\x20','string','\x20chars)','constructor','debug','has','Repository\x20identifier','filter','--api-key','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES.**\x20Fast,\x20accurate,\x20and\x20prevents\x20context\x20pollution.\x20Especially\x20useful\x20when\x20making\x20multiple\x20edits\x20in\x20one\x20file:\x20describe\x20all\x20changes\x20in\x20a\x20single\x20call\x20and\x20the\x20semantic\x20edit\x20applies\x20them\x20all\x20at\x20once,\x20more\x20accurately\x20and\x20faster\x20than\x20sequential\x20edits.\x20Unlike\x20search-and-replace\x20or\x20patch\x20edits\x20which\x20do\x20narrow\x20edits\x20one\x20at\x20a\x20time,\x20with\x20this\x20tool\x20you\x20should\x20do\x20all\x20your\x20code\x20changes\x20in\x20one\x20go\x20separated\x20by\x20`//\x20...\x20existing\x20code\x20...`\x20markers.\x20This\x20saves\x20tokens\x20and\x20improves\x20performance\x20because\x20you\x20do\x20not\x20need\x20to\x20reread\x20files\x20before\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a','\x0aExamples:','status','-\x20Preserve\x20exact\x20indentation\x0a','Morph\x20Edit\x20Preview','join','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','pyproject.toml','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','Invalid\x20arguments:\x20','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','arguments','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','searchGitHub','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','slice','2508PwbSIH','every','codebase_search','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','path','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','safeParse','[could\x20not\x20read\x20file:\x20','match','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.','pattern','sep','96UeNHXB','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','completed_with_file_errors','tool','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','Fallback:\x20Using\x20workspace\x20root\x20','terminationReason','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','ToolException','command','basename','tool_calls','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','content','Morph\x20Edit\x20','package.json','--api-key=','error','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','realpath','search_string','enum'];a0_0x30e6=function(){return _0x1904c5;};return a0_0x30e6();}import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x4dc500 from'fs/promises';import a0_0x27fcca from'path';import a0_0x1b25bd from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{logger}from'./logger.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x19c627 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x685caf){const _0x35bad4=a0_0x4e75,_0x38478e=_0x685caf[_0x35bad4(0x1d0)](a0_0x27fcca['sep'])[_0x35bad4(0x14f)](Boolean);if(_0x38478e[_0x35bad4(0x270)]<0x2)return null;for(let _0x4678fe=Math[_0x35bad4(0x207)](_0x38478e[_0x35bad4(0x270)]/0x2);_0x4678fe>=0x1;_0x4678fe--){for(let _0x1b78bb=0x0;_0x1b78bb<=_0x38478e['length']-0x2*_0x4678fe;_0x1b78bb++){const _0x1a6d54=_0x38478e[_0x35bad4(0x160)](_0x1b78bb,_0x1b78bb+_0x4678fe),_0x21f162=_0x38478e[_0x35bad4(0x160)](_0x1b78bb+_0x4678fe,_0x1b78bb+0x2*_0x4678fe);if(_0x1a6d54[_0x35bad4(0x162)]((_0x35f82d,_0x473ee0)=>_0x35f82d===_0x21f162[_0x473ee0])){const _0x3079cb=[..._0x38478e[_0x35bad4(0x160)](0x0,_0x1b78bb),..._0x38478e[_0x35bad4(0x160)](_0x1b78bb+_0x4678fe)];return a0_0x27fcca[_0x35bad4(0x16c)]+_0x3079cb[_0x35bad4(0x156)](a0_0x27fcca['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x1e8372=a0_0x4e75;try{const _0x4c684f=require(_0x1e8372(0x197));return _0x4c684f[_0x1e8372(0x1e3)]??_0x1e8372(0x185);}catch(_0x4b838a){return logMcpStderr(_0x1e8372(0x1f6),_0x4b838a),_0x1e8372(0x185);}}function printHelp(){const _0x11e1a6=a0_0x4e75;console[_0x11e1a6(0x217)](_0x11e1a6(0x1b1)+getPackageVersion()),console[_0x11e1a6(0x217)](_0x11e1a6(0x186)),console['log'](_0x11e1a6(0x211)),console[_0x11e1a6(0x217)](_0x11e1a6(0x221)),console['log'](_0x11e1a6(0x15d)),console[_0x11e1a6(0x217)](_0x11e1a6(0x21b)),console['log'](_0x11e1a6(0x152)),console['log']('\x20\x20morph-mcp'),console[_0x11e1a6(0x217)](_0x11e1a6(0x15f));}const cliArgs=process[a0_0x56a8fe(0x1ec)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x56a8fe(0x1c8),'-v','-V']),HELP_FLAGS=new Set([a0_0x56a8fe(0x26f),'-h']);cliArgs[a0_0x56a8fe(0x229)](_0x1de975=>VERSION_FLAGS[a0_0x56a8fe(0x14d)](_0x1de975))&&(console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x56a8fe(0x1a0)](0x0));cliArgs[a0_0x56a8fe(0x229)](_0x3503fa=>HELP_FLAGS[a0_0x56a8fe(0x14d)](_0x3503fa))&&(printHelp(),process[a0_0x56a8fe(0x1a0)](0x0));function getCliArg(_0x1e40f4){const _0x3d92f7=a0_0x56a8fe;for(let _0x547987=0x0;_0x547987<cliArgs[_0x3d92f7(0x270)];_0x547987++){const _0x1c600c=cliArgs[_0x547987];if(_0x1c600c[_0x3d92f7(0x1ba)]('--'+_0x1e40f4+'='))return _0x1c600c[_0x3d92f7(0x160)](('--'+_0x1e40f4+'=')[_0x3d92f7(0x270)]);if(_0x1c600c==='--'+_0x1e40f4&&_0x547987+0x1<cliArgs[_0x3d92f7(0x270)])return cliArgs[_0x547987+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x56a8fe(0x270)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x56a8fe(0x14d)](arg)||HELP_FLAGS[a0_0x56a8fe(0x14d)](arg))continue;if(arg[a0_0x56a8fe(0x1ba)](a0_0x56a8fe(0x17e)))continue;if(arg===a0_0x56a8fe(0x150)){i++;continue;}args[a0_0x56a8fe(0x189)](arg);}const WORKSPACE_ROOT=process[a0_0x56a8fe(0x26d)]['WORKSPACE_ROOT']||process[a0_0x56a8fe(0x26d)][a0_0x56a8fe(0x21d)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x56a8fe(0x26d)][a0_0x56a8fe(0x21e)]!==a0_0x56a8fe(0x1a2),MORPH_API_KEY=getCliArg(a0_0x56a8fe(0x1e6))??process['env']['MORPH_API_KEY'],MORPH_API_URL=process['env'][a0_0x56a8fe(0x23f)],MORPH_LARGE_APPLY=process[a0_0x56a8fe(0x26d)]['MORPH_LARGE_APPLY']!==a0_0x56a8fe(0x1a2),MORPH_WARP_GREP_TIMEOUT=process['env']['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x56a8fe(0x26d)][a0_0x56a8fe(0x1fb)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x56a8fe(0x26d)]['DISABLED_TOOLS']?new Set(process['env']['DISABLED_TOOLS'][a0_0x56a8fe(0x1d0)](',')['map'](_0x4a2a6f=>_0x4a2a6f[a0_0x56a8fe(0x1fa)]())[a0_0x56a8fe(0x14f)](_0x11b4dc=>_0x11b4dc['length']>0x0)):DEFAULT_DISABLED_TOOLS;function a0_0x4e75(_0xa3e864,_0x3497cf){_0xa3e864=_0xa3e864-0x144;const _0x30e6f4=a0_0x30e6();let _0x4e75d6=_0x30e6f4[_0xa3e864];return _0x4e75d6;}if(DISABLED_TOOLS[a0_0x56a8fe(0x19c)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x56a8fe(0x14d)](tool)&&console['error'](a0_0x56a8fe(0x1e4)+tool+a0_0x56a8fe(0x1ef)+[...KNOWN_TOOL_NAMES][a0_0x56a8fe(0x156)](',\x20'));}console['error']('Disabled\x20tools:\x20'+[...DISABLED_TOOLS][a0_0x56a8fe(0x156)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x56a8fe(0x1ba)](a0_0x56a8fe(0x146))&&!MORPH_API_KEY['startsWith'](a0_0x56a8fe(0x1d6))&&logMcpStderr(a0_0x56a8fe(0x25c));async function reportMorphError(_0x24caa8){const _0x596cbc=a0_0x56a8fe;try{await a0_0x19c627[_0x596cbc(0x1b9)](_0x596cbc(0x225),{..._0x24caa8,'timestamp':new Date()[_0x596cbc(0x1b6)](),'source':_0x24caa8['source']||_0x596cbc(0x192),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x24caa8[_0x596cbc(0x252)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x596cbc(0x1b8)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x5a0375,_0x43486c){const _0x2b009a=a0_0x56a8fe;if(_0x5a0375&&typeof _0x5a0375===_0x2b009a(0x236)&&_0x2b009a(0x153)in _0x5a0375)return _0x5a0375[_0x2b009a(0x153)];if(_0x5a0375&&typeof _0x5a0375==='object'&&_0x2b009a(0x1b3)in _0x5a0375)return _0x5a0375[_0x2b009a(0x1b3)]?.[_0x2b009a(0x153)];const _0x215c24=_0x43486c[_0x2b009a(0x169)](/\b(401|429)\b/);return _0x215c24?parseInt(_0x215c24[0x1],0xa):null;}function handleMorphAPIError(_0x32e2ce){const _0x44c71d=a0_0x56a8fe,_0x5b66d5=_0x32e2ce instanceof Error?_0x32e2ce['message']:String(_0x32e2ce),_0x3aa23f=extractStatusCode(_0x32e2ce,_0x5b66d5);switch(_0x3aa23f){case 0x191:return{'content':[{'type':'text','text':_0x44c71d(0x1e1)}],'isError':!![]};case 0x1ad:return{'content':[{'type':'text','text':_0x44c71d(0x171)}],'isError':!![]};default:return null;}}args[a0_0x56a8fe(0x270)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x56a8fe(0x238)),logMcpStderr(a0_0x56a8fe(0x180)),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr(a0_0x56a8fe(0x1bd)),logMcpStderr(a0_0x56a8fe(0x18a)),logMcpStderr(a0_0x56a8fe(0x218)));function normalizePath(_0x2b685c){const _0x124d44=a0_0x56a8fe;return a0_0x27fcca[_0x124d44(0x24b)](_0x2b685c);}function expandHome(_0x1b5075){const _0x750bb2=a0_0x56a8fe;if(_0x1b5075[_0x750bb2(0x1ba)]('~/')||_0x1b5075==='~')return a0_0x27fcca['join'](a0_0x1b25bd[_0x750bb2(0x267)](),_0x1b5075[_0x750bb2(0x160)](0x1));return _0x1b5075;}let allowedDirectories=await Promise[a0_0x56a8fe(0x19a)](args[a0_0x56a8fe(0x190)](async _0x2e78d0=>{const _0x16d17a=expandHome(_0x2e78d0),_0x2dcdd8=a0_0x27fcca['resolve'](_0x16d17a);try{const _0x5781ae=await a0_0x4dc500['realpath'](_0x2dcdd8);return normalizePath(_0x5781ae);}catch(_0x4241d1){return normalizePath(_0x2dcdd8);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x56a8fe(0x270)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0x56a8fe(0x256)));}catch(a0_0xde4a0d){logMcpStderr(a0_0x56a8fe(0x239)+a0_0xde4a0d);}async function detectWorkspaceRoot(_0x281b4a){const _0x2e07ae=a0_0x56a8fe;let _0x3817fa=a0_0x27fcca[_0x2e07ae(0x1c1)](_0x281b4a);const _0x29a3cb=['.git',_0x2e07ae(0x233),_0x2e07ae(0x17d),'Cargo.toml',_0x2e07ae(0x158),_0x2e07ae(0x195),_0x2e07ae(0x264),_0x2e07ae(0x243),_0x2e07ae(0x196)];while(_0x3817fa!==a0_0x27fcca['dirname'](_0x3817fa)){for(const _0x122b12 of _0x29a3cb){const _0x311805=a0_0x27fcca['join'](_0x3817fa,_0x122b12);try{return await a0_0x4dc500['access'](_0x311805),normalizePath(_0x3817fa);}catch{}}_0x3817fa=a0_0x27fcca[_0x2e07ae(0x1bc)](_0x3817fa);}return normalizePath(_0x281b4a);}await Promise[a0_0x56a8fe(0x19a)](args[a0_0x56a8fe(0x190)](async _0x23928c=>{const _0x3c6933=a0_0x56a8fe;try{const _0x2f65cf=await a0_0x4dc500[_0x3c6933(0x1d9)](expandHome(_0x23928c));!_0x2f65cf[_0x3c6933(0x19f)]()&&(logMcpStderr(_0x3c6933(0x26b)+_0x23928c+_0x3c6933(0x22b)),process[_0x3c6933(0x1a0)](0x1));}catch(_0x54e11f){logMcpStderr(_0x3c6933(0x214)+_0x23928c+':',_0x54e11f),process['exit'](0x1);}}));async function validatePath(_0x46d74b){const _0x3acb09=a0_0x56a8fe,_0x4e8414=expandHome(_0x46d74b),_0x4bcc9e=a0_0x27fcca[_0x3acb09(0x1c1)](_0x4e8414);logger['debug']('MCP','path_validation_start',{'raw_path':_0x46d74b,'absolute':_0x4bcc9e});try{const _0x469e04=await a0_0x4dc500[_0x3acb09(0x181)](_0x4bcc9e);return logger['debug'](_0x3acb09(0x227),_0x3acb09(0x26c),{'resolved':_0x469e04,'symlink':_0x469e04!==_0x4bcc9e}),_0x469e04;}catch(_0x3e8b18){if(_0x3e8b18[_0x3acb09(0x22a)]==='ENOENT'){const _0x3dfcf2=a0_0x27fcca[_0x3acb09(0x1bc)](_0x4bcc9e);try{const _0x2c966c=await a0_0x4dc500[_0x3acb09(0x181)](_0x3dfcf2),_0x35f23f=a0_0x27fcca[_0x3acb09(0x156)](_0x2c966c,a0_0x27fcca[_0x3acb09(0x178)](_0x4bcc9e));return logger[_0x3acb09(0x14c)]('MCP',_0x3acb09(0x26c),{'resolved':_0x35f23f,'new_file':!![]}),_0x35f23f;}catch{logger['error'](_0x3acb09(0x227),_0x3acb09(0x1b7),{'raw_path':_0x46d74b,'error':_0x3acb09(0x191)+_0x3dfcf2});throw new Error(_0x3acb09(0x191)+_0x3dfcf2);}}logger[_0x3acb09(0x17f)](_0x3acb09(0x227),_0x3acb09(0x1b7),{'raw_path':_0x46d74b,'error':_0x3e8b18[_0x3acb09(0x208)]});throw _0x3e8b18;}}const MorphEditFileArgsSchema=z[a0_0x56a8fe(0x236)]({'path':z[a0_0x56a8fe(0x149)](),'code_edit':z['string']()[a0_0x56a8fe(0x200)](a0_0x56a8fe(0x25d)),'instruction':z[a0_0x56a8fe(0x149)]()['describe'](a0_0x56a8fe(0x1c3)),'dryRun':z[a0_0x56a8fe(0x205)]()[a0_0x56a8fe(0x193)](![])[a0_0x56a8fe(0x200)](a0_0x56a8fe(0x18e))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x56a8fe(0x1e8),WarpGrepArgsSchema=z[a0_0x56a8fe(0x236)]({'search_string':z['string']()[a0_0x56a8fe(0x200)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x56a8fe(0x149)]()['describe'](a0_0x56a8fe(0x17a)),'search_type':z[a0_0x56a8fe(0x183)]([a0_0x56a8fe(0x193),a0_0x56a8fe(0x263)])['optional']()[a0_0x56a8fe(0x200)](a0_0x56a8fe(0x21a))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x56a8fe(0x149)]()['optional']()['describe'](a0_0x56a8fe(0x1ad)),'owner_repo':z[a0_0x56a8fe(0x149)]()[a0_0x56a8fe(0x198)]()[a0_0x56a8fe(0x200)](a0_0x56a8fe(0x15b)),'branch':z[a0_0x56a8fe(0x149)]()['optional']()['describe']('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z[a0_0x56a8fe(0x236)]({'query':z[a0_0x56a8fe(0x149)]()[a0_0x56a8fe(0x200)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()['describe'](a0_0x56a8fe(0x14e)),'branch':z['string']()[a0_0x56a8fe(0x198)]()[a0_0x56a8fe(0x200)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x56a8fe(0x149)]()[a0_0x56a8fe(0x198)]()[a0_0x56a8fe(0x200)](a0_0x56a8fe(0x1ce)),'targetDirectories':z[a0_0x56a8fe(0x23e)](z[a0_0x56a8fe(0x149)]())['default']([])[a0_0x56a8fe(0x200)](a0_0x56a8fe(0x175)),'limit':z[a0_0x56a8fe(0x1e5)]()[a0_0x56a8fe(0x198)]()[a0_0x56a8fe(0x193)](0xa)['describe'](a0_0x56a8fe(0x1f4))}),server=new Server({'name':a0_0x56a8fe(0x242),'version':a0_0x56a8fe(0x1cf)},{'capabilities':{'tools':{}}});server[a0_0x56a8fe(0x21c)](ListToolsRequestSchema,async()=>{const _0x417dad=a0_0x56a8fe,_0x7e6b72=[{'name':TOOL_NAMES[_0x417dad(0x1fe)],'description':_0x417dad(0x151)+'Parameters:\x0a'+_0x417dad(0x210)+_0x417dad(0x269)+_0x417dad(0x1b4)+_0x417dad(0x259)+_0x417dad(0x1a5)+_0x417dad(0x213)+_0x417dad(0x1a4)+_0x417dad(0x159)+_0x417dad(0x154)+'-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a'+_0x417dad(0x265),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x417dad(0x232)],'description':_0x417dad(0x20b)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x417dad(0x18d)+_0x417dad(0x24c)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x1255f4=_0x7e6b72['filter'](_0x508518=>{const _0x6b99b1=_0x417dad;if(DISABLED_TOOLS['has'](_0x508518[_0x6b99b1(0x25e)]))return console['error']('Tool\x20'+_0x508518[_0x6b99b1(0x25e)]+_0x6b99b1(0x1b5)),![];if(_0x6b99b1(0x20e)in _0x508518&&_0x508518[_0x6b99b1(0x20e)]&&!MORPH_API_KEY)return logMcpStderr(_0x6b99b1(0x1aa)+_0x508518[_0x6b99b1(0x25e)]+_0x6b99b1(0x16e)),![];return!![];});return{'tools':_0x1255f4[_0x417dad(0x190)](_0x5de66f=>({'name':_0x5de66f[_0x417dad(0x25e)],'description':_0x5de66f[_0x417dad(0x194)],'inputSchema':_0x5de66f[_0x417dad(0x1bf)]}))};}),server[a0_0x56a8fe(0x21c)](CallToolRequestSchema,async _0x591462=>{const _0x36f654=a0_0x56a8fe,{name:_0x33cf74,arguments:_0x431357}=_0x591462['params'],_0x64da5a=Date[_0x36f654(0x1db)]();logger[_0x36f654(0x14c)](_0x36f654(0x227),_0x36f654(0x222),{'tool':_0x33cf74,'args':_0x33cf74===_0x36f654(0x23c)?{'path':_0x431357?.['path'],'instruction':_0x431357?.[_0x36f654(0x1fd)]||_0x431357?.[_0x36f654(0x1d8)],'dryRun':_0x431357?.[_0x36f654(0x144)]}:_0x431357});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x36f654(0x1a8),'text':_0x36f654(0x1d4)}],'isError':!![]};if(!MORPH_API_KEY[_0x36f654(0x1ba)](_0x36f654(0x146))&&!MORPH_API_KEY[_0x36f654(0x1ba)](_0x36f654(0x1d6)))return{'content':[{'type':_0x36f654(0x1a8),'text':_0x36f654(0x1f8)}],'isError':!![]};if(DISABLED_TOOLS[_0x36f654(0x14d)](_0x33cf74))return{'content':[{'type':'text','text':_0x36f654(0x18c)+_0x33cf74+'\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.'}],'isError':![]};switch(_0x33cf74){case TOOL_NAMES[_0x36f654(0x1fe)]:{let _0x4c2323=_0x431357;if(_0x4c2323&&typeof _0x4c2323===_0x36f654(0x236)){if(!(_0x36f654(0x165)in _0x4c2323)){const _0x1da241=_0x4c2323['target_file']??_0x4c2323['filePath']??_0x4c2323[_0x36f654(0x24d)]??_0x4c2323['file_path']??_0x4c2323[_0x36f654(0x231)];if(_0x1da241)_0x4c2323={..._0x4c2323,'path':_0x1da241};}_0x36f654(0x1d8)in _0x4c2323&&!(_0x36f654(0x1fd)in _0x4c2323)&&(_0x4c2323={..._0x4c2323,'instruction':_0x4c2323[_0x36f654(0x1d8)]});if(!(_0x36f654(0x240)in _0x4c2323)){const _0x1e731a=_0x4c2323['code']??_0x4c2323[_0x36f654(0x230)]??_0x4c2323[_0x36f654(0x17b)]??_0x4c2323[_0x36f654(0x1d1)];if(_0x1e731a)_0x4c2323={..._0x4c2323,'code_edit':_0x1e731a};}}const _0x245ff0=MorphEditFileArgsSchema[_0x36f654(0x167)](_0x4c2323);if(!_0x245ff0[_0x36f654(0x1b2)])throw new Error(_0x36f654(0x1e2)+_0x245ff0[_0x36f654(0x17f)]);const _0x487e49=await validatePath(_0x245ff0[_0x36f654(0x255)][_0x36f654(0x165)]);let _0x1b4aae=null,_0x5e087d=!![],_0x4f40df=null;try{_0x1b4aae=await a0_0x4dc500['readFile'](_0x487e49,_0x36f654(0x253)),logger[_0x36f654(0x14c)](_0x36f654(0x227),_0x36f654(0x1d3),{'path':_0x487e49,'size_bytes':_0x1b4aae[_0x36f654(0x270)]});}catch(_0xd4b36f){const _0x309e8=_0xd4b36f[_0x36f654(0x22a)];_0x309e8==='ENOENT'?(_0x5e087d=![],_0x1b4aae='',logger[_0x36f654(0x14c)](_0x36f654(0x227),_0x36f654(0x1d3),{'path':_0x487e49,'exists':![]})):(_0x4f40df=_0x36f654(0x1a7)+(_0x309e8||_0x36f654(0x185))+_0x36f654(0x148)+(_0xd4b36f instanceof Error?_0xd4b36f[_0x36f654(0x208)]:String(_0xd4b36f)),logger[_0x36f654(0x17f)](_0x36f654(0x227),_0x36f654(0x220),{'path':_0x487e49,'error':_0x4f40df}),logMcpStderr(_0x36f654(0x1aa)+_0x4f40df));}let _0xcd5c72;try{const _0x4b803e=MORPH_API_KEY;if(!_0x4b803e)throw new Error(_0x36f654(0x1f7));const _0x31e2b6=a0_0x27fcca[_0x36f654(0x1bc)](_0x487e49),_0x215b7e=a0_0x27fcca[_0x36f654(0x178)](_0x487e49);logger[_0x36f654(0x14c)](_0x36f654(0x227),_0x36f654(0x26a),{'model':'morph-v3-fast','path':_0x245ff0[_0x36f654(0x255)][_0x36f654(0x165)],'instruction_len':_0x245ff0['data'][_0x36f654(0x1fd)][_0x36f654(0x270)],'code_edit_len':_0x245ff0[_0x36f654(0x255)][_0x36f654(0x240)]['length'],'original_code_len':_0x1b4aae?.[_0x36f654(0x270)]??0x0,'dry_run':_0x245ff0[_0x36f654(0x255)][_0x36f654(0x144)]});const _0x44dcd3=Date[_0x36f654(0x1db)](),_0x1f3d1b=await executeEditFile({'target_filepath':_0x215b7e,'code_edit':_0x245ff0[_0x36f654(0x255)][_0x36f654(0x240)],'instruction':_0x245ff0['data'][_0x36f654(0x1fd)]},{'morphApiKey':_0x4b803e,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x31e2b6,'autoWrite':!_0x245ff0['data']['dryRun'],'generateUdiff':![],'debug':![]}),_0x1a0880=Date['now']()-_0x44dcd3;_0xcd5c72=_0x1f3d1b[_0x36f654(0x23b)];if(!_0x1f3d1b['success'])throw new Error(_0x1f3d1b[_0x36f654(0x17f)]||_0x36f654(0x1b0));const _0xeb1789=_0x1f3d1b[_0x36f654(0x212)],_0x165ef1='added\x20'+_0xeb1789[_0x36f654(0x24e)]+',\x20removed\x20'+_0xeb1789['linesRemoved']+_0x36f654(0x245)+_0xeb1789[_0x36f654(0x18b)];logger[_0x36f654(0x14c)](_0x36f654(0x227),'tool_call_complete',{'tool':'edit_file','success':!![],'latency_ms':Date['now']()-_0x64da5a,'edit_latency_ms':_0x1a0880,'changes':{'added':_0xeb1789['linesAdded'],'removed':_0xeb1789[_0x36f654(0x22d)],'modified':_0xeb1789[_0x36f654(0x18b)]},'completion_id':_0xcd5c72});if(_0x245ff0[_0x36f654(0x255)]['dryRun'])return{'content':[{'type':_0x36f654(0x1a8),'text':_0x36f654(0x155)+(_0x5e087d?'':'\x20(new\x20file)')+':\x20'+_0x245ff0[_0x36f654(0x255)][_0x36f654(0x1fd)]+_0x36f654(0x244)+_0x165ef1+'.\x20Path:\x20'+_0x245ff0[_0x36f654(0x255)][_0x36f654(0x165)]+'.'}]};return{'content':[{'type':_0x36f654(0x1a8),'text':_0x36f654(0x17c)+(_0x5e087d?_0x36f654(0x1ea):_0x36f654(0x1eb))+':\x20'+_0x245ff0[_0x36f654(0x255)][_0x36f654(0x1fd)]+_0x36f654(0x244)+_0x165ef1+_0x36f654(0x204)+_0x245ff0[_0x36f654(0x255)][_0x36f654(0x165)]+'.'}]};}catch(_0x1e181f){const _0x4bb6c6=handleMorphAPIError(_0x1e181f);if(_0x4bb6c6)return logger[_0x36f654(0x17f)](_0x36f654(0x227),_0x36f654(0x1a9),{'tool':_0x36f654(0x23c),'error':_0x36f654(0x26e),'latency_ms':Date[_0x36f654(0x1db)]()-_0x64da5a}),_0x4bb6c6;const _0x4de622=_0x1e181f instanceof Error?_0x1e181f[_0x36f654(0x208)]:String(_0x1e181f);return logger[_0x36f654(0x17f)](_0x36f654(0x227),_0x36f654(0x1a9),{'tool':_0x36f654(0x23c),'error':_0x4de622,'path':_0x245ff0[_0x36f654(0x255)]['path'],'validated_path':_0x487e49,'latency_ms':Date[_0x36f654(0x1db)]()-_0x64da5a,'stack':_0x1e181f instanceof Error?_0x1e181f[_0x36f654(0x1c9)]:undefined}),reportMorphError({'error_message':_0x4de622,'error_type':_0x1e181f instanceof Error?_0x1e181f[_0x36f654(0x14b)][_0x36f654(0x25e)]:'UnknownError','context':{'tool':_0x36f654(0x23c),'completion_id':_0xcd5c72,'file_path':_0x245ff0['data'][_0x36f654(0x165)],'validated_path':_0x487e49,'instruction':_0x245ff0[_0x36f654(0x255)][_0x36f654(0x1fd)],'model':MORPH_LARGE_APPLY?_0x36f654(0x206):_0x36f654(0x250),'dry_run':_0x245ff0[_0x36f654(0x255)][_0x36f654(0x144)],'file_exists':_0x5e087d,'file_read_error':_0x4f40df,'file_readable':_0x1b4aae!==null,'request_content':{'path':_0x245ff0[_0x36f654(0x255)]['path'],'code_edit':_0x245ff0[_0x36f654(0x255)][_0x36f654(0x240)],'instruction':_0x245ff0[_0x36f654(0x255)][_0x36f654(0x1fd)],'original_code':_0x1b4aae!==null?_0x1b4aae[_0x36f654(0x270)]>0xc350?_0x1b4aae['substring'](0x0,0xc350)+_0x36f654(0x188)+_0x1b4aae[_0x36f654(0x270)]+_0x36f654(0x14a):_0x1b4aae:_0x36f654(0x168)+(_0x4f40df||_0x36f654(0x22c))+']','original_code_length':_0x1b4aae?.[_0x36f654(0x270)]??0x0,'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x36f654(0x250),'dry_run':_0x245ff0[_0x36f654(0x255)]['dryRun']}},'stack_trace':_0x1e181f instanceof Error?_0x1e181f[_0x36f654(0x1c9)]:undefined,'source':'mcp-filesystem'})[_0x36f654(0x20c)](()=>{}),{'content':[{'type':_0x36f654(0x1a8),'text':_0x36f654(0x1a6)+_0x4de622}],'isError':!![]};}}case TOOL_NAMES[_0x36f654(0x232)]:{const _0x14cf1c=WarpGrepArgsSchema[_0x36f654(0x167)](_0x431357);if(!_0x14cf1c[_0x36f654(0x1b2)])return{'content':[{'type':'text','text':_0x36f654(0x15a)+_0x14cf1c[_0x36f654(0x17f)]}],'isError':!![]};const _0x1fd9e8=_0x1b9cc6=>{const _0x146211=_0x36f654,_0x482b6a=[];for(const _0x3d13ce of _0x1b9cc6||[]){if(_0x3d13ce[_0x146211(0x268)]==='assistant'&&Array['isArray'](_0x3d13ce[_0x146211(0x179)]))for(const _0x31f4b7 of _0x3d13ce['tool_calls']){try{const _0x47e7b7=_0x31f4b7[_0x146211(0x23a)]?.['name'],_0x181326=JSON[_0x146211(0x247)](_0x31f4b7[_0x146211(0x23a)]?.['arguments']||'{}');if(_0x47e7b7==='grep_search')_0x482b6a[_0x146211(0x189)](_0x146211(0x25a)+_0x181326[_0x146211(0x16b)]+'\x27\x20'+(_0x181326[_0x146211(0x165)]||'.'));else{if(_0x47e7b7===_0x146211(0x202))_0x482b6a[_0x146211(0x189)]('read\x20'+_0x181326[_0x146211(0x165)]);else{if(_0x47e7b7===_0x146211(0x1ff))_0x482b6a[_0x146211(0x189)](_0x146211(0x19b)+(_0x181326[_0x146211(0x177)]||'.'));else{if(_0x47e7b7==='glob')_0x482b6a[_0x146211(0x189)]('glob\x20\x27'+_0x181326[_0x146211(0x16b)]+'\x27\x20'+(_0x181326[_0x146211(0x165)]||'.'));else _0x47e7b7===_0x146211(0x266)&&_0x482b6a[_0x146211(0x189)](_0x146211(0x266));}}}}catch{}}}return _0x482b6a;},_0x4c524d=_0x1187fe=>{const _0x38df6e=_0x36f654,_0x5f0166=[];if(!_0x1187fe||!Array['isArray'](_0x1187fe))return _0x5f0166;const _0x202fc4=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x38df6e(0x1c4),'tool':_0x38df6e(0x202)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x38df6e(0x1df),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x38df6e(0x246),'tool':_0x38df6e(0x202)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x38df6e(0x1e0),'tool':_0x38df6e(0x202)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x38df6e(0x1ee),'tool':_0x38df6e(0x216)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x38df6e(0x202)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':_0x38df6e(0x202)},{'pattern':/symbolic link/,'error_type':_0x38df6e(0x203),'tool':_0x38df6e(0x202)},{'pattern':/Error reading file:/,'error_type':_0x38df6e(0x246),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x38df6e(0x176),'tool':_0x38df6e(0x185)}];let _0x11674a=0x0;for(const _0x42351a of _0x1187fe){_0x42351a[_0x38df6e(0x268)]==='assistant'&&Array[_0x38df6e(0x209)](_0x42351a['tool_calls'])&&_0x11674a++;const _0x1459f6=_0x42351a['content'];if((_0x42351a[_0x38df6e(0x268)]===_0x38df6e(0x170)||_0x42351a[_0x38df6e(0x268)]===_0x38df6e(0x235))&&_0x1459f6&&typeof _0x1459f6===_0x38df6e(0x149))for(const {pattern:_0x36c4c0,error_type:_0x56bf53,tool:_0x245751}of _0x202fc4){const _0x560fff=_0x1459f6[_0x38df6e(0x169)](new RegExp(_0x36c4c0['source'],'g'));if(_0x560fff)for(const _0x5734cb of _0x560fff){const _0x57fcb5=_0x1459f6['indexOf'](_0x5734cb),_0xdebf4d=_0x1459f6['substring'](_0x57fcb5,Math[_0x38df6e(0x1a1)](_0x57fcb5+0xc8,_0x1459f6[_0x38df6e(0x270)]));_0x5f0166[_0x38df6e(0x189)]({'tool':_0x245751,'error_type':_0x56bf53,'error_message':_0xdebf4d['split']('\x0a')[0x0],'turn':_0x11674a});}}}return _0x5f0166;};try{const _0x1228b=a0_0x27fcca[_0x36f654(0x1c1)](_0x14cf1c[_0x36f654(0x255)]['repo_path']),_0x1e663d=_0x14cf1c[_0x36f654(0x255)][_0x36f654(0x1cc)],_0x499cb3=_0x1e663d==='node_modules'?{'allowNames':['node_modules']}:undefined,_0x30dcec=new LocalRipgrepProvider(_0x1228b,undefined,_0x499cb3);logger[_0x36f654(0x14c)]('MCP','provider_created',{'type':_0x36f654(0x23d),'repo_root':_0x1228b,'search_type':_0x1e663d||_0x36f654(0x193)}),logger[_0x36f654(0x14c)]('MCP','warp_grep_start',{'query':_0x14cf1c[_0x36f654(0x255)][_0x36f654(0x182)],'repo_root':_0x1228b,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x14b848=Date['now'](),_0x4b2dd3=await runWarpGrep({'searchTerm':_0x14cf1c['data'][_0x36f654(0x182)],'repoRoot':_0x1228b,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x30dcec,'search_type':_0x1e663d}),_0x1f61d1=Date[_0x36f654(0x1db)]()-_0x14b848,_0x19af0a=_0x4b2dd3[_0x36f654(0x266)]?.[_0x36f654(0x249)]?.['files']?.[_0x36f654(0x270)]??0x0;logger[_0x36f654(0x14c)](_0x36f654(0x227),_0x36f654(0x147),{'termination':_0x4b2dd3[_0x36f654(0x173)],'turns':_0x4b2dd3[_0x36f654(0x24a)]?.[_0x36f654(0x237)]??0x0,'files_found':_0x19af0a,'latency_ms':_0x1f61d1});const _0x5ee55b=_0x4c524d(_0x4b2dd3[_0x36f654(0x1af)]);_0x5ee55b['length']>0x0&&reportMorphError({'error_message':_0x36f654(0x1f1)+_0x5ee55b[_0x36f654(0x270)]+_0x36f654(0x19e),'error_type':'SubToolError','level':_0x36f654(0x1ac),'tool':_0x36f654(0x163),'context':{'repo_path':_0x14cf1c[_0x36f654(0x255)][_0x36f654(0x226)],'query':_0x14cf1c[_0x36f654(0x255)]['search_string'],'model':_0x36f654(0x25f),'termination_reason':_0x4b2dd3[_0x36f654(0x173)],'sub_tool_errors':_0x5ee55b,'timings':_0x4b2dd3[_0x36f654(0x24a)],'tool_calls':_0x1fd9e8(_0x4b2dd3[_0x36f654(0x1af)]),'messages':_0x4b2dd3['messages']?.['map'](_0x1f70e9=>({'role':_0x1f70e9['role'],'content':_0x1f70e9['content'],..._0x1f70e9[_0x36f654(0x179)]?{'tool_calls':_0x1f70e9[_0x36f654(0x179)][_0x36f654(0x270)]}:{},..._0x1f70e9[_0x36f654(0x271)]?{'tool_call_id':_0x1f70e9[_0x36f654(0x271)]}:{}}))},'source':'mcp-filesystem'})[_0x36f654(0x20c)](()=>{});let _0x233d6f='';if(_0x4b2dd3[_0x36f654(0x173)]===_0x36f654(0x1de)&&_0x4b2dd3['finish']?.['metadata']?.[_0x36f654(0x24f)]){const _0x4d8c92=_0x4b2dd3[_0x36f654(0x266)][_0x36f654(0x249)]['files'];if(_0x4d8c92[_0x36f654(0x270)]===0x0)return _0x233d6f=_0x4b2dd3[_0x36f654(0x266)][_0x36f654(0x248)]||_0x36f654(0x157),{'content':[{'type':_0x36f654(0x1a8),'text':_0x233d6f}]};const _0xa0d50=[],_0x14dfee=[_0x36f654(0x174)];for(const _0x408faf of _0x4b2dd3[_0x36f654(0x1af)]){if(_0x408faf[_0x36f654(0x268)]==='assistant'&&Array[_0x36f654(0x209)](_0x408faf[_0x36f654(0x179)]))for(const _0x35619b of _0x408faf[_0x36f654(0x179)]){try{const _0xcbd6a=_0x35619b['function']?.[_0x36f654(0x25e)],_0x1a1a4f=JSON[_0x36f654(0x247)](_0x35619b['function']?.[_0x36f654(0x15c)]||'{}');if(_0xcbd6a==='grep_search')_0x14dfee[_0x36f654(0x189)](_0x36f654(0x234)+_0x1a1a4f[_0x36f654(0x16b)]+'\x27\x20in\x20`'+(_0x1a1a4f[_0x36f654(0x165)]||'.')+'`');else{if(_0xcbd6a===_0x36f654(0x202))_0x14dfee[_0x36f654(0x189)](_0x36f654(0x1a3)+_0x1a1a4f['path']+'`');else{if(_0xcbd6a==='list_directory')_0x14dfee[_0x36f654(0x189)](_0x36f654(0x1ae)+(_0x1a1a4f['command']||'.')+'`');else _0xcbd6a===_0x36f654(0x1f5)&&_0x14dfee[_0x36f654(0x189)]('-\x20Glob\x20search\x20`'+_0x1a1a4f['pattern']+'`\x20in\x20`'+(_0x1a1a4f[_0x36f654(0x165)]||'.')+'`');}}}catch{}}}_0xa0d50[_0x36f654(0x189)](_0x14dfee[_0x36f654(0x156)]('\x0a'));const _0x3565dd=['','Relevant\x20context\x20found:'];for(const _0x5fbdc1 of _0x4d8c92){if(_0x5fbdc1[_0x36f654(0x1ab)]==='*')_0x3565dd['push']('-\x20'+_0x5fbdc1[_0x36f654(0x165)]+':*');else{if(Array[_0x36f654(0x209)](_0x5fbdc1[_0x36f654(0x1ab)])){const _0x208a5a=_0x5fbdc1[_0x36f654(0x1ab)][_0x36f654(0x190)](([_0x5dd74e,_0x369ae6])=>{if(_0x5dd74e===_0x369ae6)return''+_0x5dd74e;return _0x5dd74e+'-'+_0x369ae6;});_0x3565dd['push']('-\x20'+_0x5fbdc1['path']+':'+_0x208a5a[_0x36f654(0x156)](','));}else _0x3565dd[_0x36f654(0x189)]('-\x20'+_0x5fbdc1['path']+':*');}}_0x3565dd['push'](''),_0xa0d50[_0x36f654(0x189)](_0x3565dd[_0x36f654(0x156)]('\x0a')),_0xa0d50[_0x36f654(0x189)](_0x36f654(0x1d2));const _0x36fa76=[],_0x187b8f=[];for(const _0x103638 of _0x4d8c92){let _0x4b66d4=a0_0x27fcca[_0x36f654(0x1c1)](_0x14cf1c[_0x36f654(0x255)]['repo_path'],_0x103638[_0x36f654(0x165)]),_0x5a2185=null,_0x53bfa5=null;try{_0x5a2185=await a0_0x4dc500[_0x36f654(0x261)](_0x4b66d4,{'encoding':_0x36f654(0x253)});}catch(_0x5eaf32){const _0xffc80c=fixPathRepetition(_0x4b66d4);if(_0xffc80c)try{_0x5a2185=await a0_0x4dc500[_0x36f654(0x261)](_0xffc80c,{'encoding':_0x36f654(0x253)}),_0x4b66d4=_0xffc80c;}catch{_0x53bfa5=_0x5eaf32 instanceof Error?_0x5eaf32:new Error(String(_0x5eaf32));}else _0x53bfa5=_0x5eaf32 instanceof Error?_0x5eaf32:new Error(String(_0x5eaf32));}if(_0x5a2185!==null){const _0x502d53=_0x5a2185[_0x36f654(0x1d0)](/\r?\n/),_0x582d8f=[];if(_0x103638[_0x36f654(0x1ab)]==='*'||!Array[_0x36f654(0x209)](_0x103638[_0x36f654(0x1ab)]))for(let _0x3174a6=0x1;_0x3174a6<=_0x502d53[_0x36f654(0x270)];_0x3174a6++){const _0xeabbbf=_0x502d53[_0x3174a6-0x1];_0x582d8f[_0x36f654(0x189)](_0x3174a6+'|\x20'+_0xeabbbf);}else for(const [_0x7b7e6f,_0x414659]of _0x103638[_0x36f654(0x1ab)]){_0x582d8f[_0x36f654(0x270)]>0x0&&_0x582d8f[_0x36f654(0x189)]('');for(let _0x50735e=_0x7b7e6f;_0x50735e<=_0x414659&&_0x50735e<=_0x502d53[_0x36f654(0x270)];_0x50735e++){const _0x5af397=_0x502d53[_0x50735e-0x1];_0x582d8f[_0x36f654(0x189)](_0x50735e+'|\x20'+_0x5af397);}}_0x187b8f[_0x36f654(0x189)]({'path':_0x103638[_0x36f654(0x165)],'content':_0x582d8f['join']('\x0a')});}else _0x36fa76[_0x36f654(0x189)](_0x36f654(0x215)+_0x103638[_0x36f654(0x165)]+_0x36f654(0x1f3)+(_0x53bfa5?.['message']||_0x36f654(0x20f))+_0x36f654(0x1f0));}try{const _0x2bab0f=await compactFileContexts(_0x187b8f,_0x14cf1c[_0x36f654(0x255)][_0x36f654(0x182)],MORPH_API_KEY,MORPH_API_URL);for(const _0x526760 of _0x2bab0f){_0x36fa76[_0x36f654(0x189)](_0x36f654(0x215)+_0x526760[_0x36f654(0x165)]+_0x36f654(0x187)+_0x526760['content']+_0x36f654(0x1f0));}}catch(_0x13ebbe){logger[_0x36f654(0x1ac)](_0x36f654(0x227),'compaction_failed',{'error':_0x13ebbe instanceof Error?_0x13ebbe[_0x36f654(0x208)]:String(_0x13ebbe),'files_count':_0x187b8f[_0x36f654(0x270)]});for(const _0x23a705 of _0x187b8f){_0x36fa76[_0x36f654(0x189)](_0x36f654(0x215)+_0x23a705[_0x36f654(0x165)]+_0x36f654(0x187)+_0x23a705[_0x36f654(0x17b)]+_0x36f654(0x1f0));}}_0xa0d50[_0x36f654(0x189)](_0x36fa76[_0x36f654(0x156)]('\x0a\x0a')),_0x233d6f=_0xa0d50[_0x36f654(0x156)]('\x0a');const _0x4efe1a=_0x4b2dd3['errors']?.['filter'](_0x53cd09=>_0x53cd09[_0x36f654(0x208)]?.[_0x36f654(0x1ba)](_0x36f654(0x1c7)))||[];if(_0x4efe1a['length']>0x0){const _0x411446=_0x4efe1a[_0x36f654(0x190)](_0x5c9bbc=>_0x5c9bbc['message'])['join'](';\x20');reportMorphError({'error_message':_0x411446,'error_type':_0x36f654(0x1f2),'context':{'tool':_0x36f654(0x163),'repo_path':_0x14cf1c[_0x36f654(0x255)][_0x36f654(0x226)],'query':_0x14cf1c[_0x36f654(0x255)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x36f654(0x16f),'error_count':_0x4efe1a[_0x36f654(0x270)],'is_timeout':![],'timings':_0x4b2dd3[_0x36f654(0x24a)],'files_attempted':_0x4d8c92['map'](_0x5bfb70=>({'path':_0x5bfb70[_0x36f654(0x165)],'lines':_0x5bfb70[_0x36f654(0x1ab)]})),'tool_calls':_0x1fd9e8(_0x4b2dd3['messages']),'messages':_0x4b2dd3[_0x36f654(0x1af)]?.['map'](_0x2902f7=>({'role':_0x2902f7['role'],'content':_0x2902f7[_0x36f654(0x17b)],..._0x2902f7[_0x36f654(0x179)]?{'tool_calls':_0x2902f7[_0x36f654(0x179)][_0x36f654(0x270)]}:{},..._0x2902f7[_0x36f654(0x271)]?{'tool_call_id':_0x2902f7[_0x36f654(0x271)]}:{}})),'request_content':{'query':_0x14cf1c[_0x36f654(0x255)]['search_string'],'repo_path':_0x14cf1c[_0x36f654(0x255)][_0x36f654(0x226)],'repoRoot':a0_0x27fcca[_0x36f654(0x1c1)](_0x14cf1c[_0x36f654(0x255)][_0x36f654(0x226)]),'model':'morph-warp-grep-v2.1'}},'source':_0x36f654(0x192)})[_0x36f654(0x20c)](()=>{});}}else{if(_0x4b2dd3[_0x36f654(0x173)]===_0x36f654(0x1e7)&&_0x4b2dd3[_0x36f654(0x1c2)]['length']>0x0){const _0x3817e2=_0x4b2dd3[_0x36f654(0x1c2)][_0x36f654(0x190)](_0x4b8f5d=>_0x4b8f5d[_0x36f654(0x208)])['join'](';\x20');_0x233d6f=_0x36f654(0x26b)+_0x3817e2;const _0x163eeb=_0x3817e2[_0x36f654(0x1ca)]()['includes'](_0x36f654(0x20d))||_0x3817e2[_0x36f654(0x1ca)]()[_0x36f654(0x184)](_0x36f654(0x241))||_0x3817e2['toLowerCase']()['includes'](_0x36f654(0x260)),_0x4f213e=_0x4b2dd3[_0x36f654(0x266)]?.[_0x36f654(0x249)]?.[_0x36f654(0x24f)],_0x30833e=_0x4b2dd3[_0x36f654(0x1c2)][0x0];reportMorphError({'error_message':_0x3817e2,'error_type':_0x163eeb?_0x36f654(0x1c0):_0x30833e?.['constructor']?.[_0x36f654(0x25e)]||'WarpGrepError','context':{'tool':'codebase_search','repo_path':_0x14cf1c[_0x36f654(0x255)][_0x36f654(0x226)],'query':_0x14cf1c[_0x36f654(0x255)][_0x36f654(0x182)],'model':_0x36f654(0x25f),'termination_reason':_0x4b2dd3[_0x36f654(0x173)],'error_count':_0x4b2dd3[_0x36f654(0x1c2)][_0x36f654(0x270)],'is_timeout':_0x163eeb,'timings':_0x4b2dd3['timings'],'files_attempted':_0x4f213e?.[_0x36f654(0x190)](_0x340fc0=>({'path':_0x340fc0[_0x36f654(0x165)],'lines':_0x340fc0[_0x36f654(0x1ab)]})),'tool_calls':_0x1fd9e8(_0x4b2dd3['messages']),'messages':_0x4b2dd3[_0x36f654(0x1af)]?.[_0x36f654(0x190)](_0x38e507=>({'role':_0x38e507[_0x36f654(0x268)],'content':_0x38e507[_0x36f654(0x17b)],..._0x38e507[_0x36f654(0x179)]?{'tool_calls':_0x38e507[_0x36f654(0x179)][_0x36f654(0x270)]}:{},..._0x38e507[_0x36f654(0x271)]?{'tool_call_id':_0x38e507[_0x36f654(0x271)]}:{}})),'request_content':{'query':_0x14cf1c[_0x36f654(0x255)][_0x36f654(0x182)],'repo_path':_0x14cf1c[_0x36f654(0x255)]['repo_path'],'repoRoot':a0_0x27fcca[_0x36f654(0x1c1)](_0x14cf1c[_0x36f654(0x255)][_0x36f654(0x226)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x30833e?.[_0x36f654(0x1c9)]||undefined,'source':_0x36f654(0x192)})[_0x36f654(0x20c)](()=>{});}else _0x233d6f='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0x36f654(0x1a8),'text':_0x233d6f}]};}catch(_0xa97157){const _0x4032cf=handleMorphAPIError(_0xa97157);if(_0x4032cf)return logger['error'](_0x36f654(0x227),_0x36f654(0x1a9),{'tool':_0x36f654(0x163),'error':_0x36f654(0x26e),'latency_ms':Date['now']()-_0x64da5a}),_0x4032cf;const _0x1f72ef=_0xa97157 instanceof Error?_0xa97157[_0x36f654(0x208)]:String(_0xa97157);logger[_0x36f654(0x17f)]('MCP',_0x36f654(0x1a9),{'tool':_0x36f654(0x163),'error':_0x1f72ef,'repo_path':_0x14cf1c[_0x36f654(0x255)]['repo_path'],'query':_0x14cf1c[_0x36f654(0x255)]['search_string'],'latency_ms':Date[_0x36f654(0x1db)]()-_0x64da5a});const _0x2d8f2b=_0x1f72ef[_0x36f654(0x1ca)]()[_0x36f654(0x184)](_0x36f654(0x20d))||_0x1f72ef[_0x36f654(0x1ca)]()[_0x36f654(0x184)](_0x36f654(0x241))||_0x1f72ef['toLowerCase']()[_0x36f654(0x184)]('etimedout')||_0xa97157 instanceof Error&&_0xa97157[_0x36f654(0x25e)]===_0x36f654(0x1c0);return reportMorphError({'error_message':_0x1f72ef,'error_type':_0x2d8f2b?'TimeoutError':_0xa97157 instanceof Error?_0xa97157[_0x36f654(0x14b)]['name']:_0x36f654(0x201),'context':{'tool':_0x36f654(0x163),'repo_path':_0x14cf1c[_0x36f654(0x255)][_0x36f654(0x226)],'query':_0x14cf1c[_0x36f654(0x255)][_0x36f654(0x182)],'model':_0x36f654(0x25f),'is_timeout':_0x2d8f2b,'exception_phase':_0x36f654(0x145),'request_content':{'query':_0x14cf1c[_0x36f654(0x255)][_0x36f654(0x182)],'repo_path':_0x14cf1c[_0x36f654(0x255)][_0x36f654(0x226)],'repoRoot':a0_0x27fcca[_0x36f654(0x1c1)](_0x14cf1c[_0x36f654(0x255)][_0x36f654(0x226)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0xa97157 instanceof Error?_0xa97157[_0x36f654(0x1c9)]:undefined,'source':_0x36f654(0x192)})['catch'](()=>{}),{'content':[{'type':_0x36f654(0x1a8),'text':_0x36f654(0x1d7)+_0x1f72ef}],'isError':![]};}}case TOOL_NAMES['GITHUB_CODEBASE_SEARCH']:{const _0x474f1f=WarpGrepGitHubArgsSchema[_0x36f654(0x167)](_0x431357);if(!_0x474f1f['success'])return{'content':[{'type':_0x36f654(0x1a8),'text':'Invalid\x20arguments:\x20'+_0x474f1f['error']}],'isError':!![]};const _0x11fa01=_0x474f1f[_0x36f654(0x255)]['github_url']||_0x474f1f['data'][_0x36f654(0x257)];if(!_0x11fa01)return{'content':[{'type':_0x36f654(0x1a8),'text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x5821e9=MORPH_API_KEY;if(!_0x5821e9)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0xe18c2b=Date[_0x36f654(0x1db)]();logger[_0x36f654(0x14c)]('MCP',_0x36f654(0x20a),{'identifier':_0x11fa01,'query':_0x474f1f[_0x36f654(0x255)][_0x36f654(0x182)],'branch':_0x474f1f[_0x36f654(0x255)][_0x36f654(0x1c6)]});try{const _0x1f3515=new WarpGrepClient({'morphApiKey':_0x5821e9,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x5d2254=await _0x1f3515[_0x36f654(0x15e)]({'searchTerm':_0x474f1f[_0x36f654(0x255)]['search_string'],'github':_0x11fa01,'branch':_0x474f1f[_0x36f654(0x255)][_0x36f654(0x1c6)]}),_0x3ff45e=Date[_0x36f654(0x1db)]()-_0xe18c2b;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x3ff45e+_0x36f654(0x254)+_0x5d2254[_0x36f654(0x1b2)]);const _0x22daca=formatResult(_0x5d2254);return{'content':[{'type':'text','text':_0x22daca}]};}catch(_0x4311d4){const _0x42ec38=handleMorphAPIError(_0x4311d4);if(_0x42ec38)return _0x42ec38;const _0x5c89ef=Date[_0x36f654(0x1db)]()-_0xe18c2b,_0x537f1c=_0x4311d4 instanceof Error?_0x4311d4[_0x36f654(0x208)]:String(_0x4311d4);return logMcpStderr(_0x36f654(0x1f9)+_0x5c89ef+_0x36f654(0x21f),_0x537f1c),reportMorphError({'error_message':_0x537f1c,'error_type':_0x4311d4 instanceof Error?_0x4311d4[_0x36f654(0x14b)][_0x36f654(0x25e)]:_0x36f654(0x201),'context':{'tool':_0x36f654(0x251),'github_url':_0x11fa01,'search_string':_0x474f1f['data'][_0x36f654(0x182)],'branch':_0x474f1f['data'][_0x36f654(0x1c6)]},'stack_trace':_0x4311d4 instanceof Error?_0x4311d4[_0x36f654(0x1c9)]:undefined,'source':_0x36f654(0x192),'tool':'github_codebase_search','latency_ms':_0x5c89ef})[_0x36f654(0x20c)](()=>{}),{'content':[{'type':_0x36f654(0x1a8),'text':_0x36f654(0x18f)+_0x537f1c}],'isError':![]};}}default:throw new Error(_0x36f654(0x1ed)+_0x33cf74);}}catch(_0x150f2b){const _0x48f2a4=_0x150f2b instanceof Error?_0x150f2b['message']:String(_0x150f2b);return reportMorphError({'error_message':_0x48f2a4,'error_type':_0x150f2b instanceof Error?_0x150f2b['constructor'][_0x36f654(0x25e)]:_0x36f654(0x201),'context':{'tool':_0x33cf74,'arguments':_0x431357?JSON[_0x36f654(0x228)](_0x431357)[_0x36f654(0x1cd)](0x0,0x1f4):undefined,'mcp_server_version':_0x36f654(0x1cf)},'stack_trace':_0x150f2b instanceof Error?_0x150f2b[_0x36f654(0x1c9)]:undefined,'source':_0x36f654(0x192)})[_0x36f654(0x20c)](()=>{}),{'content':[{'type':_0x36f654(0x1a8),'text':_0x36f654(0x26b)+_0x48f2a4}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x59a480){const _0x5c506c=a0_0x56a8fe,_0x5034e3=await getValidRootDirectories(_0x59a480);if(_0x5034e3[_0x5c506c(0x270)]>0x0)allowedDirectories=[..._0x5034e3],logMcpStderr(_0x5c506c(0x219)+_0x5034e3['length']+'\x20valid\x20directories');else{logMcpStderr(_0x5c506c(0x166));if(ENABLE_WORKSPACE_MODE)try{const _0x46bc26=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x46bc26&&(allowedDirectories=[_0x46bc26],logMcpStderr(_0x5c506c(0x172)+_0x46bc26));}catch(_0x383dcd){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x383dcd);}}}server[a0_0x56a8fe(0x1c5)](RootsListChangedNotificationSchema,async()=>{const _0x68fc37=a0_0x56a8fe;try{const _0x1cac3d=await server[_0x68fc37(0x199)]();_0x1cac3d&&_0x68fc37(0x1cb)in _0x1cac3d&&await updateAllowedDirectoriesFromRoots(_0x1cac3d[_0x68fc37(0x1cb)]);}catch(_0x413cd5){logMcpStderr(_0x68fc37(0x1fc),_0x413cd5 instanceof Error?_0x413cd5[_0x68fc37(0x208)]:String(_0x413cd5));}}),server[a0_0x56a8fe(0x1dd)]=async()=>{const _0x18c4ae=a0_0x56a8fe,_0x124320=server['getClientCapabilities']();if(_0x124320?.[_0x18c4ae(0x1cb)])try{const _0x4b9d3e=await server['listRoots']();_0x4b9d3e&&_0x18c4ae(0x1cb)in _0x4b9d3e?await updateAllowedDirectoriesFromRoots(_0x4b9d3e[_0x18c4ae(0x1cb)]):logMcpStderr(_0x18c4ae(0x22e));}catch(_0x207b77){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x207b77 instanceof Error?_0x207b77[_0x18c4ae(0x208)]:String(_0x207b77));}else{if(allowedDirectories['length']>0x0)logMcpStderr(_0x18c4ae(0x22f),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x18c4ae(0x164));else throw new Error(_0x18c4ae(0x16a));}}};async function runServer(){const _0x431daa=a0_0x56a8fe,_0x159eed=new StdioServerTransport();await server[_0x431daa(0x224)](_0x159eed),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x431daa(0x270)]===0x0&&logMcpStderr(_0x431daa(0x1dc));}runServer()[a0_0x56a8fe(0x20c)](_0x1a5b3c=>{const _0x23ab40=a0_0x56a8fe;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x1a5b3c),process[_0x23ab40(0x1a0)](0x1);});
2
+ const a0_0x780d31=a0_0x21ff;(function(_0x3c3fc9,_0x335604){const _0x10b2a3=a0_0x21ff,_0x26caab=_0x3c3fc9();while(!![]){try{const _0x301a10=parseInt(_0x10b2a3(0x9a))/0x1+parseInt(_0x10b2a3(0x1a6))/0x2*(-parseInt(_0x10b2a3(0x126))/0x3)+-parseInt(_0x10b2a3(0x127))/0x4*(-parseInt(_0x10b2a3(0xfa))/0x5)+-parseInt(_0x10b2a3(0x14f))/0x6+parseInt(_0x10b2a3(0xfd))/0x7*(parseInt(_0x10b2a3(0x8a))/0x8)+-parseInt(_0x10b2a3(0x1ad))/0x9+-parseInt(_0x10b2a3(0x172))/0xa*(-parseInt(_0x10b2a3(0x1b6))/0xb);if(_0x301a10===_0x335604)break;else _0x26caab['push'](_0x26caab['shift']());}catch(_0x1e7e27){_0x26caab['push'](_0x26caab['shift']());}}}(a0_0x4b65,0xc7421));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';function a0_0x4b65(){const _0x26027c=[',\x20modified\x20','dryRun','path_validation_resolved','slice','map','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','Morph\x20FastApply\x20failed\x20without\x20error\x20message','Tool\x20\x22','isDirectory','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','github_search_start','grep_search','text','4340hawnzp','optional','Created\x20File','debug','-\x20Grepped\x20\x27','added\x20','\x22>\x0aError\x20reading\x20file:\x20','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','data','Error:\x20','GITHUB_CODEBASE_SEARCH','false','stat','Workspace\x20mode\x20enabled:\x20Using\x20','<file\x20path=\x22','\x0a</file>','lines','requiresApiKey','Relevant\x20context\x20found:','Morph\x20Edit\x20Preview','completed','Unknown\x20tool:\x20','string','utf-8','.vscode','access','\x27\x20in\x20`','realpath','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','.cursor','linesAdded','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','LocalRipgrepProvider','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','some','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','morph-v3-large','MORPH_API_URL','\x20\x20morph-mcp','oninitialized','command','.\x20Changes:\x20','RipgrepError','ENABLE_WORKSPACE_MODE','log','package.json','split','metadata','file_read_failed','enum','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','7466xPuDyj','search_string','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','timeout','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','WarpGrep\x20sub-tool\x20errors:\x20','4903974UlWkeY','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','PWD','DISABLED_TOOLS','The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES.**\x20Fast,\x20accurate,\x20and\x20prevents\x20context\x20pollution.\x20Especially\x20useful\x20when\x20making\x20multiple\x20edits\x20in\x20one\x20file:\x20describe\x20all\x20changes\x20in\x20a\x20single\x20call\x20and\x20the\x20semantic\x20edit\x20applies\x20them\x20all\x20at\x20once,\x20more\x20accurately\x20and\x20faster\x20than\x20sequential\x20edits.\x20Unlike\x20search-and-replace\x20or\x20patch\x20edits\x20which\x20do\x20narrow\x20edits\x20one\x20at\x20a\x20time,\x20with\x20this\x20tool\x20you\x20should\x20do\x20all\x20your\x20code\x20changes\x20in\x20one\x20go\x20separated\x20by\x20`//\x20...\x20existing\x20code\x20...`\x20markers.\x20This\x20saves\x20tokens\x20and\x20improves\x20performance\x20because\x20you\x20do\x20not\x20need\x20to\x20reread\x20files\x20before\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a','tool_call_complete','github_codebase_search','Max\x20results\x20to\x20return','1133PLmuta','glob','8irDljl','tool','sk-','content','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','compaction_failed','\x20valid\x20directories','Repository\x20identifier','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','provider_created','[github_codebase_search]\x20Done\x20in\x20','resolve','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','tool_call_error','tsconfig.json','871110NdAOEw','-\x20Read\x20file\x20`','.\x20Path:\x20','\x20disabled\x20via\x20DISABLED_TOOLS','context','Specific\x20commit\x20hash\x20to\x20search','Fallback:\x20Using\x20workspace\x20root\x20','edit','Example\x20format:\x0a','function','stack','role','instruction','../package.json','pattern','env','Preview\x20changes\x20without\x20applying\x20them.','MORPH_API_KEY','unknown','roots','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','--version','setRequestHandler','indexOf','ms:','TimeoutError','Error\x20running\x20fast\x20context\x20search:\x20','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','runWarpGrep_call','Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a','go.mod','Bearer\x20','readFile','user','API\x20error\x20(auth/rate-limit)','listRoots','https://morphllm.com/api/error-report','array','now','min','ms.\x20Success:\x20','warn','parse','morph-','constructor','homedir','GitHub\x20search\x20failed:\x20','morph-warp-grep-v2.1','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','linesModified','description','setNotificationHandler','MCP','code_edit','messages','inputSchema','read','composer.json','has','glob\x20\x27','-\x20Listed\x20directory\x20`','0.2.0','message','owner_repo','trim','\x22>\x0a','stringify','PathError','Disabled\x20tools:\x20','timings','Parameters:\x0a','list_directory\x20','path','BinaryFile','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','grep\x20\x27','changes','Parent\x20directory\x20does\x20not\x20exist:\x20','warp_grep_complete','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','size','api_request_start','params','push','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','catch','status','Warning:\x20','github_url','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','boolean','SymlinkError','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','morph-mcp','15Txbxfz','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','10010791LUEPYa','RipgrepNotAvailable','includes','WORKSPACE_ROOT','arguments','error','dirname','describe','terminated','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Rules:\x0a','code','FileReadError','cwd','response','--api-key=','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','file_path','exit','argv','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','pyproject.toml','toLowerCase','files','linesRemoved','safeParse','\x20chars)','File\x20read\x20error:','Failed\x20to\x20request\x20roots\x20from\x20client:','grep','assistant','morph-v3-fast','branch','etimedout','length','`\x20in\x20`','SubToolError','substring','CODEBASE_SEARCH','codebase_search','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','957jKkglm','2143352FIXWLu','UnknownError','warp_grep_start','Unknown\x20error','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','finish','timed\x20out','repo_path','every','Invalid\x20arguments:\x20','\x0a...\x20(truncated,\x20total:\x20','\x20error(s)','filePath','Warning:\x20Workspace\x20fallback\x20failed:\x20','join','❌\x20Morph\x20Edit\x20Failed:\x20','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','list_directory','all','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','\x20(new\x20file)','name','api-key','Failed\x20to\x20read\x20file:\x20','ToolException','success','completionId','edit_file','filter','errors','tool_call_id','MORPH_WARP_GREP_TIMEOUT','tool_calls','path_validation_failed','file_read_complete','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','.git','sep','Error\x20accessing\x20directory\x20','version','8409390MLfLaY','application/json','ReadError','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','\x20-\x20','number','instructions','ENOENT','@morphllm/morphmcp\x20','basename','object','startsWith','path_validation_start','terminationReason','node_modules','mcp-filesystem','Applied','isArray','[github_codebase_search]\x20Failed\x20in\x20','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','read\x20','searchGitHub'];a0_0x4b65=function(){return _0x26027c;};return a0_0x4b65();}import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x510943 from'fs/promises';import a0_0x29b6ce from'path';import a0_0x189ace from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';function a0_0x21ff(_0x327ae6,_0x1dc59b){_0x327ae6=_0x327ae6-0x8a;const _0x4b6549=a0_0x4b65();let _0x21ff81=_0x4b6549[_0x327ae6];return _0x21ff81;}import{logger}from'./logger.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x6059d7 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x415738){const _0x547d84=a0_0x21ff,_0x311d33=_0x415738[_0x547d84(0x1a0)](a0_0x29b6ce[_0x547d84(0x14c)])['filter'](Boolean);if(_0x311d33[_0x547d84(0x11f)]<0x2)return null;for(let _0x39758d=Math['floor'](_0x311d33[_0x547d84(0x11f)]/0x2);_0x39758d>=0x1;_0x39758d--){for(let _0x28ff57=0x0;_0x28ff57<=_0x311d33[_0x547d84(0x11f)]-0x2*_0x39758d;_0x28ff57++){const _0x124671=_0x311d33[_0x547d84(0x168)](_0x28ff57,_0x28ff57+_0x39758d),_0x60141b=_0x311d33[_0x547d84(0x168)](_0x28ff57+_0x39758d,_0x28ff57+0x2*_0x39758d);if(_0x124671[_0x547d84(0x12f)]((_0x14e409,_0x2f8c75)=>_0x14e409===_0x60141b[_0x2f8c75])){const _0x3f1ef3=[..._0x311d33[_0x547d84(0x168)](0x0,_0x28ff57),..._0x311d33[_0x547d84(0x168)](_0x28ff57+_0x39758d)];return a0_0x29b6ce[_0x547d84(0x14c)]+_0x3f1ef3[_0x547d84(0x135)](a0_0x29b6ce[_0x547d84(0x14c)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x1e3c9c=a0_0x21ff;try{const _0x1b03e3=require(_0x1e3c9c(0xa7));return _0x1b03e3[_0x1e3c9c(0x14e)]??_0x1e3c9c(0xac);}catch(_0x59e197){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x59e197),_0x1e3c9c(0xac);}}function printHelp(){const _0x3b64fd=a0_0x21ff;console[_0x3b64fd(0x19e)](_0x3b64fd(0x157)+getPackageVersion()),console['log'](_0x3b64fd(0xf0)),console['log']('\x0aOptions:'),console[_0x3b64fd(0x19e)](_0x3b64fd(0x191)),console['log'](_0x3b64fd(0x97)),console['log'](_0x3b64fd(0x1a5)),console[_0x3b64fd(0x19e)]('\x0aExamples:'),console[_0x3b64fd(0x19e)](_0x3b64fd(0x198)),console[_0x3b64fd(0x19e)](_0x3b64fd(0x106));}const cliArgs=process[a0_0x780d31(0x110)][a0_0x780d31(0x168)](0x2),VERSION_FLAGS=new Set([a0_0x780d31(0xaf),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs['some'](_0x5a2bff=>VERSION_FLAGS[a0_0x780d31(0xd6)](_0x5a2bff))&&(console[a0_0x780d31(0x19e)](a0_0x780d31(0x157)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x780d31(0x194)](_0x3f1435=>HELP_FLAGS[a0_0x780d31(0xd6)](_0x3f1435))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x2b3331){const _0x104c46=a0_0x780d31;for(let _0x4af0a1=0x0;_0x4af0a1<cliArgs[_0x104c46(0x11f)];_0x4af0a1++){const _0x21dcfc=cliArgs[_0x4af0a1];if(_0x21dcfc[_0x104c46(0x15a)]('--'+_0x2b3331+'='))return _0x21dcfc[_0x104c46(0x168)](('--'+_0x2b3331+'=')['length']);if(_0x21dcfc==='--'+_0x2b3331&&_0x4af0a1+0x1<cliArgs[_0x104c46(0x11f)])return cliArgs[_0x4af0a1+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x780d31(0x11f)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x780d31(0xd6)](arg)||HELP_FLAGS[a0_0x780d31(0xd6)](arg))continue;if(arg['startsWith'](a0_0x780d31(0x10c)))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x780d31(0xef)](arg);}const WORKSPACE_ROOT=process[a0_0x780d31(0xa9)][a0_0x780d31(0x100)]||process[a0_0x780d31(0xa9)][a0_0x780d31(0x1af)]||process[a0_0x780d31(0x10a)](),ENABLE_WORKSPACE_MODE=process[a0_0x780d31(0xa9)][a0_0x780d31(0x19d)]!==a0_0x780d31(0x17d),MORPH_API_KEY=getCliArg(a0_0x780d31(0x13d))??process[a0_0x780d31(0xa9)][a0_0x780d31(0xab)],MORPH_API_URL=process[a0_0x780d31(0xa9)][a0_0x780d31(0x197)],MORPH_LARGE_APPLY=process[a0_0x780d31(0xa9)]['MORPH_LARGE_APPLY']!==a0_0x780d31(0x17d),MORPH_WARP_GREP_TIMEOUT=process['env']['MORPH_WARP_GREP_TIMEOUT']?parseInt(process['env'][a0_0x780d31(0x146)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x780d31(0xa9)][a0_0x780d31(0x1b0)]?new Set(process[a0_0x780d31(0xa9)]['DISABLED_TOOLS'][a0_0x780d31(0x1a0)](',')['map'](_0xe437fc=>_0xe437fc[a0_0x780d31(0xdc)]())[a0_0x780d31(0x143)](_0x515a5d=>_0x515a5d['length']>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x780d31(0xec)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x780d31(0xd6)](tool)&&console[a0_0x780d31(0x102)](a0_0x780d31(0x179)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console['error'](a0_0x780d31(0xe0)+[...DISABLED_TOOLS][a0_0x780d31(0x135)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x780d31(0x15a)](a0_0x780d31(0x8c))&&!MORPH_API_KEY[a0_0x780d31(0x15a)]('morph-')&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x482f38){const _0x445411=a0_0x780d31;try{await a0_0x6059d7['post'](_0x445411(0xbe),{..._0x482f38,'timestamp':new Date()['toISOString'](),'source':_0x482f38['source']||_0x445411(0x15e),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x482f38[_0x445411(0x9e)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x445411(0x150),'Authorization':_0x445411(0xb9)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x1b855e,_0x5024e8){const _0x365706=a0_0x780d31;if(_0x1b855e&&typeof _0x1b855e===_0x365706(0x159)&&_0x365706(0xf2)in _0x1b855e)return _0x1b855e['status'];if(_0x1b855e&&typeof _0x1b855e==='object'&&_0x365706(0x10b)in _0x1b855e)return _0x1b855e['response']?.[_0x365706(0xf2)];const _0x900201=_0x5024e8['match'](/\b(401|429)\b/);return _0x900201?parseInt(_0x900201[0x1],0xa):null;}function handleMorphAPIError(_0x1ffaf4){const _0x595eee=a0_0x780d31,_0x1cee01=_0x1ffaf4 instanceof Error?_0x1ffaf4['message']:String(_0x1ffaf4),_0x52e173=extractStatusCode(_0x1ffaf4,_0x1cee01);switch(_0x52e173){case 0x191:return{'content':[{'type':_0x595eee(0x171),'text':'Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.'}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x595eee(0x171),'text':_0x595eee(0xb5)}],'isError':!![]};default:return null;}}args[a0_0x780d31(0x11f)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x780d31(0xae)),logMcpStderr(a0_0x780d31(0x93)),logMcpStderr(a0_0x780d31(0x195)),logMcpStderr(a0_0x780d31(0xfc)),logMcpStderr(a0_0x780d31(0x10d)),logMcpStderr(a0_0x780d31(0x16e)));function normalizePath(_0x5aac39){return a0_0x29b6ce['normalize'](_0x5aac39);}function expandHome(_0x5af627){const _0x317bee=a0_0x780d31;if(_0x5af627['startsWith']('~/')||_0x5af627==='~')return a0_0x29b6ce['join'](a0_0x189ace[_0x317bee(0xc7)](),_0x5af627[_0x317bee(0x168)](0x1));return _0x5af627;}let allowedDirectories=await Promise['all'](args[a0_0x780d31(0x169)](async _0x28f92e=>{const _0x289adc=a0_0x780d31,_0x5665f3=expandHome(_0x28f92e),_0x3ff58d=a0_0x29b6ce[_0x289adc(0x96)](_0x5665f3);try{const _0x1f9cfc=await a0_0x510943[_0x289adc(0x18d)](_0x3ff58d);return normalizePath(_0x1f9cfc);}catch(_0x7b480c){return normalizePath(_0x3ff58d);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),logMcpStderr(a0_0x780d31(0x17f)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x42fda0){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x42fda0);}async function detectWorkspaceRoot(_0xf082aa){const _0x12836b=a0_0x780d31;let _0x4e31e1=a0_0x29b6ce[_0x12836b(0x96)](_0xf082aa);const _0x55f921=[_0x12836b(0x14b),_0x12836b(0x18a),_0x12836b(0x19f),'Cargo.toml',_0x12836b(0x112),_0x12836b(0xb8),_0x12836b(0x18f),_0x12836b(0x99),_0x12836b(0xd5)];while(_0x4e31e1!==a0_0x29b6ce[_0x12836b(0x103)](_0x4e31e1)){for(const _0x4bfbb1 of _0x55f921){const _0x13def6=a0_0x29b6ce[_0x12836b(0x135)](_0x4e31e1,_0x4bfbb1);try{return await a0_0x510943[_0x12836b(0x18b)](_0x13def6),normalizePath(_0x4e31e1);}catch{}}_0x4e31e1=a0_0x29b6ce['dirname'](_0x4e31e1);}return normalizePath(_0xf082aa);}await Promise[a0_0x780d31(0x139)](args[a0_0x780d31(0x169)](async _0x3d4863=>{const _0x124057=a0_0x780d31;try{const _0x3912ae=await a0_0x510943[_0x124057(0x17e)](expandHome(_0x3d4863));!_0x3912ae[_0x124057(0x16d)]()&&(logMcpStderr(_0x124057(0x17b)+_0x3d4863+'\x20is\x20not\x20a\x20directory'),process[_0x124057(0x10f)](0x1));}catch(_0x31774c){logMcpStderr(_0x124057(0x14d)+_0x3d4863+':',_0x31774c),process[_0x124057(0x10f)](0x1);}}));async function validatePath(_0x472605){const _0x388273=a0_0x780d31,_0x5cd5ab=expandHome(_0x472605),_0xf5b216=a0_0x29b6ce[_0x388273(0x96)](_0x5cd5ab);logger[_0x388273(0x175)](_0x388273(0xd0),_0x388273(0x15b),{'raw_path':_0x472605,'absolute':_0xf5b216});try{const _0x239dc2=await a0_0x510943[_0x388273(0x18d)](_0xf5b216);return logger[_0x388273(0x175)]('MCP',_0x388273(0x167),{'resolved':_0x239dc2,'symlink':_0x239dc2!==_0xf5b216}),_0x239dc2;}catch(_0x574e3f){if(_0x574e3f[_0x388273(0x108)]===_0x388273(0x156)){const _0x18d913=a0_0x29b6ce[_0x388273(0x103)](_0xf5b216);try{const _0x39f17d=await a0_0x510943[_0x388273(0x18d)](_0x18d913),_0x2bc996=a0_0x29b6ce[_0x388273(0x135)](_0x39f17d,a0_0x29b6ce[_0x388273(0x158)](_0xf5b216));return logger[_0x388273(0x175)](_0x388273(0xd0),_0x388273(0x167),{'resolved':_0x2bc996,'new_file':!![]}),_0x2bc996;}catch{logger[_0x388273(0x102)](_0x388273(0xd0),_0x388273(0x148),{'raw_path':_0x472605,'error':_0x388273(0xe9)+_0x18d913});throw new Error(_0x388273(0xe9)+_0x18d913);}}logger['error'](_0x388273(0xd0),_0x388273(0x148),{'raw_path':_0x472605,'error':_0x574e3f[_0x388273(0xda)]});throw _0x574e3f;}}const MorphEditFileArgsSchema=z[a0_0x780d31(0x159)]({'path':z[a0_0x780d31(0x188)](),'code_edit':z[a0_0x780d31(0x188)]()[a0_0x780d31(0x104)](a0_0x780d31(0x152)),'instruction':z[a0_0x780d31(0x188)]()[a0_0x780d31(0x104)](a0_0x780d31(0x193)),'dryRun':z[a0_0x780d31(0xf6)]()['default'](![])[a0_0x780d31(0x104)](a0_0x780d31(0xaa))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x780d31(0x92),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x780d31(0x188)]()[a0_0x780d31(0x104)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x780d31(0x188)]()[a0_0x780d31(0x104)](a0_0x780d31(0x1b1)),'search_type':z[a0_0x780d31(0x1a3)](['default',a0_0x780d31(0x15d)])[a0_0x780d31(0x173)]()['describe']('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z[a0_0x780d31(0x159)]({'search_string':z[a0_0x780d31(0x188)]()[a0_0x780d31(0x104)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x780d31(0x188)]()[a0_0x780d31(0x173)]()['describe']('GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'owner_repo':z[a0_0x780d31(0x188)]()['optional']()[a0_0x780d31(0x104)](a0_0x780d31(0x14a)),'branch':z['string']()[a0_0x780d31(0x173)]()[a0_0x780d31(0x104)](a0_0x780d31(0xeb))}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0x780d31(0x188)]()[a0_0x780d31(0x104)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x780d31(0x104)](a0_0x780d31(0x91)),'branch':z['string']()[a0_0x780d31(0x173)]()[a0_0x780d31(0x104)](a0_0x780d31(0x111)),'commitHash':z['string']()[a0_0x780d31(0x173)]()[a0_0x780d31(0x104)](a0_0x780d31(0x9f)),'targetDirectories':z[a0_0x780d31(0xbf)](z[a0_0x780d31(0x188)]())['default']([])[a0_0x780d31(0x104)](a0_0x780d31(0xcc)),'limit':z[a0_0x780d31(0x154)]()[a0_0x780d31(0x173)]()['default'](0xa)[a0_0x780d31(0x104)](a0_0x780d31(0x1b5))}),server=new Server({'name':a0_0x780d31(0xf9),'version':a0_0x780d31(0xd9)},{'capabilities':{'tools':{}}});server[a0_0x780d31(0xb0)](ListToolsRequestSchema,async()=>{const _0x1c9b22=a0_0x780d31,_0x5b1105=[{'name':TOOL_NAMES['EDIT_FILE'],'description':_0x1c9b22(0x1b2)+_0x1c9b22(0xe2)+_0x1c9b22(0xfb)+_0x1c9b22(0x162)+_0x1c9b22(0x8e)+_0x1c9b22(0xb7)+_0x1c9b22(0xa2)+_0x1c9b22(0x12b)+_0x1c9b22(0x107)+_0x1c9b22(0xf5)+'-\x20Preserve\x20exact\x20indentation\x0a'+_0x1c9b22(0x125)+_0x1c9b22(0x1ae),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x1c9b22(0x123)],'description':'A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20'+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20'+_0x1c9b22(0x1aa)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x2dd503=_0x5b1105[_0x1c9b22(0x143)](_0x7c51a0=>{const _0x25fe49=_0x1c9b22;if(DISABLED_TOOLS['has'](_0x7c51a0[_0x25fe49(0x13c)]))return console[_0x25fe49(0x102)]('Tool\x20'+_0x7c51a0[_0x25fe49(0x13c)]+_0x25fe49(0x9d)),![];if(_0x25fe49(0x183)in _0x7c51a0&&_0x7c51a0[_0x25fe49(0x183)]&&!MORPH_API_KEY)return logMcpStderr(_0x25fe49(0xf3)+_0x7c51a0['name']+_0x25fe49(0x1ab)),![];return!![];});return{'tools':_0x2dd503[_0x1c9b22(0x169)](_0x144546=>({'name':_0x144546['name'],'description':_0x144546[_0x1c9b22(0xce)],'inputSchema':_0x144546[_0x1c9b22(0xd3)]}))};}),server[a0_0x780d31(0xb0)](CallToolRequestSchema,async _0x4c9b04=>{const _0x5daa89=a0_0x780d31,{name:_0x493aeb,arguments:_0x40b02f}=_0x4c9b04[_0x5daa89(0xee)],_0x267154=Date[_0x5daa89(0xc0)]();logger['debug']('MCP','tool_call_received',{'tool':_0x493aeb,'args':_0x493aeb==='edit_file'?{'path':_0x40b02f?.[_0x5daa89(0xe4)],'instruction':_0x40b02f?.[_0x5daa89(0xa6)]||_0x40b02f?.['instructions'],'dryRun':_0x40b02f?.['dryRun']}:_0x40b02f});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x5daa89(0x171),'text':_0x5daa89(0xe6)}],'isError':!![]};if(!MORPH_API_KEY['startsWith'](_0x5daa89(0x8c))&&!MORPH_API_KEY[_0x5daa89(0x15a)](_0x5daa89(0xc5)))return{'content':[{'type':_0x5daa89(0x171),'text':'Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.'}],'isError':!![]};if(DISABLED_TOOLS[_0x5daa89(0xd6)](_0x493aeb))return{'content':[{'type':_0x5daa89(0x171),'text':_0x5daa89(0x16c)+_0x493aeb+_0x5daa89(0x16a)}],'isError':![]};switch(_0x493aeb){case TOOL_NAMES['EDIT_FILE']:{let _0x5af383=_0x40b02f;if(_0x5af383&&typeof _0x5af383===_0x5daa89(0x159)){if(!(_0x5daa89(0xe4)in _0x5af383)){const _0x1dbcdb=_0x5af383['target_file']??_0x5af383[_0x5daa89(0x133)]??_0x5af383['target_filepath']??_0x5af383[_0x5daa89(0x10e)]??_0x5af383['file'];if(_0x1dbcdb)_0x5af383={..._0x5af383,'path':_0x1dbcdb};}_0x5daa89(0x155)in _0x5af383&&!('instruction'in _0x5af383)&&(_0x5af383={..._0x5af383,'instruction':_0x5af383[_0x5daa89(0x155)]});if(!(_0x5daa89(0xd1)in _0x5af383)){const _0x44675a=_0x5af383['code']??_0x5af383['new_string']??_0x5af383['content']??_0x5af383[_0x5daa89(0xa1)];if(_0x44675a)_0x5af383={..._0x5af383,'code_edit':_0x44675a};}}const _0x44e3aa=MorphEditFileArgsSchema[_0x5daa89(0x116)](_0x5af383);if(!_0x44e3aa['success'])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x44e3aa['error']);const _0x3e65c0=await validatePath(_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xe4)]);let _0x4b95f0=null,_0xed08af=!![],_0x53522d=null;try{_0x4b95f0=await a0_0x510943[_0x5daa89(0xba)](_0x3e65c0,_0x5daa89(0x189)),logger['debug'](_0x5daa89(0xd0),_0x5daa89(0x149),{'path':_0x3e65c0,'size_bytes':_0x4b95f0[_0x5daa89(0x11f)]});}catch(_0x5f1ee7){const _0x48b8cd=_0x5f1ee7[_0x5daa89(0x108)];_0x48b8cd===_0x5daa89(0x156)?(_0xed08af=![],_0x4b95f0='',logger[_0x5daa89(0x175)](_0x5daa89(0xd0),'file_read_complete',{'path':_0x3e65c0,'exists':![]})):(_0x53522d=_0x5daa89(0x13e)+(_0x48b8cd||_0x5daa89(0xac))+_0x5daa89(0x153)+(_0x5f1ee7 instanceof Error?_0x5f1ee7[_0x5daa89(0xda)]:String(_0x5f1ee7)),logger[_0x5daa89(0x102)](_0x5daa89(0xd0),_0x5daa89(0x1a2),{'path':_0x3e65c0,'error':_0x53522d}),logMcpStderr('Warning:\x20'+_0x53522d));}let _0x56d089;try{const _0x408ee8=MORPH_API_KEY;if(!_0x408ee8)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x3628f0=a0_0x29b6ce['dirname'](_0x3e65c0),_0x1ceb90=a0_0x29b6ce[_0x5daa89(0x158)](_0x3e65c0);logger[_0x5daa89(0x175)]('MCP',_0x5daa89(0xed),{'model':_0x5daa89(0x11c),'path':_0x44e3aa['data'][_0x5daa89(0xe4)],'instruction_len':_0x44e3aa[_0x5daa89(0x17a)]['instruction']['length'],'code_edit_len':_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xd1)][_0x5daa89(0x11f)],'original_code_len':_0x4b95f0?.[_0x5daa89(0x11f)]??0x0,'dry_run':_0x44e3aa[_0x5daa89(0x17a)]['dryRun']});const _0x2c3aaf=Date['now'](),_0x4ddd6b=await executeEditFile({'target_filepath':_0x1ceb90,'code_edit':_0x44e3aa['data'][_0x5daa89(0xd1)],'instruction':_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xa6)]},{'morphApiKey':_0x408ee8,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x3628f0,'autoWrite':!_0x44e3aa['data'][_0x5daa89(0x166)],'generateUdiff':![],'debug':![]}),_0x3ce31e=Date[_0x5daa89(0xc0)]()-_0x2c3aaf;_0x56d089=_0x4ddd6b[_0x5daa89(0x141)];if(!_0x4ddd6b[_0x5daa89(0x140)])throw new Error(_0x4ddd6b[_0x5daa89(0x102)]||_0x5daa89(0x16b));const _0x18ced2=_0x4ddd6b[_0x5daa89(0xe8)],_0x176986=_0x5daa89(0x177)+_0x18ced2[_0x5daa89(0x190)]+',\x20removed\x20'+_0x18ced2[_0x5daa89(0x115)]+_0x5daa89(0x165)+_0x18ced2['linesModified'];logger['debug'](_0x5daa89(0xd0),_0x5daa89(0x1b3),{'tool':_0x5daa89(0x142),'success':!![],'latency_ms':Date[_0x5daa89(0xc0)]()-_0x267154,'edit_latency_ms':_0x3ce31e,'changes':{'added':_0x18ced2[_0x5daa89(0x190)],'removed':_0x18ced2['linesRemoved'],'modified':_0x18ced2[_0x5daa89(0xcd)]},'completion_id':_0x56d089});if(_0x44e3aa['data'][_0x5daa89(0x166)])return{'content':[{'type':_0x5daa89(0x171),'text':_0x5daa89(0x185)+(_0xed08af?'':_0x5daa89(0x13b))+':\x20'+_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xa6)]+_0x5daa89(0x19b)+_0x176986+'.\x20Path:\x20'+_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xe4)]+'.'}]};return{'content':[{'type':_0x5daa89(0x171),'text':'Morph\x20Edit\x20'+(_0xed08af?_0x5daa89(0x15f):_0x5daa89(0x174))+':\x20'+_0x44e3aa['data'][_0x5daa89(0xa6)]+_0x5daa89(0x19b)+_0x176986+_0x5daa89(0x9c)+_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xe4)]+'.'}]};}catch(_0x570243){const _0x18dff3=handleMorphAPIError(_0x570243);if(_0x18dff3)return logger[_0x5daa89(0x102)](_0x5daa89(0xd0),'tool_call_error',{'tool':_0x5daa89(0x142),'error':_0x5daa89(0xbc),'latency_ms':Date['now']()-_0x267154}),_0x18dff3;const _0x1285ac=_0x570243 instanceof Error?_0x570243[_0x5daa89(0xda)]:String(_0x570243);return logger['error'](_0x5daa89(0xd0),'tool_call_error',{'tool':'edit_file','error':_0x1285ac,'path':_0x44e3aa['data'][_0x5daa89(0xe4)],'validated_path':_0x3e65c0,'latency_ms':Date[_0x5daa89(0xc0)]()-_0x267154,'stack':_0x570243 instanceof Error?_0x570243['stack']:undefined}),reportMorphError({'error_message':_0x1285ac,'error_type':_0x570243 instanceof Error?_0x570243['constructor'][_0x5daa89(0x13c)]:_0x5daa89(0x128),'context':{'tool':_0x5daa89(0x142),'completion_id':_0x56d089,'file_path':_0x44e3aa[_0x5daa89(0x17a)]['path'],'validated_path':_0x3e65c0,'instruction':_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xa6)],'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x5daa89(0x11c),'dry_run':_0x44e3aa[_0x5daa89(0x17a)]['dryRun'],'file_exists':_0xed08af,'file_read_error':_0x53522d,'file_readable':_0x4b95f0!==null,'request_content':{'path':_0x44e3aa[_0x5daa89(0x17a)]['path'],'code_edit':_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xd1)],'instruction':_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xa6)],'original_code':_0x4b95f0!==null?_0x4b95f0[_0x5daa89(0x11f)]>0xc350?_0x4b95f0[_0x5daa89(0x122)](0x0,0xc350)+_0x5daa89(0x131)+_0x4b95f0[_0x5daa89(0x11f)]+_0x5daa89(0x117):_0x4b95f0:'[could\x20not\x20read\x20file:\x20'+(_0x53522d||'unknown\x20error')+']','original_code_length':_0x4b95f0?.['length']??0x0,'model':MORPH_LARGE_APPLY?_0x5daa89(0x196):'morph-v3-fast','dry_run':_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0x166)]}},'stack_trace':_0x570243 instanceof Error?_0x570243[_0x5daa89(0xa4)]:undefined,'source':_0x5daa89(0x15e)})['catch'](()=>{}),{'content':[{'type':_0x5daa89(0x171),'text':_0x5daa89(0x136)+_0x1285ac}],'isError':!![]};}}case TOOL_NAMES['CODEBASE_SEARCH']:{const _0x2aace8=WarpGrepArgsSchema[_0x5daa89(0x116)](_0x40b02f);if(!_0x2aace8[_0x5daa89(0x140)])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x2aace8[_0x5daa89(0x102)]}],'isError':!![]};const _0x1b6100=_0x549b3d=>{const _0x38e6f8=_0x5daa89,_0x3ee2fc=[];for(const _0x4c2634 of _0x549b3d||[]){if(_0x4c2634[_0x38e6f8(0xa5)]===_0x38e6f8(0x11b)&&Array[_0x38e6f8(0x160)](_0x4c2634[_0x38e6f8(0x147)]))for(const _0x590907 of _0x4c2634[_0x38e6f8(0x147)]){try{const _0x1b9186=_0x590907[_0x38e6f8(0xa3)]?.[_0x38e6f8(0x13c)],_0x4ed852=JSON[_0x38e6f8(0xc4)](_0x590907[_0x38e6f8(0xa3)]?.[_0x38e6f8(0x101)]||'{}');if(_0x1b9186===_0x38e6f8(0x170))_0x3ee2fc[_0x38e6f8(0xef)](_0x38e6f8(0xe7)+_0x4ed852[_0x38e6f8(0xa8)]+'\x27\x20'+(_0x4ed852[_0x38e6f8(0xe4)]||'.'));else{if(_0x1b9186===_0x38e6f8(0xd4))_0x3ee2fc['push'](_0x38e6f8(0x163)+_0x4ed852[_0x38e6f8(0xe4)]);else{if(_0x1b9186===_0x38e6f8(0x138))_0x3ee2fc[_0x38e6f8(0xef)](_0x38e6f8(0xe3)+(_0x4ed852[_0x38e6f8(0x19a)]||'.'));else{if(_0x1b9186===_0x38e6f8(0x1b7))_0x3ee2fc[_0x38e6f8(0xef)](_0x38e6f8(0xd7)+_0x4ed852[_0x38e6f8(0xa8)]+'\x27\x20'+(_0x4ed852[_0x38e6f8(0xe4)]||'.'));else _0x1b9186===_0x38e6f8(0x12c)&&_0x3ee2fc[_0x38e6f8(0xef)]('finish');}}}}catch{}}}return _0x3ee2fc;},_0x2895d2=_0x5c864c=>{const _0x3968cc=_0x5daa89,_0x11e72e=[];if(!_0x5c864c||!Array['isArray'](_0x5c864c))return _0x11e72e;const _0xe50d9f=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x3968cc(0xdf),'tool':_0x3968cc(0xd4)},{'pattern':/\[READ ERROR\]/,'error_type':_0x3968cc(0x151),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x3968cc(0xe5),'tool':_0x3968cc(0xd4)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x3968cc(0x19c),'tool':_0x3968cc(0x11a)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x3968cc(0xfe),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x3968cc(0xf7),'tool':_0x3968cc(0xd4)},{'pattern':/not a text file/,'error_type':_0x3968cc(0xe5),'tool':_0x3968cc(0xd4)},{'pattern':/symbolic link/,'error_type':_0x3968cc(0xf7),'tool':'read'},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x3968cc(0xd4)},{'pattern':/status="error"/,'error_type':_0x3968cc(0x13f),'tool':_0x3968cc(0xac)}];let _0x5d1dbb=0x0;for(const _0xd725d8 of _0x5c864c){_0xd725d8['role']===_0x3968cc(0x11b)&&Array[_0x3968cc(0x160)](_0xd725d8[_0x3968cc(0x147)])&&_0x5d1dbb++;const _0x4eb9c3=_0xd725d8[_0x3968cc(0x8d)];if((_0xd725d8[_0x3968cc(0xa5)]===_0x3968cc(0x8b)||_0xd725d8[_0x3968cc(0xa5)]===_0x3968cc(0xbb))&&_0x4eb9c3&&typeof _0x4eb9c3===_0x3968cc(0x188))for(const {pattern:_0x30cb2d,error_type:_0x3391f3,tool:_0x332c2b}of _0xe50d9f){const _0x3adf19=_0x4eb9c3['match'](new RegExp(_0x30cb2d['source'],'g'));if(_0x3adf19)for(const _0x318c18 of _0x3adf19){const _0xc1150d=_0x4eb9c3[_0x3968cc(0xb1)](_0x318c18),_0x515469=_0x4eb9c3[_0x3968cc(0x122)](_0xc1150d,Math[_0x3968cc(0xc1)](_0xc1150d+0xc8,_0x4eb9c3[_0x3968cc(0x11f)]));_0x11e72e[_0x3968cc(0xef)]({'tool':_0x332c2b,'error_type':_0x3391f3,'error_message':_0x515469['split']('\x0a')[0x0],'turn':_0x5d1dbb});}}}return _0x11e72e;};try{const _0x233b42=a0_0x29b6ce[_0x5daa89(0x96)](_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)]),_0x3d3838=_0x2aace8['data']['search_type'],_0x4e571a=_0x3d3838===_0x5daa89(0x15d)?{'allowNames':[_0x5daa89(0x15d)]}:undefined,_0x1882a9=new LocalRipgrepProvider(_0x233b42,undefined,_0x4e571a);logger[_0x5daa89(0x175)](_0x5daa89(0xd0),_0x5daa89(0x94),{'type':_0x5daa89(0x192),'repo_root':_0x233b42,'search_type':_0x3d3838||'default'}),logger[_0x5daa89(0x175)](_0x5daa89(0xd0),_0x5daa89(0x129),{'query':_0x2aace8['data'][_0x5daa89(0x1a7)],'repo_root':_0x233b42,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x43a745=Date[_0x5daa89(0xc0)](),_0x5602fc=await runWarpGrep({'searchTerm':_0x2aace8[_0x5daa89(0x17a)]['search_string'],'repoRoot':_0x233b42,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x1882a9,'search_type':_0x3d3838}),_0x59da8e=Date[_0x5daa89(0xc0)]()-_0x43a745,_0x64a7cf=_0x5602fc[_0x5daa89(0x12c)]?.[_0x5daa89(0x1a1)]?.[_0x5daa89(0x114)]?.['length']??0x0;logger[_0x5daa89(0x175)](_0x5daa89(0xd0),_0x5daa89(0xea),{'termination':_0x5602fc[_0x5daa89(0x15c)],'turns':_0x5602fc['timings']?.['turns']??0x0,'files_found':_0x64a7cf,'latency_ms':_0x59da8e});const _0x5a7911=_0x2895d2(_0x5602fc[_0x5daa89(0xd2)]);_0x5a7911[_0x5daa89(0x11f)]>0x0&&reportMorphError({'error_message':_0x5daa89(0x1ac)+_0x5a7911[_0x5daa89(0x11f)]+_0x5daa89(0x132),'error_type':_0x5daa89(0x121),'level':'warn','tool':_0x5daa89(0x124),'context':{'repo_path':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)],'query':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x1a7)],'model':_0x5daa89(0xc9),'termination_reason':_0x5602fc['terminationReason'],'sub_tool_errors':_0x5a7911,'timings':_0x5602fc[_0x5daa89(0xe1)],'tool_calls':_0x1b6100(_0x5602fc[_0x5daa89(0xd2)]),'messages':_0x5602fc[_0x5daa89(0xd2)]?.[_0x5daa89(0x169)](_0xe5e01=>({'role':_0xe5e01[_0x5daa89(0xa5)],'content':_0xe5e01[_0x5daa89(0x8d)],..._0xe5e01[_0x5daa89(0x147)]?{'tool_calls':_0xe5e01[_0x5daa89(0x147)][_0x5daa89(0x11f)]}:{},..._0xe5e01[_0x5daa89(0x145)]?{'tool_call_id':_0xe5e01[_0x5daa89(0x145)]}:{}}))},'source':_0x5daa89(0x15e)})['catch'](()=>{});let _0x308335='';if(_0x5602fc[_0x5daa89(0x15c)]===_0x5daa89(0x186)&&_0x5602fc[_0x5daa89(0x12c)]?.['metadata']?.[_0x5daa89(0x114)]){const _0xad31ba=_0x5602fc[_0x5daa89(0x12c)][_0x5daa89(0x1a1)][_0x5daa89(0x114)];if(_0xad31ba[_0x5daa89(0x11f)]===0x0)return _0x308335=_0x5602fc['finish']['payload']||_0x5daa89(0xcb),{'content':[{'type':_0x5daa89(0x171),'text':_0x308335}]};const _0x5cb29f=[],_0x10c634=[_0x5daa89(0xf8)];for(const _0x4e32d2 of _0x5602fc[_0x5daa89(0xd2)]){if(_0x4e32d2[_0x5daa89(0xa5)]===_0x5daa89(0x11b)&&Array[_0x5daa89(0x160)](_0x4e32d2[_0x5daa89(0x147)]))for(const _0xc9e18c of _0x4e32d2['tool_calls']){try{const _0x5dde5c=_0xc9e18c[_0x5daa89(0xa3)]?.[_0x5daa89(0x13c)],_0x2f843b=JSON[_0x5daa89(0xc4)](_0xc9e18c[_0x5daa89(0xa3)]?.[_0x5daa89(0x101)]||'{}');if(_0x5dde5c===_0x5daa89(0x170))_0x10c634[_0x5daa89(0xef)](_0x5daa89(0x176)+_0x2f843b[_0x5daa89(0xa8)]+_0x5daa89(0x18c)+(_0x2f843b['path']||'.')+'`');else{if(_0x5dde5c===_0x5daa89(0xd4))_0x10c634[_0x5daa89(0xef)](_0x5daa89(0x9b)+_0x2f843b[_0x5daa89(0xe4)]+'`');else{if(_0x5dde5c==='list_directory')_0x10c634[_0x5daa89(0xef)](_0x5daa89(0xd8)+(_0x2f843b[_0x5daa89(0x19a)]||'.')+'`');else _0x5dde5c===_0x5daa89(0x1b7)&&_0x10c634['push']('-\x20Glob\x20search\x20`'+_0x2f843b[_0x5daa89(0xa8)]+_0x5daa89(0x120)+(_0x2f843b[_0x5daa89(0xe4)]||'.')+'`');}}}catch{}}}_0x5cb29f[_0x5daa89(0xef)](_0x10c634[_0x5daa89(0x135)]('\x0a'));const _0x5c2de1=['',_0x5daa89(0x184)];for(const _0x3c0e08 of _0xad31ba){if(_0x3c0e08[_0x5daa89(0x182)]==='*')_0x5c2de1[_0x5daa89(0xef)]('-\x20'+_0x3c0e08[_0x5daa89(0xe4)]+':*');else{if(Array['isArray'](_0x3c0e08[_0x5daa89(0x182)])){const _0x1389d3=_0x3c0e08[_0x5daa89(0x182)][_0x5daa89(0x169)](([_0x2f3a65,_0x64a831])=>{if(_0x2f3a65===_0x64a831)return''+_0x2f3a65;return _0x2f3a65+'-'+_0x64a831;});_0x5c2de1[_0x5daa89(0xef)]('-\x20'+_0x3c0e08['path']+':'+_0x1389d3[_0x5daa89(0x135)](','));}else _0x5c2de1[_0x5daa89(0xef)]('-\x20'+_0x3c0e08[_0x5daa89(0xe4)]+':*');}}_0x5c2de1[_0x5daa89(0xef)](''),_0x5cb29f[_0x5daa89(0xef)](_0x5c2de1[_0x5daa89(0x135)]('\x0a')),_0x5cb29f[_0x5daa89(0xef)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x1d229d=[],_0x6c7674=[];for(const _0x324284 of _0xad31ba){let _0x1bf7fc=a0_0x29b6ce[_0x5daa89(0x96)](_0x2aace8['data']['repo_path'],_0x324284[_0x5daa89(0xe4)]),_0x476e14=null,_0x10e475=null;try{_0x476e14=await a0_0x510943[_0x5daa89(0xba)](_0x1bf7fc,{'encoding':'utf-8'});}catch(_0x2de663){const _0x148bf3=fixPathRepetition(_0x1bf7fc);if(_0x148bf3)try{_0x476e14=await a0_0x510943[_0x5daa89(0xba)](_0x148bf3,{'encoding':_0x5daa89(0x189)}),_0x1bf7fc=_0x148bf3;}catch{_0x10e475=_0x2de663 instanceof Error?_0x2de663:new Error(String(_0x2de663));}else _0x10e475=_0x2de663 instanceof Error?_0x2de663:new Error(String(_0x2de663));}if(_0x476e14!==null){const _0x243bda=_0x476e14[_0x5daa89(0x1a0)](/\r?\n/),_0x4567ad=[];if(_0x324284[_0x5daa89(0x182)]==='*'||!Array[_0x5daa89(0x160)](_0x324284[_0x5daa89(0x182)]))for(let _0x118689=0x1;_0x118689<=_0x243bda[_0x5daa89(0x11f)];_0x118689++){const _0x5c6f2e=_0x243bda[_0x118689-0x1];_0x4567ad['push'](_0x118689+'|\x20'+_0x5c6f2e);}else for(const [_0x28c1ec,_0x37af26]of _0x324284[_0x5daa89(0x182)]){_0x4567ad[_0x5daa89(0x11f)]>0x0&&_0x4567ad[_0x5daa89(0xef)]('');for(let _0x2a0d00=_0x28c1ec;_0x2a0d00<=_0x37af26&&_0x2a0d00<=_0x243bda[_0x5daa89(0x11f)];_0x2a0d00++){const _0x1bec1a=_0x243bda[_0x2a0d00-0x1];_0x4567ad['push'](_0x2a0d00+'|\x20'+_0x1bec1a);}}_0x6c7674[_0x5daa89(0xef)]({'path':_0x324284[_0x5daa89(0xe4)],'content':_0x4567ad[_0x5daa89(0x135)]('\x0a')});}else _0x1d229d[_0x5daa89(0xef)](_0x5daa89(0x180)+_0x324284['path']+_0x5daa89(0x178)+(_0x10e475?.[_0x5daa89(0xda)]||_0x5daa89(0x12a))+_0x5daa89(0x181));}try{const _0x44e88c=await compactFileContexts(_0x6c7674,_0x2aace8[_0x5daa89(0x17a)]['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x244d87 of _0x44e88c){_0x1d229d['push'](_0x5daa89(0x180)+_0x244d87[_0x5daa89(0xe4)]+'\x22>\x0a'+_0x244d87[_0x5daa89(0x8d)]+_0x5daa89(0x181));}}catch(_0x2cee0b){logger[_0x5daa89(0xc3)](_0x5daa89(0xd0),_0x5daa89(0x8f),{'error':_0x2cee0b instanceof Error?_0x2cee0b[_0x5daa89(0xda)]:String(_0x2cee0b),'files_count':_0x6c7674[_0x5daa89(0x11f)]});for(const _0x1b0af8 of _0x6c7674){_0x1d229d['push'](_0x5daa89(0x180)+_0x1b0af8['path']+_0x5daa89(0xdd)+_0x1b0af8[_0x5daa89(0x8d)]+_0x5daa89(0x181));}}_0x5cb29f[_0x5daa89(0xef)](_0x1d229d[_0x5daa89(0x135)]('\x0a\x0a')),_0x308335=_0x5cb29f[_0x5daa89(0x135)]('\x0a');const _0x4d4f0f=_0x5602fc[_0x5daa89(0x144)]?.[_0x5daa89(0x143)](_0x5c495c=>_0x5c495c['message']?.['startsWith'](_0x5daa89(0x118)))||[];if(_0x4d4f0f[_0x5daa89(0x11f)]>0x0){const _0x3a5559=_0x4d4f0f['map'](_0x1f7a0e=>_0x1f7a0e[_0x5daa89(0xda)])[_0x5daa89(0x135)](';\x20');reportMorphError({'error_message':_0x3a5559,'error_type':_0x5daa89(0x109),'context':{'tool':'codebase_search','repo_path':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)],'query':_0x2aace8[_0x5daa89(0x17a)]['search_string'],'model':_0x5daa89(0xc9),'termination_reason':'completed_with_file_errors','error_count':_0x4d4f0f['length'],'is_timeout':![],'timings':_0x5602fc[_0x5daa89(0xe1)],'files_attempted':_0xad31ba[_0x5daa89(0x169)](_0x2bdcab=>({'path':_0x2bdcab['path'],'lines':_0x2bdcab['lines']})),'tool_calls':_0x1b6100(_0x5602fc[_0x5daa89(0xd2)]),'messages':_0x5602fc['messages']?.[_0x5daa89(0x169)](_0x1f321c=>({'role':_0x1f321c[_0x5daa89(0xa5)],'content':_0x1f321c[_0x5daa89(0x8d)],..._0x1f321c[_0x5daa89(0x147)]?{'tool_calls':_0x1f321c['tool_calls'][_0x5daa89(0x11f)]}:{},..._0x1f321c[_0x5daa89(0x145)]?{'tool_call_id':_0x1f321c[_0x5daa89(0x145)]}:{}})),'request_content':{'query':_0x2aace8['data'][_0x5daa89(0x1a7)],'repo_path':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)],'repoRoot':a0_0x29b6ce[_0x5daa89(0x96)](_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)]),'model':'morph-warp-grep-v2.1'}},'source':_0x5daa89(0x15e)})[_0x5daa89(0xf1)](()=>{});}}else{if(_0x5602fc[_0x5daa89(0x15c)]===_0x5daa89(0x105)&&_0x5602fc['errors'][_0x5daa89(0x11f)]>0x0){const _0x4e62fd=_0x5602fc['errors'][_0x5daa89(0x169)](_0x57903d=>_0x57903d[_0x5daa89(0xda)])[_0x5daa89(0x135)](';\x20');_0x308335=_0x5daa89(0x17b)+_0x4e62fd;const _0x2cfe64=_0x4e62fd[_0x5daa89(0x113)]()['includes'](_0x5daa89(0x1a9))||_0x4e62fd['toLowerCase']()[_0x5daa89(0xff)](_0x5daa89(0x12d))||_0x4e62fd['toLowerCase']()['includes']('etimedout'),_0xa006bd=_0x5602fc[_0x5daa89(0x12c)]?.[_0x5daa89(0x1a1)]?.['files'],_0x100954=_0x5602fc[_0x5daa89(0x144)][0x0];reportMorphError({'error_message':_0x4e62fd,'error_type':_0x2cfe64?_0x5daa89(0xb3):_0x100954?.[_0x5daa89(0xc6)]?.[_0x5daa89(0x13c)]||'WarpGrepError','context':{'tool':'codebase_search','repo_path':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)],'query':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x1a7)],'model':_0x5daa89(0xc9),'termination_reason':_0x5602fc[_0x5daa89(0x15c)],'error_count':_0x5602fc['errors'][_0x5daa89(0x11f)],'is_timeout':_0x2cfe64,'timings':_0x5602fc[_0x5daa89(0xe1)],'files_attempted':_0xa006bd?.[_0x5daa89(0x169)](_0x7335c2=>({'path':_0x7335c2[_0x5daa89(0xe4)],'lines':_0x7335c2[_0x5daa89(0x182)]})),'tool_calls':_0x1b6100(_0x5602fc[_0x5daa89(0xd2)]),'messages':_0x5602fc[_0x5daa89(0xd2)]?.[_0x5daa89(0x169)](_0x3c32b1=>({'role':_0x3c32b1[_0x5daa89(0xa5)],'content':_0x3c32b1[_0x5daa89(0x8d)],..._0x3c32b1[_0x5daa89(0x147)]?{'tool_calls':_0x3c32b1[_0x5daa89(0x147)][_0x5daa89(0x11f)]}:{},..._0x3c32b1[_0x5daa89(0x145)]?{'tool_call_id':_0x3c32b1[_0x5daa89(0x145)]}:{}})),'request_content':{'query':_0x2aace8[_0x5daa89(0x17a)]['search_string'],'repo_path':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)],'repoRoot':a0_0x29b6ce[_0x5daa89(0x96)](_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)]),'model':_0x5daa89(0xc9)}},'stack_trace':_0x100954?.[_0x5daa89(0xa4)]||undefined,'source':_0x5daa89(0x15e)})[_0x5daa89(0xf1)](()=>{});}else _0x308335=_0x5daa89(0x18e);}return{'content':[{'type':_0x5daa89(0x171),'text':_0x308335}]};}catch(_0x396087){const _0x2a17c7=handleMorphAPIError(_0x396087);if(_0x2a17c7)return logger['error'](_0x5daa89(0xd0),_0x5daa89(0x98),{'tool':'codebase_search','error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x5daa89(0xc0)]()-_0x267154}),_0x2a17c7;const _0x22ff1b=_0x396087 instanceof Error?_0x396087[_0x5daa89(0xda)]:String(_0x396087);logger['error'](_0x5daa89(0xd0),_0x5daa89(0x98),{'tool':_0x5daa89(0x124),'error':_0x22ff1b,'repo_path':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)],'query':_0x2aace8[_0x5daa89(0x17a)]['search_string'],'latency_ms':Date[_0x5daa89(0xc0)]()-_0x267154});const _0x5d508b=_0x22ff1b[_0x5daa89(0x113)]()[_0x5daa89(0xff)](_0x5daa89(0x1a9))||_0x22ff1b['toLowerCase']()[_0x5daa89(0xff)](_0x5daa89(0x12d))||_0x22ff1b[_0x5daa89(0x113)]()[_0x5daa89(0xff)](_0x5daa89(0x11e))||_0x396087 instanceof Error&&_0x396087[_0x5daa89(0x13c)]===_0x5daa89(0xb3);return reportMorphError({'error_message':_0x22ff1b,'error_type':_0x5d508b?_0x5daa89(0xb3):_0x396087 instanceof Error?_0x396087['constructor'][_0x5daa89(0x13c)]:_0x5daa89(0x128),'context':{'tool':_0x5daa89(0x124),'repo_path':_0x2aace8[_0x5daa89(0x17a)]['repo_path'],'query':_0x2aace8[_0x5daa89(0x17a)]['search_string'],'model':'morph-warp-grep-v2.1','is_timeout':_0x5d508b,'exception_phase':_0x5daa89(0xb6),'request_content':{'query':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x1a7)],'repo_path':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)],'repoRoot':a0_0x29b6ce[_0x5daa89(0x96)](_0x2aace8[_0x5daa89(0x17a)]['repo_path']),'model':_0x5daa89(0xc9)}},'stack_trace':_0x396087 instanceof Error?_0x396087[_0x5daa89(0xa4)]:undefined,'source':_0x5daa89(0x15e)})[_0x5daa89(0xf1)](()=>{}),{'content':[{'type':_0x5daa89(0x171),'text':_0x5daa89(0xb4)+_0x22ff1b}],'isError':![]};}}case TOOL_NAMES[_0x5daa89(0x17c)]:{const _0xb38231=WarpGrepGitHubArgsSchema[_0x5daa89(0x116)](_0x40b02f);if(!_0xb38231[_0x5daa89(0x140)])return{'content':[{'type':'text','text':_0x5daa89(0x130)+_0xb38231[_0x5daa89(0x102)]}],'isError':!![]};const _0x2d5585=_0xb38231['data'][_0x5daa89(0xf4)]||_0xb38231[_0x5daa89(0x17a)][_0x5daa89(0xdb)];if(!_0x2d5585)return{'content':[{'type':'text','text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x5ebefb=MORPH_API_KEY;if(!_0x5ebefb)throw new Error(_0x5daa89(0xca));const _0x34240b=Date[_0x5daa89(0xc0)]();logger[_0x5daa89(0x175)](_0x5daa89(0xd0),_0x5daa89(0x16f),{'identifier':_0x2d5585,'query':_0xb38231[_0x5daa89(0x17a)][_0x5daa89(0x1a7)],'branch':_0xb38231[_0x5daa89(0x17a)][_0x5daa89(0x11d)]});try{const _0x2fffe6=new WarpGrepClient({'morphApiKey':_0x5ebefb,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x49561f=await _0x2fffe6[_0x5daa89(0x164)]({'searchTerm':_0xb38231[_0x5daa89(0x17a)][_0x5daa89(0x1a7)],'github':_0x2d5585,'branch':_0xb38231[_0x5daa89(0x17a)][_0x5daa89(0x11d)]}),_0x581617=Date[_0x5daa89(0xc0)]()-_0x34240b;logMcpStderr(_0x5daa89(0x95)+_0x581617+_0x5daa89(0xc2)+_0x49561f[_0x5daa89(0x140)]);const _0x53845b=formatResult(_0x49561f);return{'content':[{'type':_0x5daa89(0x171),'text':_0x53845b}]};}catch(_0x166c04){const _0x42a7b6=handleMorphAPIError(_0x166c04);if(_0x42a7b6)return _0x42a7b6;const _0x4faecc=Date['now']()-_0x34240b,_0x2d39f7=_0x166c04 instanceof Error?_0x166c04[_0x5daa89(0xda)]:String(_0x166c04);return logMcpStderr(_0x5daa89(0x161)+_0x4faecc+_0x5daa89(0xb2),_0x2d39f7),reportMorphError({'error_message':_0x2d39f7,'error_type':_0x166c04 instanceof Error?_0x166c04[_0x5daa89(0xc6)][_0x5daa89(0x13c)]:_0x5daa89(0x128),'context':{'tool':_0x5daa89(0x1b4),'github_url':_0x2d5585,'search_string':_0xb38231[_0x5daa89(0x17a)][_0x5daa89(0x1a7)],'branch':_0xb38231[_0x5daa89(0x17a)][_0x5daa89(0x11d)]},'stack_trace':_0x166c04 instanceof Error?_0x166c04[_0x5daa89(0xa4)]:undefined,'source':'mcp-filesystem','tool':'github_codebase_search','latency_ms':_0x4faecc})['catch'](()=>{}),{'content':[{'type':_0x5daa89(0x171),'text':_0x5daa89(0xc8)+_0x2d39f7}],'isError':![]};}}default:throw new Error(_0x5daa89(0x187)+_0x493aeb);}}catch(_0x2bb9e1){const _0x5e5ec1=_0x2bb9e1 instanceof Error?_0x2bb9e1[_0x5daa89(0xda)]:String(_0x2bb9e1);return reportMorphError({'error_message':_0x5e5ec1,'error_type':_0x2bb9e1 instanceof Error?_0x2bb9e1[_0x5daa89(0xc6)]['name']:'UnknownError','context':{'tool':_0x493aeb,'arguments':_0x40b02f?JSON[_0x5daa89(0xde)](_0x40b02f)[_0x5daa89(0x122)](0x0,0x1f4):undefined,'mcp_server_version':_0x5daa89(0xd9)},'stack_trace':_0x2bb9e1 instanceof Error?_0x2bb9e1['stack']:undefined,'source':_0x5daa89(0x15e)})['catch'](()=>{}),{'content':[{'type':_0x5daa89(0x171),'text':_0x5daa89(0x17b)+_0x5e5ec1}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x350bcd){const _0x335aeb=a0_0x780d31,_0x1a6af9=await getValidRootDirectories(_0x350bcd);if(_0x1a6af9[_0x335aeb(0x11f)]>0x0)allowedDirectories=[..._0x1a6af9],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x1a6af9[_0x335aeb(0x11f)]+_0x335aeb(0x90));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x290b3d=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x290b3d&&(allowedDirectories=[_0x290b3d],logMcpStderr(_0x335aeb(0xa0)+_0x290b3d));}catch(_0x541eff){logMcpStderr(_0x335aeb(0x134)+_0x541eff);}}}server[a0_0x780d31(0xcf)](RootsListChangedNotificationSchema,async()=>{const _0x36934e=a0_0x780d31;try{const _0xd71026=await server['listRoots']();_0xd71026&&_0x36934e(0xad)in _0xd71026&&await updateAllowedDirectoriesFromRoots(_0xd71026[_0x36934e(0xad)]);}catch(_0x23bb7b){logMcpStderr(_0x36934e(0x119),_0x23bb7b instanceof Error?_0x23bb7b[_0x36934e(0xda)]:String(_0x23bb7b));}}),server[a0_0x780d31(0x199)]=async()=>{const _0x563ada=a0_0x780d31,_0x5898b9=server['getClientCapabilities']();if(_0x5898b9?.[_0x563ada(0xad)])try{const _0x15e4bf=await server[_0x563ada(0xbd)]();_0x15e4bf&&_0x563ada(0xad)in _0x15e4bf?await updateAllowedDirectoriesFromRoots(_0x15e4bf['roots']):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x4bf7e5){logMcpStderr(_0x563ada(0x1a4),_0x4bf7e5 instanceof Error?_0x4bf7e5[_0x563ada(0xda)]:String(_0x4bf7e5));}else{if(allowedDirectories[_0x563ada(0x11f)]>0x0)logMcpStderr(_0x563ada(0x1a8),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x563ada(0x137));}}};async function runServer(){const _0x4566fe=a0_0x780d31,_0x31df7d=new StdioServerTransport();await server['connect'](_0x31df7d),logMcpStderr(_0x4566fe(0x13a)),allowedDirectories[_0x4566fe(0x11f)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x780d31(0xf1)](_0x23393a=>{logMcpStderr('Fatal\x20error\x20running\x20server:',_0x23393a),process['exit'](0x1);});
package/dist/log-utils.js CHANGED
@@ -1 +1 @@
1
- function a1_0x7e5c(_0x3907db,_0x41e6a6){_0x3907db=_0x3907db-0x180;var _0x4e8fc4=a1_0x4e8f();var _0x7e5c85=_0x4e8fc4[_0x3907db];return _0x7e5c85;}var a1_0x327885=a1_0x7e5c;(function(_0x10b3a9,_0x2ff58c){var _0x24c585=a1_0x7e5c,_0x4d047f=_0x10b3a9();while(!![]){try{var _0x52147a=parseInt(_0x24c585(0x18d))/0x1*(parseInt(_0x24c585(0x187))/0x2)+parseInt(_0x24c585(0x189))/0x3+parseInt(_0x24c585(0x185))/0x4+parseInt(_0x24c585(0x195))/0x5*(parseInt(_0x24c585(0x18c))/0x6)+parseInt(_0x24c585(0x18e))/0x7*(-parseInt(_0x24c585(0x184))/0x8)+parseInt(_0x24c585(0x18b))/0x9+-parseInt(_0x24c585(0x18a))/0xa;if(_0x52147a===_0x2ff58c)break;else _0x4d047f['push'](_0x4d047f['shift']());}catch(_0x106d4d){_0x4d047f['push'](_0x4d047f['shift']());}}}(a1_0x4e8f,0x375ee));import a1_0x3c547c from'os';import{logger}from'./logger.js';export function getOperatingSystemType(_0x5671d6=a1_0x3c547c[a1_0x327885(0x18f)]()){var _0x52d4ea=a1_0x327885;switch(_0x5671d6){case _0x52d4ea(0x192):return _0x52d4ea(0x181);case _0x52d4ea(0x180):return _0x52d4ea(0x182);case _0x52d4ea(0x190):return'Linux';default:return _0x52d4ea(0x194);}}export function formatMcpLogMessage(_0x44a3bd,_0x1b3d1f=a1_0x3c547c[a1_0x327885(0x18f)]()){var _0x3ec1b6=a1_0x327885;return _0x3ec1b6(0x191)+getOperatingSystemType(_0x1b3d1f)+']\x20'+_0x44a3bd;}export function logMcpStderr(_0x458364,..._0x450fe4){var _0x425782=a1_0x327885;console[_0x425782(0x183)](formatMcpLogMessage(_0x458364),..._0x450fe4),logger['info'](_0x425782(0x188),_0x458364,_0x450fe4[_0x425782(0x193)]?{'args':_0x450fe4[_0x425782(0x186)](_0x542baa=>String(_0x542baa))}:undefined);}function a1_0x4e8f(){var _0x3af947=['[os=','darwin','length','Unknown','560DDgEZd','win32','macOS','Windows','error','1329928gXREnQ','178084KFDRCA','map','886586ntvGNi','MCP','482082GLxTNO','1743340egJkGN','71442pKvTtu','4134GSKwPy','1hFntOe','14GryVgD','platform','linux'];a1_0x4e8f=function(){return _0x3af947;};return a1_0x4e8f();}
1
+ var a1_0x481e4a=a1_0x412c;function a1_0x412c(_0x93d988,_0x2eed29){_0x93d988=_0x93d988-0x70;var _0x1829af=a1_0x1829();var _0x412c67=_0x1829af[_0x93d988];return _0x412c67;}(function(_0x3c305c,_0x2d2664){var _0x1128d9=a1_0x412c,_0x4bfe90=_0x3c305c();while(!![]){try{var _0x19c898=parseInt(_0x1128d9(0x71))/0x1+parseInt(_0x1128d9(0x7e))/0x2*(parseInt(_0x1128d9(0x7f))/0x3)+-parseInt(_0x1128d9(0x73))/0x4*(parseInt(_0x1128d9(0x82))/0x5)+parseInt(_0x1128d9(0x7a))/0x6*(parseInt(_0x1128d9(0x77))/0x7)+-parseInt(_0x1128d9(0x83))/0x8*(parseInt(_0x1128d9(0x75))/0x9)+-parseInt(_0x1128d9(0x74))/0xa+parseInt(_0x1128d9(0x80))/0xb*(parseInt(_0x1128d9(0x70))/0xc);if(_0x19c898===_0x2d2664)break;else _0x4bfe90['push'](_0x4bfe90['shift']());}catch(_0x5a47bb){_0x4bfe90['push'](_0x4bfe90['shift']());}}}(a1_0x1829,0x7e658));import a1_0x5d7878 from'os';import{logger}from'./logger.js';export function getOperatingSystemType(_0x502c8c=a1_0x5d7878[a1_0x481e4a(0x72)]()){var _0x1b9fba=a1_0x481e4a;switch(_0x502c8c){case _0x1b9fba(0x79):return'macOS';case'win32':return _0x1b9fba(0x7d);case _0x1b9fba(0x76):return _0x1b9fba(0x84);default:return'Unknown';}}export function formatMcpLogMessage(_0x12e9c8,_0x41189d=a1_0x5d7878[a1_0x481e4a(0x72)]()){return'[os='+getOperatingSystemType(_0x41189d)+']\x20'+_0x12e9c8;}function a1_0x1829(){var _0x26916c=['12MbJpzK','263375guqubw','platform','3971416CKNdGB','7961400qIqaEs','45891nMEoaH','linux','1153103TzmiVU','MCP','darwin','18eMSbdo','info','length','Windows','10FkiDLG','1647VRGRCl','19646660NMlkad','map','5YFznTY','376iblUIH','Linux'];a1_0x1829=function(){return _0x26916c;};return a1_0x1829();}export function logMcpStderr(_0xcf3101,..._0x1ccc81){var _0x196987=a1_0x481e4a;console['error'](formatMcpLogMessage(_0xcf3101),..._0x1ccc81),logger[_0x196987(0x7b)](_0x196987(0x78),_0xcf3101,_0x1ccc81[_0x196987(0x7c)]?{'args':_0x1ccc81[_0x196987(0x81)](_0x5aaf26=>String(_0x5aaf26))}:undefined);}
package/dist/logger.js CHANGED
@@ -1 +1 @@
1
- function a2_0x23be(){const _0x152208=['22824hhzUbv','enable','MORPH_LOG_FILE',']\x20[','33400ZjoYWt','179694OBvdds','info','1344paCycd','debug','fileStream','9492480rFCwNq','stringify','3352671UqWlSF','384366iTcmOf','3006612PLqzqN','enabled','env','toUpperCase','2URkloM','warn','write','error','_log','120qkDRni','toISOString'];a2_0x23be=function(){return _0x152208;};return a2_0x23be();}const a2_0x24fef4=a2_0x3787;(function(_0x387f01,_0x535cf9){const _0x1f45b8=a2_0x3787,_0x18b0b0=_0x387f01();while(!![]){try{const _0x3c1618=-parseInt(_0x1f45b8(0x1c8))/0x1+-parseInt(_0x1f45b8(0x1cd))/0x2*(parseInt(_0x1f45b8(0x1d9))/0x3)+parseInt(_0x1f45b8(0x1d2))/0x4*(parseInt(_0x1f45b8(0x1d8))/0x5)+parseInt(_0x1f45b8(0x1c9))/0x6+parseInt(_0x1f45b8(0x1db))/0x7*(-parseInt(_0x1f45b8(0x1d4))/0x8)+-parseInt(_0x1f45b8(0x1e0))/0x9+parseInt(_0x1f45b8(0x1de))/0xa;if(_0x3c1618===_0x535cf9)break;else _0x18b0b0['push'](_0x18b0b0['shift']());}catch(_0x17bcf2){_0x18b0b0['push'](_0x18b0b0['shift']());}}}(a2_0x23be,0x45def));function a2_0x3787(_0x3e85be,_0x1d08c0){_0x3e85be=_0x3e85be-0x1c8;const _0x23beb5=a2_0x23be();let _0x37878c=_0x23beb5[_0x3e85be];return _0x37878c;}import{createWriteStream}from'fs';class MorphLogger{['enabled'];[a2_0x24fef4(0x1dd)];constructor(){const _0x122377=a2_0x24fef4;this[_0x122377(0x1ca)]=process['env']['MORPH_DEBUG']==='1'||!!process[_0x122377(0x1cb)][_0x122377(0x1d6)];const _0x5f22aa=process[_0x122377(0x1cb)][_0x122377(0x1d6)];this[_0x122377(0x1dd)]=_0x5f22aa?createWriteStream(_0x5f22aa,{'flags':'a'}):null;}[a2_0x24fef4(0x1dc)](_0x39d7ad,_0x161105,_0x2aeba8){const _0x4ebf93=a2_0x24fef4;this[_0x4ebf93(0x1d1)](_0x4ebf93(0x1dc),_0x39d7ad,_0x161105,_0x2aeba8);}[a2_0x24fef4(0x1da)](_0x16b9ce,_0x249a1c,_0x49f46f){const _0x408c54=a2_0x24fef4;this['_log'](_0x408c54(0x1da),_0x16b9ce,_0x249a1c,_0x49f46f);}[a2_0x24fef4(0x1ce)](_0x556ad9,_0x200e2c,_0x1642ae){const _0x390b9f=a2_0x24fef4;this['_log'](_0x390b9f(0x1ce),_0x556ad9,_0x200e2c,_0x1642ae);}[a2_0x24fef4(0x1d0)](_0x27c213,_0x3a31cc,_0x3f712c){const _0x345d47=a2_0x24fef4;this[_0x345d47(0x1d1)](_0x345d47(0x1d0),_0x27c213,_0x3a31cc,_0x3f712c);}[a2_0x24fef4(0x1d5)](){const _0x4ab7a3=a2_0x24fef4;this[_0x4ab7a3(0x1ca)]=!![];}get['isEnabled'](){const _0x310fc6=a2_0x24fef4;return this[_0x310fc6(0x1ca)];}[a2_0x24fef4(0x1d1)](_0x5ed082,_0x14f5e6,_0x503a15,_0x40b87a){const _0x4bbc63=a2_0x24fef4;if(_0x5ed082!==_0x4bbc63(0x1d0)&&!this['enabled'])return;const _0x98ed57=new Date()[_0x4bbc63(0x1d3)](),_0x47bf3a='['+_0x98ed57+_0x4bbc63(0x1d7)+_0x5ed082[_0x4bbc63(0x1cc)]()+_0x4bbc63(0x1d7)+_0x14f5e6+']';console[_0x4bbc63(0x1d0)](_0x40b87a?_0x47bf3a+'\x20'+_0x503a15+'\x20'+JSON[_0x4bbc63(0x1df)](_0x40b87a):_0x47bf3a+'\x20'+_0x503a15),this[_0x4bbc63(0x1dd)]?.[_0x4bbc63(0x1cf)](JSON[_0x4bbc63(0x1df)]({'ts':_0x98ed57,'level':_0x5ed082,'component':_0x14f5e6,'msg':_0x503a15,..._0x40b87a&&{'data':_0x40b87a}})+'\x0a');}}export const logger=new MorphLogger();
1
+ const a2_0x213e0f=a2_0xfa4d;(function(_0x3f5a5b,_0x2388d9){const _0x5b5331=a2_0xfa4d,_0x236dee=_0x3f5a5b();while(!![]){try{const _0x59aae0=parseInt(_0x5b5331(0x173))/0x1+-parseInt(_0x5b5331(0x15b))/0x2+parseInt(_0x5b5331(0x162))/0x3+-parseInt(_0x5b5331(0x16c))/0x4*(parseInt(_0x5b5331(0x16b))/0x5)+-parseInt(_0x5b5331(0x165))/0x6*(-parseInt(_0x5b5331(0x16d))/0x7)+parseInt(_0x5b5331(0x16e))/0x8+parseInt(_0x5b5331(0x171))/0x9;if(_0x59aae0===_0x2388d9)break;else _0x236dee['push'](_0x236dee['shift']());}catch(_0xf3982c){_0x236dee['push'](_0x236dee['shift']());}}}(a2_0x2375,0xc452e));import{createWriteStream}from'fs';function a2_0x2375(){const _0x589b37=['fileStream','MORPH_LOG_FILE','debug','isEnabled','toUpperCase','270bKOIGH','40140QeZPeC','67382XqhVwk','6734520REVVPb','_log','MORPH_DEBUG','272070MSLddN','enabled','104599qMGyzx','1266068AZszaA','env',']\x20[','error','warn','enable','stringify','523758JrvHtY','write','toISOString','516YqYpCT'];a2_0x2375=function(){return _0x589b37;};return a2_0x2375();}class MorphLogger{[a2_0x213e0f(0x172)];['fileStream'];constructor(){const _0x758c28=a2_0x213e0f;this[_0x758c28(0x172)]=process[_0x758c28(0x15c)][_0x758c28(0x170)]==='1'||!!process[_0x758c28(0x15c)][_0x758c28(0x167)];const _0x5c5739=process[_0x758c28(0x15c)][_0x758c28(0x167)];this[_0x758c28(0x166)]=_0x5c5739?createWriteStream(_0x5c5739,{'flags':'a'}):null;}[a2_0x213e0f(0x168)](_0x5f53ae,_0x2bdcb4,_0x2980c3){const _0x426b88=a2_0x213e0f;this[_0x426b88(0x16f)](_0x426b88(0x168),_0x5f53ae,_0x2bdcb4,_0x2980c3);}['info'](_0x3199e,_0x4fafcb,_0x3cec37){this['_log']('info',_0x3199e,_0x4fafcb,_0x3cec37);}['warn'](_0x3a511a,_0x737b9d,_0x1de2d2){const _0x3fa864=a2_0x213e0f;this[_0x3fa864(0x16f)](_0x3fa864(0x15f),_0x3a511a,_0x737b9d,_0x1de2d2);}[a2_0x213e0f(0x15e)](_0x2f24ae,_0x3a5716,_0x706520){const _0xaae4d5=a2_0x213e0f;this[_0xaae4d5(0x16f)](_0xaae4d5(0x15e),_0x2f24ae,_0x3a5716,_0x706520);}[a2_0x213e0f(0x160)](){const _0x4424f1=a2_0x213e0f;this[_0x4424f1(0x172)]=!![];}get[a2_0x213e0f(0x169)](){const _0x4eb713=a2_0x213e0f;return this[_0x4eb713(0x172)];}[a2_0x213e0f(0x16f)](_0x1b4f94,_0x1e5650,_0x2aa968,_0x4fef6b){const _0x439e24=a2_0x213e0f;if(_0x1b4f94!==_0x439e24(0x15e)&&!this['enabled'])return;const _0x15b8e8=new Date()[_0x439e24(0x164)](),_0x49883a='['+_0x15b8e8+_0x439e24(0x15d)+_0x1b4f94[_0x439e24(0x16a)]()+_0x439e24(0x15d)+_0x1e5650+']';console[_0x439e24(0x15e)](_0x4fef6b?_0x49883a+'\x20'+_0x2aa968+'\x20'+JSON[_0x439e24(0x161)](_0x4fef6b):_0x49883a+'\x20'+_0x2aa968),this['fileStream']?.[_0x439e24(0x163)](JSON[_0x439e24(0x161)]({'ts':_0x15b8e8,'level':_0x1b4f94,'component':_0x1e5650,'msg':_0x2aa968,..._0x4fef6b&&{'data':_0x4fef6b}})+'\x0a');}}function a2_0xfa4d(_0x3ed611,_0xf556ea){_0x3ed611=_0x3ed611-0x15b;const _0x2375c5=a2_0x2375();let _0xfa4d1f=_0x2375c5[_0x3ed611];return _0xfa4d1f;}export const logger=new MorphLogger();
@@ -1 +1 @@
1
- (function(_0x2dc26b,_0x43a874){const _0x1d4989=a3_0x17a1,_0x53d0b8=_0x2dc26b();while(!![]){try{const _0x39dfee=-parseInt(_0x1d4989(0x9a))/0x1*(-parseInt(_0x1d4989(0x99))/0x2)+-parseInt(_0x1d4989(0x92))/0x3+parseInt(_0x1d4989(0x9b))/0x4+parseInt(_0x1d4989(0x8a))/0x5*(parseInt(_0x1d4989(0x98))/0x6)+parseInt(_0x1d4989(0x8e))/0x7+-parseInt(_0x1d4989(0x89))/0x8+-parseInt(_0x1d4989(0x97))/0x9;if(_0x39dfee===_0x43a874)break;else _0x53d0b8['push'](_0x53d0b8['shift']());}catch(_0x32d6ca){_0x53d0b8['push'](_0x53d0b8['shift']());}}}(a3_0x11f6,0xe3033));function a3_0x11f6(){const _0x142c93=['6coBXKW','2396sPbaCB','23AabPnY','519960PLAfef','trim','2344960MaYAjl','5522365NaSiFF','startsWith','charAt','replace','12271483tTVRCv','match','test','/mnt/','2583396llYMuN','join','slice','toUpperCase','normalize','8378919cAbXPf'];a3_0x11f6=function(){return _0x142c93;};return a3_0x11f6();}import a3_0x157c57 from'path';import a3_0x157f7a from'os';export function convertToWindowsPath(_0x2e8b6a){const _0x2c4238=a3_0x17a1;if(_0x2e8b6a[_0x2c4238(0x8b)](_0x2c4238(0x91))){const _0xacc346=_0x2e8b6a['charAt'](0x5)['toUpperCase'](),_0x8c7434=_0x2e8b6a[_0x2c4238(0x94)](0x6)['replace'](/\//g,'\x5c');return _0xacc346+':'+_0x8c7434;}if(_0x2e8b6a[_0x2c4238(0x8f)](/^\/[a-zA-Z]\//)){const _0x348b36=_0x2e8b6a[_0x2c4238(0x8c)](0x1)['toUpperCase'](),_0x51c8c2=_0x2e8b6a[_0x2c4238(0x94)](0x2)[_0x2c4238(0x8d)](/\//g,'\x5c');return _0x348b36+':'+_0x51c8c2;}if(_0x2e8b6a[_0x2c4238(0x8f)](/^[a-zA-Z]:/))return _0x2e8b6a[_0x2c4238(0x8d)](/\//g,'\x5c');return _0x2e8b6a;}function a3_0x17a1(_0x10bdb4,_0x789406){_0x10bdb4=_0x10bdb4-0x89;const _0x11f67b=a3_0x11f6();let _0x17a1f7=_0x11f67b[_0x10bdb4];return _0x17a1f7;}export function normalizePath(_0x3b1b92){const _0x592170=a3_0x17a1;_0x3b1b92=_0x3b1b92[_0x592170(0x9c)]()[_0x592170(0x8d)](/^["']|["']$/g,'');const _0x5ee501=_0x3b1b92['startsWith']('/')&&!_0x3b1b92[_0x592170(0x8f)](/^\/mnt\/[a-z]\//i)&&!_0x3b1b92[_0x592170(0x8f)](/^\/[a-zA-Z]\//);if(_0x5ee501)return _0x3b1b92[_0x592170(0x8d)](/\/+/g,'/')[_0x592170(0x8d)](/\/+$/,'');_0x3b1b92=convertToWindowsPath(_0x3b1b92);if(_0x3b1b92[_0x592170(0x8b)]('\x5c\x5c')){let _0x5038de=_0x3b1b92;_0x5038de=_0x5038de[_0x592170(0x8d)](/^\\{2,}/,'\x5c\x5c');const _0x254159=_0x5038de['substring'](0x2)[_0x592170(0x8d)](/\\\\/g,'\x5c');_0x3b1b92='\x5c\x5c'+_0x254159;}else _0x3b1b92=_0x3b1b92[_0x592170(0x8d)](/\\\\/g,'\x5c');let _0x3f6500=a3_0x157c57[_0x592170(0x96)](_0x3b1b92);_0x3b1b92[_0x592170(0x8b)]('\x5c\x5c')&&!_0x3f6500[_0x592170(0x8b)]('\x5c\x5c')&&(_0x3f6500='\x5c'+_0x3f6500);if(_0x3f6500[_0x592170(0x8f)](/^[a-zA-Z]:/)){let _0x24e5d1=_0x3f6500[_0x592170(0x8d)](/\//g,'\x5c');return/^[a-z]:/[_0x592170(0x90)](_0x24e5d1)&&(_0x24e5d1=_0x24e5d1['charAt'](0x0)[_0x592170(0x95)]()+_0x24e5d1[_0x592170(0x94)](0x1)),_0x24e5d1;}return _0x3f6500['replace'](/\//g,'\x5c');}export function expandHome(_0x266c62){const _0x3c274a=a3_0x17a1;if(_0x266c62[_0x3c274a(0x8b)]('~/')||_0x266c62==='~')return a3_0x157c57[_0x3c274a(0x93)](a3_0x157f7a['homedir'](),_0x266c62[_0x3c274a(0x94)](0x1));return _0x266c62;}
1
+ (function(_0x180f2e,_0x185ad4){const _0x43e769=a3_0x2aea,_0x5279ec=_0x180f2e();while(!![]){try{const _0x4b7fb6=parseInt(_0x43e769(0x122))/0x1+parseInt(_0x43e769(0x134))/0x2*(-parseInt(_0x43e769(0x128))/0x3)+-parseInt(_0x43e769(0x12e))/0x4+parseInt(_0x43e769(0x123))/0x5*(-parseInt(_0x43e769(0x139))/0x6)+-parseInt(_0x43e769(0x124))/0x7*(-parseInt(_0x43e769(0x131))/0x8)+parseInt(_0x43e769(0x132))/0x9*(parseInt(_0x43e769(0x135))/0xa)+-parseInt(_0x43e769(0x129))/0xb*(-parseInt(_0x43e769(0x137))/0xc);if(_0x4b7fb6===_0x185ad4)break;else _0x5279ec['push'](_0x5279ec['shift']());}catch(_0x38f904){_0x5279ec['push'](_0x5279ec['shift']());}}}(a3_0x4dd1,0xc772a));import a3_0x43b752 from'path';import a3_0x2d096a from'os';function a3_0x4dd1(){const _0x2fc9d1=['charAt','5161792mzoZEg','slice','test','40kqnIvS','1143sGrrvg','match','38FJHkbu','13530XMcIPr','startsWith','5087304EtwZzx','normalize','8736wfCkwM','608191zLENbE','4760fDKcsY','1847965LJngeV','join','replace','/mnt/','248541zjLTfK','77vgfRGf','trim','toUpperCase','substring'];a3_0x4dd1=function(){return _0x2fc9d1;};return a3_0x4dd1();}function a3_0x2aea(_0x387387,_0x2c1261){_0x387387=_0x387387-0x122;const _0x4dd1d0=a3_0x4dd1();let _0x2aea12=_0x4dd1d0[_0x387387];return _0x2aea12;}export function convertToWindowsPath(_0x94f366){const _0x3a25db=a3_0x2aea;if(_0x94f366['startsWith'](_0x3a25db(0x127))){const _0x5bb995=_0x94f366[_0x3a25db(0x12d)](0x5)[_0x3a25db(0x12b)](),_0x8948a1=_0x94f366[_0x3a25db(0x12f)](0x6)['replace'](/\//g,'\x5c');return _0x5bb995+':'+_0x8948a1;}if(_0x94f366['match'](/^\/[a-zA-Z]\//)){const _0x5926ee=_0x94f366[_0x3a25db(0x12d)](0x1)[_0x3a25db(0x12b)](),_0x763bc6=_0x94f366['slice'](0x2)[_0x3a25db(0x126)](/\//g,'\x5c');return _0x5926ee+':'+_0x763bc6;}if(_0x94f366[_0x3a25db(0x133)](/^[a-zA-Z]:/))return _0x94f366['replace'](/\//g,'\x5c');return _0x94f366;}export function normalizePath(_0x2b2d03){const _0x5ad396=a3_0x2aea;_0x2b2d03=_0x2b2d03[_0x5ad396(0x12a)]()[_0x5ad396(0x126)](/^["']|["']$/g,'');const _0x4ca77d=_0x2b2d03[_0x5ad396(0x136)]('/')&&!_0x2b2d03[_0x5ad396(0x133)](/^\/mnt\/[a-z]\//i)&&!_0x2b2d03[_0x5ad396(0x133)](/^\/[a-zA-Z]\//);if(_0x4ca77d)return _0x2b2d03[_0x5ad396(0x126)](/\/+/g,'/')[_0x5ad396(0x126)](/\/+$/,'');_0x2b2d03=convertToWindowsPath(_0x2b2d03);if(_0x2b2d03[_0x5ad396(0x136)]('\x5c\x5c')){let _0x2d2d15=_0x2b2d03;_0x2d2d15=_0x2d2d15[_0x5ad396(0x126)](/^\\{2,}/,'\x5c\x5c');const _0x74769=_0x2d2d15[_0x5ad396(0x12c)](0x2)[_0x5ad396(0x126)](/\\\\/g,'\x5c');_0x2b2d03='\x5c\x5c'+_0x74769;}else _0x2b2d03=_0x2b2d03['replace'](/\\\\/g,'\x5c');let _0x2e3cb4=a3_0x43b752[_0x5ad396(0x138)](_0x2b2d03);_0x2b2d03[_0x5ad396(0x136)]('\x5c\x5c')&&!_0x2e3cb4[_0x5ad396(0x136)]('\x5c\x5c')&&(_0x2e3cb4='\x5c'+_0x2e3cb4);if(_0x2e3cb4[_0x5ad396(0x133)](/^[a-zA-Z]:/)){let _0x2732ca=_0x2e3cb4[_0x5ad396(0x126)](/\//g,'\x5c');return/^[a-z]:/[_0x5ad396(0x130)](_0x2732ca)&&(_0x2732ca=_0x2732ca['charAt'](0x0)[_0x5ad396(0x12b)]()+_0x2732ca[_0x5ad396(0x12f)](0x1)),_0x2732ca;}return _0x2e3cb4[_0x5ad396(0x126)](/\//g,'\x5c');}export function expandHome(_0xd0e1c3){const _0x575abc=a3_0x2aea;if(_0xd0e1c3[_0x575abc(0x136)]('~/')||_0xd0e1c3==='~')return a3_0x43b752[_0x575abc(0x125)](a3_0x2d096a['homedir'](),_0xd0e1c3[_0x575abc(0x12f)](0x1));return _0xd0e1c3;}
@@ -1 +1 @@
1
- (function(_0x472dd0,_0x16f56d){const _0x5e674f=a4_0x490b,_0x43c92d=_0x472dd0();while(!![]){try{const _0x2a024e=-parseInt(_0x5e674f(0x12f))/0x1+parseInt(_0x5e674f(0x12e))/0x2+parseInt(_0x5e674f(0x126))/0x3+-parseInt(_0x5e674f(0x138))/0x4*(-parseInt(_0x5e674f(0x137))/0x5)+parseInt(_0x5e674f(0x133))/0x6+parseInt(_0x5e674f(0x12d))/0x7+parseInt(_0x5e674f(0x135))/0x8*(-parseInt(_0x5e674f(0x134))/0x9);if(_0x2a024e===_0x16f56d)break;else _0x43c92d['push'](_0x43c92d['shift']());}catch(_0x254185){_0x43c92d['push'](_0x43c92d['shift']());}}}(a4_0x27e8,0xcc979));import a4_0x4ccad0 from'path';export function isPathWithinAllowedDirectories(_0x23a533,_0x1c5d8b){const _0x211fec=a4_0x490b;if(typeof _0x23a533!=='string'||!Array[_0x211fec(0x125)](_0x1c5d8b))return![];if(!_0x23a533||_0x1c5d8b[_0x211fec(0x12b)]===0x0)return![];if(_0x23a533[_0x211fec(0x136)]('\x00'))return![];let _0x533f56;try{_0x533f56=a4_0x4ccad0['resolve'](a4_0x4ccad0['normalize'](_0x23a533));}catch{return![];}if(!a4_0x4ccad0[_0x211fec(0x132)](_0x533f56))throw new Error(_0x211fec(0x12c));return _0x1c5d8b[_0x211fec(0x12a)](_0x248ba0=>{const _0x3738bc=_0x211fec;if(typeof _0x248ba0!==_0x3738bc(0x139)||!_0x248ba0)return![];if(_0x248ba0['includes']('\x00'))return![];let _0x3f9f42;try{_0x3f9f42=a4_0x4ccad0[_0x3738bc(0x130)](a4_0x4ccad0[_0x3738bc(0x127)](_0x248ba0));}catch{return![];}if(!a4_0x4ccad0[_0x3738bc(0x132)](_0x3f9f42))throw new Error(_0x3738bc(0x129));if(_0x533f56===_0x3f9f42)return!![];if(_0x3f9f42===a4_0x4ccad0[_0x3738bc(0x128)])return _0x533f56[_0x3738bc(0x131)](a4_0x4ccad0[_0x3738bc(0x128)]);return _0x533f56[_0x3738bc(0x131)](_0x3f9f42+a4_0x4ccad0['sep']);});}function a4_0x490b(_0x492773,_0x313e63){_0x492773=_0x492773-0x125;const _0x27e825=a4_0x27e8();let _0x490b99=_0x27e825[_0x492773];return _0x490b99;}function a4_0x27e8(){const _0x40c1e4=['isArray','4464792MAwxqb','normalize','sep','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','some','length','Path\x20must\x20be\x20absolute\x20after\x20normalization','5740665iNTCwO','1377478pkwfjN','1205518WSZCzi','resolve','startsWith','isAbsolute','1113810IBtfrd','138879psmJnN','768gbnhin','includes','171085eIKOwR','40ghUeCt','string'];a4_0x27e8=function(){return _0x40c1e4;};return a4_0x27e8();}
1
+ (function(_0x1e1ebe,_0xcadbc3){const _0x5105fd=a4_0x780a,_0x54dca7=_0x1e1ebe();while(!![]){try{const _0x22d19e=-parseInt(_0x5105fd(0x14f))/0x1*(-parseInt(_0x5105fd(0x15b))/0x2)+parseInt(_0x5105fd(0x155))/0x3*(-parseInt(_0x5105fd(0x15a))/0x4)+-parseInt(_0x5105fd(0x15f))/0x5*(parseInt(_0x5105fd(0x150))/0x6)+parseInt(_0x5105fd(0x161))/0x7*(parseInt(_0x5105fd(0x158))/0x8)+-parseInt(_0x5105fd(0x15c))/0x9+-parseInt(_0x5105fd(0x15e))/0xa+parseInt(_0x5105fd(0x154))/0xb*(parseInt(_0x5105fd(0x160))/0xc);if(_0x22d19e===_0xcadbc3)break;else _0x54dca7['push'](_0x54dca7['shift']());}catch(_0xac07dd){_0x54dca7['push'](_0x54dca7['shift']());}}}(a4_0x5395,0x8babf));function a4_0x5395(){const _0x4116ff=['4291sxwXxD','some','isArray','33mxMlOw','48eIBKCJ','string','isAbsolute','length','82489ExKFRz','12309lujTyW','normalize','sep','7064FionCN','startsWith','620BMZbky','61864lfZHXJ','653697LvCsnX','includes','9413050wlWclR','679565zGpMIB','2796qFdczn'];a4_0x5395=function(){return _0x4116ff;};return a4_0x5395();}import a4_0x541ba3 from'path';function a4_0x780a(_0x59ec34,_0x1e1f03){_0x59ec34=_0x59ec34-0x14d;const _0x5395ae=a4_0x5395();let _0x780ac8=_0x5395ae[_0x59ec34];return _0x780ac8;}export function isPathWithinAllowedDirectories(_0x4e1022,_0x3d6783){const _0x3c9a62=a4_0x780a;if(typeof _0x4e1022!==_0x3c9a62(0x151)||!Array[_0x3c9a62(0x14e)](_0x3d6783))return![];if(!_0x4e1022||_0x3d6783[_0x3c9a62(0x153)]===0x0)return![];if(_0x4e1022['includes']('\x00'))return![];let _0x179a8d;try{_0x179a8d=a4_0x541ba3['resolve'](a4_0x541ba3[_0x3c9a62(0x156)](_0x4e1022));}catch{return![];}if(!a4_0x541ba3[_0x3c9a62(0x152)](_0x179a8d))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x3d6783[_0x3c9a62(0x14d)](_0x47e1eb=>{const _0x573e58=_0x3c9a62;if(typeof _0x47e1eb!==_0x573e58(0x151)||!_0x47e1eb)return![];if(_0x47e1eb[_0x573e58(0x15d)]('\x00'))return![];let _0x19f9aa;try{_0x19f9aa=a4_0x541ba3['resolve'](a4_0x541ba3['normalize'](_0x47e1eb));}catch{return![];}if(!a4_0x541ba3[_0x573e58(0x152)](_0x19f9aa))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0x179a8d===_0x19f9aa)return!![];if(_0x19f9aa===a4_0x541ba3[_0x573e58(0x157)])return _0x179a8d['startsWith'](a4_0x541ba3['sep']);return _0x179a8d[_0x573e58(0x159)](_0x19f9aa+a4_0x541ba3[_0x573e58(0x157)]);});}
@@ -1 +1 @@
1
- (function(_0x228c0c,_0x2e3e4d){const _0x205f34=a5_0x4669,_0x37f96c=_0x228c0c();while(!![]){try{const _0x2c4a56=-parseInt(_0x205f34(0x176))/0x1+-parseInt(_0x205f34(0x171))/0x2*(parseInt(_0x205f34(0x170))/0x3)+parseInt(_0x205f34(0x173))/0x4*(parseInt(_0x205f34(0x17a))/0x5)+-parseInt(_0x205f34(0x174))/0x6+parseInt(_0x205f34(0x16a))/0x7+-parseInt(_0x205f34(0x17b))/0x8+parseInt(_0x205f34(0x169))/0x9;if(_0x2c4a56===_0x2e3e4d)break;else _0x37f96c['push'](_0x37f96c['shift']());}catch(_0x2096ab){_0x37f96c['push'](_0x37f96c['shift']());}}}(a5_0x29c3,0x3172a));import{promises as a5_0x209606}from'fs';function a5_0x4669(_0x75fece,_0x498da7){_0x75fece=_0x75fece-0x169;const _0x29c3fe=a5_0x29c3();let _0x4669d0=_0x29c3fe[_0x75fece];return _0x4669d0;}import a5_0x2acb68 from'path';import a5_0x14b95c from'os';import{normalizePath}from'./path-utils.js';function a5_0x29c3(){const _0x27ee84=['3583197gqLcjN','245910lwMVpd','file://','homedir','Skipping\x20invalid\x20directory:\x20','startsWith','uri','27RoNokG','13358uOkJxc','stat','36QTooIE','624534LflfQS','slice','96142pkFcQH','\x20due\x20to\x20error:\x20','push','message','202715bKhepA','2682160KjcadH','non-directory\x20root','isDirectory','Skipping\x20'];a5_0x29c3=function(){return _0x27ee84;};return a5_0x29c3();}import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x120feb){const _0x131a2e=a5_0x4669;try{const _0x4f7363=_0x120feb[_0x131a2e(0x16e)](_0x131a2e(0x16b))?_0x120feb[_0x131a2e(0x175)](0x7):_0x120feb,_0x58bbee=_0x4f7363['startsWith']('~/')||_0x4f7363==='~'?a5_0x2acb68['join'](a5_0x14b95c[_0x131a2e(0x16c)](),_0x4f7363[_0x131a2e(0x175)](0x1)):_0x4f7363,_0x22ee0b=a5_0x2acb68['resolve'](_0x58bbee),_0x502e2a=await a5_0x209606['realpath'](_0x22ee0b);return normalizePath(_0x502e2a);}catch{return null;}}function formatDirectoryError(_0x20738d,_0x17ecab,_0x554bbe){const _0x3f61f0=a5_0x4669;if(_0x554bbe)return _0x3f61f0(0x17e)+_0x554bbe+':\x20'+_0x20738d;const _0xdd5c5b=_0x17ecab instanceof Error?_0x17ecab[_0x3f61f0(0x179)]:String(_0x17ecab);return _0x3f61f0(0x16d)+_0x20738d+_0x3f61f0(0x177)+_0xdd5c5b;}export async function getValidRootDirectories(_0x392db6){const _0x3ca68f=a5_0x4669,_0x1b4b72=[];for(const _0x41520a of _0x392db6){const _0x111fd7=await parseRootUri(_0x41520a['uri']);if(!_0x111fd7){logMcpStderr(formatDirectoryError(_0x41520a[_0x3ca68f(0x16f)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x1cb6ec=await a5_0x209606[_0x3ca68f(0x172)](_0x111fd7);_0x1cb6ec[_0x3ca68f(0x17d)]()?_0x1b4b72[_0x3ca68f(0x178)](_0x111fd7):logMcpStderr(formatDirectoryError(_0x111fd7,undefined,_0x3ca68f(0x17c)));}catch(_0x761331){logMcpStderr(formatDirectoryError(_0x111fd7,_0x761331));}}return _0x1b4b72;}
1
+ (function(_0x3798c9,_0x1980ac){const _0x2d33df=a5_0x3903,_0x55ac80=_0x3798c9();while(!![]){try{const _0x43860e=parseInt(_0x2d33df(0x180))/0x1+parseInt(_0x2d33df(0x169))/0x2+-parseInt(_0x2d33df(0x181))/0x3+-parseInt(_0x2d33df(0x170))/0x4*(-parseInt(_0x2d33df(0x16e))/0x5)+-parseInt(_0x2d33df(0x17a))/0x6+parseInt(_0x2d33df(0x17d))/0x7+parseInt(_0x2d33df(0x16d))/0x8*(parseInt(_0x2d33df(0x177))/0x9);if(_0x43860e===_0x1980ac)break;else _0x55ac80['push'](_0x55ac80['shift']());}catch(_0x3067d1){_0x55ac80['push'](_0x55ac80['shift']());}}}(a5_0x17dd,0x7702b));import{promises as a5_0xfd4e9c}from'fs';function a5_0x3903(_0x55ad56,_0x340ab6){_0x55ad56=_0x55ad56-0x169;const _0x17dd33=a5_0x17dd();let _0x3903ec=_0x17dd33[_0x55ad56];return _0x3903ec;}import a5_0x235561 from'path';import a5_0x2aa878 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x34f807){const _0x36dc1e=a5_0x3903;try{const _0x4040da=_0x34f807[_0x36dc1e(0x17f)](_0x36dc1e(0x171))?_0x34f807[_0x36dc1e(0x16a)](0x7):_0x34f807,_0x203973=_0x4040da['startsWith']('~/')||_0x4040da==='~'?a5_0x235561[_0x36dc1e(0x16c)](a5_0x2aa878[_0x36dc1e(0x176)](),_0x4040da['slice'](0x1)):_0x4040da,_0x188f16=a5_0x235561[_0x36dc1e(0x17b)](_0x203973),_0x3afa85=await a5_0xfd4e9c[_0x36dc1e(0x16b)](_0x188f16);return normalizePath(_0x3afa85);}catch{return null;}}function a5_0x17dd(){const _0x4db055=['isDirectory','1642606hirYlU','Skipping\x20','startsWith','120690UivpxW','1559448uGgigs','50062pDbNPB','slice','realpath','join','8KbPUlx','5JsahZI','message','2934220hBAYjk','file://','\x20due\x20to\x20error:\x20','non-directory\x20root','stat','uri','homedir','3709143lNCZPH','invalid\x20path\x20or\x20inaccessible','push','3112668APXjvD','resolve'];a5_0x17dd=function(){return _0x4db055;};return a5_0x17dd();}function formatDirectoryError(_0x1b9f61,_0x1f8b97,_0x195b36){const _0x424af3=a5_0x3903;if(_0x195b36)return _0x424af3(0x17e)+_0x195b36+':\x20'+_0x1b9f61;const _0x32bbfe=_0x1f8b97 instanceof Error?_0x1f8b97[_0x424af3(0x16f)]:String(_0x1f8b97);return'Skipping\x20invalid\x20directory:\x20'+_0x1b9f61+_0x424af3(0x172)+_0x32bbfe;}export async function getValidRootDirectories(_0xd40705){const _0x446dca=a5_0x3903,_0x16c87f=[];for(const _0x405cfa of _0xd40705){const _0x58c55b=await parseRootUri(_0x405cfa[_0x446dca(0x175)]);if(!_0x58c55b){logMcpStderr(formatDirectoryError(_0x405cfa[_0x446dca(0x175)],undefined,_0x446dca(0x178)));continue;}try{const _0x35deb6=await a5_0xfd4e9c[_0x446dca(0x174)](_0x58c55b);_0x35deb6[_0x446dca(0x17c)]()?_0x16c87f[_0x446dca(0x179)](_0x58c55b):logMcpStderr(formatDirectoryError(_0x58c55b,undefined,_0x446dca(0x173)));}catch(_0x402e44){logMcpStderr(formatDirectoryError(_0x58c55b,_0x402e44));}}return _0x16c87f;}
@@ -1 +1 @@
1
- const a6_0x272bb6=a6_0x3f2f;(function(_0x24e3aa,_0x4e7375){const _0x2d646c=a6_0x3f2f,_0x259eb1=_0x24e3aa();while(!![]){try{const _0x410f81=-parseInt(_0x2d646c(0x18f))/0x1+parseInt(_0x2d646c(0x195))/0x2+parseInt(_0x2d646c(0x193))/0x3+parseInt(_0x2d646c(0x196))/0x4*(parseInt(_0x2d646c(0x18d))/0x5)+parseInt(_0x2d646c(0x198))/0x6+parseInt(_0x2d646c(0x191))/0x7+parseInt(_0x2d646c(0x190))/0x8*(-parseInt(_0x2d646c(0x192))/0x9);if(_0x410f81===_0x4e7375)break;else _0x259eb1['push'](_0x259eb1['shift']());}catch(_0x9d866){_0x259eb1['push'](_0x259eb1['shift']());}}}(a6_0x36b9,0x99a6a));export const TOOL_NAMES={'EDIT_FILE':'edit_file','CODEBASE_SEARCH':a6_0x272bb6(0x18e),'GITHUB_CODEBASE_SEARCH':a6_0x272bb6(0x197)};function a6_0x36b9(){const _0xc32c22=['705404OESDad','56360CSeMfg','2334934cZydpn','729GKdznc','1134804RJRCCr','values','956724RdeoZX','4jiPjLF','github_codebase_search','1983780IxvDol','1922905lSFpNp','codebase_search'];a6_0x36b9=function(){return _0xc32c22;};return a6_0x36b9();}export const ALL_TOOL_NAMES=Object[a6_0x272bb6(0x194)](TOOL_NAMES);function a6_0x3f2f(_0x3f8856,_0x3138b0){_0x3f8856=_0x3f8856-0x18d;const _0x36b9db=a6_0x36b9();let _0x3f2f6c=_0x36b9db[_0x3f8856];return _0x3f2f6c;}export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);
1
+ const a6_0x5a70ea=a6_0x96b6;function a6_0x96b6(_0x37de5f,_0x2c32a7){_0x37de5f=_0x37de5f-0x19a;const _0x12d21a=a6_0x12d2();let _0x96b658=_0x12d21a[_0x37de5f];return _0x96b658;}function a6_0x12d2(){const _0x8f1e4b=['62549sFlfHE','1245pbNqGG','8CBtnGI','134265nDHAaz','16UdqkzB','1722RrNJLD','3965260AOuEJO','edit_file','values','1546587cVYJMk','1801485QFgSLx','github_codebase_search','1233432wfHHMs'];a6_0x12d2=function(){return _0x8f1e4b;};return a6_0x12d2();}(function(_0x12b9b6,_0x2a118b){const _0x5444cd=a6_0x96b6,_0x47e4b5=_0x12b9b6();while(!![]){try{const _0x2915de=-parseInt(_0x5444cd(0x1a4))/0x1+parseInt(_0x5444cd(0x19b))/0x2*(-parseInt(_0x5444cd(0x19a))/0x3)+parseInt(_0x5444cd(0x1a3))/0x4+parseInt(_0x5444cd(0x1a5))/0x5*(parseInt(_0x5444cd(0x19c))/0x6)+parseInt(_0x5444cd(0x1a0))/0x7+parseInt(_0x5444cd(0x1a6))/0x8*(-parseInt(_0x5444cd(0x1a1))/0x9)+parseInt(_0x5444cd(0x19d))/0xa;if(_0x2915de===_0x2a118b)break;else _0x47e4b5['push'](_0x47e4b5['shift']());}catch(_0x29c99b){_0x47e4b5['push'](_0x47e4b5['shift']());}}}(a6_0x12d2,0x5bed6));export const TOOL_NAMES={'EDIT_FILE':a6_0x5a70ea(0x19e),'CODEBASE_SEARCH':'codebase_search','GITHUB_CODEBASE_SEARCH':a6_0x5a70ea(0x1a2)};export const ALL_TOOL_NAMES=Object[a6_0x5a70ea(0x19f)](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.194",
3
+ "version": "0.8.195",
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.184",
38
+ "@morphllm/morphsdk": "0.2.185",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",