@morphllm/morphmcp 0.8.171 → 0.8.172
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/log-utils.js +1 -1
- package/dist/logger.js +1 -1
- package/dist/path-utils.js +1 -1
- package/dist/path-validation.js +1 -1
- package/dist/roots-utils.js +1 -1
- package/dist/tool-definitions.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x5f4091=a0_0x2d0d;(function(_0x486795,_0x3d5828){const _0x465fbb=a0_0x2d0d,_0x527f6a=_0x486795();while(!![]){try{const _0x3a911e=-parseInt(_0x465fbb(0x1c6))/0x1+-parseInt(_0x465fbb(0x1a5))/0x2*(-parseInt(_0x465fbb(0x205))/0x3)+-parseInt(_0x465fbb(0x1d1))/0x4*(parseInt(_0x465fbb(0x227))/0x5)+parseInt(_0x465fbb(0x22c))/0x6*(parseInt(_0x465fbb(0x1e2))/0x7)+parseInt(_0x465fbb(0x20d))/0x8+-parseInt(_0x465fbb(0x214))/0x9*(parseInt(_0x465fbb(0x266))/0xa)+parseInt(_0x465fbb(0x27f))/0xb;if(_0x3a911e===_0x3d5828)break;else _0x527f6a['push'](_0x527f6a['shift']());}catch(_0x1a2007){_0x527f6a['push'](_0x527f6a['shift']());}}}(a0_0x464c,0xeee94));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x13de7e from'fs/promises';import a0_0x2c51d4 from'path';import a0_0x4b581a 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_0x355914 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x44b625){const _0x252451=a0_0x2d0d,_0x26748b=_0x44b625[_0x252451(0x1df)](a0_0x2c51d4[_0x252451(0x249)])[_0x252451(0x1be)](Boolean);if(_0x26748b['length']<0x2)return null;for(let _0x259020=Math[_0x252451(0x24b)](_0x26748b[_0x252451(0x1e8)]/0x2);_0x259020>=0x1;_0x259020--){for(let _0x8b67f4=0x0;_0x8b67f4<=_0x26748b[_0x252451(0x1e8)]-0x2*_0x259020;_0x8b67f4++){const _0x21dd2a=_0x26748b['slice'](_0x8b67f4,_0x8b67f4+_0x259020),_0x48581d=_0x26748b[_0x252451(0x19a)](_0x8b67f4+_0x259020,_0x8b67f4+0x2*_0x259020);if(_0x21dd2a[_0x252451(0x1a1)]((_0x5ec4b8,_0x11abe5)=>_0x5ec4b8===_0x48581d[_0x11abe5])){const _0x29b4b1=[..._0x26748b[_0x252451(0x19a)](0x0,_0x8b67f4),..._0x26748b[_0x252451(0x19a)](_0x8b67f4+_0x259020)];return a0_0x2c51d4[_0x252451(0x249)]+_0x29b4b1[_0x252451(0x208)](a0_0x2c51d4[_0x252451(0x249)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x72af9b=a0_0x2d0d;try{const _0x4bf860=require(_0x72af9b(0x19c));return _0x4bf860[_0x72af9b(0x245)]??_0x72af9b(0x1d9);}catch(_0x5236b1){return logMcpStderr(_0x72af9b(0x1d5),_0x5236b1),'unknown';}}function printHelp(){const _0x1420be=a0_0x2d0d;console[_0x1420be(0x1e9)](_0x1420be(0x239)+getPackageVersion()),console[_0x1420be(0x1e9)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console['log'](_0x1420be(0x23a)),console[_0x1420be(0x1e9)](_0x1420be(0x1b5)),console[_0x1420be(0x1e9)](_0x1420be(0x199)),console[_0x1420be(0x1e9)](_0x1420be(0x18a)),console[_0x1420be(0x1e9)](_0x1420be(0x256)),console[_0x1420be(0x1e9)]('\x20\x20morph-mcp'),console[_0x1420be(0x1e9)](_0x1420be(0x264));}const cliArgs=process[a0_0x5f4091(0x291)][a0_0x5f4091(0x19a)](0x2),VERSION_FLAGS=new Set([a0_0x5f4091(0x275),'-v','-V']),HELP_FLAGS=new Set([a0_0x5f4091(0x297),'-h']);cliArgs[a0_0x5f4091(0x213)](_0x2558b5=>VERSION_FLAGS[a0_0x5f4091(0x27d)](_0x2558b5))&&(console[a0_0x5f4091(0x1e9)](a0_0x5f4091(0x239)+getPackageVersion()),process[a0_0x5f4091(0x278)](0x0));cliArgs[a0_0x5f4091(0x213)](_0x3aa8e1=>HELP_FLAGS[a0_0x5f4091(0x27d)](_0x3aa8e1))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x352b5c){const _0x4df7a3=a0_0x5f4091;for(let _0x23950e=0x0;_0x23950e<cliArgs['length'];_0x23950e++){const _0x1d896e=cliArgs[_0x23950e];if(_0x1d896e['startsWith']('--'+_0x352b5c+'='))return _0x1d896e[_0x4df7a3(0x19a)](('--'+_0x352b5c+'=')[_0x4df7a3(0x1e8)]);if(_0x1d896e==='--'+_0x352b5c&&_0x23950e+0x1<cliArgs[_0x4df7a3(0x1e8)])return cliArgs[_0x23950e+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x5f4091(0x27d)](arg)||HELP_FLAGS[a0_0x5f4091(0x27d)](arg))continue;if(arg[a0_0x5f4091(0x29a)](a0_0x5f4091(0x1ca)))continue;if(arg===a0_0x5f4091(0x26e)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process['env']['WORKSPACE_ROOT']||process[a0_0x5f4091(0x1f6)][a0_0x5f4091(0x1a4)]||process[a0_0x5f4091(0x25d)](),ENABLE_WORKSPACE_MODE=process[a0_0x5f4091(0x1f6)][a0_0x5f4091(0x207)]!==a0_0x5f4091(0x1c3),MORPH_API_KEY=getCliArg(a0_0x5f4091(0x254))??process['env'][a0_0x5f4091(0x175)],MORPH_API_URL=process['env'][a0_0x5f4091(0x28a)],MORPH_LARGE_APPLY=process[a0_0x5f4091(0x1f6)][a0_0x5f4091(0x1ae)]!==a0_0x5f4091(0x1c3),MORPH_WARP_GREP_TIMEOUT=process[a0_0x5f4091(0x1f6)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x5f4091(0x1f6)][a0_0x5f4091(0x27e)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process['env'][a0_0x5f4091(0x1e1)]?new Set(process[a0_0x5f4091(0x1f6)]['DISABLED_TOOLS'][a0_0x5f4091(0x1df)](',')[a0_0x5f4091(0x1a2)](_0x2f9bd7=>_0x2f9bd7[a0_0x5f4091(0x1b2)]())[a0_0x5f4091(0x1be)](_0x46a25b=>_0x46a25b[a0_0x5f4091(0x1e8)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x5f4091(0x243)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x5f4091(0x27d)](tool)&&console['error'](a0_0x5f4091(0x295)+tool+a0_0x5f4091(0x250)+[...KNOWN_TOOL_NAMES][a0_0x5f4091(0x208)](',\x20'));}console[a0_0x5f4091(0x21f)](a0_0x5f4091(0x1fa)+[...DISABLED_TOOLS][a0_0x5f4091(0x208)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x5f4091(0x1dc))&&!MORPH_API_KEY[a0_0x5f4091(0x29a)](a0_0x5f4091(0x178))&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0xeafcb2){const _0x54d8c2=a0_0x5f4091;try{await a0_0x355914['post'](_0x54d8c2(0x262),{..._0xeafcb2,'timestamp':new Date()[_0x54d8c2(0x265)](),'source':_0xeafcb2[_0x54d8c2(0x1a8)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0xeafcb2['context']}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x54d8c2(0x1b7)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x299006,_0x3bf5e7){const _0x4fa834=a0_0x5f4091;if(_0x299006&&typeof _0x299006==='object'&&'status'in _0x299006)return _0x299006[_0x4fa834(0x267)];if(_0x299006&&typeof _0x299006===_0x4fa834(0x198)&&'response'in _0x299006)return _0x299006[_0x4fa834(0x194)]?.[_0x4fa834(0x267)];const _0x37d52c=_0x3bf5e7[_0x4fa834(0x1a3)](/\b(401|429)\b/);return _0x37d52c?parseInt(_0x37d52c[0x1],0xa):null;}function a0_0x2d0d(_0xc335df,_0x5b269f){_0xc335df=_0xc335df-0x16b;const _0x464c51=a0_0x464c();let _0x2d0dc6=_0x464c51[_0xc335df];return _0x2d0dc6;}function a0_0x464c(){const _0x49a4f6=['Morph\x20Edit\x20Preview','ENABLE_WORKSPACE_MODE','join','list_directory','Error\x20accessing\x20directory\x20','Tool\x20','BinaryFile','822704pNckoo','\x0a</file>','linesRemoved','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','connect','codebase_search','some','16939107opiHkR','code_edit','morph-v3-fast','Workspace\x20mode\x20enabled:\x20Using\x20','api_request_start','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','Rules:\x0a','\x20chars)','Warning:\x20','error','assistant','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','github_url','A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20','homedir','string','SymlinkError','10oOVJlu','requiresApiKey','finish','pattern','\x20(new\x20file)','1052478PapHnt','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','\x20error(s)','setNotificationHandler','morph-v3-large','metadata','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','added\x20','data','MCP','mcp-filesystem','read','setRequestHandler','@morphllm/morphmcp\x20','\x0aOptions:','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','Morph\x20Edit\x20','completed_with_file_errors','repo_path','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','safeParse','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','search_string','size','timeout','version','warp_grep_complete','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','realpath','sep','Unknown\x20error','floor','\x22>\x0a','github_search_start','name','branch','\x22.\x20Known\x20tools:\x20','constructor','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','role','api-key','timed\x20out','\x0aExamples:','files','errors','The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos','tool_call_error','\x27\x20in\x20`','code','cwd','path_validation_start','ReadError','text','API\x20error\x20(auth/rate-limit)','https://morphllm.com/api/error-report','readFile','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','toISOString','10ImrwSi','status','FileNotFound','.\x20Path:\x20','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','arguments','Max\x20results\x20to\x20return','node_modules','--api-key','morph-mcp','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','Unknown\x20tool:\x20','stack','--version','Benefits:\x0a','utf-8','exit','TimeoutError','content','params','stringify','has','MORPH_WARP_GREP_TIMEOUT','33854260WuQUeO','instructions','.vscode','Morph\x20FastApply\x20failed\x20without\x20error\x20message','warn','substring','GITHUB_CODEBASE_SEARCH','LocalRipgrepProvider','timings','Relevant\x20context\x20found:','<file\x20path=\x22','MORPH_API_URL','tool','Invalid\x20arguments:\x20','instruction','SubToolError','isArray','Parent\x20directory\x20does\x20not\x20exist:\x20','argv','catch','file_read_complete','dryRun','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','Specific\x20commit\x20hash\x20to\x20search','--help','push','grep_search','startsWith','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','indexOf','UnknownError','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','ENOENT','etimedout','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','number','read\x20','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','MORPH_API_KEY','Here\x20is\x20the\x20content\x20of\x20files:\x0a','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','morph-','path','ms:','now','toLowerCase','edit_file','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','.cursor','ms.\x20Success:\x20','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','terminationReason','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Error\x20running\x20fast\x20context\x20search:\x20','boolean','WarpGrep\x20sub-tool\x20errors:\x20','tool_calls','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','default','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','describe','Preview\x20changes\x20without\x20applying\x20them.','lines','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Created\x20File','EDIT_FILE','-\x20Listed\x20directory\x20`','response','tsconfig.json','getClientCapabilities','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','object','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','slice','grep','../package.json','[github_codebase_search]\x20Failed\x20in\x20','payload','listRoots','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','every','map','match','PWD','2Gmkpsj','messages','glob','source','CODEBASE_SEARCH','access','github_codebase_search','\x20is\x20not\x20a\x20directory','-\x20Read\x20file\x20`','MORPH_LARGE_APPLY','\x20-\x20','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','trim','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','[could\x20not\x20read\x20file:\x20','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','GitHub\x20search\x20failed:\x20','Bearer\x20','description','debug','searchGitHub','completionId','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','RipgrepNotAvailable','filter','success','\x22>\x0aError\x20reading\x20file:\x20','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','resolve','false','Warning:\x20Workspace\x20fallback\x20failed:\x20','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','1330537GMCCUi','user','inputSchema','linesModified','--api-key=','Repository\x20identifier','all','turns','dirname','function','\x20valid\x20directories','3299404qfZJgF','compaction_failed','Fatal\x20error\x20running\x20server:','basename','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','normalize','Cargo.toml','unknown','\x0a...\x20(truncated,\x20total:\x20','oninitialized','sk-','tool_call_received','includes','split','Error:\x20','DISABLED_TOOLS','49vTxXVx','grep\x20\x27','tool_call_complete','\x20as\x20allowed\x20directory','optional','glob\x20\x27','length','log','-\x20Glob\x20search\x20`',',\x20removed\x20','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','message','target_file','path_validation_failed','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','command','isDirectory','morph-warp-grep-v2.1','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.','env','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.','stat','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Disabled\x20tools:\x20','tool_call_id','0.2.0','.\x20Changes:\x20','package.json',',\x20modified\x20','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Failed\x20to\x20request\x20roots\x20from\x20client:','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','roots','runWarpGrep_call','4297659gaLgBx'];a0_0x464c=function(){return _0x49a4f6;};return a0_0x464c();}function handleMorphAPIError(_0x1f8fac){const _0x51a8fb=a0_0x5f4091,_0x537901=_0x1f8fac instanceof Error?_0x1f8fac['message']:String(_0x1f8fac),_0xcde5ae=extractStatusCode(_0x1f8fac,_0x537901);switch(_0xcde5ae){case 0x191:return{'content':[{'type':_0x51a8fb(0x260),'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':_0x51a8fb(0x260),'text':_0x51a8fb(0x17e)}],'isError':!![]};default:return null;}}args[a0_0x5f4091(0x1e8)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x5f4091(0x184)),logMcpStderr(a0_0x5f4091(0x170)),logMcpStderr(a0_0x5f4091(0x1b3)),logMcpStderr(a0_0x5f4091(0x1b1)),logMcpStderr(a0_0x5f4091(0x16f)),logMcpStderr(a0_0x5f4091(0x1bc)));function normalizePath(_0x4e5c9e){const _0x4334b1=a0_0x5f4091;return a0_0x2c51d4[_0x4334b1(0x1d7)](_0x4e5c9e);}function expandHome(_0x385665){const _0x6a7fbe=a0_0x5f4091;if(_0x385665[_0x6a7fbe(0x29a)]('~/')||_0x385665==='~')return a0_0x2c51d4['join'](a0_0x4b581a[_0x6a7fbe(0x224)](),_0x385665[_0x6a7fbe(0x19a)](0x1));return _0x385665;}let allowedDirectories=await Promise[a0_0x5f4091(0x1cc)](args[a0_0x5f4091(0x1a2)](async _0xfc116a=>{const _0x5a007b=a0_0x5f4091,_0xfcee73=expandHome(_0xfc116a),_0x1ffe4b=a0_0x2c51d4[_0x5a007b(0x1c2)](_0xfcee73);try{const _0x721163=await a0_0x13de7e[_0x5a007b(0x248)](_0x1ffe4b);return normalizePath(_0x721163);}catch(_0x28a755){return normalizePath(_0x1ffe4b);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5f4091(0x1e8)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),logMcpStderr(a0_0x5f4091(0x217)+workspaceDir+a0_0x5f4091(0x1e5)));}catch(a0_0x48675a){logMcpStderr(a0_0x5f4091(0x22d)+a0_0x48675a);}async function detectWorkspaceRoot(_0x48f6b3){const _0x38b95b=a0_0x5f4091;let _0x2e81cc=a0_0x2c51d4[_0x38b95b(0x1c2)](_0x48f6b3);const _0x8c840e=['.git',_0x38b95b(0x281),_0x38b95b(0x1fe),_0x38b95b(0x1d8),'pyproject.toml','go.mod',_0x38b95b(0x180),_0x38b95b(0x195),'composer.json'];while(_0x2e81cc!==a0_0x2c51d4['dirname'](_0x2e81cc)){for(const _0x178a25 of _0x8c840e){const _0x16e9a1=a0_0x2c51d4[_0x38b95b(0x208)](_0x2e81cc,_0x178a25);try{return await a0_0x13de7e[_0x38b95b(0x1aa)](_0x16e9a1),normalizePath(_0x2e81cc);}catch{}}_0x2e81cc=a0_0x2c51d4[_0x38b95b(0x1ce)](_0x2e81cc);}return normalizePath(_0x48f6b3);}await Promise[a0_0x5f4091(0x1cc)](args[a0_0x5f4091(0x1a2)](async _0xced01c=>{const _0xac7705=a0_0x5f4091;try{const _0x1f35f8=await a0_0x13de7e[_0xac7705(0x1f8)](expandHome(_0xced01c));!_0x1f35f8[_0xac7705(0x1f3)]()&&(logMcpStderr(_0xac7705(0x1e0)+_0xced01c+_0xac7705(0x1ac)),process['exit'](0x1));}catch(_0x54db05){logMcpStderr(_0xac7705(0x20a)+_0xced01c+':',_0x54db05),process[_0xac7705(0x278)](0x1);}}));async function validatePath(_0x2de1cf){const _0x25699c=a0_0x5f4091,_0x55d623=expandHome(_0x2de1cf),_0xfd99eb=a0_0x2c51d4['resolve'](_0x55d623);logger[_0x25699c(0x1b9)](_0x25699c(0x235),_0x25699c(0x25e),{'raw_path':_0x2de1cf,'absolute':_0xfd99eb});try{const _0x35265f=await a0_0x13de7e[_0x25699c(0x248)](_0xfd99eb);return logger[_0x25699c(0x1b9)](_0x25699c(0x235),'path_validation_resolved',{'resolved':_0x35265f,'symlink':_0x35265f!==_0xfd99eb}),_0x35265f;}catch(_0x2946ff){if(_0x2946ff[_0x25699c(0x25c)]===_0x25699c(0x16d)){const _0x27e37f=a0_0x2c51d4['dirname'](_0xfd99eb);try{const _0x506e3f=await a0_0x13de7e[_0x25699c(0x248)](_0x27e37f),_0x4e7f96=a0_0x2c51d4[_0x25699c(0x208)](_0x506e3f,a0_0x2c51d4[_0x25699c(0x1d4)](_0xfd99eb));return logger[_0x25699c(0x1b9)](_0x25699c(0x235),'path_validation_resolved',{'resolved':_0x4e7f96,'new_file':!![]}),_0x4e7f96;}catch{logger[_0x25699c(0x21f)](_0x25699c(0x235),_0x25699c(0x1ef),{'raw_path':_0x2de1cf,'error':_0x25699c(0x290)+_0x27e37f});throw new Error(_0x25699c(0x290)+_0x27e37f);}}logger[_0x25699c(0x21f)](_0x25699c(0x235),_0x25699c(0x1ef),{'raw_path':_0x2de1cf,'error':_0x2946ff[_0x25699c(0x1ed)]});throw _0x2946ff;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x5f4091(0x225)](),'code_edit':z[a0_0x5f4091(0x225)]()[a0_0x5f4091(0x18d)](a0_0x5f4091(0x177)),'instruction':z[a0_0x5f4091(0x225)]()[a0_0x5f4091(0x18d)](a0_0x5f4091(0x23f)),'dryRun':z[a0_0x5f4091(0x187)]()[a0_0x5f4091(0x18b)](![])['describe'](a0_0x5f4091(0x18e))}),CODEBASE_SEARCH_QUERY_DESCRIPTION='Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.',WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x5f4091(0x225)]()[a0_0x5f4091(0x18d)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x5f4091(0x225)]()['describe'](a0_0x5f4091(0x259)),'search_type':z['enum'](['default',a0_0x5f4091(0x26d)])['optional']()[a0_0x5f4091(0x18d)](a0_0x5f4091(0x202))}),WarpGrepGitHubArgsSchema=z[a0_0x5f4091(0x198)]({'search_string':z[a0_0x5f4091(0x225)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x5f4091(0x225)]()[a0_0x5f4091(0x1e6)]()[a0_0x5f4091(0x18d)]('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_0x5f4091(0x225)]()[a0_0x5f4091(0x1e6)]()[a0_0x5f4091(0x18d)](a0_0x5f4091(0x16c)),'branch':z[a0_0x5f4091(0x225)]()[a0_0x5f4091(0x1e6)]()[a0_0x5f4091(0x18d)](a0_0x5f4091(0x210))}),CodebaseSearchArgsSchema=z['object']({'query':z['string']()[a0_0x5f4091(0x18d)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x5f4091(0x18d)](a0_0x5f4091(0x1cb)),'branch':z[a0_0x5f4091(0x225)]()[a0_0x5f4091(0x1e6)]()[a0_0x5f4091(0x18d)](a0_0x5f4091(0x1c1)),'commitHash':z[a0_0x5f4091(0x225)]()[a0_0x5f4091(0x1e6)]()['describe'](a0_0x5f4091(0x296)),'targetDirectories':z['array'](z['string']())[a0_0x5f4091(0x18b)]([])['describe'](a0_0x5f4091(0x17f)),'limit':z[a0_0x5f4091(0x171)]()[a0_0x5f4091(0x1e6)]()['default'](0xa)[a0_0x5f4091(0x18d)](a0_0x5f4091(0x26c))}),server=new Server({'name':a0_0x5f4091(0x26f),'version':a0_0x5f4091(0x1fc)},{'capabilities':{'tools':{}}});server[a0_0x5f4091(0x238)](ListToolsRequestSchema,async()=>{const _0x3a5348=a0_0x5f4091,_0x18d415=[{'name':TOOL_NAMES[_0x3a5348(0x192)],'description':_0x3a5348(0x219)+_0x3a5348(0x271)+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+'IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a'+_0x3a5348(0x276)+_0x3a5348(0x1ec)+_0x3a5348(0x1a0)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x3a5348(0x272)+_0x3a5348(0x21a)+'ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a'+_0x3a5348(0x1b0)+'For\x20deletions:\x0a'+_0x3a5348(0x221)+_0x3a5348(0x1d6)+_0x3a5348(0x21c)+_0x3a5348(0x174)+_0x3a5348(0x241)+_0x3a5348(0x1f9)+_0x3a5348(0x29b)+_0x3a5348(0x232)+_0x3a5348(0x197)+_0x3a5348(0x247),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x3a5348(0x1a9)],'description':_0x3a5348(0x223)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x3a5348(0x1c5)+_0x3a5348(0x18c)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x4c936e=_0x18d415[_0x3a5348(0x1be)](_0x3ae2a9=>{const _0x172815=_0x3a5348;if(DISABLED_TOOLS[_0x172815(0x27d)](_0x3ae2a9[_0x172815(0x24e)]))return console[_0x172815(0x21f)](_0x172815(0x20b)+_0x3ae2a9[_0x172815(0x24e)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x172815(0x228)in _0x3ae2a9&&_0x3ae2a9[_0x172815(0x228)]&&!MORPH_API_KEY)return logMcpStderr(_0x172815(0x21e)+_0x3ae2a9[_0x172815(0x24e)]+_0x172815(0x26a)),![];return!![];});return{'tools':_0x4c936e['map'](_0x5a2c98=>({'name':_0x5a2c98[_0x3a5348(0x24e)],'description':_0x5a2c98[_0x3a5348(0x1b8)],'inputSchema':_0x5a2c98[_0x3a5348(0x1c8)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x1550b0=>{const _0x193030=a0_0x5f4091,{name:_0x47308c,arguments:_0x1a046d}=_0x1550b0[_0x193030(0x27b)],_0x43ba5c=Date[_0x193030(0x17b)]();logger[_0x193030(0x1b9)](_0x193030(0x235),_0x193030(0x1dd),{'tool':_0x47308c,'args':_0x47308c===_0x193030(0x17d)?{'path':_0x1a046d?.[_0x193030(0x179)],'instruction':_0x1a046d?.[_0x193030(0x28d)]||_0x1a046d?.[_0x193030(0x280)],'dryRun':_0x1a046d?.[_0x193030(0x294)]}:_0x1a046d});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x193030(0x260),'text':_0x193030(0x270)}],'isError':!![]};if(!MORPH_API_KEY[_0x193030(0x29a)]('sk-')&&!MORPH_API_KEY[_0x193030(0x29a)](_0x193030(0x178)))return{'content':[{'type':_0x193030(0x260),'text':_0x193030(0x1f7)}],'isError':!![]};if(DISABLED_TOOLS[_0x193030(0x27d)](_0x47308c))return{'content':[{'type':'text','text':'Tool\x20\x22'+_0x47308c+'\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.'}],'isError':![]};switch(_0x47308c){case TOOL_NAMES['EDIT_FILE']:{let _0x2fec32=_0x1a046d;_0x2fec32&&typeof _0x2fec32==='object'&&(_0x193030(0x1ee)in _0x2fec32&&!(_0x193030(0x179)in _0x2fec32)&&(_0x2fec32={..._0x2fec32,'path':_0x2fec32[_0x193030(0x1ee)],'target_file':undefined}),_0x193030(0x280)in _0x2fec32&&!(_0x193030(0x28d)in _0x2fec32)&&(_0x2fec32={..._0x2fec32,'instruction':_0x2fec32[_0x193030(0x280)],'instructions':undefined}));const _0xfef00d=MorphEditFileArgsSchema[_0x193030(0x240)](_0x2fec32);if(!_0xfef00d['success'])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0xfef00d[_0x193030(0x21f)]);const _0x5bd2e8=await validatePath(_0xfef00d[_0x193030(0x234)][_0x193030(0x179)]);let _0x3107b1=null,_0x4b8886=!![],_0x49b4d3=null;try{_0x3107b1=await a0_0x13de7e['readFile'](_0x5bd2e8,_0x193030(0x277)),logger[_0x193030(0x1b9)](_0x193030(0x235),_0x193030(0x293),{'path':_0x5bd2e8,'size_bytes':_0x3107b1['length']});}catch(_0x10354b){const _0x47ae7d=_0x10354b[_0x193030(0x25c)];_0x47ae7d===_0x193030(0x16d)?(_0x4b8886=![],_0x3107b1='',logger[_0x193030(0x1b9)](_0x193030(0x235),_0x193030(0x293),{'path':_0x5bd2e8,'exists':![]})):(_0x49b4d3='Failed\x20to\x20read\x20file:\x20'+(_0x47ae7d||_0x193030(0x1d9))+_0x193030(0x1af)+(_0x10354b instanceof Error?_0x10354b[_0x193030(0x1ed)]:String(_0x10354b)),logger[_0x193030(0x21f)]('MCP','file_read_failed',{'path':_0x5bd2e8,'error':_0x49b4d3}),logMcpStderr('Warning:\x20'+_0x49b4d3));}let _0x10acf1;try{const _0x53da06=MORPH_API_KEY;if(!_0x53da06)throw new Error(_0x193030(0x252));const _0x15e2e2=a0_0x2c51d4['dirname'](_0x5bd2e8),_0x46ec9e=a0_0x2c51d4[_0x193030(0x1d4)](_0x5bd2e8);logger[_0x193030(0x1b9)]('MCP',_0x193030(0x218),{'model':_0x193030(0x216),'path':_0xfef00d[_0x193030(0x234)][_0x193030(0x179)],'instruction_len':_0xfef00d[_0x193030(0x234)][_0x193030(0x28d)][_0x193030(0x1e8)],'code_edit_len':_0xfef00d[_0x193030(0x234)]['code_edit'][_0x193030(0x1e8)],'original_code_len':_0x3107b1?.[_0x193030(0x1e8)]??0x0,'dry_run':_0xfef00d[_0x193030(0x234)][_0x193030(0x294)]});const _0x14fe4d=Date[_0x193030(0x17b)](),_0x22e690=await executeEditFile({'target_filepath':_0x46ec9e,'code_edit':_0xfef00d[_0x193030(0x234)]['code_edit'],'instruction':_0xfef00d['data'][_0x193030(0x28d)]},{'morphApiKey':_0x53da06,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x15e2e2,'autoWrite':!_0xfef00d[_0x193030(0x234)][_0x193030(0x294)],'generateUdiff':![],'debug':![]}),_0x520188=Date[_0x193030(0x17b)]()-_0x14fe4d;_0x10acf1=_0x22e690[_0x193030(0x1bb)];if(!_0x22e690[_0x193030(0x1bf)])throw new Error(_0x22e690[_0x193030(0x21f)]||_0x193030(0x282));const _0x148076=_0x22e690['changes'],_0x13c637=_0x193030(0x233)+_0x148076['linesAdded']+_0x193030(0x1eb)+_0x148076['linesRemoved']+_0x193030(0x1ff)+_0x148076[_0x193030(0x1c9)];logger['debug'](_0x193030(0x235),_0x193030(0x1e4),{'tool':'edit_file','success':!![],'latency_ms':Date[_0x193030(0x17b)]()-_0x43ba5c,'edit_latency_ms':_0x520188,'changes':{'added':_0x148076['linesAdded'],'removed':_0x148076[_0x193030(0x20f)],'modified':_0x148076[_0x193030(0x1c9)]},'completion_id':_0x10acf1});if(_0xfef00d[_0x193030(0x234)]['dryRun'])return{'content':[{'type':_0x193030(0x260),'text':_0x193030(0x206)+(_0x4b8886?'':_0x193030(0x22b))+':\x20'+_0xfef00d[_0x193030(0x234)][_0x193030(0x28d)]+_0x193030(0x1fd)+_0x13c637+'.\x20Path:\x20'+_0xfef00d[_0x193030(0x234)][_0x193030(0x179)]+'.'}]};return{'content':[{'type':_0x193030(0x260),'text':_0x193030(0x23c)+(_0x4b8886?'Applied':_0x193030(0x191))+':\x20'+_0xfef00d[_0x193030(0x234)][_0x193030(0x28d)]+_0x193030(0x1fd)+_0x13c637+_0x193030(0x269)+_0xfef00d['data']['path']+'.'}]};}catch(_0x586b56){const _0x3ae151=handleMorphAPIError(_0x586b56);if(_0x3ae151)return logger[_0x193030(0x21f)](_0x193030(0x235),_0x193030(0x25a),{'tool':_0x193030(0x17d),'error':_0x193030(0x261),'latency_ms':Date[_0x193030(0x17b)]()-_0x43ba5c}),_0x3ae151;const _0x321af9=_0x586b56 instanceof Error?_0x586b56[_0x193030(0x1ed)]:String(_0x586b56);return logger[_0x193030(0x21f)](_0x193030(0x235),_0x193030(0x25a),{'tool':_0x193030(0x17d),'error':_0x321af9,'path':_0xfef00d['data'][_0x193030(0x179)],'validated_path':_0x5bd2e8,'latency_ms':Date[_0x193030(0x17b)]()-_0x43ba5c,'stack':_0x586b56 instanceof Error?_0x586b56[_0x193030(0x274)]:undefined}),reportMorphError({'error_message':_0x321af9,'error_type':_0x586b56 instanceof Error?_0x586b56[_0x193030(0x251)]['name']:_0x193030(0x16b),'context':{'tool':'edit_file','completion_id':_0x10acf1,'file_path':_0xfef00d[_0x193030(0x234)][_0x193030(0x179)],'validated_path':_0x5bd2e8,'instruction':_0xfef00d[_0x193030(0x234)][_0x193030(0x28d)],'model':MORPH_LARGE_APPLY?_0x193030(0x230):_0x193030(0x216),'dry_run':_0xfef00d[_0x193030(0x234)][_0x193030(0x294)],'file_exists':_0x4b8886,'file_read_error':_0x49b4d3,'file_readable':_0x3107b1!==null,'request_content':{'path':_0xfef00d['data'][_0x193030(0x179)],'code_edit':_0xfef00d[_0x193030(0x234)][_0x193030(0x215)],'instruction':_0xfef00d['data'][_0x193030(0x28d)],'original_code':_0x3107b1!==null?_0x3107b1['length']>0xc350?_0x3107b1['substring'](0x0,0xc350)+_0x193030(0x1da)+_0x3107b1[_0x193030(0x1e8)]+_0x193030(0x21d):_0x3107b1:_0x193030(0x1b4)+(_0x49b4d3||'unknown\x20error')+']','original_code_length':_0x3107b1?.['length']??0x0,'model':MORPH_LARGE_APPLY?_0x193030(0x230):_0x193030(0x216),'dry_run':_0xfef00d['data'][_0x193030(0x294)]}},'stack_trace':_0x586b56 instanceof Error?_0x586b56[_0x193030(0x274)]:undefined,'source':_0x193030(0x236)})[_0x193030(0x292)](()=>{}),{'content':[{'type':_0x193030(0x260),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x321af9}],'isError':!![]};}}case TOOL_NAMES['CODEBASE_SEARCH']:{const _0xdc2a2c=WarpGrepArgsSchema[_0x193030(0x240)](_0x1a046d);if(!_0xdc2a2c[_0x193030(0x1bf)])return{'content':[{'type':'text','text':_0x193030(0x28c)+_0xdc2a2c[_0x193030(0x21f)]}],'isError':!![]};const _0x1b048a=_0x394e87=>{const _0x43613b=_0x193030,_0xf312fa=[];for(const _0xafd00d of _0x394e87||[]){if(_0xafd00d['role']==='assistant'&&Array[_0x43613b(0x28f)](_0xafd00d[_0x43613b(0x189)]))for(const _0x8eeb2e of _0xafd00d['tool_calls']){try{const _0x4a943c=_0x8eeb2e['function']?.[_0x43613b(0x24e)],_0x1db02f=JSON['parse'](_0x8eeb2e['function']?.['arguments']||'{}');if(_0x4a943c===_0x43613b(0x299))_0xf312fa[_0x43613b(0x298)](_0x43613b(0x1e3)+_0x1db02f[_0x43613b(0x22a)]+'\x27\x20'+(_0x1db02f[_0x43613b(0x179)]||'.'));else{if(_0x4a943c===_0x43613b(0x237))_0xf312fa[_0x43613b(0x298)](_0x43613b(0x172)+_0x1db02f[_0x43613b(0x179)]);else{if(_0x4a943c===_0x43613b(0x209))_0xf312fa[_0x43613b(0x298)]('list_directory\x20'+(_0x1db02f[_0x43613b(0x1f2)]||'.'));else{if(_0x4a943c==='glob')_0xf312fa['push'](_0x43613b(0x1e7)+_0x1db02f[_0x43613b(0x22a)]+'\x27\x20'+(_0x1db02f[_0x43613b(0x179)]||'.'));else _0x4a943c===_0x43613b(0x229)&&_0xf312fa[_0x43613b(0x298)]('finish');}}}}catch{}}}return _0xf312fa;},_0x45b3ea=_0x5d27b5=>{const _0x3f6e52=_0x193030,_0x53ca95=[];if(!_0x5d27b5||!Array[_0x3f6e52(0x28f)](_0x5d27b5))return _0x53ca95;const _0x880a58=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x3f6e52(0x268),'tool':_0x3f6e52(0x237)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x3f6e52(0x237)},{'pattern':/\[READ ERROR\]/,'error_type':_0x3f6e52(0x25f),'tool':_0x3f6e52(0x237)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':_0x3f6e52(0x19b)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x3f6e52(0x1bd),'tool':_0x3f6e52(0x19b)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x3f6e52(0x20c),'tool':_0x3f6e52(0x237)},{'pattern':/\[SYMLINK\]/,'error_type':_0x3f6e52(0x226),'tool':_0x3f6e52(0x237)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':_0x3f6e52(0x237)},{'pattern':/symbolic link/,'error_type':_0x3f6e52(0x226),'tool':_0x3f6e52(0x237)},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':'read'},{'pattern':/status="error"/,'error_type':'ToolException','tool':_0x3f6e52(0x1d9)}];let _0x184cba=0x0;for(const _0xd22ecf of _0x5d27b5){_0xd22ecf[_0x3f6e52(0x253)]===_0x3f6e52(0x220)&&Array['isArray'](_0xd22ecf[_0x3f6e52(0x189)])&&_0x184cba++;const _0x15a1f1=_0xd22ecf['content'];if((_0xd22ecf['role']===_0x3f6e52(0x28b)||_0xd22ecf[_0x3f6e52(0x253)]===_0x3f6e52(0x1c7))&&_0x15a1f1&&typeof _0x15a1f1===_0x3f6e52(0x225))for(const {pattern:_0x184ac3,error_type:_0x25e5f7,tool:_0x3597a2}of _0x880a58){const _0x2ea112=_0x15a1f1['match'](new RegExp(_0x184ac3[_0x3f6e52(0x1a8)],'g'));if(_0x2ea112)for(const _0x2a8971 of _0x2ea112){const _0x45dd9e=_0x15a1f1[_0x3f6e52(0x29c)](_0x2a8971),_0x12bf6a=_0x15a1f1[_0x3f6e52(0x284)](_0x45dd9e,Math['min'](_0x45dd9e+0xc8,_0x15a1f1[_0x3f6e52(0x1e8)]));_0x53ca95[_0x3f6e52(0x298)]({'tool':_0x3597a2,'error_type':_0x25e5f7,'error_message':_0x12bf6a[_0x3f6e52(0x1df)]('\x0a')[0x0],'turn':_0x184cba});}}}return _0x53ca95;};try{const _0x493336=a0_0x2c51d4['resolve'](_0xdc2a2c[_0x193030(0x234)][_0x193030(0x23e)]),_0x158778=_0xdc2a2c[_0x193030(0x234)]['search_type'],_0x518dfe=_0x158778===_0x193030(0x26d)?{'allowNames':['node_modules']}:undefined,_0x3af8ee=new LocalRipgrepProvider(_0x493336,undefined,_0x518dfe);logger[_0x193030(0x1b9)](_0x193030(0x235),'provider_created',{'type':_0x193030(0x286),'repo_root':_0x493336,'search_type':_0x158778||'default'}),logger[_0x193030(0x1b9)](_0x193030(0x235),'warp_grep_start',{'query':_0xdc2a2c['data'][_0x193030(0x242)],'repo_root':_0x493336,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x1da06f=Date[_0x193030(0x17b)](),_0x20516b=await runWarpGrep({'searchTerm':_0xdc2a2c[_0x193030(0x234)][_0x193030(0x242)],'repoRoot':_0x493336,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x3af8ee,'search_type':_0x158778}),_0x5ddec5=Date[_0x193030(0x17b)]()-_0x1da06f,_0x3f6dab=_0x20516b[_0x193030(0x229)]?.[_0x193030(0x231)]?.[_0x193030(0x257)]?.[_0x193030(0x1e8)]??0x0;logger[_0x193030(0x1b9)]('MCP',_0x193030(0x246),{'termination':_0x20516b[_0x193030(0x183)],'turns':_0x20516b[_0x193030(0x287)]?.[_0x193030(0x1cd)]??0x0,'files_found':_0x3f6dab,'latency_ms':_0x5ddec5});const _0x3e991c=_0x45b3ea(_0x20516b['messages']);_0x3e991c[_0x193030(0x1e8)]>0x0&&reportMorphError({'error_message':_0x193030(0x188)+_0x3e991c[_0x193030(0x1e8)]+_0x193030(0x22e),'error_type':_0x193030(0x28e),'level':_0x193030(0x283),'tool':_0x193030(0x212),'context':{'repo_path':_0xdc2a2c[_0x193030(0x234)][_0x193030(0x23e)],'query':_0xdc2a2c[_0x193030(0x234)][_0x193030(0x242)],'model':_0x193030(0x1f4),'termination_reason':_0x20516b['terminationReason'],'sub_tool_errors':_0x3e991c,'timings':_0x20516b['timings'],'tool_calls':_0x1b048a(_0x20516b['messages']),'messages':_0x20516b[_0x193030(0x1a6)]?.['map'](_0x2f6189=>({'role':_0x2f6189[_0x193030(0x253)],'content':_0x2f6189['content'],..._0x2f6189['tool_calls']?{'tool_calls':_0x2f6189[_0x193030(0x189)][_0x193030(0x1e8)]}:{},..._0x2f6189[_0x193030(0x1fb)]?{'tool_call_id':_0x2f6189[_0x193030(0x1fb)]}:{}}))},'source':_0x193030(0x236)})[_0x193030(0x292)](()=>{});let _0x3ada98='';if(_0x20516b[_0x193030(0x183)]==='completed'&&_0x20516b[_0x193030(0x229)]?.[_0x193030(0x231)]?.[_0x193030(0x257)]){const _0x15a9d2=_0x20516b[_0x193030(0x229)][_0x193030(0x231)][_0x193030(0x257)];if(_0x15a9d2['length']===0x0)return _0x3ada98=_0x20516b[_0x193030(0x229)][_0x193030(0x19e)]||_0x193030(0x200),{'content':[{'type':'text','text':_0x3ada98}]};const _0x51d8e7=[],_0x15201a=[_0x193030(0x185)];for(const _0x247d9a of _0x20516b[_0x193030(0x1a6)]){if(_0x247d9a[_0x193030(0x253)]===_0x193030(0x220)&&Array[_0x193030(0x28f)](_0x247d9a[_0x193030(0x189)]))for(const _0x542109 of _0x247d9a[_0x193030(0x189)]){try{const _0x264ebe=_0x542109[_0x193030(0x1cf)]?.['name'],_0x15f66e=JSON['parse'](_0x542109[_0x193030(0x1cf)]?.[_0x193030(0x26b)]||'{}');if(_0x264ebe===_0x193030(0x299))_0x15201a[_0x193030(0x298)]('-\x20Grepped\x20\x27'+_0x15f66e[_0x193030(0x22a)]+_0x193030(0x25b)+(_0x15f66e[_0x193030(0x179)]||'.')+'`');else{if(_0x264ebe===_0x193030(0x237))_0x15201a[_0x193030(0x298)](_0x193030(0x1ad)+_0x15f66e[_0x193030(0x179)]+'`');else{if(_0x264ebe==='list_directory')_0x15201a[_0x193030(0x298)](_0x193030(0x193)+(_0x15f66e[_0x193030(0x1f2)]||'.')+'`');else _0x264ebe===_0x193030(0x1a7)&&_0x15201a[_0x193030(0x298)](_0x193030(0x1ea)+_0x15f66e[_0x193030(0x22a)]+'`\x20in\x20`'+(_0x15f66e[_0x193030(0x179)]||'.')+'`');}}}catch{}}}_0x51d8e7['push'](_0x15201a[_0x193030(0x208)]('\x0a'));const _0x37bb12=['',_0x193030(0x288)];for(const _0x3bc47c of _0x15a9d2){if(_0x3bc47c[_0x193030(0x18f)]==='*')_0x37bb12[_0x193030(0x298)]('-\x20'+_0x3bc47c[_0x193030(0x179)]+':*');else{if(Array[_0x193030(0x28f)](_0x3bc47c[_0x193030(0x18f)])){const _0x24694b=_0x3bc47c[_0x193030(0x18f)][_0x193030(0x1a2)](([_0xc1fec6,_0x2a6839])=>{if(_0xc1fec6===_0x2a6839)return''+_0xc1fec6;return _0xc1fec6+'-'+_0x2a6839;});_0x37bb12[_0x193030(0x298)]('-\x20'+_0x3bc47c[_0x193030(0x179)]+':'+_0x24694b[_0x193030(0x208)](','));}else _0x37bb12[_0x193030(0x298)]('-\x20'+_0x3bc47c[_0x193030(0x179)]+':*');}}_0x37bb12['push'](''),_0x51d8e7[_0x193030(0x298)](_0x37bb12[_0x193030(0x208)]('\x0a')),_0x51d8e7[_0x193030(0x298)](_0x193030(0x176));const _0x156a88=[],_0x567931=[];for(const _0x3fdc51 of _0x15a9d2){let _0x429e02=a0_0x2c51d4[_0x193030(0x1c2)](_0xdc2a2c[_0x193030(0x234)][_0x193030(0x23e)],_0x3fdc51[_0x193030(0x179)]),_0x39bc27=null,_0x8f46b7=null;try{_0x39bc27=await a0_0x13de7e[_0x193030(0x263)](_0x429e02,{'encoding':'utf-8'});}catch(_0x2060ce){const _0x45a620=fixPathRepetition(_0x429e02);if(_0x45a620)try{_0x39bc27=await a0_0x13de7e[_0x193030(0x263)](_0x45a620,{'encoding':_0x193030(0x277)}),_0x429e02=_0x45a620;}catch{_0x8f46b7=_0x2060ce instanceof Error?_0x2060ce:new Error(String(_0x2060ce));}else _0x8f46b7=_0x2060ce instanceof Error?_0x2060ce:new Error(String(_0x2060ce));}if(_0x39bc27!==null){const _0x2f4fe6=_0x39bc27[_0x193030(0x1df)](/\r?\n/),_0x48100c=[];if(_0x3fdc51[_0x193030(0x18f)]==='*'||!Array[_0x193030(0x28f)](_0x3fdc51['lines']))for(let _0x4b6a69=0x1;_0x4b6a69<=_0x2f4fe6[_0x193030(0x1e8)];_0x4b6a69++){const _0x3db030=_0x2f4fe6[_0x4b6a69-0x1];_0x48100c[_0x193030(0x298)](_0x4b6a69+'|\x20'+_0x3db030);}else for(const [_0x315752,_0x35d730]of _0x3fdc51[_0x193030(0x18f)]){_0x48100c[_0x193030(0x1e8)]>0x0&&_0x48100c['push']('');for(let _0x554536=_0x315752;_0x554536<=_0x35d730&&_0x554536<=_0x2f4fe6[_0x193030(0x1e8)];_0x554536++){const _0x268eeb=_0x2f4fe6[_0x554536-0x1];_0x48100c[_0x193030(0x298)](_0x554536+'|\x20'+_0x268eeb);}}_0x567931['push']({'path':_0x3fdc51[_0x193030(0x179)],'content':_0x48100c[_0x193030(0x208)]('\x0a')});}else _0x156a88[_0x193030(0x298)](_0x193030(0x289)+_0x3fdc51['path']+_0x193030(0x1c0)+(_0x8f46b7?.[_0x193030(0x1ed)]||_0x193030(0x24a))+'\x0a</file>');}try{const _0xa63c95=await compactFileContexts(_0x567931,_0xdc2a2c['data'][_0x193030(0x242)],MORPH_API_KEY,MORPH_API_URL);for(const _0x3ba41e of _0xa63c95){_0x156a88[_0x193030(0x298)](_0x193030(0x289)+_0x3ba41e['path']+_0x193030(0x24c)+_0x3ba41e['content']+'\x0a</file>');}}catch(_0x577816){logger['warn'](_0x193030(0x235),_0x193030(0x1d2),{'error':_0x577816 instanceof Error?_0x577816[_0x193030(0x1ed)]:String(_0x577816),'files_count':_0x567931[_0x193030(0x1e8)]});for(const _0x399594 of _0x567931){_0x156a88['push'](_0x193030(0x289)+_0x399594[_0x193030(0x179)]+_0x193030(0x24c)+_0x399594[_0x193030(0x27a)]+_0x193030(0x20e));}}_0x51d8e7[_0x193030(0x298)](_0x156a88[_0x193030(0x208)]('\x0a\x0a')),_0x3ada98=_0x51d8e7[_0x193030(0x208)]('\x0a');const _0x2727c8=_0x20516b['errors']?.[_0x193030(0x1be)](_0x136237=>_0x136237[_0x193030(0x1ed)]?.[_0x193030(0x29a)]('File\x20read\x20error:'))||[];if(_0x2727c8[_0x193030(0x1e8)]>0x0){const _0x32ab68=_0x2727c8['map'](_0x5115c9=>_0x5115c9[_0x193030(0x1ed)])[_0x193030(0x208)](';\x20');reportMorphError({'error_message':_0x32ab68,'error_type':'FileReadError','context':{'tool':_0x193030(0x212),'repo_path':_0xdc2a2c['data'][_0x193030(0x23e)],'query':_0xdc2a2c[_0x193030(0x234)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x193030(0x23d),'error_count':_0x2727c8['length'],'is_timeout':![],'timings':_0x20516b[_0x193030(0x287)],'files_attempted':_0x15a9d2[_0x193030(0x1a2)](_0x5440b6=>({'path':_0x5440b6[_0x193030(0x179)],'lines':_0x5440b6[_0x193030(0x18f)]})),'tool_calls':_0x1b048a(_0x20516b[_0x193030(0x1a6)]),'messages':_0x20516b[_0x193030(0x1a6)]?.['map'](_0x48acd9=>({'role':_0x48acd9['role'],'content':_0x48acd9[_0x193030(0x27a)],..._0x48acd9['tool_calls']?{'tool_calls':_0x48acd9[_0x193030(0x189)][_0x193030(0x1e8)]}:{},..._0x48acd9['tool_call_id']?{'tool_call_id':_0x48acd9['tool_call_id']}:{}})),'request_content':{'query':_0xdc2a2c[_0x193030(0x234)][_0x193030(0x242)],'repo_path':_0xdc2a2c[_0x193030(0x234)]['repo_path'],'repoRoot':a0_0x2c51d4['resolve'](_0xdc2a2c[_0x193030(0x234)][_0x193030(0x23e)]),'model':_0x193030(0x1f4)}},'source':'mcp-filesystem'})[_0x193030(0x292)](()=>{});}}else{if(_0x20516b[_0x193030(0x183)]==='terminated'&&_0x20516b[_0x193030(0x258)]['length']>0x0){const _0x91a188=_0x20516b['errors']['map'](_0x5a491a=>_0x5a491a[_0x193030(0x1ed)])[_0x193030(0x208)](';\x20');_0x3ada98=_0x193030(0x1e0)+_0x91a188;const _0x3cba8a=_0x91a188[_0x193030(0x17c)]()[_0x193030(0x1de)](_0x193030(0x244))||_0x91a188[_0x193030(0x17c)]()['includes'](_0x193030(0x255))||_0x91a188[_0x193030(0x17c)]()[_0x193030(0x1de)](_0x193030(0x16e)),_0x15efb2=_0x20516b['finish']?.[_0x193030(0x231)]?.[_0x193030(0x257)],_0x41177f=_0x20516b['errors'][0x0];reportMorphError({'error_message':_0x91a188,'error_type':_0x3cba8a?_0x193030(0x279):_0x41177f?.['constructor']?.[_0x193030(0x24e)]||'WarpGrepError','context':{'tool':'codebase_search','repo_path':_0xdc2a2c[_0x193030(0x234)][_0x193030(0x23e)],'query':_0xdc2a2c[_0x193030(0x234)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x20516b[_0x193030(0x183)],'error_count':_0x20516b[_0x193030(0x258)]['length'],'is_timeout':_0x3cba8a,'timings':_0x20516b[_0x193030(0x287)],'files_attempted':_0x15efb2?.['map'](_0x5d7413=>({'path':_0x5d7413[_0x193030(0x179)],'lines':_0x5d7413[_0x193030(0x18f)]})),'tool_calls':_0x1b048a(_0x20516b[_0x193030(0x1a6)]),'messages':_0x20516b['messages']?.[_0x193030(0x1a2)](_0x2eb438=>({'role':_0x2eb438[_0x193030(0x253)],'content':_0x2eb438[_0x193030(0x27a)],..._0x2eb438['tool_calls']?{'tool_calls':_0x2eb438['tool_calls'][_0x193030(0x1e8)]}:{},..._0x2eb438[_0x193030(0x1fb)]?{'tool_call_id':_0x2eb438[_0x193030(0x1fb)]}:{}})),'request_content':{'query':_0xdc2a2c[_0x193030(0x234)]['search_string'],'repo_path':_0xdc2a2c[_0x193030(0x234)][_0x193030(0x23e)],'repoRoot':a0_0x2c51d4[_0x193030(0x1c2)](_0xdc2a2c['data']['repo_path']),'model':_0x193030(0x1f4)}},'stack_trace':_0x41177f?.[_0x193030(0x274)]||undefined,'source':_0x193030(0x236)})[_0x193030(0x292)](()=>{});}else _0x3ada98='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0x193030(0x260),'text':_0x3ada98}]};}catch(_0x3e5ed0){const _0x420a7f=handleMorphAPIError(_0x3e5ed0);if(_0x420a7f)return logger[_0x193030(0x21f)](_0x193030(0x235),_0x193030(0x25a),{'tool':'codebase_search','error':_0x193030(0x261),'latency_ms':Date[_0x193030(0x17b)]()-_0x43ba5c}),_0x420a7f;const _0x1e6222=_0x3e5ed0 instanceof Error?_0x3e5ed0[_0x193030(0x1ed)]:String(_0x3e5ed0);logger[_0x193030(0x21f)]('MCP',_0x193030(0x25a),{'tool':_0x193030(0x212),'error':_0x1e6222,'repo_path':_0xdc2a2c[_0x193030(0x234)][_0x193030(0x23e)],'query':_0xdc2a2c['data'][_0x193030(0x242)],'latency_ms':Date[_0x193030(0x17b)]()-_0x43ba5c});const _0x34028e=_0x1e6222[_0x193030(0x17c)]()[_0x193030(0x1de)](_0x193030(0x244))||_0x1e6222[_0x193030(0x17c)]()[_0x193030(0x1de)](_0x193030(0x255))||_0x1e6222[_0x193030(0x17c)]()[_0x193030(0x1de)](_0x193030(0x16e))||_0x3e5ed0 instanceof Error&&_0x3e5ed0[_0x193030(0x24e)]==='TimeoutError';return reportMorphError({'error_message':_0x1e6222,'error_type':_0x34028e?_0x193030(0x279):_0x3e5ed0 instanceof Error?_0x3e5ed0['constructor']['name']:_0x193030(0x16b),'context':{'tool':'codebase_search','repo_path':_0xdc2a2c[_0x193030(0x234)]['repo_path'],'query':_0xdc2a2c['data']['search_string'],'model':_0x193030(0x1f4),'is_timeout':_0x34028e,'exception_phase':_0x193030(0x204),'request_content':{'query':_0xdc2a2c[_0x193030(0x234)][_0x193030(0x242)],'repo_path':_0xdc2a2c[_0x193030(0x234)]['repo_path'],'repoRoot':a0_0x2c51d4[_0x193030(0x1c2)](_0xdc2a2c[_0x193030(0x234)][_0x193030(0x23e)]),'model':_0x193030(0x1f4)}},'stack_trace':_0x3e5ed0 instanceof Error?_0x3e5ed0['stack']:undefined,'source':_0x193030(0x236)})[_0x193030(0x292)](()=>{}),{'content':[{'type':'text','text':_0x193030(0x186)+_0x1e6222}],'isError':![]};}}case TOOL_NAMES[_0x193030(0x285)]:{const _0xe22581=WarpGrepGitHubArgsSchema[_0x193030(0x240)](_0x1a046d);if(!_0xe22581['success'])return{'content':[{'type':_0x193030(0x260),'text':'Invalid\x20arguments:\x20'+_0xe22581[_0x193030(0x21f)]}],'isError':!![]};const _0x3added=_0xe22581[_0x193030(0x234)][_0x193030(0x222)]||_0xe22581[_0x193030(0x234)]['owner_repo'];if(!_0x3added)return{'content':[{'type':_0x193030(0x260),'text':_0x193030(0x21b)}],'isError':!![]};const _0x7e54cd=MORPH_API_KEY;if(!_0x7e54cd)throw new Error(_0x193030(0x252));const _0x5505a8=Date[_0x193030(0x17b)]();logger[_0x193030(0x1b9)](_0x193030(0x235),_0x193030(0x24d),{'identifier':_0x3added,'query':_0xe22581[_0x193030(0x234)][_0x193030(0x242)],'branch':_0xe22581['data'][_0x193030(0x24f)]});try{const _0x5f3c83=new WarpGrepClient({'morphApiKey':_0x7e54cd,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x239835=await _0x5f3c83[_0x193030(0x1ba)]({'searchTerm':_0xe22581[_0x193030(0x234)][_0x193030(0x242)],'github':_0x3added,'branch':_0xe22581[_0x193030(0x234)]['branch']}),_0x5375d1=Date['now']()-_0x5505a8;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x5375d1+_0x193030(0x181)+_0x239835[_0x193030(0x1bf)]);const _0x2aba69=formatResult(_0x239835);return{'content':[{'type':_0x193030(0x260),'text':_0x2aba69}]};}catch(_0x1d7750){const _0x72828d=handleMorphAPIError(_0x1d7750);if(_0x72828d)return _0x72828d;const _0x2674e2=Date[_0x193030(0x17b)]()-_0x5505a8,_0x1f883b=_0x1d7750 instanceof Error?_0x1d7750[_0x193030(0x1ed)]:String(_0x1d7750);return logMcpStderr(_0x193030(0x19d)+_0x2674e2+_0x193030(0x17a),_0x1f883b),reportMorphError({'error_message':_0x1f883b,'error_type':_0x1d7750 instanceof Error?_0x1d7750['constructor']['name']:_0x193030(0x16b),'context':{'tool':_0x193030(0x1ab),'github_url':_0x3added,'search_string':_0xe22581['data'][_0x193030(0x242)],'branch':_0xe22581[_0x193030(0x234)][_0x193030(0x24f)]},'stack_trace':_0x1d7750 instanceof Error?_0x1d7750[_0x193030(0x274)]:undefined,'source':_0x193030(0x236),'tool':_0x193030(0x1ab),'latency_ms':_0x2674e2})[_0x193030(0x292)](()=>{}),{'content':[{'type':_0x193030(0x260),'text':_0x193030(0x1b6)+_0x1f883b}],'isError':![]};}}default:throw new Error(_0x193030(0x273)+_0x47308c);}}catch(_0x5e00db){const _0x18af38=_0x5e00db instanceof Error?_0x5e00db[_0x193030(0x1ed)]:String(_0x5e00db);return reportMorphError({'error_message':_0x18af38,'error_type':_0x5e00db instanceof Error?_0x5e00db[_0x193030(0x251)]['name']:_0x193030(0x16b),'context':{'tool':_0x47308c,'arguments':_0x1a046d?JSON[_0x193030(0x27c)](_0x1a046d)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x193030(0x1fc)},'stack_trace':_0x5e00db instanceof Error?_0x5e00db['stack']:undefined,'source':_0x193030(0x236)})[_0x193030(0x292)](()=>{}),{'content':[{'type':'text','text':_0x193030(0x1e0)+_0x18af38}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x15f759){const _0x1abca0=a0_0x5f4091,_0x174163=await getValidRootDirectories(_0x15f759);if(_0x174163[_0x1abca0(0x1e8)]>0x0)allowedDirectories=[..._0x174163],logMcpStderr(_0x1abca0(0x23b)+_0x174163['length']+_0x1abca0(0x1d0));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x45ba4c=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x45ba4c&&(allowedDirectories=[_0x45ba4c],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x45ba4c));}catch(_0x1bc12f){logMcpStderr(_0x1abca0(0x1c4)+_0x1bc12f);}}}server[a0_0x5f4091(0x22f)](RootsListChangedNotificationSchema,async()=>{const _0x57d9fc=a0_0x5f4091;try{const _0x27774e=await server['listRoots']();_0x27774e&&_0x57d9fc(0x203)in _0x27774e&&await updateAllowedDirectoriesFromRoots(_0x27774e[_0x57d9fc(0x203)]);}catch(_0x23c586){logMcpStderr(_0x57d9fc(0x201),_0x23c586 instanceof Error?_0x23c586['message']:String(_0x23c586));}}),server[a0_0x5f4091(0x1db)]=async()=>{const _0x242cf0=a0_0x5f4091,_0x142df3=server[_0x242cf0(0x196)]();if(_0x142df3?.[_0x242cf0(0x203)])try{const _0x5efda7=await server[_0x242cf0(0x19f)]();_0x5efda7&&'roots'in _0x5efda7?await updateAllowedDirectoriesFromRoots(_0x5efda7['roots']):logMcpStderr(_0x242cf0(0x190));}catch(_0x514887){logMcpStderr(_0x242cf0(0x182),_0x514887 instanceof Error?_0x514887[_0x242cf0(0x1ed)]:String(_0x514887));}else{if(allowedDirectories[_0x242cf0(0x1e8)]>0x0)logMcpStderr(_0x242cf0(0x1f0),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x242cf0(0x1f1));else throw new Error(_0x242cf0(0x1f5));}}};async function runServer(){const _0x2fb0b6=a0_0x5f4091,_0x33ab8c=new StdioServerTransport();await server[_0x2fb0b6(0x211)](_0x33ab8c),logMcpStderr(_0x2fb0b6(0x173)),allowedDirectories['length']===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()['catch'](_0x124b06=>{const _0x201eb1=a0_0x5f4091;logMcpStderr(_0x201eb1(0x1d3),_0x124b06),process[_0x201eb1(0x278)](0x1);});
|
|
2
|
+
const a0_0x4592e9=a0_0x1bf7;(function(_0x13f9ae,_0x2f5fb9){const _0x38e128=a0_0x1bf7,_0x24d6cc=_0x13f9ae();while(!![]){try{const _0x3f4dfa=-parseInt(_0x38e128(0x189))/0x1+-parseInt(_0x38e128(0x120))/0x2*(-parseInt(_0x38e128(0xe8))/0x3)+parseInt(_0x38e128(0xf8))/0x4+-parseInt(_0x38e128(0x154))/0x5+-parseInt(_0x38e128(0xdf))/0x6+parseInt(_0x38e128(0x127))/0x7+parseInt(_0x38e128(0x16b))/0x8;if(_0x3f4dfa===_0x2f5fb9)break;else _0x24d6cc['push'](_0x24d6cc['shift']());}catch(_0x3ed3d8){_0x24d6cc['push'](_0x24d6cc['shift']());}}}(a0_0x3bb1,0x8fda1));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0xb48a10 from'fs/promises';import a0_0xe64fd4 from'path';import a0_0xc72497 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_0x32428b from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x428e4c){const _0x549b88=a0_0x1bf7,_0x30d257=_0x428e4c['split'](a0_0xe64fd4[_0x549b88(0xe7)])[_0x549b88(0x102)](Boolean);if(_0x30d257['length']<0x2)return null;for(let _0x3833e9=Math[_0x549b88(0x18e)](_0x30d257[_0x549b88(0xc1)]/0x2);_0x3833e9>=0x1;_0x3833e9--){for(let _0x6b0518=0x0;_0x6b0518<=_0x30d257['length']-0x2*_0x3833e9;_0x6b0518++){const _0x403c46=_0x30d257[_0x549b88(0x92)](_0x6b0518,_0x6b0518+_0x3833e9),_0x4d1134=_0x30d257[_0x549b88(0x92)](_0x6b0518+_0x3833e9,_0x6b0518+0x2*_0x3833e9);if(_0x403c46[_0x549b88(0xa5)]((_0x21ae8c,_0x2d9b36)=>_0x21ae8c===_0x4d1134[_0x2d9b36])){const _0x26de66=[..._0x30d257[_0x549b88(0x92)](0x0,_0x6b0518),..._0x30d257['slice'](_0x6b0518+_0x3833e9)];return a0_0xe64fd4[_0x549b88(0xe7)]+_0x26de66[_0x549b88(0xd4)](a0_0xe64fd4[_0x549b88(0xe7)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x12c7f7=a0_0x1bf7;try{const _0x67cbee=require(_0x12c7f7(0x137));return _0x67cbee[_0x12c7f7(0x7a)]??_0x12c7f7(0x156);}catch(_0x5d2c5e){return logMcpStderr(_0x12c7f7(0x124),_0x5d2c5e),_0x12c7f7(0x156);}}function printHelp(){const _0x562f26=a0_0x1bf7;console[_0x562f26(0x15b)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x562f26(0x15b)](_0x562f26(0xa0)),console['log'](_0x562f26(0x17f)),console[_0x562f26(0x15b)](_0x562f26(0x119)),console['log']('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0x562f26(0x15b)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x562f26(0x15b)]('\x0aExamples:'),console[_0x562f26(0x15b)]('\x20\x20morph-mcp'),console[_0x562f26(0x15b)](_0x562f26(0xe9));}const cliArgs=process[a0_0x4592e9(0x110)][a0_0x4592e9(0x92)](0x2),VERSION_FLAGS=new Set([a0_0x4592e9(0x130),'-v','-V']),HELP_FLAGS=new Set([a0_0x4592e9(0x11c),'-h']);cliArgs[a0_0x4592e9(0x70)](_0xd9183c=>VERSION_FLAGS[a0_0x4592e9(0x18d)](_0xd9183c))&&(console['log'](a0_0x4592e9(0x9f)+getPackageVersion()),process[a0_0x4592e9(0x196)](0x0));function a0_0x1bf7(_0x57af19,_0x936580){_0x57af19=_0x57af19-0x70;const _0x3bb186=a0_0x3bb1();let _0x1bf740=_0x3bb186[_0x57af19];return _0x1bf740;}cliArgs[a0_0x4592e9(0x70)](_0x5c36ff=>HELP_FLAGS[a0_0x4592e9(0x18d)](_0x5c36ff))&&(printHelp(),process[a0_0x4592e9(0x196)](0x0));function getCliArg(_0x27743c){const _0x1089a1=a0_0x4592e9;for(let _0x3e9548=0x0;_0x3e9548<cliArgs[_0x1089a1(0xc1)];_0x3e9548++){const _0x4d81e0=cliArgs[_0x3e9548];if(_0x4d81e0[_0x1089a1(0x19a)]('--'+_0x27743c+'='))return _0x4d81e0[_0x1089a1(0x92)](('--'+_0x27743c+'=')[_0x1089a1(0xc1)]);if(_0x4d81e0==='--'+_0x27743c&&_0x3e9548+0x1<cliArgs['length'])return cliArgs[_0x3e9548+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x4592e9(0x18d)](arg)||HELP_FLAGS[a0_0x4592e9(0x18d)](arg))continue;if(arg[a0_0x4592e9(0x19a)](a0_0x4592e9(0xb2)))continue;if(arg===a0_0x4592e9(0xf0)){i++;continue;}args[a0_0x4592e9(0x19f)](arg);}const WORKSPACE_ROOT=process[a0_0x4592e9(0x183)][a0_0x4592e9(0x171)]||process[a0_0x4592e9(0x183)][a0_0x4592e9(0x19d)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x4592e9(0x183)][a0_0x4592e9(0x17d)]!=='false',MORPH_API_KEY=getCliArg(a0_0x4592e9(0x114))??process[a0_0x4592e9(0x183)][a0_0x4592e9(0x15f)],MORPH_API_URL=process[a0_0x4592e9(0x183)]['MORPH_API_URL'],MORPH_LARGE_APPLY=process[a0_0x4592e9(0x183)][a0_0x4592e9(0xe5)]!=='false',MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x4592e9(0xa9)]?parseInt(process[a0_0x4592e9(0x183)][a0_0x4592e9(0xa9)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x4592e9(0x183)][a0_0x4592e9(0x105)]?new Set(process[a0_0x4592e9(0x183)][a0_0x4592e9(0x105)][a0_0x4592e9(0x16e)](',')[a0_0x4592e9(0xfe)](_0x35351f=>_0x35351f[a0_0x4592e9(0x182)]())[a0_0x4592e9(0x102)](_0x24143f=>_0x24143f[a0_0x4592e9(0xc1)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x4592e9(0x174)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x4592e9(0x18d)](tool)&&console['error'](a0_0x4592e9(0x162)+tool+a0_0x4592e9(0x99)+[...KNOWN_TOOL_NAMES][a0_0x4592e9(0xd4)](',\x20'));}console[a0_0x4592e9(0xd3)](a0_0x4592e9(0xe1)+[...DISABLED_TOOLS][a0_0x4592e9(0xd4)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x4592e9(0x13f))&&!MORPH_API_KEY[a0_0x4592e9(0x19a)](a0_0x4592e9(0x76))&&logMcpStderr(a0_0x4592e9(0x104));async function reportMorphError(_0x307a5f){const _0x52d0ff=a0_0x4592e9;try{await a0_0x32428b[_0x52d0ff(0x12e)](_0x52d0ff(0x9d),{..._0x307a5f,'timestamp':new Date()[_0x52d0ff(0x172)](),'source':_0x307a5f[_0x52d0ff(0x11b)]||_0x52d0ff(0xc2),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x307a5f[_0x52d0ff(0xb7)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x52d0ff(0x10f)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x51f117,_0x44f19d){const _0x43b695=a0_0x4592e9;if(_0x51f117&&typeof _0x51f117==='object'&&_0x43b695(0xf9)in _0x51f117)return _0x51f117[_0x43b695(0xf9)];if(_0x51f117&&typeof _0x51f117===_0x43b695(0x103)&&_0x43b695(0x132)in _0x51f117)return _0x51f117[_0x43b695(0x132)]?.[_0x43b695(0xf9)];const _0x437235=_0x44f19d[_0x43b695(0x10c)](/\b(401|429)\b/);return _0x437235?parseInt(_0x437235[0x1],0xa):null;}function handleMorphAPIError(_0x53d11c){const _0x4a4480=a0_0x4592e9,_0x423262=_0x53d11c instanceof Error?_0x53d11c['message']:String(_0x53d11c),_0x4c4b18=extractStatusCode(_0x53d11c,_0x423262);switch(_0x4c4b18){case 0x191:return{'content':[{'type':_0x4a4480(0x169),'text':_0x4a4480(0xa8)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x4a4480(0x169),'text':_0x4a4480(0x19c)}],'isError':!![]};default:return null;}}args[a0_0x4592e9(0xc1)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr(a0_0x4592e9(0xba)),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr(a0_0x4592e9(0x11e)),logMcpStderr(a0_0x4592e9(0xd6)),logMcpStderr(a0_0x4592e9(0x10b)));function normalizePath(_0xd43f01){return a0_0xe64fd4['normalize'](_0xd43f01);}function expandHome(_0x50b4d6){const _0x6b1bbb=a0_0x4592e9;if(_0x50b4d6[_0x6b1bbb(0x19a)]('~/')||_0x50b4d6==='~')return a0_0xe64fd4[_0x6b1bbb(0xd4)](a0_0xc72497[_0x6b1bbb(0x170)](),_0x50b4d6['slice'](0x1));return _0x50b4d6;}let allowedDirectories=await Promise[a0_0x4592e9(0x141)](args[a0_0x4592e9(0xfe)](async _0x43f59e=>{const _0x14ae7f=a0_0x4592e9,_0x1a552f=expandHome(_0x43f59e),_0x18e477=a0_0xe64fd4['resolve'](_0x1a552f);try{const _0x1b0d41=await a0_0xb48a10[_0x14ae7f(0x8e)](_0x18e477);return normalizePath(_0x1b0d41);}catch(_0x27a6ef){return normalizePath(_0x18e477);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x4592e9(0xc1)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x4592e9(0x19f)](workspaceDir),logMcpStderr(a0_0x4592e9(0x16a)+workspaceDir+a0_0x4592e9(0x167)));}catch(a0_0x34b92c){logMcpStderr(a0_0x4592e9(0xfd)+a0_0x34b92c);}async function detectWorkspaceRoot(_0xdd5804){const _0x3e4a44=a0_0x4592e9;let _0x114810=a0_0xe64fd4[_0x3e4a44(0x133)](_0xdd5804);const _0x3ad93c=[_0x3e4a44(0x150),'.vscode',_0x3e4a44(0xd9),_0x3e4a44(0x178),_0x3e4a44(0x180),'go.mod',_0x3e4a44(0x186),_0x3e4a44(0xd5),'composer.json'];while(_0x114810!==a0_0xe64fd4[_0x3e4a44(0x152)](_0x114810)){for(const _0x44f5bd of _0x3ad93c){const _0x5d108c=a0_0xe64fd4[_0x3e4a44(0xd4)](_0x114810,_0x44f5bd);try{return await a0_0xb48a10['access'](_0x5d108c),normalizePath(_0x114810);}catch{}}_0x114810=a0_0xe64fd4[_0x3e4a44(0x152)](_0x114810);}return normalizePath(_0xdd5804);}await Promise[a0_0x4592e9(0x141)](args['map'](async _0xf8c14=>{const _0x5de62e=a0_0x4592e9;try{const _0x251d0e=await a0_0xb48a10['stat'](expandHome(_0xf8c14));!_0x251d0e[_0x5de62e(0x164)]()&&(logMcpStderr(_0x5de62e(0xd1)+_0xf8c14+_0x5de62e(0x131)),process['exit'](0x1));}catch(_0x1050fe){logMcpStderr(_0x5de62e(0xac)+_0xf8c14+':',_0x1050fe),process[_0x5de62e(0x196)](0x1);}}));async function validatePath(_0x454598){const _0xe89a7e=a0_0x4592e9,_0x3eb7ff=expandHome(_0x454598),_0x24b11a=a0_0xe64fd4['resolve'](_0x3eb7ff);logger['debug'](_0xe89a7e(0xff),_0xe89a7e(0x9e),{'raw_path':_0x454598,'absolute':_0x24b11a});try{const _0x25ba00=await a0_0xb48a10[_0xe89a7e(0x8e)](_0x24b11a);return logger[_0xe89a7e(0x79)]('MCP','path_validation_resolved',{'resolved':_0x25ba00,'symlink':_0x25ba00!==_0x24b11a}),_0x25ba00;}catch(_0x594bdd){if(_0x594bdd[_0xe89a7e(0x113)]===_0xe89a7e(0xcc)){const _0x368524=a0_0xe64fd4['dirname'](_0x24b11a);try{const _0xb4775a=await a0_0xb48a10[_0xe89a7e(0x8e)](_0x368524),_0x21be79=a0_0xe64fd4[_0xe89a7e(0xd4)](_0xb4775a,a0_0xe64fd4['basename'](_0x24b11a));return logger['debug'](_0xe89a7e(0xff),'path_validation_resolved',{'resolved':_0x21be79,'new_file':!![]}),_0x21be79;}catch{logger[_0xe89a7e(0xd3)](_0xe89a7e(0xff),_0xe89a7e(0x74),{'raw_path':_0x454598,'error':_0xe89a7e(0x175)+_0x368524});throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x368524);}}logger['error']('MCP',_0xe89a7e(0x74),{'raw_path':_0x454598,'error':_0x594bdd['message']});throw _0x594bdd;}}const MorphEditFileArgsSchema=z[a0_0x4592e9(0x103)]({'path':z[a0_0x4592e9(0x135)](),'code_edit':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0x8b)),'instruction':z[a0_0x4592e9(0x135)]()['describe'](a0_0x4592e9(0x190)),'dryRun':z[a0_0x4592e9(0xfa)]()[a0_0x4592e9(0xed)](![])[a0_0x4592e9(0x14c)](a0_0x4592e9(0x12b))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x4592e9(0x166),WarpGrepArgsSchema=z[a0_0x4592e9(0x103)]({'search_string':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0x14c)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0xdb)),'search_type':z[a0_0x4592e9(0x18f)]([a0_0x4592e9(0xed),'node_modules'])[a0_0x4592e9(0xeb)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0x14f))}),WarpGrepGitHubArgsSchema=z[a0_0x4592e9(0x103)]({'search_string':z['string']()[a0_0x4592e9(0x14c)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0xeb)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0x188)),'owner_repo':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0xeb)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0x98)),'branch':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0xeb)]()['describe'](a0_0x4592e9(0x13d))}),CodebaseSearchArgsSchema=z[a0_0x4592e9(0x103)]({'query':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0x14c)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0x138)),'branch':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0xeb)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0xae)),'commitHash':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0xeb)]()['describe']('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x4592e9(0x1a4)](z[a0_0x4592e9(0x135)]())[a0_0x4592e9(0xed)]([])[a0_0x4592e9(0x14c)](a0_0x4592e9(0x9c)),'limit':z['number']()['optional']()[a0_0x4592e9(0xed)](0xa)[a0_0x4592e9(0x14c)](a0_0x4592e9(0xcf))}),server=new Server({'name':a0_0x4592e9(0x187),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x4592e9(0x121)](ListToolsRequestSchema,async()=>{const _0x51daf8=a0_0x4592e9,_0x16dba7=[{'name':TOOL_NAMES[_0x51daf8(0x14b)],'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+_0x51daf8(0x108)+_0x51daf8(0x1a2)+'IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a'+'Benefits:\x0a'+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x51daf8(0x142)+_0x51daf8(0x123)+_0x51daf8(0x82)+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+_0x51daf8(0x12d)+_0x51daf8(0x118)+_0x51daf8(0xd2)+_0x51daf8(0xfc)+_0x51daf8(0x9a)+_0x51daf8(0x13c)+_0x51daf8(0x88)+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0x51daf8(0xb6)+_0x51daf8(0x197)+_0x51daf8(0xb9)+_0x51daf8(0x163)+_0x51daf8(0x9b),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x51daf8(0x199)],'description':_0x51daf8(0x19e)+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'+_0x51daf8(0x91)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x3c0ae6=_0x16dba7['filter'](_0x249934=>{const _0x20847=_0x51daf8;if(DISABLED_TOOLS['has'](_0x249934[_0x20847(0xaa)]))return console['error'](_0x20847(0x13e)+_0x249934[_0x20847(0xaa)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if('requiresApiKey'in _0x249934&&_0x249934[_0x20847(0x90)]&&!MORPH_API_KEY)return logMcpStderr(_0x20847(0xc6)+_0x249934[_0x20847(0xaa)]+_0x20847(0x17c)),![];return!![];});return{'tools':_0x3c0ae6[_0x51daf8(0xfe)](_0x295d2d=>({'name':_0x295d2d[_0x51daf8(0xaa)],'description':_0x295d2d['description'],'inputSchema':_0x295d2d[_0x51daf8(0xb4)]}))};}),server[a0_0x4592e9(0x121)](CallToolRequestSchema,async _0x2b29de=>{const _0x2e9d5d=a0_0x4592e9,{name:_0x9e8515,arguments:_0x5998fc}=_0x2b29de[_0x2e9d5d(0x7c)],_0xfa9457=Date[_0x2e9d5d(0x19b)]();logger['debug'](_0x2e9d5d(0xff),_0x2e9d5d(0x15e),{'tool':_0x9e8515,'args':_0x9e8515==='edit_file'?{'path':_0x5998fc?.[_0x2e9d5d(0x146)],'instruction':_0x5998fc?.[_0x2e9d5d(0x12a)]||_0x5998fc?.[_0x2e9d5d(0x143)],'dryRun':_0x5998fc?.['dryRun']}:_0x5998fc});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x2e9d5d(0x169),'text':'No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.'}],'isError':!![]};if(!MORPH_API_KEY[_0x2e9d5d(0x19a)](_0x2e9d5d(0x13f))&&!MORPH_API_KEY[_0x2e9d5d(0x19a)]('morph-'))return{'content':[{'type':'text','text':_0x2e9d5d(0x134)}],'isError':!![]};if(DISABLED_TOOLS[_0x2e9d5d(0x18d)](_0x9e8515))return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0xca)+_0x9e8515+_0x2e9d5d(0x193)}],'isError':![]};switch(_0x9e8515){case TOOL_NAMES[_0x2e9d5d(0x14b)]:{let _0x473179=_0x5998fc;_0x473179&&typeof _0x473179===_0x2e9d5d(0x103)&&(_0x2e9d5d(0x128)in _0x473179&&!(_0x2e9d5d(0x146)in _0x473179)&&(_0x473179={..._0x473179,'path':_0x473179[_0x2e9d5d(0x128)],'target_file':undefined}),_0x2e9d5d(0x143)in _0x473179&&!(_0x2e9d5d(0x12a)in _0x473179)&&(_0x473179={..._0x473179,'instruction':_0x473179[_0x2e9d5d(0x143)],'instructions':undefined}),_0x2e9d5d(0x113)in _0x473179&&!(_0x2e9d5d(0xe0)in _0x473179)&&(_0x473179={..._0x473179,'code_edit':_0x473179[_0x2e9d5d(0x113)],'code':undefined}));const _0x21579a=MorphEditFileArgsSchema[_0x2e9d5d(0x15c)](_0x473179);if(!_0x21579a[_0x2e9d5d(0x158)])throw new Error(_0x2e9d5d(0xbd)+_0x21579a[_0x2e9d5d(0xd3)]);const _0x38ea19=await validatePath(_0x21579a[_0x2e9d5d(0x115)]['path']);let _0x4a67e4=null,_0x3faaeb=!![],_0x1598f9=null;try{_0x4a67e4=await a0_0xb48a10[_0x2e9d5d(0xc3)](_0x38ea19,_0x2e9d5d(0xc0)),logger['debug']('MCP',_0x2e9d5d(0xa1),{'path':_0x38ea19,'size_bytes':_0x4a67e4[_0x2e9d5d(0xc1)]});}catch(_0x701ea9){const _0x5d4bcd=_0x701ea9['code'];_0x5d4bcd===_0x2e9d5d(0xcc)?(_0x3faaeb=![],_0x4a67e4='',logger['debug'](_0x2e9d5d(0xff),_0x2e9d5d(0xa1),{'path':_0x38ea19,'exists':![]})):(_0x1598f9=_0x2e9d5d(0xf5)+(_0x5d4bcd||_0x2e9d5d(0x156))+_0x2e9d5d(0x139)+(_0x701ea9 instanceof Error?_0x701ea9['message']:String(_0x701ea9)),logger['error'](_0x2e9d5d(0xff),_0x2e9d5d(0x8c),{'path':_0x38ea19,'error':_0x1598f9}),logMcpStderr(_0x2e9d5d(0xc6)+_0x1598f9));}let _0x5dee11;try{const _0x553fc4=MORPH_API_KEY;if(!_0x553fc4)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x45d0f5=a0_0xe64fd4[_0x2e9d5d(0x152)](_0x38ea19),_0x2af774=a0_0xe64fd4[_0x2e9d5d(0xc8)](_0x38ea19);logger[_0x2e9d5d(0x79)](_0x2e9d5d(0xff),_0x2e9d5d(0x17a),{'model':_0x2e9d5d(0x73),'path':_0x21579a[_0x2e9d5d(0x115)]['path'],'instruction_len':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0x12a)][_0x2e9d5d(0xc1)],'code_edit_len':_0x21579a['data'][_0x2e9d5d(0xe0)]['length'],'original_code_len':_0x4a67e4?.['length']??0x0,'dry_run':_0x21579a['data'][_0x2e9d5d(0xc4)]});const _0x2ca5e6=Date[_0x2e9d5d(0x19b)](),_0x5aeb1a=await executeEditFile({'target_filepath':_0x2af774,'code_edit':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0xe0)],'instruction':_0x21579a['data'][_0x2e9d5d(0x12a)]},{'morphApiKey':_0x553fc4,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x45d0f5,'autoWrite':!_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0xc4)],'generateUdiff':![],'debug':![]}),_0x32a4ca=Date[_0x2e9d5d(0x19b)]()-_0x2ca5e6;_0x5dee11=_0x5aeb1a['completionId'];if(!_0x5aeb1a[_0x2e9d5d(0x158)])throw new Error(_0x5aeb1a[_0x2e9d5d(0xd3)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x4da240=_0x5aeb1a[_0x2e9d5d(0x7e)],_0x559269=_0x2e9d5d(0x185)+_0x4da240['linesAdded']+_0x2e9d5d(0x184)+_0x4da240[_0x2e9d5d(0x191)]+',\x20modified\x20'+_0x4da240['linesModified'];logger[_0x2e9d5d(0x79)](_0x2e9d5d(0xff),'tool_call_complete',{'tool':_0x2e9d5d(0x14a),'success':!![],'latency_ms':Date[_0x2e9d5d(0x19b)]()-_0xfa9457,'edit_latency_ms':_0x32a4ca,'changes':{'added':_0x4da240[_0x2e9d5d(0xa4)],'removed':_0x4da240['linesRemoved'],'modified':_0x4da240[_0x2e9d5d(0x1a0)]},'completion_id':_0x5dee11});if(_0x21579a['data'][_0x2e9d5d(0xc4)])return{'content':[{'type':'text','text':_0x2e9d5d(0x129)+(_0x3faaeb?'':_0x2e9d5d(0x7f))+':\x20'+_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0x12a)]+_0x2e9d5d(0xbe)+_0x559269+_0x2e9d5d(0x84)+_0x21579a[_0x2e9d5d(0x115)]['path']+'.'}]};return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0x14e)+(_0x3faaeb?_0x2e9d5d(0xef):_0x2e9d5d(0xf3))+':\x20'+_0x21579a['data'][_0x2e9d5d(0x12a)]+_0x2e9d5d(0xbe)+_0x559269+_0x2e9d5d(0x84)+_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0x146)]+'.'}]};}catch(_0x350d98){const _0x359fdf=handleMorphAPIError(_0x350d98);if(_0x359fdf)return logger[_0x2e9d5d(0xd3)](_0x2e9d5d(0xff),_0x2e9d5d(0x89),{'tool':'edit_file','error':_0x2e9d5d(0x1a3),'latency_ms':Date[_0x2e9d5d(0x19b)]()-_0xfa9457}),_0x359fdf;const _0x2da0c7=_0x350d98 instanceof Error?_0x350d98['message']:String(_0x350d98);return logger[_0x2e9d5d(0xd3)](_0x2e9d5d(0xff),_0x2e9d5d(0x89),{'tool':_0x2e9d5d(0x14a),'error':_0x2da0c7,'path':_0x21579a['data'][_0x2e9d5d(0x146)],'validated_path':_0x38ea19,'latency_ms':Date[_0x2e9d5d(0x19b)]()-_0xfa9457,'stack':_0x350d98 instanceof Error?_0x350d98[_0x2e9d5d(0x15a)]:undefined}),reportMorphError({'error_message':_0x2da0c7,'error_type':_0x350d98 instanceof Error?_0x350d98['constructor']['name']:_0x2e9d5d(0xf7),'context':{'tool':_0x2e9d5d(0x14a),'completion_id':_0x5dee11,'file_path':_0x21579a[_0x2e9d5d(0x115)]['path'],'validated_path':_0x38ea19,'instruction':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0x12a)],'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x2e9d5d(0x73),'dry_run':_0x21579a['data'][_0x2e9d5d(0xc4)],'file_exists':_0x3faaeb,'file_read_error':_0x1598f9,'file_readable':_0x4a67e4!==null,'request_content':{'path':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0x146)],'code_edit':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0xe0)],'instruction':_0x21579a[_0x2e9d5d(0x115)]['instruction'],'original_code':_0x4a67e4!==null?_0x4a67e4['length']>0xc350?_0x4a67e4['substring'](0x0,0xc350)+_0x2e9d5d(0xf2)+_0x4a67e4[_0x2e9d5d(0xc1)]+_0x2e9d5d(0x77):_0x4a67e4:'[could\x20not\x20read\x20file:\x20'+(_0x1598f9||'unknown\x20error')+']','original_code_length':_0x4a67e4?.[_0x2e9d5d(0xc1)]??0x0,'model':MORPH_LARGE_APPLY?_0x2e9d5d(0x8a):_0x2e9d5d(0x73),'dry_run':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0xc4)]}},'stack_trace':_0x350d98 instanceof Error?_0x350d98[_0x2e9d5d(0x15a)]:undefined,'source':_0x2e9d5d(0xc2)})[_0x2e9d5d(0xc9)](()=>{}),{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0x161)+_0x2da0c7}],'isError':!![]};}}case TOOL_NAMES[_0x2e9d5d(0x199)]:{const _0x3970da=WarpGrepArgsSchema[_0x2e9d5d(0x15c)](_0x5998fc);if(!_0x3970da[_0x2e9d5d(0x158)])return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0xc5)+_0x3970da[_0x2e9d5d(0xd3)]}],'isError':!![]};const _0x370c44=_0x46cc63=>{const _0x2e3896=_0x2e9d5d,_0x400199=[];for(const _0x91eaef of _0x46cc63||[]){if(_0x91eaef[_0x2e3896(0x18b)]===_0x2e3896(0x18c)&&Array[_0x2e3896(0xa7)](_0x91eaef[_0x2e3896(0x153)]))for(const _0x47dfb6 of _0x91eaef[_0x2e3896(0x153)]){try{const _0x284f4c=_0x47dfb6[_0x2e3896(0xe6)]?.[_0x2e3896(0xaa)],_0xc7ddf2=JSON[_0x2e3896(0xcb)](_0x47dfb6['function']?.[_0x2e3896(0x7b)]||'{}');if(_0x284f4c===_0x2e3896(0xe2))_0x400199[_0x2e3896(0x19f)](_0x2e3896(0x16d)+_0xc7ddf2[_0x2e3896(0xb0)]+'\x27\x20'+(_0xc7ddf2[_0x2e3896(0x146)]||'.'));else{if(_0x284f4c===_0x2e3896(0x75))_0x400199['push'](_0x2e3896(0x107)+_0xc7ddf2[_0x2e3896(0x146)]);else{if(_0x284f4c==='list_directory')_0x400199['push'](_0x2e3896(0x17b)+(_0xc7ddf2[_0x2e3896(0x17e)]||'.'));else{if(_0x284f4c===_0x2e3896(0x78))_0x400199[_0x2e3896(0x19f)]('glob\x20\x27'+_0xc7ddf2[_0x2e3896(0xb0)]+'\x27\x20'+(_0xc7ddf2['path']||'.'));else _0x284f4c===_0x2e3896(0x181)&&_0x400199['push']('finish');}}}}catch{}}}return _0x400199;},_0x32be53=_0x4c21da=>{const _0x542423=_0x2e9d5d,_0x4ed19d=[];if(!_0x4c21da||!Array[_0x542423(0xa7)](_0x4c21da))return _0x4ed19d;const _0x304cf7=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x542423(0x12c),'tool':_0x542423(0x75)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x542423(0x75)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x542423(0x8f),'tool':_0x542423(0xbf)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x542423(0x168),'tool':_0x542423(0xbf)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x542423(0xdc),'tool':_0x542423(0x75)},{'pattern':/\[SYMLINK\]/,'error_type':_0x542423(0x173),'tool':_0x542423(0x75)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':_0x542423(0x75)},{'pattern':/symbolic link/,'error_type':_0x542423(0x173),'tool':_0x542423(0x75)},{'pattern':/Error reading file:/,'error_type':_0x542423(0x101),'tool':_0x542423(0x75)},{'pattern':/status="error"/,'error_type':_0x542423(0x96),'tool':_0x542423(0x156)}];let _0xdd88c8=0x0;for(const _0xe16ba6 of _0x4c21da){_0xe16ba6['role']===_0x542423(0x18c)&&Array['isArray'](_0xe16ba6['tool_calls'])&&_0xdd88c8++;const _0x54d0b8=_0xe16ba6[_0x542423(0x87)];if((_0xe16ba6[_0x542423(0x18b)]===_0x542423(0xc7)||_0xe16ba6['role']===_0x542423(0x11f))&&_0x54d0b8&&typeof _0x54d0b8===_0x542423(0x135))for(const {pattern:_0x367b3f,error_type:_0x261595,tool:_0x42040a}of _0x304cf7){const _0x36f6e1=_0x54d0b8[_0x542423(0x10c)](new RegExp(_0x367b3f[_0x542423(0x11b)],'g'));if(_0x36f6e1)for(const _0x2b8b56 of _0x36f6e1){const _0x14dab7=_0x54d0b8['indexOf'](_0x2b8b56),_0x279d36=_0x54d0b8[_0x542423(0xbb)](_0x14dab7,Math['min'](_0x14dab7+0xc8,_0x54d0b8[_0x542423(0xc1)]));_0x4ed19d[_0x542423(0x19f)]({'tool':_0x42040a,'error_type':_0x261595,'error_message':_0x279d36[_0x542423(0x16e)]('\x0a')[0x0],'turn':_0xdd88c8});}}}return _0x4ed19d;};try{const _0x34161c=a0_0xe64fd4[_0x2e9d5d(0x133)](_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)]),_0x4fbcfe=_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x177)],_0x2c62a8=_0x4fbcfe==='node_modules'?{'allowNames':[_0x2e9d5d(0x10d)]}:undefined,_0x1fbb17=new LocalRipgrepProvider(_0x34161c,undefined,_0x2c62a8);logger[_0x2e9d5d(0x79)]('MCP',_0x2e9d5d(0x12f),{'type':_0x2e9d5d(0xf6),'repo_root':_0x34161c,'search_type':_0x4fbcfe||_0x2e9d5d(0xed)}),logger['debug'](_0x2e9d5d(0xff),_0x2e9d5d(0x111),{'query':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'repo_root':_0x34161c,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0xbc9c1=Date[_0x2e9d5d(0x19b)](),_0xfbbb2=await runWarpGrep({'searchTerm':_0x3970da[_0x2e9d5d(0x115)]['search_string'],'repoRoot':_0x34161c,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x1fbb17,'search_type':_0x4fbcfe}),_0x134c62=Date['now']()-_0xbc9c1,_0x43d0d4=_0xfbbb2['finish']?.[_0x2e9d5d(0x72)]?.[_0x2e9d5d(0xce)]?.[_0x2e9d5d(0xc1)]??0x0;logger['debug'](_0x2e9d5d(0xff),_0x2e9d5d(0x140),{'termination':_0xfbbb2['terminationReason'],'turns':_0xfbbb2[_0x2e9d5d(0x149)]?.[_0x2e9d5d(0x116)]??0x0,'files_found':_0x43d0d4,'latency_ms':_0x134c62});const _0xc3d9cb=_0x32be53(_0xfbbb2[_0x2e9d5d(0x100)]);_0xc3d9cb[_0x2e9d5d(0xc1)]>0x0&&reportMorphError({'error_message':_0x2e9d5d(0x71)+_0xc3d9cb[_0x2e9d5d(0xc1)]+'\x20error(s)','error_type':_0x2e9d5d(0x94),'level':_0x2e9d5d(0x11d),'tool':_0x2e9d5d(0x151),'context':{'repo_path':_0x3970da['data'][_0x2e9d5d(0xd8)],'query':_0x3970da[_0x2e9d5d(0x115)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0xfbbb2['terminationReason'],'sub_tool_errors':_0xc3d9cb,'timings':_0xfbbb2[_0x2e9d5d(0x149)],'tool_calls':_0x370c44(_0xfbbb2[_0x2e9d5d(0x100)]),'messages':_0xfbbb2['messages']?.['map'](_0xb210fa=>({'role':_0xb210fa[_0x2e9d5d(0x18b)],'content':_0xb210fa[_0x2e9d5d(0x87)],..._0xb210fa[_0x2e9d5d(0x153)]?{'tool_calls':_0xb210fa[_0x2e9d5d(0x153)][_0x2e9d5d(0xc1)]}:{},..._0xb210fa[_0x2e9d5d(0xab)]?{'tool_call_id':_0xb210fa[_0x2e9d5d(0xab)]}:{}}))},'source':_0x2e9d5d(0xc2)})[_0x2e9d5d(0xc9)](()=>{});let _0x251a2e='';if(_0xfbbb2['terminationReason']===_0x2e9d5d(0x122)&&_0xfbbb2[_0x2e9d5d(0x181)]?.[_0x2e9d5d(0x72)]?.[_0x2e9d5d(0xce)]){const _0x36dbba=_0xfbbb2['finish'][_0x2e9d5d(0x72)][_0x2e9d5d(0xce)];if(_0x36dbba['length']===0x0)return _0x251a2e=_0xfbbb2[_0x2e9d5d(0x181)][_0x2e9d5d(0x14d)]||_0x2e9d5d(0x109),{'content':[{'type':'text','text':_0x251a2e}]};const _0x2249fb=[],_0x51166b=[_0x2e9d5d(0x97)];for(const _0x25a109 of _0xfbbb2[_0x2e9d5d(0x100)]){if(_0x25a109['role']===_0x2e9d5d(0x18c)&&Array[_0x2e9d5d(0xa7)](_0x25a109[_0x2e9d5d(0x153)]))for(const _0x22f49f of _0x25a109[_0x2e9d5d(0x153)]){try{const _0x22e63d=_0x22f49f['function']?.[_0x2e9d5d(0xaa)],_0x76a51f=JSON['parse'](_0x22f49f[_0x2e9d5d(0xe6)]?.[_0x2e9d5d(0x7b)]||'{}');if(_0x22e63d===_0x2e9d5d(0xe2))_0x51166b[_0x2e9d5d(0x19f)](_0x2e9d5d(0x195)+_0x76a51f[_0x2e9d5d(0xb0)]+_0x2e9d5d(0x147)+(_0x76a51f[_0x2e9d5d(0x146)]||'.')+'`');else{if(_0x22e63d===_0x2e9d5d(0x75))_0x51166b[_0x2e9d5d(0x19f)](_0x2e9d5d(0x179)+_0x76a51f['path']+'`');else{if(_0x22e63d==='list_directory')_0x51166b[_0x2e9d5d(0x19f)](_0x2e9d5d(0x15d)+(_0x76a51f[_0x2e9d5d(0x17e)]||'.')+'`');else _0x22e63d==='glob'&&_0x51166b['push'](_0x2e9d5d(0x165)+_0x76a51f['pattern']+_0x2e9d5d(0xa6)+(_0x76a51f['path']||'.')+'`');}}}catch{}}}_0x2249fb[_0x2e9d5d(0x19f)](_0x51166b[_0x2e9d5d(0xd4)]('\x0a'));const _0x299b50=['',_0x2e9d5d(0x13a)];for(const _0x285a13 of _0x36dbba){if(_0x285a13[_0x2e9d5d(0x95)]==='*')_0x299b50[_0x2e9d5d(0x19f)]('-\x20'+_0x285a13[_0x2e9d5d(0x146)]+':*');else{if(Array[_0x2e9d5d(0xa7)](_0x285a13[_0x2e9d5d(0x95)])){const _0x41b789=_0x285a13[_0x2e9d5d(0x95)][_0x2e9d5d(0xfe)](([_0x1b6cb7,_0x2d9860])=>{if(_0x1b6cb7===_0x2d9860)return''+_0x1b6cb7;return _0x1b6cb7+'-'+_0x2d9860;});_0x299b50[_0x2e9d5d(0x19f)]('-\x20'+_0x285a13[_0x2e9d5d(0x146)]+':'+_0x41b789[_0x2e9d5d(0xd4)](','));}else _0x299b50[_0x2e9d5d(0x19f)]('-\x20'+_0x285a13[_0x2e9d5d(0x146)]+':*');}}_0x299b50['push'](''),_0x2249fb[_0x2e9d5d(0x19f)](_0x299b50[_0x2e9d5d(0xd4)]('\x0a')),_0x2249fb[_0x2e9d5d(0x19f)](_0x2e9d5d(0xea));const _0x3ef800=[],_0x4712e7=[];for(const _0x4327ca of _0x36dbba){let _0x4e68e5=a0_0xe64fd4[_0x2e9d5d(0x133)](_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)],_0x4327ca['path']),_0x16b3c0=null,_0x25e988=null;try{_0x16b3c0=await a0_0xb48a10['readFile'](_0x4e68e5,{'encoding':_0x2e9d5d(0xc0)});}catch(_0x219d84){const _0x7f8da7=fixPathRepetition(_0x4e68e5);if(_0x7f8da7)try{_0x16b3c0=await a0_0xb48a10[_0x2e9d5d(0xc3)](_0x7f8da7,{'encoding':'utf-8'}),_0x4e68e5=_0x7f8da7;}catch{_0x25e988=_0x219d84 instanceof Error?_0x219d84:new Error(String(_0x219d84));}else _0x25e988=_0x219d84 instanceof Error?_0x219d84:new Error(String(_0x219d84));}if(_0x16b3c0!==null){const _0x1c26de=_0x16b3c0['split'](/\r?\n/),_0x5671c7=[];if(_0x4327ca['lines']==='*'||!Array[_0x2e9d5d(0xa7)](_0x4327ca[_0x2e9d5d(0x95)]))for(let _0x34f7e5=0x1;_0x34f7e5<=_0x1c26de['length'];_0x34f7e5++){const _0x575a67=_0x1c26de[_0x34f7e5-0x1];_0x5671c7['push'](_0x34f7e5+'|\x20'+_0x575a67);}else for(const [_0x5e6f2f,_0x4cebf0]of _0x4327ca[_0x2e9d5d(0x95)]){_0x5671c7[_0x2e9d5d(0xc1)]>0x0&&_0x5671c7[_0x2e9d5d(0x19f)]('');for(let _0x304444=_0x5e6f2f;_0x304444<=_0x4cebf0&&_0x304444<=_0x1c26de[_0x2e9d5d(0xc1)];_0x304444++){const _0x4340b2=_0x1c26de[_0x304444-0x1];_0x5671c7[_0x2e9d5d(0x19f)](_0x304444+'|\x20'+_0x4340b2);}}_0x4712e7['push']({'path':_0x4327ca[_0x2e9d5d(0x146)],'content':_0x5671c7[_0x2e9d5d(0xd4)]('\x0a')});}else _0x3ef800[_0x2e9d5d(0x19f)]('<file\x20path=\x22'+_0x4327ca[_0x2e9d5d(0x146)]+_0x2e9d5d(0x148)+(_0x25e988?.[_0x2e9d5d(0x8d)]||_0x2e9d5d(0x80))+_0x2e9d5d(0x1a1));}try{const _0x53336a=await compactFileContexts(_0x4712e7,_0x3970da['data']['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x38c88f of _0x53336a){_0x3ef800[_0x2e9d5d(0x19f)]('<file\x20path=\x22'+_0x38c88f[_0x2e9d5d(0x146)]+_0x2e9d5d(0x7d)+_0x38c88f[_0x2e9d5d(0x87)]+_0x2e9d5d(0x1a1));}}catch(_0x123124){logger[_0x2e9d5d(0x11d)](_0x2e9d5d(0xff),'compaction_failed',{'error':_0x123124 instanceof Error?_0x123124[_0x2e9d5d(0x8d)]:String(_0x123124),'files_count':_0x4712e7['length']});for(const _0x2eab8d of _0x4712e7){_0x3ef800[_0x2e9d5d(0x19f)](_0x2e9d5d(0x157)+_0x2eab8d[_0x2e9d5d(0x146)]+'\x22>\x0a'+_0x2eab8d['content']+_0x2e9d5d(0x1a1));}}_0x2249fb[_0x2e9d5d(0x19f)](_0x3ef800[_0x2e9d5d(0xd4)]('\x0a\x0a')),_0x251a2e=_0x2249fb[_0x2e9d5d(0xd4)]('\x0a');const _0x18cb63=_0xfbbb2['errors']?.[_0x2e9d5d(0x102)](_0x4d6323=>_0x4d6323[_0x2e9d5d(0x8d)]?.[_0x2e9d5d(0x19a)](_0x2e9d5d(0xfb)))||[];if(_0x18cb63[_0x2e9d5d(0xc1)]>0x0){const _0x3de793=_0x18cb63[_0x2e9d5d(0xfe)](_0x2b333a=>_0x2b333a[_0x2e9d5d(0x8d)])['join'](';\x20');reportMorphError({'error_message':_0x3de793,'error_type':_0x2e9d5d(0x117),'context':{'tool':_0x2e9d5d(0x151),'repo_path':_0x3970da[_0x2e9d5d(0x115)]['repo_path'],'query':_0x3970da['data'][_0x2e9d5d(0x192)],'model':'morph-warp-grep-v2.1','termination_reason':_0x2e9d5d(0x145),'error_count':_0x18cb63[_0x2e9d5d(0xc1)],'is_timeout':![],'timings':_0xfbbb2['timings'],'files_attempted':_0x36dbba[_0x2e9d5d(0xfe)](_0x3e33f8=>({'path':_0x3e33f8[_0x2e9d5d(0x146)],'lines':_0x3e33f8[_0x2e9d5d(0x95)]})),'tool_calls':_0x370c44(_0xfbbb2['messages']),'messages':_0xfbbb2[_0x2e9d5d(0x100)]?.[_0x2e9d5d(0xfe)](_0x32ffd7=>({'role':_0x32ffd7[_0x2e9d5d(0x18b)],'content':_0x32ffd7[_0x2e9d5d(0x87)],..._0x32ffd7[_0x2e9d5d(0x153)]?{'tool_calls':_0x32ffd7[_0x2e9d5d(0x153)][_0x2e9d5d(0xc1)]}:{},..._0x32ffd7[_0x2e9d5d(0xab)]?{'tool_call_id':_0x32ffd7[_0x2e9d5d(0xab)]}:{}})),'request_content':{'query':_0x3970da['data'][_0x2e9d5d(0x192)],'repo_path':_0x3970da[_0x2e9d5d(0x115)]['repo_path'],'repoRoot':a0_0xe64fd4[_0x2e9d5d(0x133)](_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)]),'model':_0x2e9d5d(0x112)}},'source':_0x2e9d5d(0xc2)})['catch'](()=>{});}}else{if(_0xfbbb2[_0x2e9d5d(0xe3)]===_0x2e9d5d(0xad)&&_0xfbbb2[_0x2e9d5d(0x136)][_0x2e9d5d(0xc1)]>0x0){const _0x2cf38b=_0xfbbb2['errors'][_0x2e9d5d(0xfe)](_0x5f081b=>_0x5f081b[_0x2e9d5d(0x8d)])[_0x2e9d5d(0xd4)](';\x20');_0x251a2e=_0x2e9d5d(0xd1)+_0x2cf38b;const _0x45131b=_0x2cf38b[_0x2e9d5d(0x176)]()[_0x2e9d5d(0x13b)](_0x2e9d5d(0xf4))||_0x2cf38b[_0x2e9d5d(0x176)]()['includes'](_0x2e9d5d(0x160))||_0x2cf38b['toLowerCase']()[_0x2e9d5d(0x13b)](_0x2e9d5d(0xa3)),_0x5aad2c=_0xfbbb2[_0x2e9d5d(0x181)]?.[_0x2e9d5d(0x72)]?.[_0x2e9d5d(0xce)],_0x86674d=_0xfbbb2['errors'][0x0];reportMorphError({'error_message':_0x2cf38b,'error_type':_0x45131b?'TimeoutError':_0x86674d?.[_0x2e9d5d(0x18a)]?.['name']||_0x2e9d5d(0xbc),'context':{'tool':_0x2e9d5d(0x151),'repo_path':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)],'query':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'model':_0x2e9d5d(0x112),'termination_reason':_0xfbbb2[_0x2e9d5d(0xe3)],'error_count':_0xfbbb2['errors']['length'],'is_timeout':_0x45131b,'timings':_0xfbbb2[_0x2e9d5d(0x149)],'files_attempted':_0x5aad2c?.['map'](_0x1b668e=>({'path':_0x1b668e['path'],'lines':_0x1b668e[_0x2e9d5d(0x95)]})),'tool_calls':_0x370c44(_0xfbbb2[_0x2e9d5d(0x100)]),'messages':_0xfbbb2['messages']?.[_0x2e9d5d(0xfe)](_0xccecfe=>({'role':_0xccecfe[_0x2e9d5d(0x18b)],'content':_0xccecfe[_0x2e9d5d(0x87)],..._0xccecfe[_0x2e9d5d(0x153)]?{'tool_calls':_0xccecfe[_0x2e9d5d(0x153)]['length']}:{},..._0xccecfe[_0x2e9d5d(0xab)]?{'tool_call_id':_0xccecfe['tool_call_id']}:{}})),'request_content':{'query':_0x3970da[_0x2e9d5d(0x115)]['search_string'],'repo_path':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)],'repoRoot':a0_0xe64fd4['resolve'](_0x3970da[_0x2e9d5d(0x115)]['repo_path']),'model':_0x2e9d5d(0x112)}},'stack_trace':_0x86674d?.[_0x2e9d5d(0x15a)]||undefined,'source':_0x2e9d5d(0xc2)})[_0x2e9d5d(0xc9)](()=>{});}else _0x251a2e=_0x2e9d5d(0x194);}return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x251a2e}]};}catch(_0x1094de){const _0x153120=handleMorphAPIError(_0x1094de);if(_0x153120)return logger[_0x2e9d5d(0xd3)](_0x2e9d5d(0xff),'tool_call_error',{'tool':_0x2e9d5d(0x151),'error':_0x2e9d5d(0x1a3),'latency_ms':Date[_0x2e9d5d(0x19b)]()-_0xfa9457}),_0x153120;const _0x2f7eae=_0x1094de instanceof Error?_0x1094de['message']:String(_0x1094de);logger[_0x2e9d5d(0xd3)](_0x2e9d5d(0xff),_0x2e9d5d(0x89),{'tool':'codebase_search','error':_0x2f7eae,'repo_path':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)],'query':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'latency_ms':Date[_0x2e9d5d(0x19b)]()-_0xfa9457});const _0x3736e7=_0x2f7eae[_0x2e9d5d(0x176)]()[_0x2e9d5d(0x13b)]('timeout')||_0x2f7eae[_0x2e9d5d(0x176)]()[_0x2e9d5d(0x13b)]('timed\x20out')||_0x2f7eae[_0x2e9d5d(0x176)]()[_0x2e9d5d(0x13b)]('etimedout')||_0x1094de instanceof Error&&_0x1094de[_0x2e9d5d(0xaa)]===_0x2e9d5d(0xb1);return reportMorphError({'error_message':_0x2f7eae,'error_type':_0x3736e7?_0x2e9d5d(0xb1):_0x1094de instanceof Error?_0x1094de[_0x2e9d5d(0x18a)][_0x2e9d5d(0xaa)]:_0x2e9d5d(0xf7),'context':{'tool':_0x2e9d5d(0x151),'repo_path':_0x3970da['data'][_0x2e9d5d(0xd8)],'query':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'model':'morph-warp-grep-v2.1','is_timeout':_0x3736e7,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'repo_path':_0x3970da['data'][_0x2e9d5d(0xd8)],'repoRoot':a0_0xe64fd4[_0x2e9d5d(0x133)](_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)]),'model':_0x2e9d5d(0x112)}},'stack_trace':_0x1094de instanceof Error?_0x1094de[_0x2e9d5d(0x15a)]:undefined,'source':_0x2e9d5d(0xc2)})['catch'](()=>{}),{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0x159)+_0x2f7eae}],'isError':![]};}}case TOOL_NAMES[_0x2e9d5d(0xee)]:{const _0x4f3ab1=WarpGrepGitHubArgsSchema[_0x2e9d5d(0x15c)](_0x5998fc);if(!_0x4f3ab1['success'])return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0xc5)+_0x4f3ab1['error']}],'isError':!![]};const _0x1d84d9=_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x155)]||_0x4f3ab1['data']['owner_repo'];if(!_0x1d84d9)return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0x10e)}],'isError':!![]};const _0x3e91be=MORPH_API_KEY;if(!_0x3e91be)throw new Error(_0x2e9d5d(0xe4));const _0x3d0e89=Date['now']();logger[_0x2e9d5d(0x79)](_0x2e9d5d(0xff),_0x2e9d5d(0xec),{'identifier':_0x1d84d9,'query':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'branch':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x16c)]});try{const _0x17b766=new WarpGrepClient({'morphApiKey':_0x3e91be,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x357437=await _0x17b766[_0x2e9d5d(0xb8)]({'searchTerm':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'github':_0x1d84d9,'branch':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x16c)]}),_0x1eabc7=Date[_0x2e9d5d(0x19b)]()-_0x3d0e89;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x1eabc7+'ms.\x20Success:\x20'+_0x357437[_0x2e9d5d(0x158)]);const _0x3bbc58=formatResult(_0x357437);return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x3bbc58}]};}catch(_0x2a18d1){const _0xcfe532=handleMorphAPIError(_0x2a18d1);if(_0xcfe532)return _0xcfe532;const _0x50c8ba=Date['now']()-_0x3d0e89,_0x4bfbf=_0x2a18d1 instanceof Error?_0x2a18d1['message']:String(_0x2a18d1);return logMcpStderr(_0x2e9d5d(0x144)+_0x50c8ba+_0x2e9d5d(0xb3),_0x4bfbf),reportMorphError({'error_message':_0x4bfbf,'error_type':_0x2a18d1 instanceof Error?_0x2a18d1['constructor'][_0x2e9d5d(0xaa)]:'UnknownError','context':{'tool':_0x2e9d5d(0x81),'github_url':_0x1d84d9,'search_string':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'branch':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x16c)]},'stack_trace':_0x2a18d1 instanceof Error?_0x2a18d1[_0x2e9d5d(0x15a)]:undefined,'source':_0x2e9d5d(0xc2),'tool':'github_codebase_search','latency_ms':_0x50c8ba})['catch'](()=>{}),{'content':[{'type':'text','text':_0x2e9d5d(0xa2)+_0x4bfbf}],'isError':![]};}}default:throw new Error(_0x2e9d5d(0xda)+_0x9e8515);}}catch(_0x58a80d){const _0x429036=_0x58a80d instanceof Error?_0x58a80d['message']:String(_0x58a80d);return reportMorphError({'error_message':_0x429036,'error_type':_0x58a80d instanceof Error?_0x58a80d[_0x2e9d5d(0x18a)][_0x2e9d5d(0xaa)]:_0x2e9d5d(0xf7),'context':{'tool':_0x9e8515,'arguments':_0x5998fc?JSON[_0x2e9d5d(0xde)](_0x5998fc)['substring'](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x58a80d instanceof Error?_0x58a80d[_0x2e9d5d(0x15a)]:undefined,'source':_0x2e9d5d(0xc2)})[_0x2e9d5d(0xc9)](()=>{}),{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0xd1)+_0x429036}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x33b8d0){const _0x52af14=a0_0x4592e9,_0x2a9325=await getValidRootDirectories(_0x33b8d0);if(_0x2a9325[_0x52af14(0xc1)]>0x0)allowedDirectories=[..._0x2a9325],logMcpStderr(_0x52af14(0x16f)+_0x2a9325[_0x52af14(0xc1)]+_0x52af14(0xdd));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x1f33e2=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x1f33e2&&(allowedDirectories=[_0x1f33e2],logMcpStderr(_0x52af14(0x93)+_0x1f33e2));}catch(_0x445765){logMcpStderr(_0x52af14(0x198)+_0x445765);}}}server[a0_0x4592e9(0xaf)](RootsListChangedNotificationSchema,async()=>{const _0x24bd49=a0_0x4592e9;try{const _0x3b42ba=await server[_0x24bd49(0xf1)]();_0x3b42ba&&'roots'in _0x3b42ba&&await updateAllowedDirectoriesFromRoots(_0x3b42ba[_0x24bd49(0x11a)]);}catch(_0x574574){logMcpStderr(_0x24bd49(0x125),_0x574574 instanceof Error?_0x574574[_0x24bd49(0x8d)]:String(_0x574574));}}),server[a0_0x4592e9(0x85)]=async()=>{const _0x5f4395=a0_0x4592e9,_0x16393c=server['getClientCapabilities']();if(_0x16393c?.[_0x5f4395(0x11a)])try{const _0x3c9995=await server[_0x5f4395(0xf1)]();_0x3c9995&&_0x5f4395(0x11a)in _0x3c9995?await updateAllowedDirectoriesFromRoots(_0x3c9995['roots']):logMcpStderr(_0x5f4395(0xb5));}catch(_0x314ef9){logMcpStderr(_0x5f4395(0x106),_0x314ef9 instanceof Error?_0x314ef9[_0x5f4395(0x8d)]:String(_0x314ef9));}else{if(allowedDirectories[_0x5f4395(0xc1)]>0x0)logMcpStderr(_0x5f4395(0xcd),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x5f4395(0xd0));else throw new Error(_0x5f4395(0x83));}}};function a0_0x3bb1(){const _0x4f0665=['MORPH_API_KEY','timed\x20out','❌\x20Morph\x20Edit\x20Failed:\x20','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','isDirectory','-\x20Glob\x20search\x20`','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.','\x20as\x20allowed\x20directory','RipgrepNotAvailable','text','Workspace\x20mode\x20enabled:\x20Using\x20','2422688MHjtfN','branch','grep\x20\x27','split','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','homedir','WORKSPACE_ROOT','toISOString','SymlinkError','size','Parent\x20directory\x20does\x20not\x20exist:\x20','toLowerCase','search_type','Cargo.toml','-\x20Read\x20file\x20`','api_request_start','list_directory\x20','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','ENABLE_WORKSPACE_MODE','command','\x0aOptions:','pyproject.toml','finish','trim','env',',\x20removed\x20','added\x20','.cursor','morph-mcp','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.','954419aWIrOD','constructor','role','assistant','has','floor','enum','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','linesRemoved','search_string','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','-\x20Grepped\x20\x27','exit','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Warning:\x20Workspace\x20fallback\x20failed:\x20','CODEBASE_SEARCH','startsWith','now','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','PWD','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','push','linesModified','\x0a</file>','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','API\x20error\x20(auth/rate-limit)','array','some','WarpGrep\x20sub-tool\x20errors:\x20','metadata','morph-v3-fast','path_validation_failed','read','morph-','\x20chars)','glob','debug','version','arguments','params','\x22>\x0a','changes','\x20(new\x20file)','Unknown\x20error','github_codebase_search','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','.\x20Path:\x20','oninitialized','Fatal\x20error\x20running\x20server:','content','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','tool_call_error','morph-v3-large','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','file_read_failed','message','realpath','RipgrepError','requiresApiKey','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','slice','Fallback:\x20Using\x20workspace\x20root\x20','SubToolError','lines','ToolException','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','\x22.\x20Known\x20tools:\x20','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','https://morphllm.com/api/error-report','path_validation_start','@morphllm/morphmcp\x20','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','file_read_complete','GitHub\x20search\x20failed:\x20','etimedout','linesAdded','every','`\x20in\x20`','isArray','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.','MORPH_WARP_GREP_TIMEOUT','name','tool_call_id','Error\x20accessing\x20directory\x20','terminated','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','setNotificationHandler','pattern','TimeoutError','--api-key=','ms:','inputSchema','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','context','searchGitHub','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','substring','WarpGrepError','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','.\x20Changes:\x20','grep','utf-8','length','mcp-filesystem','readFile','dryRun','Invalid\x20arguments:\x20','Warning:\x20','tool','basename','catch','Tool\x20\x22','parse','ENOENT','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','files','Max\x20results\x20to\x20return','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Error:\x20','For\x20deletions:\x0a','error','join','tsconfig.json','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','repo_path','package.json','Unknown\x20tool:\x20','The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos','BinaryFile','\x20valid\x20directories','stringify','2263926osvboG','code_edit','Disabled\x20tools:\x20','grep_search','terminationReason','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','MORPH_LARGE_APPLY','function','sep','37773YFUOWH','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Here\x20is\x20the\x20content\x20of\x20files:\x0a','optional','github_search_start','default','GITHUB_CODEBASE_SEARCH','Applied','--api-key','listRoots','\x0a...\x20(truncated,\x20total:\x20','Created\x20File','timeout','Failed\x20to\x20read\x20file:\x20','LocalRipgrepProvider','UnknownError','389992ayQvKu','status','boolean','File\x20read\x20error:','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','map','MCP','messages','ReadError','filter','object','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','DISABLED_TOOLS','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','read\x20','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','connect','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','match','node_modules','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','Bearer\x20','argv','warp_grep_start','morph-warp-grep-v2.1','code','api-key','data','turns','FileReadError','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','roots','source','--help','warn','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','user','108zPCjZz','setRequestHandler','completed','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','Failed\x20to\x20request\x20roots\x20from\x20client:','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','8225623ddzzSR','target_file','Morph\x20Edit\x20Preview','instruction','Preview\x20changes\x20without\x20applying\x20them.','FileNotFound','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','post','provider_created','--version','\x20is\x20not\x20a\x20directory','response','resolve','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.','string','errors','../package.json','Repository\x20identifier','\x20-\x20','Relevant\x20context\x20found:','includes','Rules:\x0a','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Tool\x20','sk-','warp_grep_complete','all','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','instructions','[github_codebase_search]\x20Failed\x20in\x20','completed_with_file_errors','path','\x27\x20in\x20`','\x22>\x0aError\x20reading\x20file:\x20','timings','edit_file','EDIT_FILE','describe','payload','Morph\x20Edit\x20','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','.git','codebase_search','dirname','tool_calls','1671900tAiZwb','github_url','unknown','<file\x20path=\x22','success','Error\x20running\x20fast\x20context\x20search:\x20','stack','log','safeParse','-\x20Listed\x20directory\x20`','tool_call_received'];a0_0x3bb1=function(){return _0x4f0665;};return a0_0x3bb1();}async function runServer(){const _0x5ce72e=a0_0x4592e9,_0x507217=new StdioServerTransport();await server[_0x5ce72e(0x10a)](_0x507217),logMcpStderr(_0x5ce72e(0xd7)),allowedDirectories['length']===0x0&&logMcpStderr(_0x5ce72e(0x126));}runServer()[a0_0x4592e9(0xc9)](_0x20cd4e=>{const _0xd49a7f=a0_0x4592e9;logMcpStderr(_0xd49a7f(0x86),_0x20cd4e),process['exit'](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
var a1_0x200d05=a1_0x5337;(function(_0xe4d882,_0x48cbe0){var _0x1458db=a1_0x5337,_0x262525=_0xe4d882();while(!![]){try{var _0x28c09b=-parseInt(_0x1458db(0x8d))/0x1*(-parseInt(_0x1458db(0x88))/0x2)+-parseInt(_0x1458db(0x8c))/0x3+-parseInt(_0x1458db(0x8e))/0x4*(-parseInt(_0x1458db(0x99))/0x5)+parseInt(_0x1458db(0x91))/0x6*(parseInt(_0x1458db(0x93))/0x7)+parseInt(_0x1458db(0x92))/0x8*(parseInt(_0x1458db(0x8b))/0x9)+-parseInt(_0x1458db(0x96))/0xa+parseInt(_0x1458db(0x95))/0xb;if(_0x28c09b===_0x48cbe0)break;else _0x262525['push'](_0x262525['shift']());}catch(_0x2a6463){_0x262525['push'](_0x262525['shift']());}}}(a1_0x5757,0xe2ff1));import a1_0x10e341 from'os';import{logger}from'./logger.js';function a1_0x5757(){var _0x39d2ed=['2TpvqzK','20rsWWnH','Windows','error','9567438aMkWca','334816crPDAG','7BtUtso','win32','322729HLTsEN','12051740nsHZkW','info','map','424465KJTAFU','21006srbSXK','platform','darwin','342hfaZmC','4574424cCQAHM'];a1_0x5757=function(){return _0x39d2ed;};return a1_0x5757();}export function getOperatingSystemType(_0x37fb7b=a1_0x10e341[a1_0x200d05(0x89)]()){var _0x3b085a=a1_0x200d05;switch(_0x37fb7b){case _0x3b085a(0x8a):return'macOS';case _0x3b085a(0x94):return _0x3b085a(0x8f);case'linux':return'Linux';default:return'Unknown';}}export function formatMcpLogMessage(_0x287f54,_0x146ce9=a1_0x10e341[a1_0x200d05(0x89)]()){return'[os='+getOperatingSystemType(_0x146ce9)+']\x20'+_0x287f54;}function a1_0x5337(_0x57840d,_0x2d5485){_0x57840d=_0x57840d-0x88;var _0x5757a1=a1_0x5757();var _0x533718=_0x5757a1[_0x57840d];return _0x533718;}export function logMcpStderr(_0x1188fd,..._0x604ba6){var _0x3aeba9=a1_0x200d05;console[_0x3aeba9(0x90)](formatMcpLogMessage(_0x1188fd),..._0x604ba6),logger[_0x3aeba9(0x97)]('MCP',_0x1188fd,_0x604ba6['length']?{'args':_0x604ba6[_0x3aeba9(0x98)](_0x1e7111=>String(_0x1e7111))}:undefined);}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a2_0x5eb223=a2_0x1c83;function a2_0x1c83(_0x21bba4,_0x4c5079){_0x21bba4=_0x21bba4-0x13a;const _0x55d9cc=a2_0x55d9();let _0x1c8366=_0x55d9cc[_0x21bba4];return _0x1c8366;}(function(_0x5e4df3,_0xd9ca69){const _0x3d13fb=a2_0x1c83,_0x284ff4=_0x5e4df3();while(!![]){try{const _0x13221a=-parseInt(_0x3d13fb(0x147))/0x1*(parseInt(_0x3d13fb(0x150))/0x2)+parseInt(_0x3d13fb(0x146))/0x3+parseInt(_0x3d13fb(0x149))/0x4*(parseInt(_0x3d13fb(0x143))/0x5)+parseInt(_0x3d13fb(0x13e))/0x6*(parseInt(_0x3d13fb(0x141))/0x7)+-parseInt(_0x3d13fb(0x14a))/0x8+parseInt(_0x3d13fb(0x153))/0x9*(parseInt(_0x3d13fb(0x142))/0xa)+-parseInt(_0x3d13fb(0x140))/0xb;if(_0x13221a===_0xd9ca69)break;else _0x284ff4['push'](_0x284ff4['shift']());}catch(_0x3b4f50){_0x284ff4['push'](_0x284ff4['shift']());}}}(a2_0x55d9,0xa19ba));import{createWriteStream}from'fs';class MorphLogger{[a2_0x5eb223(0x14b)];['fileStream'];constructor(){const _0x2f81b8=a2_0x5eb223;this[_0x2f81b8(0x14b)]=process[_0x2f81b8(0x13c)][_0x2f81b8(0x154)]==='1'||!!process[_0x2f81b8(0x13c)][_0x2f81b8(0x13a)];const _0x12c7fe=process[_0x2f81b8(0x13c)][_0x2f81b8(0x13a)];this[_0x2f81b8(0x14c)]=_0x12c7fe?createWriteStream(_0x12c7fe,{'flags':'a'}):null;}[a2_0x5eb223(0x14f)](_0x5a0cc6,_0x124958,_0x341d1e){const _0x3f89ee=a2_0x5eb223;this[_0x3f89ee(0x152)](_0x3f89ee(0x14f),_0x5a0cc6,_0x124958,_0x341d1e);}[a2_0x5eb223(0x148)](_0x12d86f,_0x229f6c,_0x300602){const _0x3e1deb=a2_0x5eb223;this[_0x3e1deb(0x152)](_0x3e1deb(0x148),_0x12d86f,_0x229f6c,_0x300602);}[a2_0x5eb223(0x13d)](_0x2f3ae8,_0x22f1ca,_0x41ff3c){const _0xd349c=a2_0x5eb223;this[_0xd349c(0x152)](_0xd349c(0x13d),_0x2f3ae8,_0x22f1ca,_0x41ff3c);}[a2_0x5eb223(0x151)](_0x4c9638,_0xd6a138,_0x15098f){const _0x1b61c6=a2_0x5eb223;this['_log'](_0x1b61c6(0x151),_0x4c9638,_0xd6a138,_0x15098f);}[a2_0x5eb223(0x13f)](){const _0x3b271d=a2_0x5eb223;this[_0x3b271d(0x14b)]=!![];}get[a2_0x5eb223(0x14e)](){const _0x39241c=a2_0x5eb223;return this[_0x39241c(0x14b)];}['_log'](_0x2a7b41,_0xeb364a,_0x3a3c4b,_0x13c9ed){const _0xfc757a=a2_0x5eb223;if(_0x2a7b41!==_0xfc757a(0x151)&&!this['enabled'])return;const _0x56aced=new Date()[_0xfc757a(0x145)](),_0x540b54='['+_0x56aced+_0xfc757a(0x144)+_0x2a7b41[_0xfc757a(0x13b)]()+_0xfc757a(0x144)+_0xeb364a+']';console[_0xfc757a(0x151)](_0x13c9ed?_0x540b54+'\x20'+_0x3a3c4b+'\x20'+JSON['stringify'](_0x13c9ed):_0x540b54+'\x20'+_0x3a3c4b),this[_0xfc757a(0x14c)]?.['write'](JSON[_0xfc757a(0x14d)]({'ts':_0x56aced,'level':_0x2a7b41,'component':_0xeb364a,'msg':_0x3a3c4b,..._0x13c9ed&&{'data':_0x13c9ed}})+'\x0a');}}export const logger=new MorphLogger();function a2_0x55d9(){const _0x251fa2=['toUpperCase','env','warn','12414ichnuc','enable','12362691AcWlXr','4319gLfxmd','2368150qwOGcT','70KfmGfM',']\x20[','toISOString','1480551SamCcX','19560KnxMjd','info','166636EFxvaY','4310752xDuIgq','enabled','fileStream','stringify','isEnabled','debug','124gieDiR','error','_log','45ckSGzR','MORPH_DEBUG','MORPH_LOG_FILE'];a2_0x55d9=function(){return _0x251fa2;};return a2_0x55d9();}
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x25d367,_0x371644){const _0xa762cb=a3_0x434d,_0x46de20=_0x25d367();while(!![]){try{const _0x8478f2=-parseInt(_0xa762cb(0x1a1))/0x1+parseInt(_0xa762cb(0x1b1))/0x2+parseInt(_0xa762cb(0x1b2))/0x3+-parseInt(_0xa762cb(0x1ac))/0x4*(-parseInt(_0xa762cb(0x1b0))/0x5)+parseInt(_0xa762cb(0x1ad))/0x6*(parseInt(_0xa762cb(0x1af))/0x7)+-parseInt(_0xa762cb(0x1a3))/0x8+parseInt(_0xa762cb(0x1a7))/0x9;if(_0x8478f2===_0x371644)break;else _0x46de20['push'](_0x46de20['shift']());}catch(_0x41f09d){_0x46de20['push'](_0x46de20['shift']());}}}(a3_0x396e,0x424e0));import a3_0x45f54f from'path';function a3_0x396e(){const _0x1f1510=['1023280fVHAvJ','187682WQtwIz','210525iiOIsT','trim','charAt','105865UYBHIT','replace','4256808LDIuhv','slice','toUpperCase','test','323334SJefCl','match','startsWith','/mnt/','substring','8ICvBpx','48iqNVwa','homedir','262759LGVuEU'];a3_0x396e=function(){return _0x1f1510;};return a3_0x396e();}import a3_0xc4cd2f from'os';export function convertToWindowsPath(_0x2edad7){const _0x3987d7=a3_0x434d;if(_0x2edad7[_0x3987d7(0x1a9)](_0x3987d7(0x1aa))){const _0x58fc4a=_0x2edad7[_0x3987d7(0x1a0)](0x5)[_0x3987d7(0x1a5)](),_0x28987a=_0x2edad7[_0x3987d7(0x1a4)](0x6)[_0x3987d7(0x1a2)](/\//g,'\x5c');return _0x58fc4a+':'+_0x28987a;}if(_0x2edad7['match'](/^\/[a-zA-Z]\//)){const _0xaeb04=_0x2edad7[_0x3987d7(0x1a0)](0x1)[_0x3987d7(0x1a5)](),_0x14815f=_0x2edad7['slice'](0x2)[_0x3987d7(0x1a2)](/\//g,'\x5c');return _0xaeb04+':'+_0x14815f;}if(_0x2edad7[_0x3987d7(0x1a8)](/^[a-zA-Z]:/))return _0x2edad7[_0x3987d7(0x1a2)](/\//g,'\x5c');return _0x2edad7;}function a3_0x434d(_0x3550bc,_0x4a9f47){_0x3550bc=_0x3550bc-0x1a0;const _0x396e35=a3_0x396e();let _0x434d54=_0x396e35[_0x3550bc];return _0x434d54;}export function normalizePath(_0x365b37){const _0x10ab4d=a3_0x434d;_0x365b37=_0x365b37[_0x10ab4d(0x1b3)]()[_0x10ab4d(0x1a2)](/^["']|["']$/g,'');const _0x401da1=_0x365b37[_0x10ab4d(0x1a9)]('/')&&!_0x365b37['match'](/^\/mnt\/[a-z]\//i)&&!_0x365b37['match'](/^\/[a-zA-Z]\//);if(_0x401da1)return _0x365b37[_0x10ab4d(0x1a2)](/\/+/g,'/')[_0x10ab4d(0x1a2)](/\/+$/,'');_0x365b37=convertToWindowsPath(_0x365b37);if(_0x365b37[_0x10ab4d(0x1a9)]('\x5c\x5c')){let _0x31574b=_0x365b37;_0x31574b=_0x31574b[_0x10ab4d(0x1a2)](/^\\{2,}/,'\x5c\x5c');const _0x5d64e9=_0x31574b[_0x10ab4d(0x1ab)](0x2)[_0x10ab4d(0x1a2)](/\\\\/g,'\x5c');_0x365b37='\x5c\x5c'+_0x5d64e9;}else _0x365b37=_0x365b37[_0x10ab4d(0x1a2)](/\\\\/g,'\x5c');let _0x2ffb5a=a3_0x45f54f['normalize'](_0x365b37);_0x365b37['startsWith']('\x5c\x5c')&&!_0x2ffb5a[_0x10ab4d(0x1a9)]('\x5c\x5c')&&(_0x2ffb5a='\x5c'+_0x2ffb5a);if(_0x2ffb5a[_0x10ab4d(0x1a8)](/^[a-zA-Z]:/)){let _0x3ca0b7=_0x2ffb5a['replace'](/\//g,'\x5c');return/^[a-z]:/[_0x10ab4d(0x1a6)](_0x3ca0b7)&&(_0x3ca0b7=_0x3ca0b7[_0x10ab4d(0x1a0)](0x0)[_0x10ab4d(0x1a5)]()+_0x3ca0b7[_0x10ab4d(0x1a4)](0x1)),_0x3ca0b7;}return _0x2ffb5a[_0x10ab4d(0x1a2)](/\//g,'\x5c');}export function expandHome(_0x284a7d){const _0x1342e5=a3_0x434d;if(_0x284a7d[_0x1342e5(0x1a9)]('~/')||_0x284a7d==='~')return a3_0x45f54f['join'](a3_0xc4cd2f[_0x1342e5(0x1ae)](),_0x284a7d[_0x1342e5(0x1a4)](0x1));return _0x284a7d;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x49fac2,_0x4a2e6f){const _0x3fd6fc=a4_0x4e33,_0x938799=_0x49fac2();while(!![]){try{const _0x1902ea=-parseInt(_0x3fd6fc(0xd6))/0x1+-parseInt(_0x3fd6fc(0xd7))/0x2*(parseInt(_0x3fd6fc(0xd2))/0x3)+parseInt(_0x3fd6fc(0xc8))/0x4+-parseInt(_0x3fd6fc(0xcc))/0x5+parseInt(_0x3fd6fc(0xc7))/0x6+-parseInt(_0x3fd6fc(0xd4))/0x7*(-parseInt(_0x3fd6fc(0xcf))/0x8)+parseInt(_0x3fd6fc(0xca))/0x9*(parseInt(_0x3fd6fc(0xc6))/0xa);if(_0x1902ea===_0x4a2e6f)break;else _0x938799['push'](_0x938799['shift']());}catch(_0x26c7e3){_0x938799['push'](_0x938799['shift']());}}}(a4_0x2eba,0xb9ae2));function a4_0x4e33(_0xb87464,_0xe8a0c1){_0xb87464=_0xb87464-0xc4;const _0x2eba48=a4_0x2eba();let _0x4e33fa=_0x2eba48[_0xb87464];return _0x4e33fa;}import a4_0xc07f1b from'path';export function isPathWithinAllowedDirectories(_0x529982,_0x1156ae){const _0x6182e4=a4_0x4e33;if(typeof _0x529982!==_0x6182e4(0xd3)||!Array[_0x6182e4(0xc9)](_0x1156ae))return![];if(!_0x529982||_0x1156ae[_0x6182e4(0xcb)]===0x0)return![];if(_0x529982[_0x6182e4(0xd1)]('\x00'))return![];let _0x2984f2;try{_0x2984f2=a4_0xc07f1b[_0x6182e4(0xd0)](a4_0xc07f1b[_0x6182e4(0xc4)](_0x529982));}catch{return![];}if(!a4_0xc07f1b['isAbsolute'](_0x2984f2))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x1156ae[_0x6182e4(0xcd)](_0x340f05=>{const _0x37fe56=_0x6182e4;if(typeof _0x340f05!==_0x37fe56(0xd3)||!_0x340f05)return![];if(_0x340f05[_0x37fe56(0xd1)]('\x00'))return![];let _0x213913;try{_0x213913=a4_0xc07f1b[_0x37fe56(0xd0)](a4_0xc07f1b[_0x37fe56(0xc4)](_0x340f05));}catch{return![];}if(!a4_0xc07f1b[_0x37fe56(0xce)](_0x213913))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0x2984f2===_0x213913)return!![];if(_0x213913===a4_0xc07f1b[_0x37fe56(0xd5)])return _0x2984f2[_0x37fe56(0xc5)](a4_0xc07f1b[_0x37fe56(0xd5)]);return _0x2984f2[_0x37fe56(0xc5)](_0x213913+a4_0xc07f1b[_0x37fe56(0xd5)]);});}function a4_0x2eba(){const _0x112328=['1656QLUsyj','resolve','includes','822uiLPzh','string','17556RAtucM','sep','349037HUVstr','284eeRsMj','normalize','startsWith','40rLaRQY','7279692KSMOqt','1869384oKHVka','isArray','673011CJISmr','length','6752045EfcYgm','some','isAbsolute'];a4_0x2eba=function(){return _0x112328;};return a4_0x2eba();}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x23cc86,_0x3fa931){const _0x5c97ec=a5_0x50e3,_0xb4c085=_0x23cc86();while(!![]){try{const _0x527495=-parseInt(_0x5c97ec(0x92))/0x1+-parseInt(_0x5c97ec(0x90))/0x2*(parseInt(_0x5c97ec(0x84))/0x3)+-parseInt(_0x5c97ec(0x7a))/0x4+-parseInt(_0x5c97ec(0x81))/0x5*(-parseInt(_0x5c97ec(0x8c))/0x6)+-parseInt(_0x5c97ec(0x93))/0x7*(-parseInt(_0x5c97ec(0x83))/0x8)+parseInt(_0x5c97ec(0x8e))/0x9*(-parseInt(_0x5c97ec(0x7f))/0xa)+parseInt(_0x5c97ec(0x8d))/0xb;if(_0x527495===_0x3fa931)break;else _0xb4c085['push'](_0xb4c085['shift']());}catch(_0x45aa33){_0xb4c085['push'](_0xb4c085['shift']());}}}(a5_0x5a85,0x24b73));function a5_0x50e3(_0x574dab,_0x324db1){_0x574dab=_0x574dab-0x7a;const _0x5a85e1=a5_0x5a85();let _0x50e375=_0x5a85e1[_0x574dab];return _0x50e375;}function a5_0x5a85(){const _0x617ff4=['Skipping\x20invalid\x20directory:\x20','Skipping\x20','10eNqYFH','isDirectory','5rRWVRM','\x20due\x20to\x20error:\x20','56NemjdM','44907lscUDm','stat','file://','message','join','uri','startsWith','resolve','366186ZNxwYx','5965828awYsfH','224730GNGzTP','realpath','38EtQSjW','push','172240QyDzXV','250901tKjQQj','889088kjNcSf','slice','invalid\x20path\x20or\x20inaccessible'];a5_0x5a85=function(){return _0x617ff4;};return a5_0x5a85();}import{promises as a5_0x140cc3}from'fs';import a5_0x9965a9 from'path';import a5_0x4e8f41 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x6e9b3f){const _0x4e5ed1=a5_0x50e3;try{const _0x39f785=_0x6e9b3f['startsWith'](_0x4e5ed1(0x86))?_0x6e9b3f[_0x4e5ed1(0x7b)](0x7):_0x6e9b3f,_0x549d2b=_0x39f785[_0x4e5ed1(0x8a)]('~/')||_0x39f785==='~'?a5_0x9965a9[_0x4e5ed1(0x88)](a5_0x4e8f41['homedir'](),_0x39f785['slice'](0x1)):_0x39f785,_0x500522=a5_0x9965a9[_0x4e5ed1(0x8b)](_0x549d2b),_0x3bfa9d=await a5_0x140cc3[_0x4e5ed1(0x8f)](_0x500522);return normalizePath(_0x3bfa9d);}catch{return null;}}function formatDirectoryError(_0xba22c3,_0x1ed548,_0x475b58){const _0x19a1e3=a5_0x50e3;if(_0x475b58)return _0x19a1e3(0x7e)+_0x475b58+':\x20'+_0xba22c3;const _0x2c8382=_0x1ed548 instanceof Error?_0x1ed548[_0x19a1e3(0x87)]:String(_0x1ed548);return _0x19a1e3(0x7d)+_0xba22c3+_0x19a1e3(0x82)+_0x2c8382;}export async function getValidRootDirectories(_0xffcd0f){const _0x29686b=a5_0x50e3,_0x31ef8b=[];for(const _0x148e9d of _0xffcd0f){const _0x2f9a63=await parseRootUri(_0x148e9d[_0x29686b(0x89)]);if(!_0x2f9a63){logMcpStderr(formatDirectoryError(_0x148e9d[_0x29686b(0x89)],undefined,_0x29686b(0x7c)));continue;}try{const _0x4b67e4=await a5_0x140cc3[_0x29686b(0x85)](_0x2f9a63);_0x4b67e4[_0x29686b(0x80)]()?_0x31ef8b[_0x29686b(0x91)](_0x2f9a63):logMcpStderr(formatDirectoryError(_0x2f9a63,undefined,'non-directory\x20root'));}catch(_0x299896){logMcpStderr(formatDirectoryError(_0x2f9a63,_0x299896));}}return _0x31ef8b;}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a6_0x491d(_0x22492d,_0x3a48bf){_0x22492d=_0x22492d-0x15f;const _0x25160c=a6_0x2516();let _0x491d21=_0x25160c[_0x22492d];return _0x491d21;}const a6_0xa656f2=a6_0x491d;(function(_0x32daba,_0x1e75cc){const _0x452e1c=a6_0x491d,_0x281f1d=_0x32daba();while(!![]){try{const _0x5697b3=parseInt(_0x452e1c(0x16c))/0x1*(parseInt(_0x452e1c(0x160))/0x2)+-parseInt(_0x452e1c(0x165))/0x3+-parseInt(_0x452e1c(0x167))/0x4*(-parseInt(_0x452e1c(0x16b))/0x5)+-parseInt(_0x452e1c(0x168))/0x6*(parseInt(_0x452e1c(0x15f))/0x7)+parseInt(_0x452e1c(0x161))/0x8+-parseInt(_0x452e1c(0x169))/0x9+-parseInt(_0x452e1c(0x166))/0xa*(-parseInt(_0x452e1c(0x16a))/0xb);if(_0x5697b3===_0x1e75cc)break;else _0x281f1d['push'](_0x281f1d['shift']());}catch(_0x991790){_0x281f1d['push'](_0x281f1d['shift']());}}}(a6_0x2516,0x36339));export const TOOL_NAMES={'EDIT_FILE':a6_0xa656f2(0x164),'CODEBASE_SEARCH':a6_0xa656f2(0x162),'GITHUB_CODEBASE_SEARCH':'github_codebase_search'};export const ALL_TOOL_NAMES=Object[a6_0xa656f2(0x163)](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);function a6_0x2516(){const _0x3cba40=['7ZsJIrD','4awZXFm','3051504fdmgfo','codebase_search','values','edit_file','439776WWekZm','60VeZoqF','4KqFKtI','2310234LImiyC','2360133XHgDVw','610874hRibur','477475RevfsC','102870leoTwO'];a6_0x2516=function(){return _0x3cba40;};return a6_0x2516();}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.172",
|
|
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)",
|