@morphllm/morphmcp 0.8.181 → 0.8.183
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 +2 -2
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x231f6c=a0_0x2218;(function(_0x101d3d,_0x14fc74){const _0x4947c8=a0_0x2218,_0x36b4bd=_0x101d3d();while(!![]){try{const _0x12a916=parseInt(_0x4947c8(0x1e2))/0x1+parseInt(_0x4947c8(0x293))/0x2*(parseInt(_0x4947c8(0x29b))/0x3)+-parseInt(_0x4947c8(0x1ac))/0x4+parseInt(_0x4947c8(0x1b9))/0x5+parseInt(_0x4947c8(0x1a2))/0x6*(-parseInt(_0x4947c8(0x262))/0x7)+parseInt(_0x4947c8(0x219))/0x8*(parseInt(_0x4947c8(0x2b2))/0x9)+-parseInt(_0x4947c8(0x27b))/0xa;if(_0x12a916===_0x14fc74)break;else _0x36b4bd['push'](_0x36b4bd['shift']());}catch(_0x1c4159){_0x36b4bd['push'](_0x36b4bd['shift']());}}}(a0_0x57ec,0x6520d));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_0x3ed385 from'fs/promises';import a0_0x146359 from'path';import a0_0x1d7b4c 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';function a0_0x2218(_0x508a99,_0x50fef7){_0x508a99=_0x508a99-0x194;const _0x57ec87=a0_0x57ec();let _0x22189a=_0x57ec87[_0x508a99];return _0x22189a;}function a0_0x57ec(){const _0x2de968=['\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','listRoots','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','split','dryRun','terminated','\x22>\x0aError\x20reading\x20file:\x20','code','normalize','assistant','github_url','lines','trim','toLowerCase','setRequestHandler','warp_grep_start','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','warp_grep_complete','user','optional','context','sep','mcp-filesystem','slice','cwd','indexOf','Tool\x20\x22','role','argv','[github_codebase_search]\x20Done\x20in\x20','Created\x20File','some','floor','code_edit','errors','MORPH_LARGE_APPLY','metadata','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','grep_search','setNotificationHandler','WORKSPACE_ROOT','❌\x20Morph\x20Edit\x20Failed:\x20','min','map','SubToolError','filter','completionId','\x20error(s)','target_filepath','.\x20Path:\x20','error','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.','version','provider_created','Workspace\x20mode\x20enabled:\x20Using\x20','size','github_codebase_search','morph-','1001GRtAAG','enum','morph-warp-grep-v2.1','name','Applied','grep\x20\x27','env','MORPH_WARP_GREP_TIMEOUT','pattern','Unknown\x20error','.git','--api-key','tsconfig.json','boolean','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','linesAdded','roots','includes','repo_path','file_read_complete','\x20disabled\x20via\x20DISABLED_TOOLS','@morphllm/morphmcp\x20','Morph\x20Edit\x20Preview','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','unknown','202270eREpru','`\x20in\x20`','exit','timeout','grep','homedir','getClientCapabilities','Cargo.toml','new_string','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a',',\x20modified\x20','text','-\x20Listed\x20directory\x20`','MCP','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','Fallback:\x20Using\x20workspace\x20root\x20','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','stringify','Warning:\x20','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','../package.json','tool_call_received','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','package.json','16918mJiwor','turns','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','Failed\x20to\x20request\x20roots\x20from\x20client:','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','path_validation_failed','access','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','54tuttOm','false','ENOENT','file','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','Rules:\x0a','linesModified','\x20-\x20','search_string','read','glob\x20\x27','tool_call_error','<file\x20path=\x22','CODEBASE_SEARCH','completed_with_file_errors','function','DISABLED_TOOLS','timed\x20out','\x20as\x20allowed\x20directory','basename','morph-v3-large','-\x20Grepped\x20\x27','.\x20Changes:\x20','2462931KAaXFJ','catch','default','RipgrepNotAvailable','source','\x20(new\x20file)','instruction','0.2.0','data','Morph\x20FastApply\x20failed\x20without\x20error\x20message','API\x20error\x20(auth/rate-limit)','now','GitHub\x20search\x20failed:\x20','TimeoutError','substring','Unknown\x20tool:\x20','object','morph-mcp','content','readFile','list_directory','owner_repo','instructions','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','-\x20Preserve\x20exact\x20indentation\x0a','params','pyproject.toml','glob','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','etimedout','describe','Error:\x20','description','15432ZMUNfn','MORPH_API_KEY','path_validation_resolved','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','match','node_modules','\x20\x20morph-mcp','WarpGrepError','path','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','2989108xvzCUG','completed','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','parse','EDIT_FILE','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','.cursor','message','warn','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','-\x20Glob\x20search\x20`','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','4037350ryKZuF','success','linesRemoved','\x20chars)','join','tool_calls','files','Repository\x20identifier','all','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','BinaryFile','tool_call_id','status','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','\x22.\x20Known\x20tools:\x20','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','\x0aOptions:','push','dirname','edit','string','application/json','File\x20read\x20error:','Max\x20results\x20to\x20return','Morph\x20Edit\x20','Bearer\x20','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','timings','runWarpGrep_call','oninitialized','post','Disabled\x20tools:\x20','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Error\x20accessing\x20directory\x20','arguments','ENABLE_WORKSPACE_MODE','debug','Fatal\x20error\x20running\x20server:','constructor','42471oNhDbA','target_file','codebase_search','Specific\x20commit\x20hash\x20to\x20search','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','MORPH_API_URL','resolve','\x0aExamples:','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','branch','searchGitHub','edit_file','\x20valid\x20directories','search_type','terminationReason','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','startsWith','has',',\x20removed\x20','Preview\x20changes\x20without\x20applying\x20them.','compaction_failed','go.mod','LocalRipgrepProvider','Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a','github_search_start','utf-8','messages','command','\x22>\x0a','safeParse','--api-key=','Relevant\x20context\x20found:','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','log','Parent\x20directory\x20does\x20not\x20exist:\x20','Tool\x20','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','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.','file_path','composer.json','realpath','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','-\x20Read\x20file\x20`','stack','PWD','Invalid\x20arguments:\x20','isArray','sk-','UnknownError','every','finish','list_directory\x20','length','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','16LNujRe','unknown\x20error','filePath','GITHUB_CODEBASE_SEARCH','morph-v3-fast','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','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.','[could\x20not\x20read\x20file:\x20','\x0a</file>','changes','FileReadError','Warning:\x20Workspace\x20fallback\x20failed:\x20','requiresApiKey','ms:'];a0_0x57ec=function(){return _0x2de968;};return a0_0x57ec();}import a0_0x2590e9 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x40c9d3){const _0x8f9f7e=a0_0x2218,_0x324a98=_0x40c9d3[_0x8f9f7e(0x22b)](a0_0x146359[_0x8f9f7e(0x23d)])[_0x8f9f7e(0x255)](Boolean);if(_0x324a98['length']<0x2)return null;for(let _0x156ce8=Math[_0x8f9f7e(0x248)](_0x324a98['length']/0x2);_0x156ce8>=0x1;_0x156ce8--){for(let _0x50a1e0=0x0;_0x50a1e0<=_0x324a98['length']-0x2*_0x156ce8;_0x50a1e0++){const _0x5894c4=_0x324a98[_0x8f9f7e(0x23f)](_0x50a1e0,_0x50a1e0+_0x156ce8),_0x18b795=_0x324a98[_0x8f9f7e(0x23f)](_0x50a1e0+_0x156ce8,_0x50a1e0+0x2*_0x156ce8);if(_0x5894c4[_0x8f9f7e(0x214)]((_0x513950,_0x2bcf53)=>_0x513950===_0x18b795[_0x2bcf53])){const _0x4ad43f=[..._0x324a98['slice'](0x0,_0x50a1e0),..._0x324a98[_0x8f9f7e(0x23f)](_0x50a1e0+_0x156ce8)];return a0_0x146359[_0x8f9f7e(0x23d)]+_0x4ad43f['join'](a0_0x146359[_0x8f9f7e(0x23d)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x6d2e5b=a0_0x2218;try{const _0x56d369=require(_0x6d2e5b(0x28f));return _0x56d369[_0x6d2e5b(0x25c)]??'unknown';}catch(_0x2865d2){return logMcpStderr(_0x6d2e5b(0x1c2),_0x2865d2),_0x6d2e5b(0x27a);}}function printHelp(){const _0x5b9b33=a0_0x2218;console['log'](_0x5b9b33(0x277)+getPackageVersion()),console[_0x5b9b33(0x203)](_0x5b9b33(0x21e)),console['log'](_0x5b9b33(0x1cb)),console[_0x5b9b33(0x203)](_0x5b9b33(0x1f1)),console[_0x5b9b33(0x203)](_0x5b9b33(0x228)),console[_0x5b9b33(0x203)](_0x5b9b33(0x21f)),console[_0x5b9b33(0x203)](_0x5b9b33(0x1e9)),console[_0x5b9b33(0x203)](_0x5b9b33(0x1a8)),console['log'](_0x5b9b33(0x1c9));}const cliArgs=process[a0_0x231f6c(0x244)][a0_0x231f6c(0x23f)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0x231f6c(0x247)](_0x1a307f=>VERSION_FLAGS[a0_0x231f6c(0x1f3)](_0x1a307f))&&(console[a0_0x231f6c(0x203)]('@morphllm/morphmcp\x20'+getPackageVersion()),process['exit'](0x0));cliArgs['some'](_0x19915b=>HELP_FLAGS['has'](_0x19915b))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x421452){const _0x23fb11=a0_0x231f6c;for(let _0x3706c6=0x0;_0x3706c6<cliArgs[_0x23fb11(0x217)];_0x3706c6++){const _0x2f478d=cliArgs[_0x3706c6];if(_0x2f478d[_0x23fb11(0x1f2)]('--'+_0x421452+'='))return _0x2f478d['slice'](('--'+_0x421452+'=')[_0x23fb11(0x217)]);if(_0x2f478d==='--'+_0x421452&&_0x3706c6+0x1<cliArgs[_0x23fb11(0x217)])return cliArgs[_0x3706c6+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x231f6c(0x1f3)](arg)||HELP_FLAGS[a0_0x231f6c(0x1f3)](arg))continue;if(arg[a0_0x231f6c(0x1f2)](a0_0x231f6c(0x200)))continue;if(arg===a0_0x231f6c(0x26d)){i++;continue;}args[a0_0x231f6c(0x1cc)](arg);}const WORKSPACE_ROOT=process[a0_0x231f6c(0x268)][a0_0x231f6c(0x250)]||process['env'][a0_0x231f6c(0x20f)]||process[a0_0x231f6c(0x240)](),ENABLE_WORKSPACE_MODE=process[a0_0x231f6c(0x268)][a0_0x231f6c(0x1de)]!==a0_0x231f6c(0x29c),MORPH_API_KEY=getCliArg('api-key')??process[a0_0x231f6c(0x268)][a0_0x231f6c(0x1a3)],MORPH_API_URL=process['env'][a0_0x231f6c(0x1e7)],MORPH_LARGE_APPLY=process['env'][a0_0x231f6c(0x24b)]!==a0_0x231f6c(0x29c),MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x231f6c(0x269)]?parseInt(process[a0_0x231f6c(0x268)][a0_0x231f6c(0x269)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x231f6c(0x268)]['DISABLED_TOOLS']?new Set(process[a0_0x231f6c(0x268)][a0_0x231f6c(0x2ab)][a0_0x231f6c(0x22b)](',')[a0_0x231f6c(0x253)](_0x288027=>_0x288027[a0_0x231f6c(0x234)]())['filter'](_0x58a5d2=>_0x58a5d2[a0_0x231f6c(0x217)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x231f6c(0x25f)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x231f6c(0x1f3)](tool)&&console[a0_0x231f6c(0x25a)](a0_0x231f6c(0x198)+tool+a0_0x231f6c(0x1c8)+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console['error'](a0_0x231f6c(0x1da)+[...DISABLED_TOOLS][a0_0x231f6c(0x1bd)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith']('sk-')&&!MORPH_API_KEY['startsWith'](a0_0x231f6c(0x261))&&logMcpStderr(a0_0x231f6c(0x1b1));async function reportMorphError(_0xe94246){const _0x4c2e75=a0_0x231f6c;try{await a0_0x2590e9[_0x4c2e75(0x1d9)]('https://morphllm.com/api/error-report',{..._0xe94246,'timestamp':new Date()['toISOString'](),'source':_0xe94246['source']||_0x4c2e75(0x23e),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0xe94246[_0x4c2e75(0x23c)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x4c2e75(0x1d0),'Authorization':_0x4c2e75(0x1d4)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x49cea8,_0x38b268){const _0xd589c=a0_0x231f6c;if(_0x49cea8&&typeof _0x49cea8===_0xd589c(0x2c2)&&_0xd589c(0x1c5)in _0x49cea8)return _0x49cea8['status'];if(_0x49cea8&&typeof _0x49cea8===_0xd589c(0x2c2)&&'response'in _0x49cea8)return _0x49cea8['response']?.[_0xd589c(0x1c5)];const _0x35be96=_0x38b268[_0xd589c(0x1a6)](/\b(401|429)\b/);return _0x35be96?parseInt(_0x35be96[0x1],0xa):null;}function handleMorphAPIError(_0xcd63a8){const _0x38f9cf=a0_0x231f6c,_0x190a72=_0xcd63a8 instanceof Error?_0xcd63a8[_0x38f9cf(0x1b3)]:String(_0xcd63a8),_0x2ba529=extractStatusCode(_0xcd63a8,_0x190a72);switch(_0x2ba529){case 0x191:return{'content':[{'type':_0x38f9cf(0x286),'text':_0x38f9cf(0x220)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x38f9cf(0x286),'text':_0x38f9cf(0x202)}],'isError':!![]};default:return null;}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x231f6c(0x20c)),logMcpStderr(a0_0x231f6c(0x1c7)),logMcpStderr(a0_0x231f6c(0x238)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x231f6c(0x1ab)),logMcpStderr(a0_0x231f6c(0x207)));function normalizePath(_0x5c28b1){const _0x39d877=a0_0x231f6c;return a0_0x146359[_0x39d877(0x230)](_0x5c28b1);}function expandHome(_0x3977ee){const _0x1bc4ed=a0_0x231f6c;if(_0x3977ee[_0x1bc4ed(0x1f2)]('~/')||_0x3977ee==='~')return a0_0x146359['join'](a0_0x1d7b4c[_0x1bc4ed(0x280)](),_0x3977ee[_0x1bc4ed(0x23f)](0x1));return _0x3977ee;}let allowedDirectories=await Promise[a0_0x231f6c(0x1c1)](args['map'](async _0x11b605=>{const _0x18c26f=a0_0x231f6c,_0x418256=expandHome(_0x11b605),_0x224b5b=a0_0x146359[_0x18c26f(0x1e8)](_0x418256);try{const _0x27bc6c=await a0_0x3ed385[_0x18c26f(0x20b)](_0x224b5b);return normalizePath(_0x27bc6c);}catch(_0x48495f){return normalizePath(_0x224b5b);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x231f6c(0x217)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x231f6c(0x1cc)](workspaceDir),logMcpStderr(a0_0x231f6c(0x25e)+workspaceDir+a0_0x231f6c(0x2ad)));}catch(a0_0x10bc0e){logMcpStderr(a0_0x231f6c(0x19d)+a0_0x10bc0e);}async function detectWorkspaceRoot(_0x44068c){const _0x4aed0=a0_0x231f6c;let _0x51fed3=a0_0x146359[_0x4aed0(0x1e8)](_0x44068c);const _0x502396=[_0x4aed0(0x26c),'.vscode',_0x4aed0(0x292),_0x4aed0(0x282),_0x4aed0(0x19b),_0x4aed0(0x1f7),_0x4aed0(0x1b2),_0x4aed0(0x26e),_0x4aed0(0x20a)];while(_0x51fed3!==a0_0x146359[_0x4aed0(0x1cd)](_0x51fed3)){for(const _0x3780d1 of _0x502396){const _0x1ec5b1=a0_0x146359['join'](_0x51fed3,_0x3780d1);try{return await a0_0x3ed385[_0x4aed0(0x299)](_0x1ec5b1),normalizePath(_0x51fed3);}catch{}}_0x51fed3=a0_0x146359[_0x4aed0(0x1cd)](_0x51fed3);}return normalizePath(_0x44068c);}await Promise[a0_0x231f6c(0x1c1)](args['map'](async _0xa03992=>{const _0x50d8f7=a0_0x231f6c;try{const _0xf89f8a=await a0_0x3ed385['stat'](expandHome(_0xa03992));!_0xf89f8a['isDirectory']()&&(logMcpStderr(_0x50d8f7(0x1a0)+_0xa03992+'\x20is\x20not\x20a\x20directory'),process[_0x50d8f7(0x27d)](0x1));}catch(_0x40959f){logMcpStderr(_0x50d8f7(0x1dc)+_0xa03992+':',_0x40959f),process['exit'](0x1);}}));async function validatePath(_0x4cbf84){const _0x27c2ed=a0_0x231f6c,_0x56c840=expandHome(_0x4cbf84),_0x510c56=a0_0x146359[_0x27c2ed(0x1e8)](_0x56c840);logger[_0x27c2ed(0x1df)]('MCP','path_validation_start',{'raw_path':_0x4cbf84,'absolute':_0x510c56});try{const _0x14591d=await a0_0x3ed385['realpath'](_0x510c56);return logger[_0x27c2ed(0x1df)]('MCP',_0x27c2ed(0x1a4),{'resolved':_0x14591d,'symlink':_0x14591d!==_0x510c56}),_0x14591d;}catch(_0x3587a4){if(_0x3587a4[_0x27c2ed(0x22f)]===_0x27c2ed(0x29d)){const _0x1718a2=a0_0x146359['dirname'](_0x510c56);try{const _0x4c39c8=await a0_0x3ed385[_0x27c2ed(0x20b)](_0x1718a2),_0x108cff=a0_0x146359[_0x27c2ed(0x1bd)](_0x4c39c8,a0_0x146359[_0x27c2ed(0x2ae)](_0x510c56));return logger[_0x27c2ed(0x1df)](_0x27c2ed(0x288),'path_validation_resolved',{'resolved':_0x108cff,'new_file':!![]}),_0x108cff;}catch{logger[_0x27c2ed(0x25a)]('MCP',_0x27c2ed(0x298),{'raw_path':_0x4cbf84,'error':_0x27c2ed(0x204)+_0x1718a2});throw new Error(_0x27c2ed(0x204)+_0x1718a2);}}logger[_0x27c2ed(0x25a)](_0x27c2ed(0x288),_0x27c2ed(0x298),{'raw_path':_0x4cbf84,'error':_0x3587a4['message']});throw _0x3587a4;}}const MorphEditFileArgsSchema=z[a0_0x231f6c(0x2c2)]({'path':z[a0_0x231f6c(0x1cf)](),'code_edit':z[a0_0x231f6c(0x1cf)]()[a0_0x231f6c(0x19f)](a0_0x231f6c(0x270)),'instruction':z[a0_0x231f6c(0x1cf)]()[a0_0x231f6c(0x19f)](a0_0x231f6c(0x1b8)),'dryRun':z[a0_0x231f6c(0x26f)]()['default'](![])[a0_0x231f6c(0x19f)](a0_0x231f6c(0x1f5))}),CODEBASE_SEARCH_QUERY_DESCRIPTION='Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.',WarpGrepArgsSchema=z[a0_0x231f6c(0x2c2)]({'search_string':z[a0_0x231f6c(0x1cf)]()[a0_0x231f6c(0x19f)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x231f6c(0x1cf)]()[a0_0x231f6c(0x19f)]('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos'),'search_type':z[a0_0x231f6c(0x263)]([a0_0x231f6c(0x2b4),'node_modules'])[a0_0x231f6c(0x23b)]()[a0_0x231f6c(0x19f)](a0_0x231f6c(0x1c6))}),WarpGrepGitHubArgsSchema=z[a0_0x231f6c(0x2c2)]({'search_string':z[a0_0x231f6c(0x1cf)]()[a0_0x231f6c(0x19f)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()['optional']()['describe'](a0_0x231f6c(0x25b)),'owner_repo':z['string']()[a0_0x231f6c(0x23b)]()['describe'](a0_0x231f6c(0x1ae)),'branch':z[a0_0x231f6c(0x1cf)]()[a0_0x231f6c(0x23b)]()['describe'](a0_0x231f6c(0x1db))}),CodebaseSearchArgsSchema=z[a0_0x231f6c(0x2c2)]({'query':z[a0_0x231f6c(0x1cf)]()[a0_0x231f6c(0x19f)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x231f6c(0x1cf)]()[a0_0x231f6c(0x19f)](a0_0x231f6c(0x1c0)),'branch':z[a0_0x231f6c(0x1cf)]()[a0_0x231f6c(0x23b)]()[a0_0x231f6c(0x19f)](a0_0x231f6c(0x297)),'commitHash':z['string']()[a0_0x231f6c(0x23b)]()[a0_0x231f6c(0x19f)](a0_0x231f6c(0x1e5)),'targetDirectories':z['array'](z[a0_0x231f6c(0x1cf)]())[a0_0x231f6c(0x2b4)]([])['describe']('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z['number']()[a0_0x231f6c(0x23b)]()['default'](0xa)[a0_0x231f6c(0x19f)](a0_0x231f6c(0x1d2))}),server=new Server({'name':a0_0x231f6c(0x2c3),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x231f6c(0x236)](ListToolsRequestSchema,async()=>{const _0x362509=a0_0x231f6c,_0x36731e=[{'name':TOOL_NAMES[_0x362509(0x1b0)],'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES.**\x20Fast,\x20accurate,\x20and\x20prevents\x20context\x20pollution.\x20Especially\x20useful\x20when\x20making\x20multiple\x20edits\x20in\x20one\x20file:\x20describe\x20all\x20changes\x20in\x20a\x20single\x20call\x20and\x20the\x20semantic\x20edit\x20applies\x20them\x20all\x20at\x20once,\x20more\x20accurately\x20and\x20faster\x20than\x20sequential\x20edits.\x20Unlike\x20search-and-replace\x20or\x20patch\x20edits\x20which\x20do\x20narrow\x20edits\x20one\x20at\x20a\x20time,\x20with\x20this\x20tool\x20you\x20should\x20do\x20all\x20your\x20code\x20changes\x20in\x20one\x20go\x20separated\x20by\x20`//\x20...\x20existing\x20code\x20...`\x20markers.\x20This\x20saves\x20tokens\x20and\x20improves\x20performance\x20because\x20you\x20do\x20not\x20need\x20to\x20reread\x20files\x20before\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a'+'Parameters:\x0a'+_0x362509(0x206)+'-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a'+'-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a'+_0x362509(0x1f9)+'Example\x20format:\x0a'+_0x362509(0x284)+_0x362509(0x2a0)+_0x362509(0x1b5)+_0x362509(0x199)+_0x362509(0x295)+_0x362509(0x279),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x362509(0x2a8)],'description':_0x362509(0x28e)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x362509(0x22a)+_0x362509(0x1b6)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x11ddf5=_0x36731e[_0x362509(0x255)](_0x2e0805=>{const _0x1df734=_0x362509;if(DISABLED_TOOLS[_0x1df734(0x1f3)](_0x2e0805[_0x1df734(0x265)]))return console[_0x1df734(0x25a)](_0x1df734(0x205)+_0x2e0805[_0x1df734(0x265)]+_0x1df734(0x276)),![];if(_0x1df734(0x226)in _0x2e0805&&_0x2e0805[_0x1df734(0x226)]&&!MORPH_API_KEY)return logMcpStderr(_0x1df734(0x28d)+_0x2e0805[_0x1df734(0x265)]+_0x1df734(0x29f)),![];return!![];});return{'tools':_0x11ddf5[_0x362509(0x253)](_0xac4d80=>({'name':_0xac4d80[_0x362509(0x265)],'description':_0xac4d80[_0x362509(0x1a1)],'inputSchema':_0xac4d80['inputSchema']}))};}),server[a0_0x231f6c(0x236)](CallToolRequestSchema,async _0x986cf2=>{const _0x5e3def=a0_0x231f6c,{name:_0x150814,arguments:_0x17d255}=_0x986cf2[_0x5e3def(0x19a)],_0x4722eb=Date[_0x5e3def(0x2bd)]();logger[_0x5e3def(0x1df)](_0x5e3def(0x288),_0x5e3def(0x290),{'tool':_0x150814,'args':_0x150814===_0x5e3def(0x1ed)?{'path':_0x17d255?.['path'],'instruction':_0x17d255?.[_0x5e3def(0x2b8)]||_0x17d255?.[_0x5e3def(0x197)],'dryRun':_0x17d255?.[_0x5e3def(0x22c)]}:_0x17d255});try{if(!MORPH_API_KEY)return{'content':[{'type':'text','text':_0x5e3def(0x24d)}],'isError':!![]};if(!MORPH_API_KEY[_0x5e3def(0x1f2)](_0x5e3def(0x212))&&!MORPH_API_KEY[_0x5e3def(0x1f2)](_0x5e3def(0x261)))return{'content':[{'type':_0x5e3def(0x286),'text':'Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.'}],'isError':!![]};if(DISABLED_TOOLS[_0x5e3def(0x1f3)](_0x150814))return{'content':[{'type':_0x5e3def(0x286),'text':_0x5e3def(0x242)+_0x150814+'\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.'}],'isError':![]};switch(_0x150814){case TOOL_NAMES[_0x5e3def(0x1b0)]:{let _0x56b691=_0x17d255;if(_0x56b691&&typeof _0x56b691===_0x5e3def(0x2c2)){if(!(_0x5e3def(0x1aa)in _0x56b691)){const _0x347eba=_0x56b691[_0x5e3def(0x1e3)]??_0x56b691[_0x5e3def(0x21b)]??_0x56b691[_0x5e3def(0x258)]??_0x56b691[_0x5e3def(0x209)]??_0x56b691[_0x5e3def(0x29e)];if(_0x347eba)_0x56b691={..._0x56b691,'path':_0x347eba};}'instructions'in _0x56b691&&!(_0x5e3def(0x2b8)in _0x56b691)&&(_0x56b691={..._0x56b691,'instruction':_0x56b691['instructions']});if(!(_0x5e3def(0x249)in _0x56b691)){const _0x267cb5=_0x56b691['code']??_0x56b691[_0x5e3def(0x283)]??_0x56b691['content']??_0x56b691[_0x5e3def(0x1ce)];if(_0x267cb5)_0x56b691={..._0x56b691,'code_edit':_0x267cb5};}}const _0x2a0b34=MorphEditFileArgsSchema[_0x5e3def(0x1ff)](_0x56b691);if(!_0x2a0b34[_0x5e3def(0x1ba)])throw new Error(_0x5e3def(0x1ca)+_0x2a0b34[_0x5e3def(0x25a)]);const _0x56c068=await validatePath(_0x2a0b34[_0x5e3def(0x2ba)][_0x5e3def(0x1aa)]);let _0xec2481=null,_0x5a687a=!![],_0x519e46=null;try{_0xec2481=await a0_0x3ed385[_0x5e3def(0x194)](_0x56c068,_0x5e3def(0x1fb)),logger[_0x5e3def(0x1df)]('MCP','file_read_complete',{'path':_0x56c068,'size_bytes':_0xec2481['length']});}catch(_0x2a39e4){const _0x42d2d5=_0x2a39e4[_0x5e3def(0x22f)];_0x42d2d5==='ENOENT'?(_0x5a687a=![],_0xec2481='',logger[_0x5e3def(0x1df)]('MCP',_0x5e3def(0x275),{'path':_0x56c068,'exists':![]})):(_0x519e46='Failed\x20to\x20read\x20file:\x20'+(_0x42d2d5||_0x5e3def(0x27a))+_0x5e3def(0x2a2)+(_0x2a39e4 instanceof Error?_0x2a39e4[_0x5e3def(0x1b3)]:String(_0x2a39e4)),logger[_0x5e3def(0x25a)](_0x5e3def(0x288),'file_read_failed',{'path':_0x56c068,'error':_0x519e46}),logMcpStderr(_0x5e3def(0x28d)+_0x519e46));}let _0x50de33;try{const _0x74b61f=MORPH_API_KEY;if(!_0x74b61f)throw new Error(_0x5e3def(0x29a));const _0x30f222=a0_0x146359[_0x5e3def(0x1cd)](_0x56c068),_0x530ff9=a0_0x146359['basename'](_0x56c068);logger[_0x5e3def(0x1df)]('MCP','api_request_start',{'model':_0x5e3def(0x21d),'path':_0x2a0b34[_0x5e3def(0x2ba)][_0x5e3def(0x1aa)],'instruction_len':_0x2a0b34[_0x5e3def(0x2ba)][_0x5e3def(0x2b8)][_0x5e3def(0x217)],'code_edit_len':_0x2a0b34[_0x5e3def(0x2ba)]['code_edit']['length'],'original_code_len':_0xec2481?.[_0x5e3def(0x217)]??0x0,'dry_run':_0x2a0b34[_0x5e3def(0x2ba)][_0x5e3def(0x22c)]});const _0x3cdd2b=Date[_0x5e3def(0x2bd)](),_0x577326=await executeEditFile({'target_filepath':_0x530ff9,'code_edit':_0x2a0b34[_0x5e3def(0x2ba)][_0x5e3def(0x249)],'instruction':_0x2a0b34['data'][_0x5e3def(0x2b8)]},{'morphApiKey':_0x74b61f,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x30f222,'autoWrite':!_0x2a0b34[_0x5e3def(0x2ba)][_0x5e3def(0x22c)],'generateUdiff':![],'debug':![]}),_0x5da451=Date[_0x5e3def(0x2bd)]()-_0x3cdd2b;_0x50de33=_0x577326[_0x5e3def(0x256)];if(!_0x577326[_0x5e3def(0x1ba)])throw new Error(_0x577326[_0x5e3def(0x25a)]||_0x5e3def(0x2bb));const _0x3ebb72=_0x577326[_0x5e3def(0x223)],_0x5ebbf0='added\x20'+_0x3ebb72[_0x5e3def(0x271)]+_0x5e3def(0x1f4)+_0x3ebb72[_0x5e3def(0x1bb)]+_0x5e3def(0x285)+_0x3ebb72[_0x5e3def(0x2a1)];logger[_0x5e3def(0x1df)](_0x5e3def(0x288),'tool_call_complete',{'tool':_0x5e3def(0x1ed),'success':!![],'latency_ms':Date['now']()-_0x4722eb,'edit_latency_ms':_0x5da451,'changes':{'added':_0x3ebb72[_0x5e3def(0x271)],'removed':_0x3ebb72[_0x5e3def(0x1bb)],'modified':_0x3ebb72['linesModified']},'completion_id':_0x50de33});if(_0x2a0b34[_0x5e3def(0x2ba)][_0x5e3def(0x22c)])return{'content':[{'type':'text','text':_0x5e3def(0x278)+(_0x5a687a?'':_0x5e3def(0x2b7))+':\x20'+_0x2a0b34['data'][_0x5e3def(0x2b8)]+_0x5e3def(0x2b1)+_0x5ebbf0+_0x5e3def(0x259)+_0x2a0b34[_0x5e3def(0x2ba)][_0x5e3def(0x1aa)]+'.'}]};return{'content':[{'type':_0x5e3def(0x286),'text':_0x5e3def(0x1d3)+(_0x5a687a?_0x5e3def(0x266):_0x5e3def(0x246))+':\x20'+_0x2a0b34['data'][_0x5e3def(0x2b8)]+'.\x20Changes:\x20'+_0x5ebbf0+'.\x20Path:\x20'+_0x2a0b34['data']['path']+'.'}]};}catch(_0x2d6fdc){const _0x525417=handleMorphAPIError(_0x2d6fdc);if(_0x525417)return logger[_0x5e3def(0x25a)](_0x5e3def(0x288),_0x5e3def(0x2a6),{'tool':'edit_file','error':_0x5e3def(0x2bc),'latency_ms':Date[_0x5e3def(0x2bd)]()-_0x4722eb}),_0x525417;const _0x2c0638=_0x2d6fdc instanceof Error?_0x2d6fdc['message']:String(_0x2d6fdc);return logger[_0x5e3def(0x25a)](_0x5e3def(0x288),_0x5e3def(0x2a6),{'tool':_0x5e3def(0x1ed),'error':_0x2c0638,'path':_0x2a0b34[_0x5e3def(0x2ba)]['path'],'validated_path':_0x56c068,'latency_ms':Date[_0x5e3def(0x2bd)]()-_0x4722eb,'stack':_0x2d6fdc instanceof Error?_0x2d6fdc['stack']:undefined}),reportMorphError({'error_message':_0x2c0638,'error_type':_0x2d6fdc instanceof Error?_0x2d6fdc[_0x5e3def(0x1e1)]['name']:'UnknownError','context':{'tool':'edit_file','completion_id':_0x50de33,'file_path':_0x2a0b34[_0x5e3def(0x2ba)][_0x5e3def(0x1aa)],'validated_path':_0x56c068,'instruction':_0x2a0b34[_0x5e3def(0x2ba)][_0x5e3def(0x2b8)],'model':MORPH_LARGE_APPLY?_0x5e3def(0x2af):_0x5e3def(0x21d),'dry_run':_0x2a0b34[_0x5e3def(0x2ba)][_0x5e3def(0x22c)],'file_exists':_0x5a687a,'file_read_error':_0x519e46,'file_readable':_0xec2481!==null,'request_content':{'path':_0x2a0b34[_0x5e3def(0x2ba)][_0x5e3def(0x1aa)],'code_edit':_0x2a0b34[_0x5e3def(0x2ba)][_0x5e3def(0x249)],'instruction':_0x2a0b34[_0x5e3def(0x2ba)][_0x5e3def(0x2b8)],'original_code':_0xec2481!==null?_0xec2481['length']>0xc350?_0xec2481['substring'](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0xec2481[_0x5e3def(0x217)]+_0x5e3def(0x1bc):_0xec2481:_0x5e3def(0x221)+(_0x519e46||_0x5e3def(0x21a))+']','original_code_length':_0xec2481?.[_0x5e3def(0x217)]??0x0,'model':MORPH_LARGE_APPLY?_0x5e3def(0x2af):_0x5e3def(0x21d),'dry_run':_0x2a0b34[_0x5e3def(0x2ba)][_0x5e3def(0x22c)]}},'stack_trace':_0x2d6fdc instanceof Error?_0x2d6fdc['stack']:undefined,'source':_0x5e3def(0x23e)})[_0x5e3def(0x2b3)](()=>{}),{'content':[{'type':'text','text':_0x5e3def(0x251)+_0x2c0638}],'isError':!![]};}}case TOOL_NAMES[_0x5e3def(0x2a8)]:{const _0x3e1cba=WarpGrepArgsSchema['safeParse'](_0x17d255);if(!_0x3e1cba[_0x5e3def(0x1ba)])return{'content':[{'type':_0x5e3def(0x286),'text':_0x5e3def(0x210)+_0x3e1cba[_0x5e3def(0x25a)]}],'isError':!![]};const _0x354e70=_0x4e9df8=>{const _0x5e9832=_0x5e3def,_0x4ff32e=[];for(const _0x40e0d5 of _0x4e9df8||[]){if(_0x40e0d5['role']===_0x5e9832(0x231)&&Array[_0x5e9832(0x211)](_0x40e0d5[_0x5e9832(0x1be)]))for(const _0x555f59 of _0x40e0d5['tool_calls']){try{const _0x1ec239=_0x555f59[_0x5e9832(0x2aa)]?.[_0x5e9832(0x265)],_0x151d03=JSON[_0x5e9832(0x1af)](_0x555f59[_0x5e9832(0x2aa)]?.[_0x5e9832(0x1dd)]||'{}');if(_0x1ec239===_0x5e9832(0x24e))_0x4ff32e[_0x5e9832(0x1cc)](_0x5e9832(0x267)+_0x151d03[_0x5e9832(0x26a)]+'\x27\x20'+(_0x151d03['path']||'.'));else{if(_0x1ec239==='read')_0x4ff32e[_0x5e9832(0x1cc)]('read\x20'+_0x151d03['path']);else{if(_0x1ec239===_0x5e9832(0x195))_0x4ff32e[_0x5e9832(0x1cc)](_0x5e9832(0x216)+(_0x151d03[_0x5e9832(0x1fd)]||'.'));else{if(_0x1ec239==='glob')_0x4ff32e['push'](_0x5e9832(0x2a5)+_0x151d03[_0x5e9832(0x26a)]+'\x27\x20'+(_0x151d03[_0x5e9832(0x1aa)]||'.'));else _0x1ec239==='finish'&&_0x4ff32e['push']('finish');}}}}catch{}}}return _0x4ff32e;},_0x1be310=_0x3cdbc5=>{const _0x52bcd0=_0x5e3def,_0x3752de=[];if(!_0x3cdbc5||!Array[_0x52bcd0(0x211)](_0x3cdbc5))return _0x3752de;const _0x54b28d=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':_0x52bcd0(0x2a4)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x52bcd0(0x2a4)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x52bcd0(0x1c3),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':_0x52bcd0(0x27f)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x52bcd0(0x2b5),'tool':_0x52bcd0(0x27f)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x52bcd0(0x1c3),'tool':_0x52bcd0(0x2a4)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x52bcd0(0x2a4)},{'pattern':/not a text file/,'error_type':_0x52bcd0(0x1c3),'tool':_0x52bcd0(0x2a4)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x52bcd0(0x2a4)},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x52bcd0(0x2a4)},{'pattern':/status="error"/,'error_type':'ToolException','tool':'unknown'}];let _0x323080=0x0;for(const _0x1f88ea of _0x3cdbc5){_0x1f88ea[_0x52bcd0(0x243)]===_0x52bcd0(0x231)&&Array[_0x52bcd0(0x211)](_0x1f88ea[_0x52bcd0(0x1be)])&&_0x323080++;const _0x3d9d28=_0x1f88ea['content'];if((_0x1f88ea[_0x52bcd0(0x243)]==='tool'||_0x1f88ea['role']===_0x52bcd0(0x23a))&&_0x3d9d28&&typeof _0x3d9d28==='string')for(const {pattern:_0x765f10,error_type:_0x2a71e4,tool:_0x2f8d24}of _0x54b28d){const _0x548d32=_0x3d9d28[_0x52bcd0(0x1a6)](new RegExp(_0x765f10[_0x52bcd0(0x2b6)],'g'));if(_0x548d32)for(const _0x1e4ef6 of _0x548d32){const _0x38fd11=_0x3d9d28[_0x52bcd0(0x241)](_0x1e4ef6),_0x3b5757=_0x3d9d28['substring'](_0x38fd11,Math[_0x52bcd0(0x252)](_0x38fd11+0xc8,_0x3d9d28[_0x52bcd0(0x217)]));_0x3752de['push']({'tool':_0x2f8d24,'error_type':_0x2a71e4,'error_message':_0x3b5757[_0x52bcd0(0x22b)]('\x0a')[0x0],'turn':_0x323080});}}}return _0x3752de;};try{const _0x12f3f8=a0_0x146359[_0x5e3def(0x1e8)](_0x3e1cba[_0x5e3def(0x2ba)]['repo_path']),_0x1d85bc=_0x3e1cba['data'][_0x5e3def(0x1ef)],_0x3d99af=_0x1d85bc===_0x5e3def(0x1a7)?{'allowNames':[_0x5e3def(0x1a7)]}:undefined,_0xf86700=new LocalRipgrepProvider(_0x12f3f8,undefined,_0x3d99af);logger[_0x5e3def(0x1df)]('MCP',_0x5e3def(0x25d),{'type':_0x5e3def(0x1f8),'repo_root':_0x12f3f8,'search_type':_0x1d85bc||_0x5e3def(0x2b4)}),logger[_0x5e3def(0x1df)](_0x5e3def(0x288),_0x5e3def(0x237),{'query':_0x3e1cba[_0x5e3def(0x2ba)]['search_string'],'repo_root':_0x12f3f8,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x3c7643=Date['now'](),_0x596820=await runWarpGrep({'searchTerm':_0x3e1cba[_0x5e3def(0x2ba)][_0x5e3def(0x2a3)],'repoRoot':_0x12f3f8,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0xf86700,'search_type':_0x1d85bc}),_0x3aae5a=Date[_0x5e3def(0x2bd)]()-_0x3c7643,_0x213dcf=_0x596820[_0x5e3def(0x215)]?.[_0x5e3def(0x24c)]?.[_0x5e3def(0x1bf)]?.[_0x5e3def(0x217)]??0x0;logger[_0x5e3def(0x1df)]('MCP',_0x5e3def(0x239),{'termination':_0x596820[_0x5e3def(0x1f0)],'turns':_0x596820[_0x5e3def(0x1d6)]?.[_0x5e3def(0x294)]??0x0,'files_found':_0x213dcf,'latency_ms':_0x3aae5a});const _0x5a0a0f=_0x1be310(_0x596820[_0x5e3def(0x1fc)]);_0x5a0a0f[_0x5e3def(0x217)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x5a0a0f[_0x5e3def(0x217)]+_0x5e3def(0x257),'error_type':_0x5e3def(0x254),'level':_0x5e3def(0x1b4),'tool':'codebase_search','context':{'repo_path':_0x3e1cba[_0x5e3def(0x2ba)][_0x5e3def(0x274)],'query':_0x3e1cba[_0x5e3def(0x2ba)][_0x5e3def(0x2a3)],'model':_0x5e3def(0x264),'termination_reason':_0x596820[_0x5e3def(0x1f0)],'sub_tool_errors':_0x5a0a0f,'timings':_0x596820[_0x5e3def(0x1d6)],'tool_calls':_0x354e70(_0x596820[_0x5e3def(0x1fc)]),'messages':_0x596820[_0x5e3def(0x1fc)]?.[_0x5e3def(0x253)](_0x2b698f=>({'role':_0x2b698f[_0x5e3def(0x243)],'content':_0x2b698f[_0x5e3def(0x2c4)],..._0x2b698f[_0x5e3def(0x1be)]?{'tool_calls':_0x2b698f[_0x5e3def(0x1be)][_0x5e3def(0x217)]}:{},..._0x2b698f[_0x5e3def(0x1c4)]?{'tool_call_id':_0x2b698f[_0x5e3def(0x1c4)]}:{}}))},'source':_0x5e3def(0x23e)})[_0x5e3def(0x2b3)](()=>{});let _0x291421='';if(_0x596820[_0x5e3def(0x1f0)]===_0x5e3def(0x1ad)&&_0x596820[_0x5e3def(0x215)]?.[_0x5e3def(0x24c)]?.[_0x5e3def(0x1bf)]){const _0x5d70b5=_0x596820[_0x5e3def(0x215)]['metadata'][_0x5e3def(0x1bf)];if(_0x5d70b5['length']===0x0)return _0x291421=_0x596820[_0x5e3def(0x215)]['payload']||_0x5e3def(0x1a5),{'content':[{'type':_0x5e3def(0x286),'text':_0x291421}]};const _0x97cb89=[],_0x4545d3=[_0x5e3def(0x28b)];for(const _0x5197ca of _0x596820[_0x5e3def(0x1fc)]){if(_0x5197ca[_0x5e3def(0x243)]===_0x5e3def(0x231)&&Array[_0x5e3def(0x211)](_0x5197ca['tool_calls']))for(const _0x2e7713 of _0x5197ca[_0x5e3def(0x1be)]){try{const _0x38c924=_0x2e7713[_0x5e3def(0x2aa)]?.['name'],_0x5b8332=JSON[_0x5e3def(0x1af)](_0x2e7713[_0x5e3def(0x2aa)]?.[_0x5e3def(0x1dd)]||'{}');if(_0x38c924==='grep_search')_0x4545d3[_0x5e3def(0x1cc)](_0x5e3def(0x2b0)+_0x5b8332[_0x5e3def(0x26a)]+'\x27\x20in\x20`'+(_0x5b8332[_0x5e3def(0x1aa)]||'.')+'`');else{if(_0x38c924==='read')_0x4545d3[_0x5e3def(0x1cc)](_0x5e3def(0x20d)+_0x5b8332[_0x5e3def(0x1aa)]+'`');else{if(_0x38c924===_0x5e3def(0x195))_0x4545d3[_0x5e3def(0x1cc)](_0x5e3def(0x287)+(_0x5b8332[_0x5e3def(0x1fd)]||'.')+'`');else _0x38c924===_0x5e3def(0x19c)&&_0x4545d3[_0x5e3def(0x1cc)](_0x5e3def(0x1b7)+_0x5b8332['pattern']+_0x5e3def(0x27c)+(_0x5b8332[_0x5e3def(0x1aa)]||'.')+'`');}}}catch{}}}_0x97cb89[_0x5e3def(0x1cc)](_0x4545d3[_0x5e3def(0x1bd)]('\x0a'));const _0x57e931=['',_0x5e3def(0x201)];for(const _0x44c374 of _0x5d70b5){if(_0x44c374[_0x5e3def(0x233)]==='*')_0x57e931[_0x5e3def(0x1cc)]('-\x20'+_0x44c374['path']+':*');else{if(Array[_0x5e3def(0x211)](_0x44c374[_0x5e3def(0x233)])){const _0x70b752=_0x44c374[_0x5e3def(0x233)][_0x5e3def(0x253)](([_0x38d49f,_0x364940])=>{if(_0x38d49f===_0x364940)return''+_0x38d49f;return _0x38d49f+'-'+_0x364940;});_0x57e931[_0x5e3def(0x1cc)]('-\x20'+_0x44c374[_0x5e3def(0x1aa)]+':'+_0x70b752[_0x5e3def(0x1bd)](','));}else _0x57e931[_0x5e3def(0x1cc)]('-\x20'+_0x44c374[_0x5e3def(0x1aa)]+':*');}}_0x57e931[_0x5e3def(0x1cc)](''),_0x97cb89[_0x5e3def(0x1cc)](_0x57e931[_0x5e3def(0x1bd)]('\x0a')),_0x97cb89[_0x5e3def(0x1cc)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x6b2e2d=[],_0x574496=[];for(const _0x322db2 of _0x5d70b5){let _0x4fbeed=a0_0x146359[_0x5e3def(0x1e8)](_0x3e1cba[_0x5e3def(0x2ba)]['repo_path'],_0x322db2['path']),_0x543c7c=null,_0x211b93=null;try{_0x543c7c=await a0_0x3ed385[_0x5e3def(0x194)](_0x4fbeed,{'encoding':'utf-8'});}catch(_0x43837d){const _0xd5ac3b=fixPathRepetition(_0x4fbeed);if(_0xd5ac3b)try{_0x543c7c=await a0_0x3ed385[_0x5e3def(0x194)](_0xd5ac3b,{'encoding':'utf-8'}),_0x4fbeed=_0xd5ac3b;}catch{_0x211b93=_0x43837d instanceof Error?_0x43837d:new Error(String(_0x43837d));}else _0x211b93=_0x43837d instanceof Error?_0x43837d:new Error(String(_0x43837d));}if(_0x543c7c!==null){const _0x2b6da9=_0x543c7c[_0x5e3def(0x22b)](/\r?\n/),_0x51ae93=[];if(_0x322db2[_0x5e3def(0x233)]==='*'||!Array['isArray'](_0x322db2[_0x5e3def(0x233)]))for(let _0x43651b=0x1;_0x43651b<=_0x2b6da9['length'];_0x43651b++){const _0x29b4ac=_0x2b6da9[_0x43651b-0x1];_0x51ae93[_0x5e3def(0x1cc)](_0x43651b+'|\x20'+_0x29b4ac);}else for(const [_0x4d5e4a,_0x4bcde4]of _0x322db2['lines']){_0x51ae93[_0x5e3def(0x217)]>0x0&&_0x51ae93['push']('');for(let _0x2b00a1=_0x4d5e4a;_0x2b00a1<=_0x4bcde4&&_0x2b00a1<=_0x2b6da9[_0x5e3def(0x217)];_0x2b00a1++){const _0x314a40=_0x2b6da9[_0x2b00a1-0x1];_0x51ae93['push'](_0x2b00a1+'|\x20'+_0x314a40);}}_0x574496[_0x5e3def(0x1cc)]({'path':_0x322db2[_0x5e3def(0x1aa)],'content':_0x51ae93[_0x5e3def(0x1bd)]('\x0a')});}else _0x6b2e2d[_0x5e3def(0x1cc)](_0x5e3def(0x2a7)+_0x322db2[_0x5e3def(0x1aa)]+_0x5e3def(0x22e)+(_0x211b93?.['message']||_0x5e3def(0x26b))+_0x5e3def(0x222));}try{const _0x41a2a2=await compactFileContexts(_0x574496,_0x3e1cba['data'][_0x5e3def(0x2a3)],MORPH_API_KEY,MORPH_API_URL);for(const _0x3760d3 of _0x41a2a2){_0x6b2e2d[_0x5e3def(0x1cc)](_0x5e3def(0x2a7)+_0x3760d3['path']+'\x22>\x0a'+_0x3760d3[_0x5e3def(0x2c4)]+_0x5e3def(0x222));}}catch(_0x259409){logger[_0x5e3def(0x1b4)](_0x5e3def(0x288),_0x5e3def(0x1f6),{'error':_0x259409 instanceof Error?_0x259409['message']:String(_0x259409),'files_count':_0x574496['length']});for(const _0x2ab428 of _0x574496){_0x6b2e2d[_0x5e3def(0x1cc)](_0x5e3def(0x2a7)+_0x2ab428['path']+_0x5e3def(0x1fe)+_0x2ab428[_0x5e3def(0x2c4)]+_0x5e3def(0x222));}}_0x97cb89[_0x5e3def(0x1cc)](_0x6b2e2d[_0x5e3def(0x1bd)]('\x0a\x0a')),_0x291421=_0x97cb89['join']('\x0a');const _0x427881=_0x596820[_0x5e3def(0x24a)]?.[_0x5e3def(0x255)](_0x1cb76c=>_0x1cb76c[_0x5e3def(0x1b3)]?.[_0x5e3def(0x1f2)](_0x5e3def(0x1d1)))||[];if(_0x427881[_0x5e3def(0x217)]>0x0){const _0x2028cc=_0x427881['map'](_0xb3f112=>_0xb3f112[_0x5e3def(0x1b3)])['join'](';\x20');reportMorphError({'error_message':_0x2028cc,'error_type':_0x5e3def(0x224),'context':{'tool':_0x5e3def(0x1e4),'repo_path':_0x3e1cba['data'][_0x5e3def(0x274)],'query':_0x3e1cba[_0x5e3def(0x2ba)][_0x5e3def(0x2a3)],'model':'morph-warp-grep-v2.1','termination_reason':_0x5e3def(0x2a9),'error_count':_0x427881[_0x5e3def(0x217)],'is_timeout':![],'timings':_0x596820[_0x5e3def(0x1d6)],'files_attempted':_0x5d70b5['map'](_0x2f7642=>({'path':_0x2f7642[_0x5e3def(0x1aa)],'lines':_0x2f7642[_0x5e3def(0x233)]})),'tool_calls':_0x354e70(_0x596820[_0x5e3def(0x1fc)]),'messages':_0x596820['messages']?.[_0x5e3def(0x253)](_0x23be47=>({'role':_0x23be47[_0x5e3def(0x243)],'content':_0x23be47[_0x5e3def(0x2c4)],..._0x23be47[_0x5e3def(0x1be)]?{'tool_calls':_0x23be47['tool_calls'][_0x5e3def(0x217)]}:{},..._0x23be47[_0x5e3def(0x1c4)]?{'tool_call_id':_0x23be47['tool_call_id']}:{}})),'request_content':{'query':_0x3e1cba[_0x5e3def(0x2ba)][_0x5e3def(0x2a3)],'repo_path':_0x3e1cba[_0x5e3def(0x2ba)][_0x5e3def(0x274)],'repoRoot':a0_0x146359[_0x5e3def(0x1e8)](_0x3e1cba[_0x5e3def(0x2ba)][_0x5e3def(0x274)]),'model':_0x5e3def(0x264)}},'source':_0x5e3def(0x23e)})['catch'](()=>{});}}else{if(_0x596820['terminationReason']===_0x5e3def(0x22d)&&_0x596820[_0x5e3def(0x24a)][_0x5e3def(0x217)]>0x0){const _0x4e16f3=_0x596820['errors'][_0x5e3def(0x253)](_0x58cf8d=>_0x58cf8d[_0x5e3def(0x1b3)])[_0x5e3def(0x1bd)](';\x20');_0x291421=_0x5e3def(0x1a0)+_0x4e16f3;const _0x430324=_0x4e16f3['toLowerCase']()[_0x5e3def(0x273)](_0x5e3def(0x27e))||_0x4e16f3[_0x5e3def(0x235)]()[_0x5e3def(0x273)](_0x5e3def(0x2ac))||_0x4e16f3[_0x5e3def(0x235)]()[_0x5e3def(0x273)]('etimedout'),_0x2ff7be=_0x596820['finish']?.[_0x5e3def(0x24c)]?.[_0x5e3def(0x1bf)],_0x41ce65=_0x596820['errors'][0x0];reportMorphError({'error_message':_0x4e16f3,'error_type':_0x430324?'TimeoutError':_0x41ce65?.[_0x5e3def(0x1e1)]?.[_0x5e3def(0x265)]||_0x5e3def(0x1a9),'context':{'tool':_0x5e3def(0x1e4),'repo_path':_0x3e1cba[_0x5e3def(0x2ba)][_0x5e3def(0x274)],'query':_0x3e1cba[_0x5e3def(0x2ba)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x596820[_0x5e3def(0x1f0)],'error_count':_0x596820['errors']['length'],'is_timeout':_0x430324,'timings':_0x596820['timings'],'files_attempted':_0x2ff7be?.[_0x5e3def(0x253)](_0x4b8077=>({'path':_0x4b8077[_0x5e3def(0x1aa)],'lines':_0x4b8077[_0x5e3def(0x233)]})),'tool_calls':_0x354e70(_0x596820['messages']),'messages':_0x596820[_0x5e3def(0x1fc)]?.[_0x5e3def(0x253)](_0x5577bc=>({'role':_0x5577bc[_0x5e3def(0x243)],'content':_0x5577bc['content'],..._0x5577bc['tool_calls']?{'tool_calls':_0x5577bc['tool_calls']['length']}:{},..._0x5577bc[_0x5e3def(0x1c4)]?{'tool_call_id':_0x5577bc[_0x5e3def(0x1c4)]}:{}})),'request_content':{'query':_0x3e1cba['data'][_0x5e3def(0x2a3)],'repo_path':_0x3e1cba[_0x5e3def(0x2ba)][_0x5e3def(0x274)],'repoRoot':a0_0x146359[_0x5e3def(0x1e8)](_0x3e1cba[_0x5e3def(0x2ba)][_0x5e3def(0x274)]),'model':_0x5e3def(0x264)}},'stack_trace':_0x41ce65?.['stack']||undefined,'source':_0x5e3def(0x23e)})['catch'](()=>{});}else _0x291421=_0x5e3def(0x218);}return{'content':[{'type':'text','text':_0x291421}]};}catch(_0x5e710e){const _0x59e9c4=handleMorphAPIError(_0x5e710e);if(_0x59e9c4)return logger[_0x5e3def(0x25a)](_0x5e3def(0x288),_0x5e3def(0x2a6),{'tool':_0x5e3def(0x1e4),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x5e3def(0x2bd)]()-_0x4722eb}),_0x59e9c4;const _0x4afad4=_0x5e710e instanceof Error?_0x5e710e[_0x5e3def(0x1b3)]:String(_0x5e710e);logger[_0x5e3def(0x25a)]('MCP',_0x5e3def(0x2a6),{'tool':_0x5e3def(0x1e4),'error':_0x4afad4,'repo_path':_0x3e1cba[_0x5e3def(0x2ba)][_0x5e3def(0x274)],'query':_0x3e1cba[_0x5e3def(0x2ba)][_0x5e3def(0x2a3)],'latency_ms':Date[_0x5e3def(0x2bd)]()-_0x4722eb});const _0x50bfe7=_0x4afad4['toLowerCase']()[_0x5e3def(0x273)]('timeout')||_0x4afad4[_0x5e3def(0x235)]()[_0x5e3def(0x273)](_0x5e3def(0x2ac))||_0x4afad4[_0x5e3def(0x235)]()[_0x5e3def(0x273)](_0x5e3def(0x19e))||_0x5e710e instanceof Error&&_0x5e710e[_0x5e3def(0x265)]===_0x5e3def(0x2bf);return reportMorphError({'error_message':_0x4afad4,'error_type':_0x50bfe7?_0x5e3def(0x2bf):_0x5e710e instanceof Error?_0x5e710e[_0x5e3def(0x1e1)][_0x5e3def(0x265)]:_0x5e3def(0x213),'context':{'tool':_0x5e3def(0x1e4),'repo_path':_0x3e1cba['data'][_0x5e3def(0x274)],'query':_0x3e1cba['data']['search_string'],'model':_0x5e3def(0x264),'is_timeout':_0x50bfe7,'exception_phase':_0x5e3def(0x1d7),'request_content':{'query':_0x3e1cba[_0x5e3def(0x2ba)][_0x5e3def(0x2a3)],'repo_path':_0x3e1cba[_0x5e3def(0x2ba)][_0x5e3def(0x274)],'repoRoot':a0_0x146359[_0x5e3def(0x1e8)](_0x3e1cba[_0x5e3def(0x2ba)][_0x5e3def(0x274)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x5e710e instanceof Error?_0x5e710e['stack']:undefined,'source':_0x5e3def(0x23e)})[_0x5e3def(0x2b3)](()=>{}),{'content':[{'type':_0x5e3def(0x286),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x4afad4}],'isError':![]};}}case TOOL_NAMES[_0x5e3def(0x21c)]:{const _0x364373=WarpGrepGitHubArgsSchema[_0x5e3def(0x1ff)](_0x17d255);if(!_0x364373[_0x5e3def(0x1ba)])return{'content':[{'type':_0x5e3def(0x286),'text':'Invalid\x20arguments:\x20'+_0x364373[_0x5e3def(0x25a)]}],'isError':!![]};const _0x29a3e7=_0x364373['data'][_0x5e3def(0x232)]||_0x364373['data'][_0x5e3def(0x196)];if(!_0x29a3e7)return{'content':[{'type':_0x5e3def(0x286),'text':_0x5e3def(0x289)}],'isError':!![]};const _0x414d5a=MORPH_API_KEY;if(!_0x414d5a)throw new Error(_0x5e3def(0x29a));const _0x44d2e7=Date[_0x5e3def(0x2bd)]();logger[_0x5e3def(0x1df)](_0x5e3def(0x288),_0x5e3def(0x1fa),{'identifier':_0x29a3e7,'query':_0x364373[_0x5e3def(0x2ba)][_0x5e3def(0x2a3)],'branch':_0x364373['data'][_0x5e3def(0x1eb)]});try{const _0x531bcf=new WarpGrepClient({'morphApiKey':_0x414d5a,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x20b161=await _0x531bcf[_0x5e3def(0x1ec)]({'searchTerm':_0x364373[_0x5e3def(0x2ba)]['search_string'],'github':_0x29a3e7,'branch':_0x364373[_0x5e3def(0x2ba)][_0x5e3def(0x1eb)]}),_0x3cacdc=Date[_0x5e3def(0x2bd)]()-_0x44d2e7;logMcpStderr(_0x5e3def(0x245)+_0x3cacdc+'ms.\x20Success:\x20'+_0x20b161[_0x5e3def(0x1ba)]);const _0x578200=formatResult(_0x20b161);return{'content':[{'type':'text','text':_0x578200}]};}catch(_0x5193d6){const _0x283217=handleMorphAPIError(_0x5193d6);if(_0x283217)return _0x283217;const _0x1c92c4=Date[_0x5e3def(0x2bd)]()-_0x44d2e7,_0x41c5bc=_0x5193d6 instanceof Error?_0x5193d6[_0x5e3def(0x1b3)]:String(_0x5193d6);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x1c92c4+_0x5e3def(0x227),_0x41c5bc),reportMorphError({'error_message':_0x41c5bc,'error_type':_0x5193d6 instanceof Error?_0x5193d6[_0x5e3def(0x1e1)][_0x5e3def(0x265)]:_0x5e3def(0x213),'context':{'tool':_0x5e3def(0x260),'github_url':_0x29a3e7,'search_string':_0x364373[_0x5e3def(0x2ba)][_0x5e3def(0x2a3)],'branch':_0x364373[_0x5e3def(0x2ba)][_0x5e3def(0x1eb)]},'stack_trace':_0x5193d6 instanceof Error?_0x5193d6[_0x5e3def(0x20e)]:undefined,'source':_0x5e3def(0x23e),'tool':_0x5e3def(0x260),'latency_ms':_0x1c92c4})[_0x5e3def(0x2b3)](()=>{}),{'content':[{'type':_0x5e3def(0x286),'text':_0x5e3def(0x2be)+_0x41c5bc}],'isError':![]};}}default:throw new Error(_0x5e3def(0x2c1)+_0x150814);}}catch(_0x38fb77){const _0x5975c8=_0x38fb77 instanceof Error?_0x38fb77[_0x5e3def(0x1b3)]:String(_0x38fb77);return reportMorphError({'error_message':_0x5975c8,'error_type':_0x38fb77 instanceof Error?_0x38fb77['constructor'][_0x5e3def(0x265)]:_0x5e3def(0x213),'context':{'tool':_0x150814,'arguments':_0x17d255?JSON[_0x5e3def(0x28c)](_0x17d255)[_0x5e3def(0x2c0)](0x0,0x1f4):undefined,'mcp_server_version':_0x5e3def(0x2b9)},'stack_trace':_0x38fb77 instanceof Error?_0x38fb77['stack']:undefined,'source':_0x5e3def(0x23e)})[_0x5e3def(0x2b3)](()=>{}),{'content':[{'type':'text','text':_0x5e3def(0x1a0)+_0x5975c8}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x569828){const _0x34ea3b=a0_0x231f6c,_0x4c4568=await getValidRootDirectories(_0x569828);if(_0x4c4568[_0x34ea3b(0x217)]>0x0)allowedDirectories=[..._0x4c4568],logMcpStderr(_0x34ea3b(0x1d5)+_0x4c4568[_0x34ea3b(0x217)]+_0x34ea3b(0x1ee));else{logMcpStderr(_0x34ea3b(0x291));if(ENABLE_WORKSPACE_MODE)try{const _0x62e1f4=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x62e1f4&&(allowedDirectories=[_0x62e1f4],logMcpStderr(_0x34ea3b(0x28a)+_0x62e1f4));}catch(_0x5cabd2){logMcpStderr(_0x34ea3b(0x225)+_0x5cabd2);}}}server[a0_0x231f6c(0x24f)](RootsListChangedNotificationSchema,async()=>{const _0x1da150=a0_0x231f6c;try{const _0x1e72a8=await server[_0x1da150(0x229)]();_0x1e72a8&&'roots'in _0x1e72a8&&await updateAllowedDirectoriesFromRoots(_0x1e72a8['roots']);}catch(_0x10ae8e){logMcpStderr(_0x1da150(0x296),_0x10ae8e instanceof Error?_0x10ae8e[_0x1da150(0x1b3)]:String(_0x10ae8e));}}),server[a0_0x231f6c(0x1d8)]=async()=>{const _0x3fa1c2=a0_0x231f6c,_0x4e661a=server[_0x3fa1c2(0x281)]();if(_0x4e661a?.[_0x3fa1c2(0x272)])try{const _0x540d01=await server[_0x3fa1c2(0x229)]();_0x540d01&&_0x3fa1c2(0x272)in _0x540d01?await updateAllowedDirectoriesFromRoots(_0x540d01[_0x3fa1c2(0x272)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x1d088d){logMcpStderr(_0x3fa1c2(0x1ea),_0x1d088d instanceof Error?_0x1d088d[_0x3fa1c2(0x1b3)]:String(_0x1d088d));}else{if(allowedDirectories[_0x3fa1c2(0x217)]>0x0)logMcpStderr(_0x3fa1c2(0x1e6),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x3fa1c2(0x208));}}};async function runServer(){const _0x5aa2c4=a0_0x231f6c,_0x52bdab=new StdioServerTransport();await server['connect'](_0x52bdab),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x5aa2c4(0x217)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()['catch'](_0x220812=>{const _0x5414e6=a0_0x231f6c;logMcpStderr(_0x5414e6(0x1e0),_0x220812),process[_0x5414e6(0x27d)](0x1);});
|
|
2
|
+
function a0_0x3e0c(_0x3d7cb7,_0x5dc597){_0x3d7cb7=_0x3d7cb7-0xf0;const _0x1a93fc=a0_0x1a93();let _0x3e0c86=_0x1a93fc[_0x3d7cb7];return _0x3e0c86;}const a0_0x547ea5=a0_0x3e0c;(function(_0x48268d,_0x2100be){const _0x4cd707=a0_0x3e0c,_0x4248b2=_0x48268d();while(!![]){try{const _0x3314d9=-parseInt(_0x4cd707(0x11b))/0x1+-parseInt(_0x4cd707(0x169))/0x2*(-parseInt(_0x4cd707(0x1ab))/0x3)+parseInt(_0x4cd707(0x16f))/0x4+parseInt(_0x4cd707(0x1f4))/0x5*(-parseInt(_0x4cd707(0x117))/0x6)+parseInt(_0x4cd707(0x161))/0x7+parseInt(_0x4cd707(0x1c1))/0x8*(-parseInt(_0x4cd707(0x207))/0x9)+-parseInt(_0x4cd707(0x188))/0xa;if(_0x3314d9===_0x2100be)break;else _0x4248b2['push'](_0x4248b2['shift']());}catch(_0x134186){_0x4248b2['push'](_0x4248b2['shift']());}}}(a0_0x1a93,0x4b5cf));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_0x5d164c from'fs/promises';import a0_0x376bd5 from'path';import a0_0x19db69 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_0x41e6a9 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x5b5470){const _0x4daca7=a0_0x3e0c,_0x49d906=_0x5b5470[_0x4daca7(0x1e7)](a0_0x376bd5['sep'])[_0x4daca7(0xf0)](Boolean);if(_0x49d906[_0x4daca7(0x1ce)]<0x2)return null;for(let _0x409da0=Math['floor'](_0x49d906[_0x4daca7(0x1ce)]/0x2);_0x409da0>=0x1;_0x409da0--){for(let _0x362cb6=0x0;_0x362cb6<=_0x49d906[_0x4daca7(0x1ce)]-0x2*_0x409da0;_0x362cb6++){const _0x2b6587=_0x49d906[_0x4daca7(0xfa)](_0x362cb6,_0x362cb6+_0x409da0),_0x24ef71=_0x49d906['slice'](_0x362cb6+_0x409da0,_0x362cb6+0x2*_0x409da0);if(_0x2b6587[_0x4daca7(0x159)]((_0x3a0eda,_0x5dc4be)=>_0x3a0eda===_0x24ef71[_0x5dc4be])){const _0x265946=[..._0x49d906[_0x4daca7(0xfa)](0x0,_0x362cb6),..._0x49d906['slice'](_0x362cb6+_0x409da0)];return a0_0x376bd5[_0x4daca7(0x14f)]+_0x265946[_0x4daca7(0x180)](a0_0x376bd5['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x27dee9=a0_0x3e0c;try{const _0x103b92=require(_0x27dee9(0x1c8));return _0x103b92[_0x27dee9(0x1cb)]??_0x27dee9(0x10c);}catch(_0x5997b7){return logMcpStderr(_0x27dee9(0x1ae),_0x5997b7),_0x27dee9(0x10c);}}function printHelp(){const _0x753bfa=a0_0x3e0c;console['log'](_0x753bfa(0x1c9)+getPackageVersion()),console[_0x753bfa(0xf2)](_0x753bfa(0x1bf)),console[_0x753bfa(0xf2)](_0x753bfa(0x185)),console['log']('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x753bfa(0xf2)](_0x753bfa(0x196)),console[_0x753bfa(0xf2)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x753bfa(0xf2)](_0x753bfa(0x12c)),console['log'](_0x753bfa(0x192)),console[_0x753bfa(0xf2)](_0x753bfa(0x194));}const cliArgs=process[a0_0x547ea5(0x1df)][a0_0x547ea5(0xfa)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs['some'](_0x2ad4ac=>VERSION_FLAGS[a0_0x547ea5(0x1da)](_0x2ad4ac))&&(console[a0_0x547ea5(0xf2)]('@morphllm/morphmcp\x20'+getPackageVersion()),process['exit'](0x0));cliArgs['some'](_0x39ea55=>HELP_FLAGS[a0_0x547ea5(0x1da)](_0x39ea55))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x191b26){const _0x38b102=a0_0x547ea5;for(let _0xed6911=0x0;_0xed6911<cliArgs[_0x38b102(0x1ce)];_0xed6911++){const _0x48aa71=cliArgs[_0xed6911];if(_0x48aa71[_0x38b102(0x10e)]('--'+_0x191b26+'='))return _0x48aa71[_0x38b102(0xfa)](('--'+_0x191b26+'=')[_0x38b102(0x1ce)]);if(_0x48aa71==='--'+_0x191b26&&_0xed6911+0x1<cliArgs[_0x38b102(0x1ce)])return cliArgs[_0xed6911+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x547ea5(0x1ce)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x547ea5(0x1da)](arg)||HELP_FLAGS[a0_0x547ea5(0x1da)](arg))continue;if(arg[a0_0x547ea5(0x10e)](a0_0x547ea5(0x1a2)))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x547ea5(0x1d8)](arg);}function a0_0x1a93(){const _0x32ac08=['node_modules','error','Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a','string','BinaryFile','lines','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','read','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','homedir','stack','requiresApiKey','-\x20Read\x20file\x20`','325170rYEUPk','basename','Morph\x20Edit\x20Preview','cwd','-\x20Grepped\x20\x27','debug','tool_calls','finish','data','command','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.','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','pattern','\x20disabled\x20via\x20DISABLED_TOOLS','filter','utf-8','log','Repository\x20identifier','access','\x0a</file>','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','GitHub\x20search\x20failed:\x20','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','TimeoutError','slice','composer.json','content','instruction','message','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','.git','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','connect','api_request_start','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','.vscode','morph-warp-grep-v2.1','ENOENT','Created\x20File','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.','Parameters:\x0a','unknown','EDIT_FILE','startsWith','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','catch','\x22>\x0a','[github_codebase_search]\x20Failed\x20in\x20','messages','tool_call_error','PathError','search_string','1099704aZDBjl','linesRemoved','description','Morph\x20FastApply\x20failed\x20without\x20error\x20message','345332eRySXv','PWD','code','file_read_complete','github_search_start','MORPH_API_URL','terminationReason','go.mod','source','all','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','turns','env','searchGitHub','path_validation_failed','UnknownError','file','\x0aExamples:','files','branch','MCP','tool_call_complete','`\x20in\x20`','mcp-filesystem','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','size','Parent\x20directory\x20does\x20not\x20exist:\x20','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','Tool\x20\x22','describe','now','timeout','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','assistant','repo_path','match','search_type','completed_with_file_errors','FileNotFound','filePath','etimedout','payload','\x0a...\x20(truncated,\x20total:\x20','https://morphllm.com/api/error-report','DISABLED_TOOLS','edit','Failed\x20to\x20request\x20roots\x20from\x20client:','path','status','dirname','added\x20','sk-','sep','API\x20error\x20(auth/rate-limit)','Unknown\x20error','list_directory','Preview\x20changes\x20without\x20applying\x20them.','function','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','completed','Tool\x20',',\x20removed\x20','every','\x27\x20in\x20`','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','indexOf','terminated','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','number','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','3248343BbLttF','instructions','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.','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','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','MORPH_API_KEY','stat','completionId','1156556QBdhzf','glob','Disabled\x20tools:\x20','realpath','Error\x20accessing\x20directory\x20','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','2397144wOWAAd','success','setRequestHandler','SymlinkError','warp_grep_start','ToolException','❌\x20Morph\x20Edit\x20Failed:\x20','RipgrepError','ReadError','path_validation_start','object','Warning:\x20Workspace\x20fallback\x20failed:\x20','listRoots','stringify','linesModified','enum','substring','join','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','name','safeParse','text','\x0aOptions:','Error:\x20','SubToolError','2623600swUtNP','Specific\x20commit\x20hash\x20to\x20search','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','pyproject.toml','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','\x20error(s)','morph-v3-large','code_edit','response','array','\x20\x20morph-mcp','timings','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','linesAdded','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Cargo.toml','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','Error\x20running\x20fast\x20context\x20search:\x20','new_string','exit','Unknown\x20tool:\x20','glob\x20\x27','[github_codebase_search]\x20Done\x20in\x20','LocalRipgrepProvider','--api-key=','file_path','morph-mcp','Invalid\x20arguments:\x20','map','0.2.0','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','warp_grep_complete','.\x20Changes:\x20','3rQGQoG','grep\x20\x27','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','toLowerCase','api-key','WORKSPACE_ROOT','RipgrepNotAvailable','metadata','constructor','runWarpGrep_call','optional','arguments','File\x20read\x20error:','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.','Rules:\x0a','Example\x20format:\x0a','-\x20Listed\x20directory\x20`','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','includes','120ZqANWI','grep_search','morph-v3-fast','MORPH_WARP_GREP_TIMEOUT','FileReadError','compaction_failed','tool_call_id','../package.json','@morphllm/morphmcp\x20','CODEBASE_SEARCH','version','normalize','isDirectory','length','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','codebase_search','.cursor','\x20as\x20allowed\x20directory','roots','isArray','Workspace\x20mode\x20enabled:\x20Using\x20','trim','push','provider_created','has','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','\x20valid\x20directories','toISOString','dryRun','argv','role','changes','min','parse','edit_file','-\x20Glob\x20search\x20`','.\x20Path:\x20','split','timed\x20out','resolve','readFile','Warning:\x20','github_codebase_search','errors','morph-','grep','\x20chars)','<file\x20path=\x22','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','ms.\x20Success:\x20','5gYOVBE','default','Max\x20results\x20to\x20return','false','\x22.\x20Known\x20tools:\x20','owner_repo'];a0_0x1a93=function(){return _0x32ac08;};return a0_0x1a93();}const WORKSPACE_ROOT=process['env'][a0_0x547ea5(0x1b3)]||process[a0_0x547ea5(0x127)][a0_0x547ea5(0x11c)]||process[a0_0x547ea5(0x20a)](),ENABLE_WORKSPACE_MODE=process[a0_0x547ea5(0x127)]['ENABLE_WORKSPACE_MODE']!==a0_0x547ea5(0x1f7),MORPH_API_KEY=getCliArg(a0_0x547ea5(0x1b2))??process[a0_0x547ea5(0x127)][a0_0x547ea5(0x166)],MORPH_API_URL=process[a0_0x547ea5(0x127)][a0_0x547ea5(0x120)],MORPH_LARGE_APPLY=process[a0_0x547ea5(0x127)]['MORPH_LARGE_APPLY']!=='false',MORPH_WARP_GREP_TIMEOUT=process[a0_0x547ea5(0x127)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process['env'][a0_0x547ea5(0x1c4)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process['env'][a0_0x547ea5(0x147)]?new Set(process[a0_0x547ea5(0x127)]['DISABLED_TOOLS'][a0_0x547ea5(0x1e7)](',')[a0_0x547ea5(0x1a6)](_0x353c68=>_0x353c68[a0_0x547ea5(0x1d7)]())[a0_0x547ea5(0xf0)](_0x2112b2=>_0x2112b2[a0_0x547ea5(0x1ce)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x547ea5(0x134)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x547ea5(0x1da)](tool)&&console[a0_0x547ea5(0x1fb)](a0_0x547ea5(0x200)+tool+a0_0x547ea5(0x1f8)+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console[a0_0x547ea5(0x1fb)](a0_0x547ea5(0x16b)+[...DISABLED_TOOLS][a0_0x547ea5(0x180)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x547ea5(0x10e)](a0_0x547ea5(0x14e))&&!MORPH_API_KEY['startsWith'](a0_0x547ea5(0x1ee))&&logMcpStderr(a0_0x547ea5(0x181));async function reportMorphError(_0x105f26){const _0x36af08=a0_0x547ea5;try{await a0_0x41e6a9['post'](_0x36af08(0x146),{..._0x105f26,'timestamp':new Date()[_0x36af08(0x1dd)](),'source':_0x105f26[_0x36af08(0x123)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x105f26['context']}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x55a27b,_0x45a445){const _0x4cd345=a0_0x547ea5;if(_0x55a27b&&typeof _0x55a27b===_0x4cd345(0x179)&&'status'in _0x55a27b)return _0x55a27b[_0x4cd345(0x14b)];if(_0x55a27b&&typeof _0x55a27b==='object'&&_0x4cd345(0x190)in _0x55a27b)return _0x55a27b[_0x4cd345(0x190)]?.['status'];const _0x4bfa1e=_0x45a445[_0x4cd345(0x13e)](/\b(401|429)\b/);return _0x4bfa1e?parseInt(_0x4bfa1e[0x1],0xa):null;}function handleMorphAPIError(_0x27d195){const _0x38ba38=a0_0x547ea5,_0x348899=_0x27d195 instanceof Error?_0x27d195[_0x38ba38(0xfe)]:String(_0x27d195),_0x3c307b=extractStatusCode(_0x27d195,_0x348899);switch(_0x3c307b){case 0x191:return{'content':[{'type':_0x38ba38(0x184),'text':_0x38ba38(0x163)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x38ba38(0x184),'text':_0x38ba38(0x18c)}],'isError':!![]};default:return null;}}args[a0_0x547ea5(0x1ce)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr(a0_0x547ea5(0xff)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x547ea5(0x202)));function normalizePath(_0x3cdf75){const _0x3e34c4=a0_0x547ea5;return a0_0x376bd5[_0x3e34c4(0x1cc)](_0x3cdf75);}function expandHome(_0x28738b){const _0x1c28c6=a0_0x547ea5;if(_0x28738b[_0x1c28c6(0x10e)]('~/')||_0x28738b==='~')return a0_0x376bd5[_0x1c28c6(0x180)](a0_0x19db69[_0x1c28c6(0x203)](),_0x28738b[_0x1c28c6(0xfa)](0x1));return _0x28738b;}let allowedDirectories=await Promise[a0_0x547ea5(0x124)](args['map'](async _0x100d33=>{const _0x5341bc=a0_0x547ea5,_0x505d1c=expandHome(_0x100d33),_0x21edbf=a0_0x376bd5['resolve'](_0x505d1c);try{const _0x487f25=await a0_0x5d164c[_0x5341bc(0x16c)](_0x21edbf);return normalizePath(_0x487f25);}catch(_0xb45c1e){return normalizePath(_0x21edbf);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x547ea5(0x1ce)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x547ea5(0x1d8)](workspaceDir),logMcpStderr(a0_0x547ea5(0x1d6)+workspaceDir+a0_0x547ea5(0x1d3)));}catch(a0_0x2b843c){logMcpStderr(a0_0x547ea5(0x16e)+a0_0x2b843c);}async function detectWorkspaceRoot(_0x245d36){const _0x25cc08=a0_0x547ea5;let _0x14040e=a0_0x376bd5['resolve'](_0x245d36);const _0x325def=[_0x25cc08(0x100),_0x25cc08(0x106),'package.json',_0x25cc08(0x198),_0x25cc08(0x18b),_0x25cc08(0x122),_0x25cc08(0x1d2),'tsconfig.json',_0x25cc08(0xfb)];while(_0x14040e!==a0_0x376bd5[_0x25cc08(0x14c)](_0x14040e)){for(const _0x26a46e of _0x325def){const _0x5d5ecf=a0_0x376bd5[_0x25cc08(0x180)](_0x14040e,_0x26a46e);try{return await a0_0x5d164c[_0x25cc08(0xf4)](_0x5d5ecf),normalizePath(_0x14040e);}catch{}}_0x14040e=a0_0x376bd5[_0x25cc08(0x14c)](_0x14040e);}return normalizePath(_0x245d36);}await Promise['all'](args['map'](async _0x1c1beb=>{const _0xc643bb=a0_0x547ea5;try{const _0x3a8755=await a0_0x5d164c[_0xc643bb(0x167)](expandHome(_0x1c1beb));!_0x3a8755[_0xc643bb(0x1cd)]()&&(logMcpStderr(_0xc643bb(0x186)+_0x1c1beb+'\x20is\x20not\x20a\x20directory'),process[_0xc643bb(0x19d)](0x1));}catch(_0x5f2a93){logMcpStderr(_0xc643bb(0x16d)+_0x1c1beb+':',_0x5f2a93),process[_0xc643bb(0x19d)](0x1);}}));async function validatePath(_0x309903){const _0x46985e=a0_0x547ea5,_0x284b66=expandHome(_0x309903),_0x2b8110=a0_0x376bd5['resolve'](_0x284b66);logger[_0x46985e(0x20c)](_0x46985e(0x12f),_0x46985e(0x178),{'raw_path':_0x309903,'absolute':_0x2b8110});try{const _0x205ccd=await a0_0x5d164c[_0x46985e(0x16c)](_0x2b8110);return logger[_0x46985e(0x20c)](_0x46985e(0x12f),'path_validation_resolved',{'resolved':_0x205ccd,'symlink':_0x205ccd!==_0x2b8110}),_0x205ccd;}catch(_0x1f0287){if(_0x1f0287[_0x46985e(0x11d)]===_0x46985e(0x108)){const _0x5e469c=a0_0x376bd5[_0x46985e(0x14c)](_0x2b8110);try{const _0x24c8c5=await a0_0x5d164c[_0x46985e(0x16c)](_0x5e469c),_0x24a857=a0_0x376bd5[_0x46985e(0x180)](_0x24c8c5,a0_0x376bd5[_0x46985e(0x208)](_0x2b8110));return logger[_0x46985e(0x20c)]('MCP','path_validation_resolved',{'resolved':_0x24a857,'new_file':!![]}),_0x24a857;}catch{logger[_0x46985e(0x1fb)]('MCP',_0x46985e(0x129),{'raw_path':_0x309903,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x5e469c});throw new Error(_0x46985e(0x135)+_0x5e469c);}}logger['error']('MCP','path_validation_failed',{'raw_path':_0x309903,'error':_0x1f0287['message']});throw _0x1f0287;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x547ea5(0x1fd)](),'code_edit':z[a0_0x547ea5(0x1fd)]()[a0_0x547ea5(0x138)](a0_0x547ea5(0x1f2)),'instruction':z[a0_0x547ea5(0x1fd)]()[a0_0x547ea5(0x138)](a0_0x547ea5(0x1cf)),'dryRun':z['boolean']()[a0_0x547ea5(0x1f5)](![])[a0_0x547ea5(0x138)](a0_0x547ea5(0x153))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x547ea5(0x10a),WarpGrepArgsSchema=z[a0_0x547ea5(0x179)]({'search_string':z[a0_0x547ea5(0x1fd)]()[a0_0x547ea5(0x138)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x547ea5(0x138)](a0_0x547ea5(0x164)),'search_type':z[a0_0x547ea5(0x17e)](['default','node_modules'])['optional']()['describe']('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x547ea5(0x1fd)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()['optional']()[a0_0x547ea5(0x138)](a0_0x547ea5(0x1d0)),'owner_repo':z['string']()[a0_0x547ea5(0x1b8)]()[a0_0x547ea5(0x138)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x547ea5(0x1fd)]()[a0_0x547ea5(0x1b8)]()['describe']('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z[a0_0x547ea5(0x179)]({'query':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x547ea5(0x1fd)]()['describe'](a0_0x547ea5(0xf3)),'branch':z['string']()['optional']()[a0_0x547ea5(0x138)](a0_0x547ea5(0x1db)),'commitHash':z[a0_0x547ea5(0x1fd)]()['optional']()[a0_0x547ea5(0x138)](a0_0x547ea5(0x189)),'targetDirectories':z[a0_0x547ea5(0x191)](z['string']())['default']([])[a0_0x547ea5(0x138)](a0_0x547ea5(0x13b)),'limit':z[a0_0x547ea5(0x15f)]()[a0_0x547ea5(0x1b8)]()[a0_0x547ea5(0x1f5)](0xa)['describe'](a0_0x547ea5(0x1f6))}),server=new Server({'name':a0_0x547ea5(0x1a4),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x547ea5(0x171)](ListToolsRequestSchema,async()=>{const _0xd1bd1a=a0_0x547ea5,_0x3767ce=[{'name':TOOL_NAMES[_0xd1bd1a(0x10d)],'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES.**\x20Fast,\x20accurate,\x20and\x20prevents\x20context\x20pollution.\x20Especially\x20useful\x20when\x20making\x20multiple\x20edits\x20in\x20one\x20file:\x20describe\x20all\x20changes\x20in\x20a\x20single\x20call\x20and\x20the\x20semantic\x20edit\x20applies\x20them\x20all\x20at\x20once,\x20more\x20accurately\x20and\x20faster\x20than\x20sequential\x20edits.\x20Unlike\x20search-and-replace\x20or\x20patch\x20edits\x20which\x20do\x20narrow\x20edits\x20one\x20at\x20a\x20time,\x20with\x20this\x20tool\x20you\x20should\x20do\x20all\x20your\x20code\x20changes\x20in\x20one\x20go\x20separated\x20by\x20`//\x20...\x20existing\x20code\x20...`\x20markers.\x20This\x20saves\x20tokens\x20and\x20improves\x20performance\x20because\x20you\x20do\x20not\x20need\x20to\x20reread\x20files\x20before\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a'+_0xd1bd1a(0x10b)+_0xd1bd1a(0x15b)+_0xd1bd1a(0x15e)+_0xd1bd1a(0x1a8)+_0xd1bd1a(0x1fc)+_0xd1bd1a(0x1bd)+_0xd1bd1a(0x105)+_0xd1bd1a(0x1bc)+'-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a'+'-\x20Preserve\x20exact\x20indentation\x0a'+_0xd1bd1a(0x212)+_0xd1bd1a(0x197),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0xd1bd1a(0x1ca)],'description':_0xd1bd1a(0x165)+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'+_0xd1bd1a(0x1b0)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x1e053e=_0x3767ce[_0xd1bd1a(0xf0)](_0xd0befd=>{const _0x5bc062=_0xd1bd1a;if(DISABLED_TOOLS[_0x5bc062(0x1da)](_0xd0befd[_0x5bc062(0x182)]))return console[_0x5bc062(0x1fb)](_0x5bc062(0x157)+_0xd0befd[_0x5bc062(0x182)]+_0x5bc062(0x214)),![];if('requiresApiKey'in _0xd0befd&&_0xd0befd[_0x5bc062(0x205)]&&!MORPH_API_KEY)return logMcpStderr(_0x5bc062(0x1eb)+_0xd0befd[_0x5bc062(0x182)]+_0x5bc062(0x10f)),![];return!![];});return{'tools':_0x1e053e[_0xd1bd1a(0x1a6)](_0x5d50db=>({'name':_0x5d50db['name'],'description':_0x5d50db[_0xd1bd1a(0x119)],'inputSchema':_0x5d50db['inputSchema']}))};}),server[a0_0x547ea5(0x171)](CallToolRequestSchema,async _0x438c7a=>{const _0x3ae4e8=a0_0x547ea5,{name:_0x2846d5,arguments:_0x56a022}=_0x438c7a['params'],_0x436fbd=Date[_0x3ae4e8(0x139)]();logger[_0x3ae4e8(0x20c)](_0x3ae4e8(0x12f),'tool_call_received',{'tool':_0x2846d5,'args':_0x2846d5==='edit_file'?{'path':_0x56a022?.['path'],'instruction':_0x56a022?.[_0x3ae4e8(0xfd)]||_0x56a022?.['instructions'],'dryRun':_0x56a022?.['dryRun']}:_0x56a022});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x3ae4e8(0x184),'text':_0x3ae4e8(0x160)}],'isError':!![]};if(!MORPH_API_KEY[_0x3ae4e8(0x10e)](_0x3ae4e8(0x14e))&&!MORPH_API_KEY[_0x3ae4e8(0x10e)](_0x3ae4e8(0x1ee)))return{'content':[{'type':'text','text':_0x3ae4e8(0x1bb)}],'isError':!![]};if(DISABLED_TOOLS[_0x3ae4e8(0x1da)](_0x2846d5))return{'content':[{'type':'text','text':_0x3ae4e8(0x137)+_0x2846d5+_0x3ae4e8(0x18a)}],'isError':![]};switch(_0x2846d5){case TOOL_NAMES[_0x3ae4e8(0x10d)]:{let _0x3862a5=_0x56a022;if(_0x3862a5&&typeof _0x3862a5===_0x3ae4e8(0x179)){if(!('path'in _0x3862a5)){const _0xe77872=_0x3862a5['target_file']??_0x3862a5[_0x3ae4e8(0x142)]??_0x3862a5['target_filepath']??_0x3862a5[_0x3ae4e8(0x1a3)]??_0x3862a5[_0x3ae4e8(0x12b)];if(_0xe77872)_0x3862a5={..._0x3862a5,'path':_0xe77872};}_0x3ae4e8(0x162)in _0x3862a5&&!(_0x3ae4e8(0xfd)in _0x3862a5)&&(_0x3862a5={..._0x3862a5,'instruction':_0x3862a5[_0x3ae4e8(0x162)]});if(!(_0x3ae4e8(0x18f)in _0x3862a5)){const _0x5ba8fb=_0x3862a5[_0x3ae4e8(0x11d)]??_0x3862a5[_0x3ae4e8(0x19c)]??_0x3862a5[_0x3ae4e8(0xfc)]??_0x3862a5[_0x3ae4e8(0x148)];if(_0x5ba8fb)_0x3862a5={..._0x3862a5,'code_edit':_0x5ba8fb};}}const _0x2d9f00=MorphEditFileArgsSchema['safeParse'](_0x3862a5);if(!_0x2d9f00[_0x3ae4e8(0x170)])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x2d9f00[_0x3ae4e8(0x1fb)]);const _0x381df5=await validatePath(_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0x14a)]);let _0x270906=null,_0x3f94f6=!![],_0x27fc0f=null;try{_0x270906=await a0_0x5d164c['readFile'](_0x381df5,_0x3ae4e8(0xf1)),logger[_0x3ae4e8(0x20c)](_0x3ae4e8(0x12f),_0x3ae4e8(0x11e),{'path':_0x381df5,'size_bytes':_0x270906[_0x3ae4e8(0x1ce)]});}catch(_0x2e60a6){const _0x4e9707=_0x2e60a6[_0x3ae4e8(0x11d)];_0x4e9707===_0x3ae4e8(0x108)?(_0x3f94f6=![],_0x270906='',logger[_0x3ae4e8(0x20c)](_0x3ae4e8(0x12f),'file_read_complete',{'path':_0x381df5,'exists':![]})):(_0x27fc0f='Failed\x20to\x20read\x20file:\x20'+(_0x4e9707||_0x3ae4e8(0x10c))+'\x20-\x20'+(_0x2e60a6 instanceof Error?_0x2e60a6['message']:String(_0x2e60a6)),logger[_0x3ae4e8(0x1fb)](_0x3ae4e8(0x12f),'file_read_failed',{'path':_0x381df5,'error':_0x27fc0f}),logMcpStderr('Warning:\x20'+_0x27fc0f));}let _0x29f0ab;try{const _0x482bd8=MORPH_API_KEY;if(!_0x482bd8)throw new Error(_0x3ae4e8(0x1af));const _0x28dabc=a0_0x376bd5['dirname'](_0x381df5),_0x4dfcee=a0_0x376bd5[_0x3ae4e8(0x208)](_0x381df5);logger[_0x3ae4e8(0x20c)]('MCP',_0x3ae4e8(0x103),{'model':_0x3ae4e8(0x1c3),'path':_0x2d9f00['data']['path'],'instruction_len':_0x2d9f00[_0x3ae4e8(0x20f)]['instruction'][_0x3ae4e8(0x1ce)],'code_edit_len':_0x2d9f00[_0x3ae4e8(0x20f)]['code_edit']['length'],'original_code_len':_0x270906?.[_0x3ae4e8(0x1ce)]??0x0,'dry_run':_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0x1de)]});const _0x5aabf4=Date[_0x3ae4e8(0x139)](),_0x1186e6=await executeEditFile({'target_filepath':_0x4dfcee,'code_edit':_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0x18f)],'instruction':_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0xfd)]},{'morphApiKey':_0x482bd8,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x28dabc,'autoWrite':!_0x2d9f00[_0x3ae4e8(0x20f)]['dryRun'],'generateUdiff':![],'debug':![]}),_0x301a42=Date[_0x3ae4e8(0x139)]()-_0x5aabf4;_0x29f0ab=_0x1186e6[_0x3ae4e8(0x168)];if(!_0x1186e6[_0x3ae4e8(0x170)])throw new Error(_0x1186e6[_0x3ae4e8(0x1fb)]||_0x3ae4e8(0x11a));const _0x5ae0ae=_0x1186e6[_0x3ae4e8(0x1e1)],_0xab64f6=_0x3ae4e8(0x14d)+_0x5ae0ae[_0x3ae4e8(0x195)]+_0x3ae4e8(0x158)+_0x5ae0ae[_0x3ae4e8(0x118)]+',\x20modified\x20'+_0x5ae0ae[_0x3ae4e8(0x17d)];logger['debug'](_0x3ae4e8(0x12f),_0x3ae4e8(0x130),{'tool':_0x3ae4e8(0x1e4),'success':!![],'latency_ms':Date[_0x3ae4e8(0x139)]()-_0x436fbd,'edit_latency_ms':_0x301a42,'changes':{'added':_0x5ae0ae[_0x3ae4e8(0x195)],'removed':_0x5ae0ae['linesRemoved'],'modified':_0x5ae0ae[_0x3ae4e8(0x17d)]},'completion_id':_0x29f0ab});if(_0x2d9f00[_0x3ae4e8(0x20f)]['dryRun'])return{'content':[{'type':_0x3ae4e8(0x184),'text':_0x3ae4e8(0x209)+(_0x3f94f6?'':'\x20(new\x20file)')+':\x20'+_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0xfd)]+_0x3ae4e8(0x1aa)+_0xab64f6+_0x3ae4e8(0x1e6)+_0x2d9f00['data'][_0x3ae4e8(0x14a)]+'.'}]};return{'content':[{'type':_0x3ae4e8(0x184),'text':'Morph\x20Edit\x20'+(_0x3f94f6?'Applied':_0x3ae4e8(0x109))+':\x20'+_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0xfd)]+'.\x20Changes:\x20'+_0xab64f6+_0x3ae4e8(0x1e6)+_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0x14a)]+'.'}]};}catch(_0x1dbad5){const _0x465ced=handleMorphAPIError(_0x1dbad5);if(_0x465ced)return logger[_0x3ae4e8(0x1fb)]('MCP',_0x3ae4e8(0x114),{'tool':_0x3ae4e8(0x1e4),'error':_0x3ae4e8(0x150),'latency_ms':Date[_0x3ae4e8(0x139)]()-_0x436fbd}),_0x465ced;const _0x537dba=_0x1dbad5 instanceof Error?_0x1dbad5[_0x3ae4e8(0xfe)]:String(_0x1dbad5);return logger[_0x3ae4e8(0x1fb)]('MCP',_0x3ae4e8(0x114),{'tool':_0x3ae4e8(0x1e4),'error':_0x537dba,'path':_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0x14a)],'validated_path':_0x381df5,'latency_ms':Date[_0x3ae4e8(0x139)]()-_0x436fbd,'stack':_0x1dbad5 instanceof Error?_0x1dbad5[_0x3ae4e8(0x204)]:undefined}),reportMorphError({'error_message':_0x537dba,'error_type':_0x1dbad5 instanceof Error?_0x1dbad5[_0x3ae4e8(0x1b6)]['name']:'UnknownError','context':{'tool':'edit_file','completion_id':_0x29f0ab,'file_path':_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0x14a)],'validated_path':_0x381df5,'instruction':_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0xfd)],'model':MORPH_LARGE_APPLY?'morph-v3-large':'morph-v3-fast','dry_run':_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0x1de)],'file_exists':_0x3f94f6,'file_read_error':_0x27fc0f,'file_readable':_0x270906!==null,'request_content':{'path':_0x2d9f00[_0x3ae4e8(0x20f)]['path'],'code_edit':_0x2d9f00[_0x3ae4e8(0x20f)]['code_edit'],'instruction':_0x2d9f00['data'][_0x3ae4e8(0xfd)],'original_code':_0x270906!==null?_0x270906['length']>0xc350?_0x270906[_0x3ae4e8(0x17f)](0x0,0xc350)+_0x3ae4e8(0x145)+_0x270906[_0x3ae4e8(0x1ce)]+_0x3ae4e8(0x1f0):_0x270906:'[could\x20not\x20read\x20file:\x20'+(_0x27fc0f||'unknown\x20error')+']','original_code_length':_0x270906?.[_0x3ae4e8(0x1ce)]??0x0,'model':MORPH_LARGE_APPLY?_0x3ae4e8(0x18e):_0x3ae4e8(0x1c3),'dry_run':_0x2d9f00[_0x3ae4e8(0x20f)]['dryRun']}},'stack_trace':_0x1dbad5 instanceof Error?_0x1dbad5[_0x3ae4e8(0x204)]:undefined,'source':'mcp-filesystem'})[_0x3ae4e8(0x110)](()=>{}),{'content':[{'type':'text','text':_0x3ae4e8(0x175)+_0x537dba}],'isError':!![]};}}case TOOL_NAMES[_0x3ae4e8(0x1ca)]:{const _0x22f0f8=WarpGrepArgsSchema[_0x3ae4e8(0x183)](_0x56a022);if(!_0x22f0f8[_0x3ae4e8(0x170)])return{'content':[{'type':_0x3ae4e8(0x184),'text':_0x3ae4e8(0x1a5)+_0x22f0f8[_0x3ae4e8(0x1fb)]}],'isError':!![]};const _0xa13f44=_0x2fd4ee=>{const _0x14bb20=_0x3ae4e8,_0x4db3c6=[];for(const _0x4c55d0 of _0x2fd4ee||[]){if(_0x4c55d0[_0x14bb20(0x1e0)]==='assistant'&&Array[_0x14bb20(0x1d5)](_0x4c55d0['tool_calls']))for(const _0x498b6a of _0x4c55d0[_0x14bb20(0x20d)]){try{const _0x3d77c9=_0x498b6a[_0x14bb20(0x154)]?.[_0x14bb20(0x182)],_0x37acb5=JSON[_0x14bb20(0x1e3)](_0x498b6a['function']?.[_0x14bb20(0x1b9)]||'{}');if(_0x3d77c9===_0x14bb20(0x1c2))_0x4db3c6[_0x14bb20(0x1d8)](_0x14bb20(0x1ac)+_0x37acb5[_0x14bb20(0x213)]+'\x27\x20'+(_0x37acb5[_0x14bb20(0x14a)]||'.'));else{if(_0x3d77c9===_0x14bb20(0x201))_0x4db3c6['push']('read\x20'+_0x37acb5[_0x14bb20(0x14a)]);else{if(_0x3d77c9===_0x14bb20(0x152))_0x4db3c6[_0x14bb20(0x1d8)]('list_directory\x20'+(_0x37acb5[_0x14bb20(0x210)]||'.'));else{if(_0x3d77c9===_0x14bb20(0x16a))_0x4db3c6[_0x14bb20(0x1d8)](_0x14bb20(0x19f)+_0x37acb5[_0x14bb20(0x213)]+'\x27\x20'+(_0x37acb5['path']||'.'));else _0x3d77c9==='finish'&&_0x4db3c6[_0x14bb20(0x1d8)](_0x14bb20(0x20e));}}}}catch{}}}return _0x4db3c6;},_0x2ff5da=_0x345479=>{const _0x21a64a=_0x3ae4e8,_0x3738a3=[];if(!_0x345479||!Array['isArray'](_0x345479))return _0x3738a3;const _0x3b370b=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x21a64a(0x141),'tool':_0x21a64a(0x201)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x21a64a(0x115),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x21a64a(0x177),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x21a64a(0x1fe),'tool':_0x21a64a(0x201)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x21a64a(0x176),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x21a64a(0x1b4),'tool':_0x21a64a(0x1ef)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':'read'},{'pattern':/not a text file/,'error_type':_0x21a64a(0x1fe),'tool':_0x21a64a(0x201)},{'pattern':/symbolic link/,'error_type':_0x21a64a(0x172),'tool':_0x21a64a(0x201)},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x21a64a(0x201)},{'pattern':/status="error"/,'error_type':_0x21a64a(0x174),'tool':'unknown'}];let _0x1c0e37=0x0;for(const _0x158995 of _0x345479){_0x158995[_0x21a64a(0x1e0)]===_0x21a64a(0x13c)&&Array['isArray'](_0x158995[_0x21a64a(0x20d)])&&_0x1c0e37++;const _0x5cd465=_0x158995[_0x21a64a(0xfc)];if((_0x158995[_0x21a64a(0x1e0)]==='tool'||_0x158995['role']==='user')&&_0x5cd465&&typeof _0x5cd465===_0x21a64a(0x1fd))for(const {pattern:_0x1c45d8,error_type:_0x856c24,tool:_0x529c04}of _0x3b370b){const _0x599b30=_0x5cd465[_0x21a64a(0x13e)](new RegExp(_0x1c45d8[_0x21a64a(0x123)],'g'));if(_0x599b30)for(const _0x45990c of _0x599b30){const _0x1f14c5=_0x5cd465[_0x21a64a(0x15c)](_0x45990c),_0xabd0af=_0x5cd465[_0x21a64a(0x17f)](_0x1f14c5,Math[_0x21a64a(0x1e2)](_0x1f14c5+0xc8,_0x5cd465['length']));_0x3738a3[_0x21a64a(0x1d8)]({'tool':_0x529c04,'error_type':_0x856c24,'error_message':_0xabd0af[_0x21a64a(0x1e7)]('\x0a')[0x0],'turn':_0x1c0e37});}}}return _0x3738a3;};try{const _0x521d46=a0_0x376bd5[_0x3ae4e8(0x1e9)](_0x22f0f8[_0x3ae4e8(0x20f)]['repo_path']),_0x2c76d0=_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x13f)],_0x41f197=_0x2c76d0===_0x3ae4e8(0x1fa)?{'allowNames':['node_modules']}:undefined,_0x4ed305=new LocalRipgrepProvider(_0x521d46,undefined,_0x41f197);logger['debug'](_0x3ae4e8(0x12f),_0x3ae4e8(0x1d9),{'type':_0x3ae4e8(0x1a1),'repo_root':_0x521d46,'search_type':_0x2c76d0||_0x3ae4e8(0x1f5)}),logger[_0x3ae4e8(0x20c)](_0x3ae4e8(0x12f),_0x3ae4e8(0x173),{'query':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'repo_root':_0x521d46,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x50da67=Date[_0x3ae4e8(0x139)](),_0x5bd579=await runWarpGrep({'searchTerm':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'repoRoot':_0x521d46,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x4ed305,'search_type':_0x2c76d0}),_0x553a4e=Date[_0x3ae4e8(0x139)]()-_0x50da67,_0x147c5f=_0x5bd579[_0x3ae4e8(0x20e)]?.[_0x3ae4e8(0x1b5)]?.[_0x3ae4e8(0x12d)]?.[_0x3ae4e8(0x1ce)]??0x0;logger[_0x3ae4e8(0x20c)](_0x3ae4e8(0x12f),_0x3ae4e8(0x1a9),{'termination':_0x5bd579[_0x3ae4e8(0x121)],'turns':_0x5bd579[_0x3ae4e8(0x193)]?.[_0x3ae4e8(0x126)]??0x0,'files_found':_0x147c5f,'latency_ms':_0x553a4e});const _0x555392=_0x2ff5da(_0x5bd579[_0x3ae4e8(0x113)]);_0x555392[_0x3ae4e8(0x1ce)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x555392[_0x3ae4e8(0x1ce)]+_0x3ae4e8(0x18d),'error_type':_0x3ae4e8(0x187),'level':'warn','tool':_0x3ae4e8(0x1d1),'context':{'repo_path':_0x22f0f8[_0x3ae4e8(0x20f)]['repo_path'],'query':_0x22f0f8[_0x3ae4e8(0x20f)]['search_string'],'model':_0x3ae4e8(0x107),'termination_reason':_0x5bd579[_0x3ae4e8(0x121)],'sub_tool_errors':_0x555392,'timings':_0x5bd579['timings'],'tool_calls':_0xa13f44(_0x5bd579[_0x3ae4e8(0x113)]),'messages':_0x5bd579['messages']?.[_0x3ae4e8(0x1a6)](_0x29adf2=>({'role':_0x29adf2[_0x3ae4e8(0x1e0)],'content':_0x29adf2[_0x3ae4e8(0xfc)],..._0x29adf2[_0x3ae4e8(0x20d)]?{'tool_calls':_0x29adf2['tool_calls'][_0x3ae4e8(0x1ce)]}:{},..._0x29adf2['tool_call_id']?{'tool_call_id':_0x29adf2[_0x3ae4e8(0x1c7)]}:{}}))},'source':_0x3ae4e8(0x132)})[_0x3ae4e8(0x110)](()=>{});let _0x19b76b='';if(_0x5bd579[_0x3ae4e8(0x121)]===_0x3ae4e8(0x156)&&_0x5bd579[_0x3ae4e8(0x20e)]?.[_0x3ae4e8(0x1b5)]?.[_0x3ae4e8(0x12d)]){const _0x29f18d=_0x5bd579['finish'][_0x3ae4e8(0x1b5)]['files'];if(_0x29f18d[_0x3ae4e8(0x1ce)]===0x0)return _0x19b76b=_0x5bd579[_0x3ae4e8(0x20e)][_0x3ae4e8(0x144)]||_0x3ae4e8(0xf8),{'content':[{'type':_0x3ae4e8(0x184),'text':_0x19b76b}]};const _0x5d9d76=[],_0x486217=[_0x3ae4e8(0x1ad)];for(const _0x3f3711 of _0x5bd579[_0x3ae4e8(0x113)]){if(_0x3f3711[_0x3ae4e8(0x1e0)]==='assistant'&&Array[_0x3ae4e8(0x1d5)](_0x3f3711['tool_calls']))for(const _0x32c066 of _0x3f3711[_0x3ae4e8(0x20d)]){try{const _0x1fd4f4=_0x32c066[_0x3ae4e8(0x154)]?.[_0x3ae4e8(0x182)],_0x57cc71=JSON[_0x3ae4e8(0x1e3)](_0x32c066[_0x3ae4e8(0x154)]?.[_0x3ae4e8(0x1b9)]||'{}');if(_0x1fd4f4===_0x3ae4e8(0x1c2))_0x486217[_0x3ae4e8(0x1d8)](_0x3ae4e8(0x20b)+_0x57cc71[_0x3ae4e8(0x213)]+_0x3ae4e8(0x15a)+(_0x57cc71[_0x3ae4e8(0x14a)]||'.')+'`');else{if(_0x1fd4f4===_0x3ae4e8(0x201))_0x486217[_0x3ae4e8(0x1d8)](_0x3ae4e8(0x206)+_0x57cc71['path']+'`');else{if(_0x1fd4f4===_0x3ae4e8(0x152))_0x486217['push'](_0x3ae4e8(0x1be)+(_0x57cc71[_0x3ae4e8(0x210)]||'.')+'`');else _0x1fd4f4===_0x3ae4e8(0x16a)&&_0x486217[_0x3ae4e8(0x1d8)](_0x3ae4e8(0x1e5)+_0x57cc71[_0x3ae4e8(0x213)]+_0x3ae4e8(0x131)+(_0x57cc71[_0x3ae4e8(0x14a)]||'.')+'`');}}}catch{}}}_0x5d9d76[_0x3ae4e8(0x1d8)](_0x486217[_0x3ae4e8(0x180)]('\x0a'));const _0x2bd2f8=['','Relevant\x20context\x20found:'];for(const _0x17a71d of _0x29f18d){if(_0x17a71d['lines']==='*')_0x2bd2f8[_0x3ae4e8(0x1d8)]('-\x20'+_0x17a71d[_0x3ae4e8(0x14a)]+':*');else{if(Array[_0x3ae4e8(0x1d5)](_0x17a71d[_0x3ae4e8(0x1ff)])){const _0x463abf=_0x17a71d[_0x3ae4e8(0x1ff)][_0x3ae4e8(0x1a6)](([_0x1898d0,_0x258101])=>{if(_0x1898d0===_0x258101)return''+_0x1898d0;return _0x1898d0+'-'+_0x258101;});_0x2bd2f8[_0x3ae4e8(0x1d8)]('-\x20'+_0x17a71d[_0x3ae4e8(0x14a)]+':'+_0x463abf[_0x3ae4e8(0x180)](','));}else _0x2bd2f8['push']('-\x20'+_0x17a71d[_0x3ae4e8(0x14a)]+':*');}}_0x2bd2f8['push'](''),_0x5d9d76[_0x3ae4e8(0x1d8)](_0x2bd2f8[_0x3ae4e8(0x180)]('\x0a')),_0x5d9d76[_0x3ae4e8(0x1d8)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x1340db=[],_0x5e0dd8=[];for(const _0x4a07a7 of _0x29f18d){let _0x407a57=a0_0x376bd5[_0x3ae4e8(0x1e9)](_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x13d)],_0x4a07a7[_0x3ae4e8(0x14a)]),_0x984504=null,_0x11f2da=null;try{_0x984504=await a0_0x5d164c['readFile'](_0x407a57,{'encoding':_0x3ae4e8(0xf1)});}catch(_0x31b275){const _0x50a918=fixPathRepetition(_0x407a57);if(_0x50a918)try{_0x984504=await a0_0x5d164c[_0x3ae4e8(0x1ea)](_0x50a918,{'encoding':'utf-8'}),_0x407a57=_0x50a918;}catch{_0x11f2da=_0x31b275 instanceof Error?_0x31b275:new Error(String(_0x31b275));}else _0x11f2da=_0x31b275 instanceof Error?_0x31b275:new Error(String(_0x31b275));}if(_0x984504!==null){const _0x242c3e=_0x984504[_0x3ae4e8(0x1e7)](/\r?\n/),_0x1f21c9=[];if(_0x4a07a7[_0x3ae4e8(0x1ff)]==='*'||!Array['isArray'](_0x4a07a7[_0x3ae4e8(0x1ff)]))for(let _0x63d178=0x1;_0x63d178<=_0x242c3e['length'];_0x63d178++){const _0x3cd422=_0x242c3e[_0x63d178-0x1];_0x1f21c9[_0x3ae4e8(0x1d8)](_0x63d178+'|\x20'+_0x3cd422);}else for(const [_0x5271c4,_0x2ffb06]of _0x4a07a7[_0x3ae4e8(0x1ff)]){_0x1f21c9[_0x3ae4e8(0x1ce)]>0x0&&_0x1f21c9[_0x3ae4e8(0x1d8)]('');for(let _0x569130=_0x5271c4;_0x569130<=_0x2ffb06&&_0x569130<=_0x242c3e['length'];_0x569130++){const _0x1151a4=_0x242c3e[_0x569130-0x1];_0x1f21c9[_0x3ae4e8(0x1d8)](_0x569130+'|\x20'+_0x1151a4);}}_0x5e0dd8[_0x3ae4e8(0x1d8)]({'path':_0x4a07a7[_0x3ae4e8(0x14a)],'content':_0x1f21c9['join']('\x0a')});}else _0x1340db['push'](_0x3ae4e8(0x1f1)+_0x4a07a7['path']+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x11f2da?.['message']||_0x3ae4e8(0x151))+'\x0a</file>');}try{const _0x16e90b=await compactFileContexts(_0x5e0dd8,_0x22f0f8['data'][_0x3ae4e8(0x116)],MORPH_API_KEY,MORPH_API_URL);for(const _0x259362 of _0x16e90b){_0x1340db[_0x3ae4e8(0x1d8)](_0x3ae4e8(0x1f1)+_0x259362[_0x3ae4e8(0x14a)]+'\x22>\x0a'+_0x259362[_0x3ae4e8(0xfc)]+_0x3ae4e8(0xf5));}}catch(_0x1733d0){logger['warn'](_0x3ae4e8(0x12f),_0x3ae4e8(0x1c6),{'error':_0x1733d0 instanceof Error?_0x1733d0['message']:String(_0x1733d0),'files_count':_0x5e0dd8['length']});for(const _0x580347 of _0x5e0dd8){_0x1340db[_0x3ae4e8(0x1d8)](_0x3ae4e8(0x1f1)+_0x580347[_0x3ae4e8(0x14a)]+_0x3ae4e8(0x111)+_0x580347['content']+_0x3ae4e8(0xf5));}}_0x5d9d76[_0x3ae4e8(0x1d8)](_0x1340db[_0x3ae4e8(0x180)]('\x0a\x0a')),_0x19b76b=_0x5d9d76['join']('\x0a');const _0x401dd7=_0x5bd579[_0x3ae4e8(0x1ed)]?.[_0x3ae4e8(0xf0)](_0x38ffcf=>_0x38ffcf[_0x3ae4e8(0xfe)]?.[_0x3ae4e8(0x10e)](_0x3ae4e8(0x1ba)))||[];if(_0x401dd7[_0x3ae4e8(0x1ce)]>0x0){const _0x55a6ca=_0x401dd7['map'](_0x4aff54=>_0x4aff54[_0x3ae4e8(0xfe)])[_0x3ae4e8(0x180)](';\x20');reportMorphError({'error_message':_0x55a6ca,'error_type':_0x3ae4e8(0x1c5),'context':{'tool':_0x3ae4e8(0x1d1),'repo_path':_0x22f0f8[_0x3ae4e8(0x20f)]['repo_path'],'query':_0x22f0f8['data'][_0x3ae4e8(0x116)],'model':_0x3ae4e8(0x107),'termination_reason':_0x3ae4e8(0x140),'error_count':_0x401dd7['length'],'is_timeout':![],'timings':_0x5bd579['timings'],'files_attempted':_0x29f18d['map'](_0x57c2a6=>({'path':_0x57c2a6[_0x3ae4e8(0x14a)],'lines':_0x57c2a6[_0x3ae4e8(0x1ff)]})),'tool_calls':_0xa13f44(_0x5bd579[_0x3ae4e8(0x113)]),'messages':_0x5bd579[_0x3ae4e8(0x113)]?.[_0x3ae4e8(0x1a6)](_0x46c575=>({'role':_0x46c575[_0x3ae4e8(0x1e0)],'content':_0x46c575[_0x3ae4e8(0xfc)],..._0x46c575[_0x3ae4e8(0x20d)]?{'tool_calls':_0x46c575[_0x3ae4e8(0x20d)]['length']}:{},..._0x46c575[_0x3ae4e8(0x1c7)]?{'tool_call_id':_0x46c575[_0x3ae4e8(0x1c7)]}:{}})),'request_content':{'query':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'repo_path':_0x22f0f8[_0x3ae4e8(0x20f)]['repo_path'],'repoRoot':a0_0x376bd5[_0x3ae4e8(0x1e9)](_0x22f0f8['data']['repo_path']),'model':_0x3ae4e8(0x107)}},'source':'mcp-filesystem'})[_0x3ae4e8(0x110)](()=>{});}}else{if(_0x5bd579[_0x3ae4e8(0x121)]===_0x3ae4e8(0x15d)&&_0x5bd579[_0x3ae4e8(0x1ed)][_0x3ae4e8(0x1ce)]>0x0){const _0x604204=_0x5bd579[_0x3ae4e8(0x1ed)][_0x3ae4e8(0x1a6)](_0x11e7a7=>_0x11e7a7['message'])[_0x3ae4e8(0x180)](';\x20');_0x19b76b=_0x3ae4e8(0x186)+_0x604204;const _0x5511b6=_0x604204[_0x3ae4e8(0x1b1)]()[_0x3ae4e8(0x1c0)](_0x3ae4e8(0x13a))||_0x604204[_0x3ae4e8(0x1b1)]()[_0x3ae4e8(0x1c0)](_0x3ae4e8(0x1e8))||_0x604204[_0x3ae4e8(0x1b1)]()[_0x3ae4e8(0x1c0)](_0x3ae4e8(0x143)),_0x4edf15=_0x5bd579[_0x3ae4e8(0x20e)]?.[_0x3ae4e8(0x1b5)]?.['files'],_0x595761=_0x5bd579[_0x3ae4e8(0x1ed)][0x0];reportMorphError({'error_message':_0x604204,'error_type':_0x5511b6?_0x3ae4e8(0xf9):_0x595761?.['constructor']?.['name']||'WarpGrepError','context':{'tool':_0x3ae4e8(0x1d1),'repo_path':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x13d)],'query':_0x22f0f8[_0x3ae4e8(0x20f)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x5bd579[_0x3ae4e8(0x121)],'error_count':_0x5bd579[_0x3ae4e8(0x1ed)]['length'],'is_timeout':_0x5511b6,'timings':_0x5bd579[_0x3ae4e8(0x193)],'files_attempted':_0x4edf15?.[_0x3ae4e8(0x1a6)](_0x51a298=>({'path':_0x51a298['path'],'lines':_0x51a298[_0x3ae4e8(0x1ff)]})),'tool_calls':_0xa13f44(_0x5bd579[_0x3ae4e8(0x113)]),'messages':_0x5bd579['messages']?.[_0x3ae4e8(0x1a6)](_0x26d9f2=>({'role':_0x26d9f2[_0x3ae4e8(0x1e0)],'content':_0x26d9f2['content'],..._0x26d9f2[_0x3ae4e8(0x20d)]?{'tool_calls':_0x26d9f2[_0x3ae4e8(0x20d)]['length']}:{},..._0x26d9f2[_0x3ae4e8(0x1c7)]?{'tool_call_id':_0x26d9f2[_0x3ae4e8(0x1c7)]}:{}})),'request_content':{'query':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'repo_path':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x13d)],'repoRoot':a0_0x376bd5[_0x3ae4e8(0x1e9)](_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x13d)]),'model':_0x3ae4e8(0x107)}},'stack_trace':_0x595761?.[_0x3ae4e8(0x204)]||undefined,'source':_0x3ae4e8(0x132)})[_0x3ae4e8(0x110)](()=>{});}else _0x19b76b=_0x3ae4e8(0x136);}return{'content':[{'type':'text','text':_0x19b76b}]};}catch(_0x55a73e){const _0x23387c=handleMorphAPIError(_0x55a73e);if(_0x23387c)return logger[_0x3ae4e8(0x1fb)](_0x3ae4e8(0x12f),_0x3ae4e8(0x114),{'tool':_0x3ae4e8(0x1d1),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date['now']()-_0x436fbd}),_0x23387c;const _0x578d4a=_0x55a73e instanceof Error?_0x55a73e[_0x3ae4e8(0xfe)]:String(_0x55a73e);logger[_0x3ae4e8(0x1fb)](_0x3ae4e8(0x12f),_0x3ae4e8(0x114),{'tool':_0x3ae4e8(0x1d1),'error':_0x578d4a,'repo_path':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x13d)],'query':_0x22f0f8['data'][_0x3ae4e8(0x116)],'latency_ms':Date[_0x3ae4e8(0x139)]()-_0x436fbd});const _0x4be0cf=_0x578d4a[_0x3ae4e8(0x1b1)]()[_0x3ae4e8(0x1c0)](_0x3ae4e8(0x13a))||_0x578d4a[_0x3ae4e8(0x1b1)]()[_0x3ae4e8(0x1c0)]('timed\x20out')||_0x578d4a[_0x3ae4e8(0x1b1)]()[_0x3ae4e8(0x1c0)](_0x3ae4e8(0x143))||_0x55a73e instanceof Error&&_0x55a73e[_0x3ae4e8(0x182)]===_0x3ae4e8(0xf9);return reportMorphError({'error_message':_0x578d4a,'error_type':_0x4be0cf?_0x3ae4e8(0xf9):_0x55a73e instanceof Error?_0x55a73e[_0x3ae4e8(0x1b6)][_0x3ae4e8(0x182)]:_0x3ae4e8(0x12a),'context':{'tool':_0x3ae4e8(0x1d1),'repo_path':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x13d)],'query':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'model':'morph-warp-grep-v2.1','is_timeout':_0x4be0cf,'exception_phase':_0x3ae4e8(0x1b7),'request_content':{'query':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'repo_path':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x13d)],'repoRoot':a0_0x376bd5[_0x3ae4e8(0x1e9)](_0x22f0f8[_0x3ae4e8(0x20f)]['repo_path']),'model':_0x3ae4e8(0x107)}},'stack_trace':_0x55a73e instanceof Error?_0x55a73e[_0x3ae4e8(0x204)]:undefined,'source':_0x3ae4e8(0x132)})[_0x3ae4e8(0x110)](()=>{}),{'content':[{'type':_0x3ae4e8(0x184),'text':_0x3ae4e8(0x19b)+_0x578d4a}],'isError':![]};}}case TOOL_NAMES['GITHUB_CODEBASE_SEARCH']:{const _0x30f74c=WarpGrepGitHubArgsSchema[_0x3ae4e8(0x183)](_0x56a022);if(!_0x30f74c[_0x3ae4e8(0x170)])return{'content':[{'type':'text','text':_0x3ae4e8(0x1a5)+_0x30f74c[_0x3ae4e8(0x1fb)]}],'isError':!![]};const _0x173c32=_0x30f74c[_0x3ae4e8(0x20f)]['github_url']||_0x30f74c[_0x3ae4e8(0x20f)][_0x3ae4e8(0x1f9)];if(!_0x173c32)return{'content':[{'type':_0x3ae4e8(0x184),'text':_0x3ae4e8(0x199)}],'isError':!![]};const _0x1626a3=MORPH_API_KEY;if(!_0x1626a3)throw new Error(_0x3ae4e8(0x1af));const _0x2826ee=Date['now']();logger['debug']('MCP',_0x3ae4e8(0x11f),{'identifier':_0x173c32,'query':_0x30f74c[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'branch':_0x30f74c[_0x3ae4e8(0x20f)]['branch']});try{const _0x48cee4=new WarpGrepClient({'morphApiKey':_0x1626a3,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x463531=await _0x48cee4[_0x3ae4e8(0x128)]({'searchTerm':_0x30f74c[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'github':_0x173c32,'branch':_0x30f74c[_0x3ae4e8(0x20f)][_0x3ae4e8(0x12e)]}),_0x8d92c3=Date[_0x3ae4e8(0x139)]()-_0x2826ee;logMcpStderr(_0x3ae4e8(0x1a0)+_0x8d92c3+_0x3ae4e8(0x1f3)+_0x463531[_0x3ae4e8(0x170)]);const _0x54faf0=formatResult(_0x463531);return{'content':[{'type':_0x3ae4e8(0x184),'text':_0x54faf0}]};}catch(_0x36f06c){const _0x191db9=handleMorphAPIError(_0x36f06c);if(_0x191db9)return _0x191db9;const _0x345cfb=Date[_0x3ae4e8(0x139)]()-_0x2826ee,_0x301914=_0x36f06c instanceof Error?_0x36f06c[_0x3ae4e8(0xfe)]:String(_0x36f06c);return logMcpStderr(_0x3ae4e8(0x112)+_0x345cfb+'ms:',_0x301914),reportMorphError({'error_message':_0x301914,'error_type':_0x36f06c instanceof Error?_0x36f06c['constructor'][_0x3ae4e8(0x182)]:'UnknownError','context':{'tool':_0x3ae4e8(0x1ec),'github_url':_0x173c32,'search_string':_0x30f74c[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'branch':_0x30f74c[_0x3ae4e8(0x20f)][_0x3ae4e8(0x12e)]},'stack_trace':_0x36f06c instanceof Error?_0x36f06c[_0x3ae4e8(0x204)]:undefined,'source':_0x3ae4e8(0x132),'tool':_0x3ae4e8(0x1ec),'latency_ms':_0x345cfb})[_0x3ae4e8(0x110)](()=>{}),{'content':[{'type':_0x3ae4e8(0x184),'text':_0x3ae4e8(0xf7)+_0x301914}],'isError':![]};}}default:throw new Error(_0x3ae4e8(0x19e)+_0x2846d5);}}catch(_0x54c610){const _0xb82ffe=_0x54c610 instanceof Error?_0x54c610['message']:String(_0x54c610);return reportMorphError({'error_message':_0xb82ffe,'error_type':_0x54c610 instanceof Error?_0x54c610[_0x3ae4e8(0x1b6)][_0x3ae4e8(0x182)]:_0x3ae4e8(0x12a),'context':{'tool':_0x2846d5,'arguments':_0x56a022?JSON[_0x3ae4e8(0x17c)](_0x56a022)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x3ae4e8(0x1a7)},'stack_trace':_0x54c610 instanceof Error?_0x54c610[_0x3ae4e8(0x204)]:undefined,'source':'mcp-filesystem'})[_0x3ae4e8(0x110)](()=>{}),{'content':[{'type':_0x3ae4e8(0x184),'text':_0x3ae4e8(0x186)+_0xb82ffe}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x294701){const _0x3cbe25=a0_0x547ea5,_0x459dfa=await getValidRootDirectories(_0x294701);if(_0x459dfa[_0x3cbe25(0x1ce)]>0x0)allowedDirectories=[..._0x459dfa],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x459dfa[_0x3cbe25(0x1ce)]+_0x3cbe25(0x1dc));else{logMcpStderr(_0x3cbe25(0x104));if(ENABLE_WORKSPACE_MODE)try{const _0x9dbd3a=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x9dbd3a&&(allowedDirectories=[_0x9dbd3a],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x9dbd3a));}catch(_0xc80b5d){logMcpStderr(_0x3cbe25(0x17a)+_0xc80b5d);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x1e7350=a0_0x547ea5;try{const _0x19d574=await server[_0x1e7350(0x17b)]();_0x19d574&&'roots'in _0x19d574&&await updateAllowedDirectoriesFromRoots(_0x19d574['roots']);}catch(_0x13402c){logMcpStderr(_0x1e7350(0x149),_0x13402c instanceof Error?_0x13402c[_0x1e7350(0xfe)]:String(_0x13402c));}}),server['oninitialized']=async()=>{const _0x11a2a9=a0_0x547ea5,_0x3540e8=server['getClientCapabilities']();if(_0x3540e8?.[_0x11a2a9(0x1d4)])try{const _0x33daf3=await server['listRoots']();_0x33daf3&&_0x11a2a9(0x1d4)in _0x33daf3?await updateAllowedDirectoriesFromRoots(_0x33daf3[_0x11a2a9(0x1d4)]):logMcpStderr(_0x11a2a9(0x125));}catch(_0x5e0810){logMcpStderr(_0x11a2a9(0x101),_0x5e0810 instanceof Error?_0x5e0810[_0x11a2a9(0xfe)]:String(_0x5e0810));}else{if(allowedDirectories[_0x11a2a9(0x1ce)]>0x0)logMcpStderr(_0x11a2a9(0x155),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x11a2a9(0xf6));else throw new Error(_0x11a2a9(0x211));}}};async function runServer(){const _0x33dce9=a0_0x547ea5,_0x4c681d=new StdioServerTransport();await server[_0x33dce9(0x102)](_0x4c681d),logMcpStderr(_0x33dce9(0x133)),allowedDirectories[_0x33dce9(0x1ce)]===0x0&&logMcpStderr(_0x33dce9(0x19a));}runServer()['catch'](_0x2ab30c=>{const _0x3b8217=a0_0x547ea5;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x2ab30c),process[_0x3b8217(0x19d)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
function a1_0x2bf8(_0x44ab27,_0xce3b9b){_0x44ab27=_0x44ab27-0x11c;var _0x2a06ce=a1_0x2a06();var _0x2bf85b=_0x2a06ce[_0x44ab27];return _0x2bf85b;}var a1_0x3daa1b=a1_0x2bf8;(function(_0x476e5f,_0x587a59){var _0x431793=a1_0x2bf8,_0x46e22a=_0x476e5f();while(!![]){try{var _0x20487e=parseInt(_0x431793(0x124))/0x1+parseInt(_0x431793(0x128))/0x2+parseInt(_0x431793(0x126))/0x3*(parseInt(_0x431793(0x121))/0x4)+parseInt(_0x431793(0x12a))/0x5*(parseInt(_0x431793(0x12c))/0x6)+-parseInt(_0x431793(0x12d))/0x7+-parseInt(_0x431793(0x123))/0x8+parseInt(_0x431793(0x130))/0x9*(-parseInt(_0x431793(0x11d))/0xa);if(_0x20487e===_0x587a59)break;else _0x46e22a['push'](_0x46e22a['shift']());}catch(_0x1cf611){_0x46e22a['push'](_0x46e22a['shift']());}}}(a1_0x2a06,0x8ae59));import a1_0x40e247 from'os';import{logger}from'./logger.js';export function getOperatingSystemType(_0x1c5b56=a1_0x40e247['platform']()){var _0x306ee1=a1_0x2bf8;switch(_0x1c5b56){case _0x306ee1(0x127):return'macOS';case _0x306ee1(0x12f):return _0x306ee1(0x12b);case _0x306ee1(0x125):return _0x306ee1(0x129);default:return _0x306ee1(0x11f);}}export function formatMcpLogMessage(_0x122219,_0x1e80cf=a1_0x40e247[a1_0x3daa1b(0x120)]()){return'[os='+getOperatingSystemType(_0x1e80cf)+']\x20'+_0x122219;}function a1_0x2a06(){var _0x22433e=['length','win32','9YOLdUr','map','12215570sOURWS','error','Unknown','platform','4QFxopP','MCP','8096424CFeGHY','721756tRltDF','linux','1936101LkDHcM','darwin','1571436mTMsCp','Linux','4479105tknwDC','Windows','6wYdvaU','1722917TFYNiv'];a1_0x2a06=function(){return _0x22433e;};return a1_0x2a06();}export function logMcpStderr(_0x2c8729,..._0xf2b74f){var _0x543a97=a1_0x3daa1b;console[_0x543a97(0x11e)](formatMcpLogMessage(_0x2c8729),..._0xf2b74f),logger['info'](_0x543a97(0x122),_0x2c8729,_0xf2b74f[_0x543a97(0x12e)]?{'args':_0xf2b74f[_0x543a97(0x11c)](_0x15c4a2=>String(_0x15c4a2))}:undefined);}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
const a2_0x5e6449=a2_0x540d;function a2_0x540d(_0x24ddca,_0x2f5865){_0x24ddca=_0x24ddca-0x180;const _0x408a6e=a2_0x408a();let _0x540d8a=_0x408a6e[_0x24ddca];return _0x540d8a;}(function(_0x14df72,_0x5887c0){const _0x1af352=a2_0x540d,_0x1924ba=_0x14df72();while(!![]){try{const _0x51d8ce=-parseInt(_0x1af352(0x182))/0x1*(parseInt(_0x1af352(0x195))/0x2)+-parseInt(_0x1af352(0x186))/0x3+-parseInt(_0x1af352(0x191))/0x4+-parseInt(_0x1af352(0x18e))/0x5*(parseInt(_0x1af352(0x18d))/0x6)+parseInt(_0x1af352(0x18b))/0x7*(parseInt(_0x1af352(0x188))/0x8)+parseInt(_0x1af352(0x194))/0x9*(-parseInt(_0x1af352(0x196))/0xa)+parseInt(_0x1af352(0x199))/0xb;if(_0x51d8ce===_0x5887c0)break;else _0x1924ba['push'](_0x1924ba['shift']());}catch(_0x3313fe){_0x1924ba['push'](_0x1924ba['shift']());}}}(a2_0x408a,0x38ccd));import{createWriteStream}from'fs';function a2_0x408a(){const _0x13217c=['env','MORPH_DEBUG','1526020SNrPZl','debug','toISOString','9qWDERP','140872FzmOeT','3736190fEvSqD','enabled','isEnabled','19538387FQLTdf','write','fileStream','info','5SjXIKf','warn','enable','error','891030BMIfcr','MORPH_LOG_FILE','8fySoRq','_log','stringify','1765841ckJdbC',']\x20[','642kxydsC','18295foOGhm'];a2_0x408a=function(){return _0x13217c;};return a2_0x408a();}class MorphLogger{[a2_0x5e6449(0x197)];['fileStream'];constructor(){const _0xe7f8cf=a2_0x5e6449;this['enabled']=process['env'][_0xe7f8cf(0x190)]==='1'||!!process['env'][_0xe7f8cf(0x187)];const _0x386fe6=process[_0xe7f8cf(0x18f)][_0xe7f8cf(0x187)];this[_0xe7f8cf(0x180)]=_0x386fe6?createWriteStream(_0x386fe6,{'flags':'a'}):null;}[a2_0x5e6449(0x192)](_0x5efc8a,_0xfe1a0f,_0xfa9434){const _0x29af09=a2_0x5e6449;this[_0x29af09(0x189)](_0x29af09(0x192),_0x5efc8a,_0xfe1a0f,_0xfa9434);}[a2_0x5e6449(0x181)](_0x42fe0c,_0x2a7bee,_0x346097){const _0x22f5b8=a2_0x5e6449;this[_0x22f5b8(0x189)](_0x22f5b8(0x181),_0x42fe0c,_0x2a7bee,_0x346097);}['warn'](_0xd5ad0b,_0x3da49f,_0x346a6a){const _0x9a0365=a2_0x5e6449;this[_0x9a0365(0x189)](_0x9a0365(0x183),_0xd5ad0b,_0x3da49f,_0x346a6a);}[a2_0x5e6449(0x185)](_0x4ddb01,_0x5b91b2,_0x57491a){const _0x45f565=a2_0x5e6449;this[_0x45f565(0x189)](_0x45f565(0x185),_0x4ddb01,_0x5b91b2,_0x57491a);}[a2_0x5e6449(0x184)](){this['enabled']=!![];}get[a2_0x5e6449(0x198)](){const _0x39f520=a2_0x5e6449;return this[_0x39f520(0x197)];}[a2_0x5e6449(0x189)](_0x596918,_0x9c959d,_0x3d49e5,_0x3b6815){const _0x334c38=a2_0x5e6449;if(_0x596918!==_0x334c38(0x185)&&!this[_0x334c38(0x197)])return;const _0x3b4c62=new Date()[_0x334c38(0x193)](),_0x5e4ad2='['+_0x3b4c62+_0x334c38(0x18c)+_0x596918['toUpperCase']()+_0x334c38(0x18c)+_0x9c959d+']';console[_0x334c38(0x185)](_0x3b6815?_0x5e4ad2+'\x20'+_0x3d49e5+'\x20'+JSON[_0x334c38(0x18a)](_0x3b6815):_0x5e4ad2+'\x20'+_0x3d49e5),this[_0x334c38(0x180)]?.[_0x334c38(0x19a)](JSON['stringify']({'ts':_0x3b4c62,'level':_0x596918,'component':_0x9c959d,'msg':_0x3d49e5,..._0x3b6815&&{'data':_0x3b6815}})+'\x0a');}}export const logger=new MorphLogger();
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x3bf6a8,_0x5275a9){const _0x47802e=a3_0x1606,_0x14b502=_0x3bf6a8();while(!![]){try{const _0x3d62ef=-parseInt(_0x47802e(0xf1))/0x1*(-parseInt(_0x47802e(0xea))/0x2)+-parseInt(_0x47802e(0xe5))/0x3+parseInt(_0x47802e(0xf0))/0x4+-parseInt(_0x47802e(0xe7))/0x5*(-parseInt(_0x47802e(0xe2))/0x6)+parseInt(_0x47802e(0xef))/0x7+-parseInt(_0x47802e(0xe0))/0x8+-parseInt(_0x47802e(0xee))/0x9;if(_0x3d62ef===_0x5275a9)break;else _0x14b502['push'](_0x14b502['shift']());}catch(_0x2a4583){_0x14b502['push'](_0x14b502['shift']());}}}(a3_0x43b1,0x63902));import a3_0x5b386f from'path';import a3_0x2b711e from'os';export function convertToWindowsPath(_0x22d890){const _0x5ed34b=a3_0x1606;if(_0x22d890[_0x5ed34b(0xdf)](_0x5ed34b(0xe4))){const _0x348b8a=_0x22d890[_0x5ed34b(0xec)](0x5)[_0x5ed34b(0xde)](),_0x26e506=_0x22d890[_0x5ed34b(0xed)](0x6)[_0x5ed34b(0xe6)](/\//g,'\x5c');return _0x348b8a+':'+_0x26e506;}if(_0x22d890[_0x5ed34b(0xdd)](/^\/[a-zA-Z]\//)){const _0x523e31=_0x22d890[_0x5ed34b(0xec)](0x1)[_0x5ed34b(0xde)](),_0x197a39=_0x22d890['slice'](0x2)[_0x5ed34b(0xe6)](/\//g,'\x5c');return _0x523e31+':'+_0x197a39;}if(_0x22d890[_0x5ed34b(0xdd)](/^[a-zA-Z]:/))return _0x22d890['replace'](/\//g,'\x5c');return _0x22d890;}function a3_0x1606(_0x695f69,_0x1d8829){_0x695f69=_0x695f69-0xdd;const _0x43b166=a3_0x43b1();let _0x1606c8=_0x43b166[_0x695f69];return _0x1606c8;}export function normalizePath(_0x4a1de2){const _0x44d472=a3_0x1606;_0x4a1de2=_0x4a1de2[_0x44d472(0xe3)]()['replace'](/^["']|["']$/g,'');const _0x1320a8=_0x4a1de2[_0x44d472(0xdf)]('/')&&!_0x4a1de2[_0x44d472(0xdd)](/^\/mnt\/[a-z]\//i)&&!_0x4a1de2[_0x44d472(0xdd)](/^\/[a-zA-Z]\//);if(_0x1320a8)return _0x4a1de2[_0x44d472(0xe6)](/\/+/g,'/')[_0x44d472(0xe6)](/\/+$/,'');_0x4a1de2=convertToWindowsPath(_0x4a1de2);if(_0x4a1de2[_0x44d472(0xdf)]('\x5c\x5c')){let _0x243e5f=_0x4a1de2;_0x243e5f=_0x243e5f['replace'](/^\\{2,}/,'\x5c\x5c');const _0x422698=_0x243e5f['substring'](0x2)['replace'](/\\\\/g,'\x5c');_0x4a1de2='\x5c\x5c'+_0x422698;}else _0x4a1de2=_0x4a1de2[_0x44d472(0xe6)](/\\\\/g,'\x5c');let _0x375056=a3_0x5b386f[_0x44d472(0xe9)](_0x4a1de2);_0x4a1de2['startsWith']('\x5c\x5c')&&!_0x375056['startsWith']('\x5c\x5c')&&(_0x375056='\x5c'+_0x375056);if(_0x375056[_0x44d472(0xdd)](/^[a-zA-Z]:/)){let _0x51a596=_0x375056[_0x44d472(0xe6)](/\//g,'\x5c');return/^[a-z]:/[_0x44d472(0xe8)](_0x51a596)&&(_0x51a596=_0x51a596['charAt'](0x0)[_0x44d472(0xde)]()+_0x51a596['slice'](0x1)),_0x51a596;}return _0x375056[_0x44d472(0xe6)](/\//g,'\x5c');}export function expandHome(_0xfe27c5){const _0x495f93=a3_0x1606;if(_0xfe27c5[_0x495f93(0xdf)]('~/')||_0xfe27c5==='~')return a3_0x5b386f[_0x495f93(0xeb)](a3_0x2b711e[_0x495f93(0xe1)](),_0xfe27c5[_0x495f93(0xed)](0x1));return _0xfe27c5;}function a3_0x43b1(){const _0x598400=['join','charAt','slice','13139631rcloAU','5375489ohRtVy','268928lrAClq','1IyxUSx','match','toUpperCase','startsWith','797360VlUAXs','homedir','15966KVQqPE','trim','/mnt/','367263irQXhX','replace','1250aXraVf','test','normalize','1178902mMtyCd'];a3_0x43b1=function(){return _0x598400;};return a3_0x43b1();}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x4f594f,_0x4df636){const _0xe589e3=a4_0x1490,_0x5ae7f7=_0x4f594f();while(!![]){try{const _0x492ade=-parseInt(_0xe589e3(0xbd))/0x1+parseInt(_0xe589e3(0xc3))/0x2*(parseInt(_0xe589e3(0xb9))/0x3)+parseInt(_0xe589e3(0xc2))/0x4+-parseInt(_0xe589e3(0xb6))/0x5+-parseInt(_0xe589e3(0xc6))/0x6*(parseInt(_0xe589e3(0xb3))/0x7)+parseInt(_0xe589e3(0xb7))/0x8+-parseInt(_0xe589e3(0xb4))/0x9*(-parseInt(_0xe589e3(0xbe))/0xa);if(_0x492ade===_0x4df636)break;else _0x5ae7f7['push'](_0x5ae7f7['shift']());}catch(_0x16dce1){_0x5ae7f7['push'](_0x5ae7f7['shift']());}}}(a4_0x43cd,0x198f6));import a4_0x1fd2d2 from'path';export function isPathWithinAllowedDirectories(_0x3eb0ba,_0x4c7e82){const _0x3a39a7=a4_0x1490;if(typeof _0x3eb0ba!==_0x3a39a7(0xbf)||!Array['isArray'](_0x4c7e82))return![];if(!_0x3eb0ba||_0x4c7e82[_0x3a39a7(0xba)]===0x0)return![];if(_0x3eb0ba[_0x3a39a7(0xb5)]('\x00'))return![];let _0x18297a;try{_0x18297a=a4_0x1fd2d2[_0x3a39a7(0xc5)](a4_0x1fd2d2[_0x3a39a7(0xbc)](_0x3eb0ba));}catch{return![];}if(!a4_0x1fd2d2[_0x3a39a7(0xbb)](_0x18297a))throw new Error(_0x3a39a7(0xc4));return _0x4c7e82[_0x3a39a7(0xc0)](_0x19e106=>{const _0x2c1e63=_0x3a39a7;if(typeof _0x19e106!=='string'||!_0x19e106)return![];if(_0x19e106[_0x2c1e63(0xb5)]('\x00'))return![];let _0x956462;try{_0x956462=a4_0x1fd2d2[_0x2c1e63(0xc5)](a4_0x1fd2d2['normalize'](_0x19e106));}catch{return![];}if(!a4_0x1fd2d2[_0x2c1e63(0xbb)](_0x956462))throw new Error(_0x2c1e63(0xc7));if(_0x18297a===_0x956462)return!![];if(_0x956462===a4_0x1fd2d2[_0x2c1e63(0xb8)])return _0x18297a[_0x2c1e63(0xc1)](a4_0x1fd2d2['sep']);return _0x18297a['startsWith'](_0x956462+a4_0x1fd2d2[_0x2c1e63(0xb8)]);});}function a4_0x1490(_0x59a782,_0x224a28){_0x59a782=_0x59a782-0xb3;const _0x43cd5b=a4_0x43cd();let _0x1490b5=_0x43cd5b[_0x59a782];return _0x1490b5;}function a4_0x43cd(){const _0x114f80=['2636MtFunN','Path\x20must\x20be\x20absolute\x20after\x20normalization','resolve','90FsLkUh','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','93359xgxYUZ','1843623nAcVSh','includes','855190tiupTq','1043368MNUgVq','sep','408UZaKFF','length','isAbsolute','normalize','68218AnDmGj','10agVNXL','string','some','startsWith','117956SKGKPv'];a4_0x43cd=function(){return _0x114f80;};return a4_0x43cd();}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x27495f,_0x105200){const _0x33a155=a5_0x2edb,_0x237466=_0x27495f();while(!![]){try{const _0x105a01=parseInt(_0x33a155(0x1d3))/0x1+-parseInt(_0x33a155(0x1c8))/0x2+parseInt(_0x33a155(0x1cc))/0x3*(-parseInt(_0x33a155(0x1c0))/0x4)+-parseInt(_0x33a155(0x1c2))/0x5*(-parseInt(_0x33a155(0x1d1))/0x6)+parseInt(_0x33a155(0x1bf))/0x7+parseInt(_0x33a155(0x1c7))/0x8*(-parseInt(_0x33a155(0x1cf))/0x9)+parseInt(_0x33a155(0x1d5))/0xa;if(_0x105a01===_0x105200)break;else _0x237466['push'](_0x237466['shift']());}catch(_0x4b3a43){_0x237466['push'](_0x237466['shift']());}}}(a5_0x1c7a,0x1babf));function a5_0x2edb(_0x51d4e0,_0x5c4ed2){_0x51d4e0=_0x51d4e0-0x1bf;const _0x1c7a30=a5_0x1c7a();let _0x2edbcd=_0x1c7a30[_0x51d4e0];return _0x2edbcd;}import{promises as a5_0x43a0e2}from'fs';import a5_0x2e3fc3 from'path';import a5_0x24f682 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x56d123){const _0x397007=a5_0x2edb;try{const _0x5455f9=_0x56d123[_0x397007(0x1c3)](_0x397007(0x1d0))?_0x56d123[_0x397007(0x1cd)](0x7):_0x56d123,_0x5a8f17=_0x5455f9[_0x397007(0x1c3)]('~/')||_0x5455f9==='~'?a5_0x2e3fc3[_0x397007(0x1d4)](a5_0x24f682[_0x397007(0x1c1)](),_0x5455f9[_0x397007(0x1cd)](0x1)):_0x5455f9,_0x23e3be=a5_0x2e3fc3[_0x397007(0x1d2)](_0x5a8f17),_0x390adb=await a5_0x43a0e2[_0x397007(0x1c4)](_0x23e3be);return normalizePath(_0x390adb);}catch{return null;}}function formatDirectoryError(_0x302b21,_0x40b010,_0xd6301c){const _0x4f8afe=a5_0x2edb;if(_0xd6301c)return _0x4f8afe(0x1c9)+_0xd6301c+':\x20'+_0x302b21;const _0x1f7978=_0x40b010 instanceof Error?_0x40b010['message']:String(_0x40b010);return'Skipping\x20invalid\x20directory:\x20'+_0x302b21+'\x20due\x20to\x20error:\x20'+_0x1f7978;}export async function getValidRootDirectories(_0x493ac5){const _0x20a579=a5_0x2edb,_0x4b0353=[];for(const _0x4301c8 of _0x493ac5){const _0xf164cd=await parseRootUri(_0x4301c8['uri']);if(!_0xf164cd){logMcpStderr(formatDirectoryError(_0x4301c8[_0x20a579(0x1ca)],undefined,_0x20a579(0x1c5)));continue;}try{const _0x397e66=await a5_0x43a0e2['stat'](_0xf164cd);_0x397e66[_0x20a579(0x1ce)]()?_0x4b0353[_0x20a579(0x1cb)](_0xf164cd):logMcpStderr(formatDirectoryError(_0xf164cd,undefined,_0x20a579(0x1c6)));}catch(_0x52ac70){logMcpStderr(formatDirectoryError(_0xf164cd,_0x52ac70));}}return _0x4b0353;}function a5_0x1c7a(){const _0x160135=['join','3996730WInrjo','353836WBKzuv','268NIYPRU','homedir','248550PvcfxF','startsWith','realpath','invalid\x20path\x20or\x20inaccessible','non-directory\x20root','48072mzGdMc','239116SKVUDN','Skipping\x20','uri','push','6855NpzuZz','slice','isDirectory','279XSDEqi','file://','6agiApu','resolve','72344HLbfRs'];a5_0x1c7a=function(){return _0x160135;};return a5_0x1c7a();}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a6_0x5e7e58=a6_0x9789;(function(_0x31a789,_0x527f60){const _0x20cc5b=a6_0x9789,_0xdad804=_0x31a789();while(!![]){try{const _0x2bfc8f=parseInt(_0x20cc5b(0x1d4))/0x1*(-parseInt(_0x20cc5b(0x1d0))/0x2)+parseInt(_0x20cc5b(0x1d8))/0x3*(parseInt(_0x20cc5b(0x1d7))/0x4)+-parseInt(_0x20cc5b(0x1ce))/0x5+-parseInt(_0x20cc5b(0x1cb))/0x6+-parseInt(_0x20cc5b(0x1cc))/0x7*(-parseInt(_0x20cc5b(0x1d6))/0x8)+parseInt(_0x20cc5b(0x1cd))/0x9*(-parseInt(_0x20cc5b(0x1d2))/0xa)+parseInt(_0x20cc5b(0x1d1))/0xb;if(_0x2bfc8f===_0x527f60)break;else _0xdad804['push'](_0xdad804['shift']());}catch(_0x3422c6){_0xdad804['push'](_0xdad804['shift']());}}}(a6_0x3984,0xb5860));export const TOOL_NAMES={'EDIT_FILE':a6_0x5e7e58(0x1d3),'CODEBASE_SEARCH':a6_0x5e7e58(0x1cf),'GITHUB_CODEBASE_SEARCH':'github_codebase_search'};export const ALL_TOOL_NAMES=Object[a6_0x5e7e58(0x1d5)](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);function a6_0x9789(_0x2aa6e2,_0xd3b586){_0x2aa6e2=_0x2aa6e2-0x1cb;const _0x3984a5=a6_0x3984();let _0x978977=_0x3984a5[_0x2aa6e2];return _0x978977;}function a6_0x3984(){const _0x5a9b54=['edit_file','23523vkLdEy','values','57608XrbbQq','100ruqlPo','94044GWTMZX','4397574jvjNgf','91IzDBPW','166707vUqnUR','505840DffEnp','codebase_search','8sgMPSn','16888476phgFwx','400tVhhtQ'];a6_0x3984=function(){return _0x5a9b54;};return a6_0x3984();}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.183",
|
|
4
4
|
"description": "Fast & accurate MCP server with AI-powered file editing and intelligent code search. Prevents context pollution and saves time for a better user experience.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Morph (https://morphllm.com)",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@google/generative-ai": "^0.21.0",
|
|
37
37
|
"@modelcontextprotocol/sdk": "^1.12.3",
|
|
38
|
-
"@morphllm/morphsdk": "0.2.
|
|
38
|
+
"@morphllm/morphsdk": "0.2.173",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|