@morphllm/morphmcp 0.8.154 → 0.8.155
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/path-utils.js +1 -1
- package/dist/path-validation.js +1 -1
- package/dist/roots-utils.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_0x58d244=a0_0x1e7e;function a0_0x1e7e(_0x3bb576,_0x318c1){_0x3bb576=_0x3bb576-0x8f;const _0x2fc3e1=a0_0x2fc3();let _0x1e7e1f=_0x2fc3e1[_0x3bb576];return _0x1e7e1f;}(function(_0x47259a,_0x19bddf){const _0x763b23=a0_0x1e7e,_0x100571=_0x47259a();while(!![]){try{const _0x40831f=parseInt(_0x763b23(0x10d))/0x1+-parseInt(_0x763b23(0x9b))/0x2+-parseInt(_0x763b23(0xd4))/0x3*(-parseInt(_0x763b23(0x111))/0x4)+parseInt(_0x763b23(0x109))/0x5+parseInt(_0x763b23(0xbd))/0x6+parseInt(_0x763b23(0xcc))/0x7+-parseInt(_0x763b23(0x15c))/0x8;if(_0x40831f===_0x19bddf)break;else _0x100571['push'](_0x100571['shift']());}catch(_0x4d9c95){_0x100571['push'](_0x100571['shift']());}}}(a0_0x2fc3,0x9ad32));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_0x3291b6 from'fs/promises';import a0_0x422565 from'path';function a0_0x2fc3(){const _0x4cdda5=['PathError','finish','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','join','codebase_search','roots','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','unknown','code','stack','instructions','Cargo.toml','glob','package.json','Max\x20results\x20to\x20return','metadata','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','timings','lines','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','log','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','setNotificationHandler','Error:\x20','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','dryRun','.git','filter','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','terminationReason','terminated','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','-\x20Read\x20file\x20`','[could\x20not\x20read\x20file:\x20','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','0.2.0','etimedout','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','463390wgeHlP','isArray','tool_call_id','ms.\x20Success:\x20','morph-warp-grep-v2.1','File\x20read\x20error:','listRoots','MORPH_API_URL','\x20chars)','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','errors','DISABLED_TOOLS','Failed\x20to\x20read\x20file:\x20','stat','\x0a</file>','includes','-\x20Glob\x20search\x20`','code_edit','\x20valid\x20directories','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','match','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','morph-','\x0a...\x20(truncated,\x20total:\x20','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','boolean','SubToolError','FileNotFound','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','inputSchema','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','slice','stringify','4977918aErekT','min','sk-','string','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','message','composer.json','exit','runWarpGrep_call','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','timeout','[github_codebase_search]\x20Searching\x20','connect','Preview\x20changes\x20without\x20applying\x20them.','4698225pqRGJH','arguments','map','-\x20Listed\x20directory\x20`','ToolException','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.','argv','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','9QesjKk','toLowerCase','files','basename','.cursor','GitHub\x20search\x20failed:\x20','user','completionId','isDirectory','github_codebase_search','assistant','\x22>\x0aError\x20reading\x20file:\x20','split','now','data','optional','glob\x20\x27','UnknownError','timed\x20out','Unknown\x20tool:\x20','resolve','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','edit_file','completed','morph-mcp','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','\x0aOptions:','\x20for:\x20\x22','push',',\x20modified\x20','object','\x20(new\x20file)','branch','Error\x20accessing\x20directory\x20','For\x20deletions:\x0a','--version','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','describe','every','ms:','\x20disabled\x20via\x20DISABLED_TOOLS','length','completed_with_file_errors','ENOENT','false','payload','Specific\x20commit\x20hash\x20to\x20search','has','mcp-filesystem','error','dirname','Created\x20File','array','3448755ecHrxs','Warning:\x20','access','startsWith','883600qWrwyO','\x0aExamples:','linesRemoved','BinaryFile','1000508viRYJR','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','params','morph-v3-fast','normalize','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Unknown\x20error','.vscode','FileReadError','function','repo_path','requiresApiKey','sep','readFile','[github_codebase_search]\x20Done\x20in\x20','Invalid\x20arguments:\x20','getClientCapabilities','@morphllm/morphmcp\x20','Repository\x20identifier','warn','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','.\x20Changes:\x20','\x22.\x20Known\x20tools:\x20','path','-\x20Grepped\x20\x27','context','substring','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','Relevant\x20context\x20found:','.\x20Path:\x20','pattern','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.','messages','SymlinkError','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.','read','list_directory\x20','source','default','linesAdded','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.','--api-key','Disabled\x20tools:\x20','size','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','\x22>\x0a','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','Tool\x20','<file\x20path=\x22','WarpGrepError','safeParse','version','response','[codebase_search]\x20compaction\x20failed','added\x20','search_type','Morph\x20Edit\x20Preview','utf-8','grep\x20\x27','ENABLE_WORKSPACE_MODE','search_string','content','unknown\x20error','all','number','text','realpath','post','owner_repo','Warning:\x20Workspace\x20fallback\x20failed:\x20','ReadError','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','node_modules','name','23669624eLCppq','status','changes','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','\x20as\x20allowed\x20directory','\x27\x20in\x20`','success','env','MORPH_API_KEY','grep','homedir','PWD','catch','list_directory','TimeoutError','\x20-\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','api-key','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','Fatal\x20error\x20running\x20server:','RipgrepError','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','trim','instruction','Fallback:\x20Using\x20workspace\x20root\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','constructor','role','MORPH_WARP_GREP_TIMEOUT','Rules:\x0a','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','\x20\x20morph-mcp','command','grep_search','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','tool_calls','RipgrepNotAvailable','Benefits:\x0a'];a0_0x2fc3=function(){return _0x4cdda5;};return a0_0x2fc3();}import a0_0x919b4c from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x3307ea from'axios';function fixPathRepetition(_0x561c70){const _0x6154a3=a0_0x1e7e,_0x1fec15=_0x561c70['split'](a0_0x422565['sep'])[_0x6154a3(0x8f)](Boolean);if(_0x1fec15[_0x6154a3(0xfd)]<0x2)return null;for(let _0x386dc2=Math['floor'](_0x1fec15['length']/0x2);_0x386dc2>=0x1;_0x386dc2--){for(let _0x171060=0x0;_0x171060<=_0x1fec15['length']-0x2*_0x386dc2;_0x171060++){const _0x967978=_0x1fec15[_0x6154a3(0xbb)](_0x171060,_0x171060+_0x386dc2),_0x5a36c1=_0x1fec15[_0x6154a3(0xbb)](_0x171060+_0x386dc2,_0x171060+0x2*_0x386dc2);if(_0x967978[_0x6154a3(0xfa)]((_0x58cac8,_0x202a95)=>_0x58cac8===_0x5a36c1[_0x202a95])){const _0xbdffe9=[..._0x1fec15[_0x6154a3(0xbb)](0x0,_0x171060),..._0x1fec15[_0x6154a3(0xbb)](_0x171060+_0x386dc2)];return a0_0x422565[_0x6154a3(0x11d)]+_0xbdffe9['join'](a0_0x422565[_0x6154a3(0x11d)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x744dc2=a0_0x1e7e;try{const _0x91c930=require('../package.json');return _0x91c930[_0x744dc2(0x145)]??_0x744dc2(0x18e);}catch(_0x3fc366){return logMcpStderr(_0x744dc2(0x19f),_0x3fc366),_0x744dc2(0x18e);}}function printHelp(){const _0x1fcb4d=a0_0x1e7e;console[_0x1fcb4d(0x19b)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x1fcb4d(0x19b)](_0x1fcb4d(0xb7)),console[_0x1fcb4d(0x19b)](_0x1fcb4d(0xee)),console['log'](_0x1fcb4d(0x178)),console[_0x1fcb4d(0x19b)](_0x1fcb4d(0x97)),console[_0x1fcb4d(0x19b)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x1fcb4d(0x19b)](_0x1fcb4d(0x10e)),console[_0x1fcb4d(0x19b)](_0x1fcb4d(0x17f)),console[_0x1fcb4d(0x19b)](_0x1fcb4d(0xed));}const cliArgs=process[a0_0x58d244(0xd2)][a0_0x58d244(0xbb)](0x2),VERSION_FLAGS=new Set([a0_0x58d244(0xf7),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs['some'](_0x4f0d79=>VERSION_FLAGS[a0_0x58d244(0x103)](_0x4f0d79))&&(console[a0_0x58d244(0x19b)](a0_0x58d244(0x122)+getPackageVersion()),process[a0_0x58d244(0xc5)](0x0));cliArgs['some'](_0x13e55d=>HELP_FLAGS[a0_0x58d244(0x103)](_0x13e55d))&&(printHelp(),process[a0_0x58d244(0xc5)](0x0));function getCliArg(_0x2c35d3){const _0xbaf47b=a0_0x58d244;for(let _0x1e7402=0x0;_0x1e7402<cliArgs[_0xbaf47b(0xfd)];_0x1e7402++){const _0x3a9c0a=cliArgs[_0x1e7402];if(_0x3a9c0a[_0xbaf47b(0x10c)]('--'+_0x2c35d3+'='))return _0x3a9c0a[_0xbaf47b(0xbb)](('--'+_0x2c35d3+'=')[_0xbaf47b(0xfd)]);if(_0x3a9c0a==='--'+_0x2c35d3&&_0x1e7402+0x1<cliArgs['length'])return cliArgs[_0x1e7402+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x58d244(0xfd)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x58d244(0x103)](arg)||HELP_FLAGS[a0_0x58d244(0x103)](arg))continue;if(arg[a0_0x58d244(0x10c)]('--api-key='))continue;if(arg===a0_0x58d244(0x13a)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x58d244(0x163)]['WORKSPACE_ROOT']||process[a0_0x58d244(0x163)][a0_0x58d244(0x167)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x58d244(0x163)][a0_0x58d244(0x14d)]!==a0_0x58d244(0x100),MORPH_API_KEY=getCliArg(a0_0x58d244(0x16e))??process['env'][a0_0x58d244(0x164)],MORPH_API_URL=process[a0_0x58d244(0x163)][a0_0x58d244(0xa2)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x58d244(0x163)][a0_0x58d244(0x17b)]?parseInt(process[a0_0x58d244(0x163)][a0_0x58d244(0x17b)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x58d244(0xea),a0_0x58d244(0x18b),a0_0x58d244(0xdd)]),DISABLED_TOOLS=process['env'][a0_0x58d244(0xa6)]?new Set(process[a0_0x58d244(0x163)][a0_0x58d244(0xa6)][a0_0x58d244(0xe0)](',')[a0_0x58d244(0xce)](_0xd4e900=>_0xd4e900[a0_0x58d244(0x174)]())[a0_0x58d244(0x8f)](_0x2a2609=>_0x2a2609[a0_0x58d244(0xfd)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x58d244(0x13c)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x58d244(0x103)](tool)&&console[a0_0x58d244(0x105)]('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+a0_0x58d244(0x127)+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console['error'](a0_0x58d244(0x13b)+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x58d244(0x10c)](a0_0x58d244(0xbf))&&!MORPH_API_KEY['startsWith'](a0_0x58d244(0xb1))&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x150a6d){const _0x4cbb97=a0_0x58d244;try{await a0_0x3307ea[_0x4cbb97(0x155)]('https://morphllm.com/api/error-report',{..._0x150a6d,'timestamp':new Date()['toISOString'](),'source':_0x150a6d[_0x4cbb97(0x136)]||_0x4cbb97(0x104),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x150a6d[_0x4cbb97(0x12a)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x492191,_0x4bbb7c){const _0x24a734=a0_0x58d244;if(_0x492191&&typeof _0x492191===_0x24a734(0xf2)&&_0x24a734(0x15d)in _0x492191)return _0x492191[_0x24a734(0x15d)];if(_0x492191&&typeof _0x492191===_0x24a734(0xf2)&&_0x24a734(0x146)in _0x492191)return _0x492191['response']?.[_0x24a734(0x15d)];const _0x48474b=_0x4bbb7c[_0x24a734(0xaf)](/\b(401|429)\b/);return _0x48474b?parseInt(_0x48474b[0x1],0xa):null;}function handleMorphAPIError(_0x27d078){const _0x3a92bc=a0_0x58d244,_0x213796=_0x27d078 instanceof Error?_0x27d078[_0x3a92bc(0xc3)]:String(_0x27d078),_0x412e98=extractStatusCode(_0x27d078,_0x213796);switch(_0x412e98){case 0x191:return{'content':[{'type':_0x3a92bc(0x153),'text':'Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.'}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x3a92bc(0x153),'text':'Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.'}],'isError':!![]};default:return null;}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x58d244(0xa4)),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr(a0_0x58d244(0xf8)),logMcpStderr(a0_0x58d244(0x94)),logMcpStderr(a0_0x58d244(0xc7)),logMcpStderr('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x8320e5){const _0x2dcec9=a0_0x58d244;return a0_0x422565[_0x2dcec9(0x115)](_0x8320e5);}function expandHome(_0x4bbba9){const _0xcedcc7=a0_0x58d244;if(_0x4bbba9[_0xcedcc7(0x10c)]('~/')||_0x4bbba9==='~')return a0_0x422565[_0xcedcc7(0x18a)](a0_0x919b4c[_0xcedcc7(0x166)](),_0x4bbba9[_0xcedcc7(0xbb)](0x1));return _0x4bbba9;}let allowedDirectories=await Promise[a0_0x58d244(0x151)](args['map'](async _0x511660=>{const _0x23ec53=a0_0x58d244,_0x1ca69f=expandHome(_0x511660),_0x464fa8=a0_0x422565[_0x23ec53(0xe8)](_0x1ca69f);try{const _0x3b9e1a=await a0_0x3291b6[_0x23ec53(0x154)](_0x464fa8);return normalizePath(_0x3b9e1a);}catch(_0x1fd363){return normalizePath(_0x464fa8);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x58d244(0xfd)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x58d244(0xf0)](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0x58d244(0x160)));}catch(a0_0x3a9f94){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x3a9f94);}async function detectWorkspaceRoot(_0x4d79fe){const _0x5eaee3=a0_0x58d244;let _0x30762b=a0_0x422565[_0x5eaee3(0xe8)](_0x4d79fe);const _0x2be16f=[_0x5eaee3(0x1a1),_0x5eaee3(0x118),_0x5eaee3(0x194),_0x5eaee3(0x192),'pyproject.toml','go.mod',_0x5eaee3(0xd8),'tsconfig.json',_0x5eaee3(0xc4)];while(_0x30762b!==a0_0x422565[_0x5eaee3(0x106)](_0x30762b)){for(const _0x184edc of _0x2be16f){const _0x218113=a0_0x422565['join'](_0x30762b,_0x184edc);try{return await a0_0x3291b6[_0x5eaee3(0x10b)](_0x218113),normalizePath(_0x30762b);}catch{}}_0x30762b=a0_0x422565['dirname'](_0x30762b);}return normalizePath(_0x4d79fe);}await Promise[a0_0x58d244(0x151)](args[a0_0x58d244(0xce)](async _0x1fe39e=>{const _0x3bd5b0=a0_0x58d244;try{const _0x8c52bb=await a0_0x3291b6[_0x3bd5b0(0xa8)](expandHome(_0x1fe39e));!_0x8c52bb[_0x3bd5b0(0xdc)]()&&(logMcpStderr(_0x3bd5b0(0x19e)+_0x1fe39e+'\x20is\x20not\x20a\x20directory'),process[_0x3bd5b0(0xc5)](0x1));}catch(_0x142350){logMcpStderr(_0x3bd5b0(0xf5)+_0x1fe39e+':',_0x142350),process[_0x3bd5b0(0xc5)](0x1);}}));async function validatePath(_0x1ddd1c){const _0x5eb44d=a0_0x58d244,_0x28ac38=expandHome(_0x1ddd1c),_0x4aacfd=a0_0x422565['resolve'](_0x28ac38);try{const _0x5f303d=await a0_0x3291b6[_0x5eb44d(0x154)](_0x4aacfd);return _0x5f303d;}catch(_0x40db6f){if(_0x40db6f[_0x5eb44d(0x18f)]===_0x5eb44d(0xff)){const _0x443fb5=a0_0x422565[_0x5eb44d(0x106)](_0x4aacfd);try{const _0x524d72=await a0_0x3291b6[_0x5eb44d(0x154)](_0x443fb5);return a0_0x422565['join'](_0x524d72,a0_0x422565[_0x5eb44d(0xd7)](_0x4aacfd));}catch{throw new Error(_0x5eb44d(0x177)+_0x443fb5);}}throw _0x40db6f;}}const MorphEditFileArgsSchema=z[a0_0x58d244(0xf2)]({'path':z[a0_0x58d244(0xc0)](),'code_edit':z['string']()[a0_0x58d244(0xf9)](a0_0x58d244(0x16c)),'instruction':z['string']()[a0_0x58d244(0xf9)]('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0x58d244(0xb4)]()[a0_0x58d244(0x137)](![])['describe'](a0_0x58d244(0xcb))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x58d244(0x130),WarpGrepArgsSchema=z[a0_0x58d244(0xf2)]({'search_string':z[a0_0x58d244(0xc0)]()[a0_0x58d244(0xf9)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x58d244(0xf9)](a0_0x58d244(0x19a)),'search_type':z['enum'](['default',a0_0x58d244(0x15a)])[a0_0x58d244(0xe3)]()[a0_0x58d244(0xf9)](a0_0x58d244(0x16d))}),WarpGrepGitHubArgsSchema=z[a0_0x58d244(0xf2)]({'search_string':z[a0_0x58d244(0xc0)]()[a0_0x58d244(0xf9)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x58d244(0xc0)]()['optional']()[a0_0x58d244(0xf9)](a0_0x58d244(0x139)),'owner_repo':z[a0_0x58d244(0xc0)]()[a0_0x58d244(0xe3)]()[a0_0x58d244(0xf9)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x58d244(0xc0)]()[a0_0x58d244(0xe3)]()[a0_0x58d244(0xf9)](a0_0x58d244(0x112))}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0x58d244(0xc0)]()[a0_0x58d244(0xf9)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x58d244(0xc0)]()['describe'](a0_0x58d244(0x123)),'branch':z[a0_0x58d244(0xc0)]()[a0_0x58d244(0xe3)]()['describe'](a0_0x58d244(0x15f)),'commitHash':z['string']()[a0_0x58d244(0xe3)]()[a0_0x58d244(0xf9)](a0_0x58d244(0x102)),'targetDirectories':z[a0_0x58d244(0x108)](z[a0_0x58d244(0xc0)]())[a0_0x58d244(0x137)]([])[a0_0x58d244(0xf9)](a0_0x58d244(0xba)),'limit':z[a0_0x58d244(0x152)]()[a0_0x58d244(0xe3)]()[a0_0x58d244(0x137)](0xa)[a0_0x58d244(0xf9)](a0_0x58d244(0x195))}),server=new Server({'name':a0_0x58d244(0xec),'version':a0_0x58d244(0x98)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x9c4778=a0_0x58d244,_0x2fd43d=[{'name':'edit_file','description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0x9c4778(0x125)+_0x9c4778(0x17d)+_0x9c4778(0x185)+_0x9c4778(0xc2)+_0x9c4778(0x172)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x9c4778(0x159)+_0x9c4778(0x9a)+_0x9c4778(0x173)+_0x9c4778(0x13d)+_0x9c4778(0xf6)+_0x9c4778(0x182)+_0x9c4778(0x90)+_0x9c4778(0x17c)+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0x9c4778(0x18d)+_0x9c4778(0x17e)+_0x9c4778(0xb0)+_0x9c4778(0x16f)+_0x9c4778(0x19c),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x9c4778(0x18b),'description':_0x9c4778(0x12c)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x9c4778(0x13f)+_0x9c4778(0x140)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0xe67bef=_0x2fd43d['filter'](_0x1e9a53=>{const _0x3b6ffd=_0x9c4778;if(DISABLED_TOOLS[_0x3b6ffd(0x103)](_0x1e9a53[_0x3b6ffd(0x15b)]))return console['error'](_0x3b6ffd(0x141)+_0x1e9a53[_0x3b6ffd(0x15b)]+_0x3b6ffd(0xfc)),![];if('requiresApiKey'in _0x1e9a53&&_0x1e9a53[_0x3b6ffd(0x11c)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x1e9a53[_0x3b6ffd(0x15b)]+_0x3b6ffd(0xe9)),![];return!![];});return{'tools':_0xe67bef[_0x9c4778(0xce)](_0x153b75=>({'name':_0x153b75['name'],'description':_0x153b75['description'],'inputSchema':_0x153b75[_0x9c4778(0xb8)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x343900=>{const _0x104df9=a0_0x58d244,{name:_0x19b1b6,arguments:_0x4ce01a}=_0x343900[_0x104df9(0x113)];try{if(!MORPH_API_KEY)return{'content':[{'type':_0x104df9(0x153),'text':_0x104df9(0xb9)}],'isError':!![]};if(!MORPH_API_KEY[_0x104df9(0x10c)](_0x104df9(0xbf))&&!MORPH_API_KEY['startsWith'](_0x104df9(0xb1)))return{'content':[{'type':_0x104df9(0x153),'text':_0x104df9(0x133)}],'isError':!![]};if(DISABLED_TOOLS[_0x104df9(0x103)](_0x19b1b6))throw new Error('Tool\x20\x22'+_0x19b1b6+_0x104df9(0xc1));switch(_0x19b1b6){case _0x104df9(0xea):{const _0x32761f=_0x4ce01a&&typeof _0x4ce01a===_0x104df9(0xf2)&&_0x104df9(0x191)in _0x4ce01a&&!(_0x104df9(0x175)in _0x4ce01a)?{..._0x4ce01a,'instruction':_0x4ce01a['instructions'],'instructions':undefined}:_0x4ce01a,_0x3980b8=MorphEditFileArgsSchema[_0x104df9(0x144)](_0x32761f);if(!_0x3980b8['success'])throw new Error(_0x104df9(0x188)+_0x3980b8['error']);const _0x6cee4f=await validatePath(_0x3980b8[_0x104df9(0xe2)][_0x104df9(0x128)]);let _0x2abe60=null,_0x4976c2=!![],_0x55cf83=null;try{_0x2abe60=await a0_0x3291b6[_0x104df9(0x11e)](_0x6cee4f,_0x104df9(0x14b));}catch(_0x5e56b0){const _0x82f577=_0x5e56b0[_0x104df9(0x18f)];_0x82f577==='ENOENT'?(_0x4976c2=![],_0x2abe60=''):(_0x55cf83=_0x104df9(0xa7)+(_0x82f577||_0x104df9(0x18e))+_0x104df9(0x16b)+(_0x5e56b0 instanceof Error?_0x5e56b0[_0x104df9(0xc3)]:String(_0x5e56b0)),logMcpStderr(_0x104df9(0x10a)+_0x55cf83));}let _0x1cdb2b;try{const _0x24b60a=MORPH_API_KEY;if(!_0x24b60a)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x42816b=a0_0x422565[_0x104df9(0x106)](_0x6cee4f),_0x3d00c7=a0_0x422565[_0x104df9(0xd7)](_0x6cee4f),_0x1d308b=await executeEditFile({'target_filepath':_0x3d00c7,'code_edit':_0x3980b8[_0x104df9(0xe2)][_0x104df9(0xac)],'instruction':_0x3980b8[_0x104df9(0xe2)][_0x104df9(0x175)]},{'morphApiKey':_0x24b60a,'morphApiUrl':MORPH_API_URL,'baseDir':_0x42816b,'autoWrite':!_0x3980b8[_0x104df9(0xe2)][_0x104df9(0x1a0)],'generateUdiff':![],'debug':![]});_0x1cdb2b=_0x1d308b[_0x104df9(0xdb)];if(!_0x1d308b[_0x104df9(0x162)])throw new Error(_0x1d308b[_0x104df9(0x105)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0xa21516=_0x1d308b[_0x104df9(0x15e)],_0xfbe5f3=_0x104df9(0x148)+_0xa21516[_0x104df9(0x138)]+',\x20removed\x20'+_0xa21516[_0x104df9(0x10f)]+_0x104df9(0xf1)+_0xa21516['linesModified'];if(_0x3980b8[_0x104df9(0xe2)]['dryRun'])return{'content':[{'type':_0x104df9(0x153),'text':_0x104df9(0x14a)+(_0x4976c2?'':_0x104df9(0xf3))+':\x20'+_0x3980b8[_0x104df9(0xe2)][_0x104df9(0x175)]+_0x104df9(0x126)+_0xfbe5f3+_0x104df9(0x12e)+_0x3980b8[_0x104df9(0xe2)][_0x104df9(0x128)]+'.'}]};return{'content':[{'type':_0x104df9(0x153),'text':'Morph\x20Edit\x20'+(_0x4976c2?'Applied':_0x104df9(0x107))+':\x20'+_0x3980b8[_0x104df9(0xe2)]['instruction']+_0x104df9(0x126)+_0xfbe5f3+_0x104df9(0x12e)+_0x3980b8[_0x104df9(0xe2)][_0x104df9(0x128)]+'.'}]};}catch(_0x2d31dd){const _0x52a1c1=handleMorphAPIError(_0x2d31dd);if(_0x52a1c1)return _0x52a1c1;const _0x56762d=_0x2d31dd instanceof Error?_0x2d31dd['message']:String(_0x2d31dd);return reportMorphError({'error_message':_0x56762d,'error_type':_0x2d31dd instanceof Error?_0x2d31dd['constructor'][_0x104df9(0x15b)]:_0x104df9(0xe5),'context':{'tool':'edit_file','completion_id':_0x1cdb2b,'file_path':_0x3980b8[_0x104df9(0xe2)][_0x104df9(0x128)],'validated_path':_0x6cee4f,'instruction':_0x3980b8[_0x104df9(0xe2)][_0x104df9(0x175)],'model':_0x104df9(0x114),'dry_run':_0x3980b8['data']['dryRun'],'file_exists':_0x4976c2,'file_read_error':_0x55cf83,'file_readable':_0x2abe60!==null,'request_content':{'path':_0x3980b8[_0x104df9(0xe2)]['path'],'code_edit':_0x3980b8[_0x104df9(0xe2)][_0x104df9(0xac)],'instruction':_0x3980b8[_0x104df9(0xe2)]['instruction'],'original_code':_0x2abe60!==null?_0x2abe60[_0x104df9(0xfd)]>0xc350?_0x2abe60['substring'](0x0,0xc350)+_0x104df9(0xb2)+_0x2abe60['length']+_0x104df9(0xa3):_0x2abe60:_0x104df9(0x96)+(_0x55cf83||_0x104df9(0x150))+']','original_code_length':_0x2abe60?.[_0x104df9(0xfd)]??0x0,'model':_0x104df9(0x114),'dry_run':_0x3980b8[_0x104df9(0xe2)][_0x104df9(0x1a0)]}},'stack_trace':_0x2d31dd instanceof Error?_0x2d31dd[_0x104df9(0x190)]:undefined,'source':_0x104df9(0x104)})[_0x104df9(0x168)](()=>{}),{'content':[{'type':_0x104df9(0x153),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x56762d}],'isError':!![]};}}case _0x104df9(0x18b):{const _0x90dc19=WarpGrepArgsSchema[_0x104df9(0x144)](_0x4ce01a);if(!_0x90dc19[_0x104df9(0x162)])return{'content':[{'type':_0x104df9(0x153),'text':_0x104df9(0x120)+_0x90dc19[_0x104df9(0x105)]}],'isError':!![]};const _0x77631b=_0x510f81=>{const _0x3b5cbd=_0x104df9,_0x2abf3b=[];for(const _0x5313e1 of _0x510f81||[]){if(_0x5313e1[_0x3b5cbd(0x17a)]==='assistant'&&Array['isArray'](_0x5313e1[_0x3b5cbd(0x183)]))for(const _0x1c01c6 of _0x5313e1[_0x3b5cbd(0x183)]){try{const _0x4871d0=_0x1c01c6[_0x3b5cbd(0x11a)]?.[_0x3b5cbd(0x15b)],_0x16739f=JSON['parse'](_0x1c01c6['function']?.[_0x3b5cbd(0xcd)]||'{}');if(_0x4871d0===_0x3b5cbd(0x181))_0x2abf3b[_0x3b5cbd(0xf0)](_0x3b5cbd(0x14c)+_0x16739f['pattern']+'\x27\x20'+(_0x16739f['path']||'.'));else{if(_0x4871d0===_0x3b5cbd(0x134))_0x2abf3b['push']('read\x20'+_0x16739f[_0x3b5cbd(0x128)]);else{if(_0x4871d0===_0x3b5cbd(0x169))_0x2abf3b[_0x3b5cbd(0xf0)](_0x3b5cbd(0x135)+(_0x16739f[_0x3b5cbd(0x180)]||'.'));else{if(_0x4871d0===_0x3b5cbd(0x193))_0x2abf3b[_0x3b5cbd(0xf0)](_0x3b5cbd(0xe4)+_0x16739f[_0x3b5cbd(0x12f)]+'\x27\x20'+(_0x16739f['path']||'.'));else _0x4871d0===_0x3b5cbd(0x187)&&_0x2abf3b[_0x3b5cbd(0xf0)](_0x3b5cbd(0x187));}}}}catch{}}}return _0x2abf3b;},_0x146410=_0x48d4e3=>{const _0x1164e1=_0x104df9,_0x3e667e=[];if(!_0x48d4e3||!Array[_0x1164e1(0x9c)](_0x48d4e3))return _0x3e667e;const _0x5c672c=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x1164e1(0xb6),'tool':_0x1164e1(0x134)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x1164e1(0x186),'tool':_0x1164e1(0x134)},{'pattern':/\[READ ERROR\]/,'error_type':_0x1164e1(0x158),'tool':_0x1164e1(0x134)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x1164e1(0x110),'tool':_0x1164e1(0x134)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x1164e1(0x171),'tool':_0x1164e1(0x165)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x1164e1(0x184),'tool':_0x1164e1(0x165)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x1164e1(0x110),'tool':_0x1164e1(0x134)},{'pattern':/\[SYMLINK\]/,'error_type':_0x1164e1(0x132),'tool':_0x1164e1(0x134)},{'pattern':/not a text file/,'error_type':_0x1164e1(0x110),'tool':_0x1164e1(0x134)},{'pattern':/symbolic link/,'error_type':_0x1164e1(0x132),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x1164e1(0x158),'tool':_0x1164e1(0x134)},{'pattern':/status="error"/,'error_type':_0x1164e1(0xd0),'tool':'unknown'}];let _0x17ea5e=0x0;for(const _0xf8656d of _0x48d4e3){_0xf8656d[_0x1164e1(0x17a)]===_0x1164e1(0xde)&&Array[_0x1164e1(0x9c)](_0xf8656d['tool_calls'])&&_0x17ea5e++;const _0x10cd4a=_0xf8656d['content'];if((_0xf8656d[_0x1164e1(0x17a)]==='tool'||_0xf8656d['role']===_0x1164e1(0xda))&&_0x10cd4a&&typeof _0x10cd4a===_0x1164e1(0xc0))for(const {pattern:_0x281809,error_type:_0xbb8f0a,tool:_0x51f8ac}of _0x5c672c){const _0x4b17fb=_0x10cd4a[_0x1164e1(0xaf)](new RegExp(_0x281809[_0x1164e1(0x136)],'g'));if(_0x4b17fb)for(const _0x3ee394 of _0x4b17fb){const _0x2b9a76=_0x10cd4a['indexOf'](_0x3ee394),_0x3b3a10=_0x10cd4a[_0x1164e1(0x12b)](_0x2b9a76,Math[_0x1164e1(0xbe)](_0x2b9a76+0xc8,_0x10cd4a[_0x1164e1(0xfd)]));_0x3e667e['push']({'tool':_0x51f8ac,'error_type':_0xbb8f0a,'error_message':_0x3b3a10[_0x1164e1(0xe0)]('\x0a')[0x0],'turn':_0x17ea5e});}}}return _0x3e667e;};try{const _0x2540ed=a0_0x422565[_0x104df9(0xe8)](_0x90dc19[_0x104df9(0xe2)][_0x104df9(0x11b)]),_0x53f6a5=_0x90dc19[_0x104df9(0xe2)][_0x104df9(0x149)],_0x2f5835=_0x53f6a5==='node_modules'?{'allowNames':[_0x104df9(0x15a)]}:undefined,_0x29c93c=new LocalRipgrepProvider(_0x2540ed,undefined,_0x2f5835),_0x59b3e2=await runWarpGrep({'searchTerm':_0x90dc19['data'][_0x104df9(0x14e)],'repoRoot':_0x2540ed,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x29c93c,'search_type':_0x53f6a5}),_0x453d8e=_0x146410(_0x59b3e2[_0x104df9(0x131)]);_0x453d8e[_0x104df9(0xfd)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x453d8e[_0x104df9(0xfd)]+'\x20error(s)','error_type':_0x104df9(0xb5),'level':_0x104df9(0x124),'tool':'codebase_search','context':{'repo_path':_0x90dc19[_0x104df9(0xe2)][_0x104df9(0x11b)],'query':_0x90dc19[_0x104df9(0xe2)][_0x104df9(0x14e)],'model':'morph-warp-grep-v2.1','termination_reason':_0x59b3e2['terminationReason'],'sub_tool_errors':_0x453d8e,'timings':_0x59b3e2[_0x104df9(0x198)],'tool_calls':_0x77631b(_0x59b3e2[_0x104df9(0x131)]),'messages':_0x59b3e2[_0x104df9(0x131)]?.[_0x104df9(0xce)](_0x359657=>({'role':_0x359657['role'],'content':_0x359657[_0x104df9(0x14f)],..._0x359657[_0x104df9(0x183)]?{'tool_calls':_0x359657['tool_calls']['length']}:{},..._0x359657['tool_call_id']?{'tool_call_id':_0x359657[_0x104df9(0x9d)]}:{}}))},'source':_0x104df9(0x104)})['catch'](()=>{});let _0x80d10b='';if(_0x59b3e2[_0x104df9(0x92)]===_0x104df9(0xeb)&&_0x59b3e2[_0x104df9(0x187)]?.[_0x104df9(0x196)]?.[_0x104df9(0xd6)]){const _0x573264=_0x59b3e2[_0x104df9(0x187)][_0x104df9(0x196)]['files'];if(_0x573264[_0x104df9(0xfd)]===0x0)return _0x80d10b=_0x59b3e2['finish'][_0x104df9(0x101)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x104df9(0x153),'text':_0x80d10b}]};const _0x4a5db8=[],_0xced7fa=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x123850 of _0x59b3e2[_0x104df9(0x131)]){if(_0x123850[_0x104df9(0x17a)]===_0x104df9(0xde)&&Array['isArray'](_0x123850[_0x104df9(0x183)]))for(const _0x56dc64 of _0x123850[_0x104df9(0x183)]){try{const _0x354cc8=_0x56dc64[_0x104df9(0x11a)]?.['name'],_0x501cbf=JSON['parse'](_0x56dc64['function']?.[_0x104df9(0xcd)]||'{}');if(_0x354cc8===_0x104df9(0x181))_0xced7fa[_0x104df9(0xf0)](_0x104df9(0x129)+_0x501cbf['pattern']+_0x104df9(0x161)+(_0x501cbf['path']||'.')+'`');else{if(_0x354cc8===_0x104df9(0x134))_0xced7fa[_0x104df9(0xf0)](_0x104df9(0x95)+_0x501cbf[_0x104df9(0x128)]+'`');else{if(_0x354cc8===_0x104df9(0x169))_0xced7fa['push'](_0x104df9(0xcf)+(_0x501cbf['command']||'.')+'`');else _0x354cc8===_0x104df9(0x193)&&_0xced7fa[_0x104df9(0xf0)](_0x104df9(0xab)+_0x501cbf[_0x104df9(0x12f)]+'`\x20in\x20`'+(_0x501cbf['path']||'.')+'`');}}}catch{}}}_0x4a5db8[_0x104df9(0xf0)](_0xced7fa[_0x104df9(0x18a)]('\x0a'));const _0x1d5c89=['',_0x104df9(0x12d)];for(const _0x40fd32 of _0x573264){if(_0x40fd32[_0x104df9(0x199)]==='*')_0x1d5c89[_0x104df9(0xf0)]('-\x20'+_0x40fd32[_0x104df9(0x128)]+':*');else{if(Array['isArray'](_0x40fd32[_0x104df9(0x199)])){const _0x2bced2=_0x40fd32[_0x104df9(0x199)][_0x104df9(0xce)](([_0x1ab220,_0x21b28c])=>{if(_0x1ab220===_0x21b28c)return''+_0x1ab220;return _0x1ab220+'-'+_0x21b28c;});_0x1d5c89[_0x104df9(0xf0)]('-\x20'+_0x40fd32[_0x104df9(0x128)]+':'+_0x2bced2[_0x104df9(0x18a)](','));}else _0x1d5c89['push']('-\x20'+_0x40fd32[_0x104df9(0x128)]+':*');}}_0x1d5c89['push'](''),_0x4a5db8['push'](_0x1d5c89[_0x104df9(0x18a)]('\x0a')),_0x4a5db8[_0x104df9(0xf0)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x2e27e9=[],_0x3adc90=[];for(const _0xce3396 of _0x573264){let _0x18af74=a0_0x422565[_0x104df9(0xe8)](_0x90dc19['data'][_0x104df9(0x11b)],_0xce3396[_0x104df9(0x128)]),_0x329da1=null,_0x328771=null;try{_0x329da1=await a0_0x3291b6[_0x104df9(0x11e)](_0x18af74,{'encoding':_0x104df9(0x14b)});}catch(_0x529774){const _0x31115d=fixPathRepetition(_0x18af74);if(_0x31115d)try{_0x329da1=await a0_0x3291b6[_0x104df9(0x11e)](_0x31115d,{'encoding':_0x104df9(0x14b)}),_0x18af74=_0x31115d;}catch{_0x328771=_0x529774 instanceof Error?_0x529774:new Error(String(_0x529774));}else _0x328771=_0x529774 instanceof Error?_0x529774:new Error(String(_0x529774));}if(_0x329da1!==null){const _0x3ad603=_0x329da1['split'](/\r?\n/),_0x45fece=[];if(_0xce3396['lines']==='*'||!Array[_0x104df9(0x9c)](_0xce3396[_0x104df9(0x199)]))for(let _0x3d822a=0x1;_0x3d822a<=_0x3ad603[_0x104df9(0xfd)];_0x3d822a++){const _0x1897f0=_0x3ad603[_0x3d822a-0x1];_0x45fece[_0x104df9(0xf0)](_0x3d822a+'|\x20'+_0x1897f0);}else for(const [_0x45bac4,_0x2f0d92]of _0xce3396[_0x104df9(0x199)]){_0x45fece[_0x104df9(0xfd)]>0x0&&_0x45fece['push']('');for(let _0x355639=_0x45bac4;_0x355639<=_0x2f0d92&&_0x355639<=_0x3ad603[_0x104df9(0xfd)];_0x355639++){const _0x57d842=_0x3ad603[_0x355639-0x1];_0x45fece[_0x104df9(0xf0)](_0x355639+'|\x20'+_0x57d842);}}_0x3adc90[_0x104df9(0xf0)]({'path':_0xce3396[_0x104df9(0x128)],'content':_0x45fece['join']('\x0a')});}else _0x2e27e9[_0x104df9(0xf0)](_0x104df9(0x142)+_0xce3396[_0x104df9(0x128)]+_0x104df9(0xdf)+(_0x328771?.[_0x104df9(0xc3)]||_0x104df9(0x117))+_0x104df9(0xa9));}try{const _0xdb5887=await compactFileContexts(_0x3adc90,_0x90dc19[_0x104df9(0xe2)][_0x104df9(0x14e)],MORPH_API_KEY,MORPH_API_URL);for(const _0x242b85 of _0xdb5887){_0x2e27e9[_0x104df9(0xf0)](_0x104df9(0x142)+_0x242b85[_0x104df9(0x128)]+'\x22>\x0a'+_0x242b85[_0x104df9(0x14f)]+_0x104df9(0xa9));}}catch(_0x5797b7){console[_0x104df9(0x105)](_0x104df9(0x147),_0x5797b7);for(const _0x1c7ad2 of _0x3adc90){_0x2e27e9[_0x104df9(0xf0)](_0x104df9(0x142)+_0x1c7ad2[_0x104df9(0x128)]+_0x104df9(0x13e)+_0x1c7ad2[_0x104df9(0x14f)]+_0x104df9(0xa9));}}_0x4a5db8[_0x104df9(0xf0)](_0x2e27e9[_0x104df9(0x18a)]('\x0a\x0a')),_0x80d10b=_0x4a5db8[_0x104df9(0x18a)]('\x0a');const _0x2c6fa9=_0x59b3e2['errors']?.['filter'](_0x23deee=>_0x23deee[_0x104df9(0xc3)]?.[_0x104df9(0x10c)](_0x104df9(0xa0)))||[];if(_0x2c6fa9['length']>0x0){const _0x17c229=_0x2c6fa9[_0x104df9(0xce)](_0x46cf89=>_0x46cf89['message'])[_0x104df9(0x18a)](';\x20');reportMorphError({'error_message':_0x17c229,'error_type':_0x104df9(0x119),'context':{'tool':_0x104df9(0x18b),'repo_path':_0x90dc19[_0x104df9(0xe2)][_0x104df9(0x11b)],'query':_0x90dc19[_0x104df9(0xe2)]['search_string'],'model':_0x104df9(0x9f),'termination_reason':_0x104df9(0xfe),'error_count':_0x2c6fa9[_0x104df9(0xfd)],'is_timeout':![],'timings':_0x59b3e2['timings'],'files_attempted':_0x573264[_0x104df9(0xce)](_0x4f5ada=>({'path':_0x4f5ada[_0x104df9(0x128)],'lines':_0x4f5ada[_0x104df9(0x199)]})),'tool_calls':_0x77631b(_0x59b3e2[_0x104df9(0x131)]),'messages':_0x59b3e2[_0x104df9(0x131)]?.[_0x104df9(0xce)](_0x446e32=>({'role':_0x446e32[_0x104df9(0x17a)],'content':_0x446e32[_0x104df9(0x14f)],..._0x446e32[_0x104df9(0x183)]?{'tool_calls':_0x446e32['tool_calls'][_0x104df9(0xfd)]}:{},..._0x446e32[_0x104df9(0x9d)]?{'tool_call_id':_0x446e32['tool_call_id']}:{}})),'request_content':{'query':_0x90dc19[_0x104df9(0xe2)]['search_string'],'repo_path':_0x90dc19[_0x104df9(0xe2)][_0x104df9(0x11b)],'repoRoot':a0_0x422565[_0x104df9(0xe8)](_0x90dc19[_0x104df9(0xe2)]['repo_path']),'model':_0x104df9(0x9f)}},'source':_0x104df9(0x104)})[_0x104df9(0x168)](()=>{});}}else{if(_0x59b3e2[_0x104df9(0x92)]===_0x104df9(0x93)&&_0x59b3e2['errors'][_0x104df9(0xfd)]>0x0){const _0x21a3b0=_0x59b3e2[_0x104df9(0xa5)][_0x104df9(0xce)](_0x5f1cba=>_0x5f1cba['message'])[_0x104df9(0x18a)](';\x20');_0x80d10b=_0x104df9(0x19e)+_0x21a3b0;const _0x14d9e9=_0x21a3b0[_0x104df9(0xd5)]()[_0x104df9(0xaa)](_0x104df9(0xc8))||_0x21a3b0[_0x104df9(0xd5)]()[_0x104df9(0xaa)](_0x104df9(0xe6))||_0x21a3b0['toLowerCase']()[_0x104df9(0xaa)]('etimedout'),_0x413e40=_0x59b3e2[_0x104df9(0x187)]?.['metadata']?.[_0x104df9(0xd6)],_0xa5a2e7=_0x59b3e2['errors'][0x0];reportMorphError({'error_message':_0x21a3b0,'error_type':_0x14d9e9?_0x104df9(0x16a):_0xa5a2e7?.[_0x104df9(0x179)]?.[_0x104df9(0x15b)]||_0x104df9(0x143),'context':{'tool':_0x104df9(0x18b),'repo_path':_0x90dc19['data'][_0x104df9(0x11b)],'query':_0x90dc19['data'][_0x104df9(0x14e)],'model':_0x104df9(0x9f),'termination_reason':_0x59b3e2[_0x104df9(0x92)],'error_count':_0x59b3e2[_0x104df9(0xa5)][_0x104df9(0xfd)],'is_timeout':_0x14d9e9,'timings':_0x59b3e2['timings'],'files_attempted':_0x413e40?.[_0x104df9(0xce)](_0x564bd1=>({'path':_0x564bd1['path'],'lines':_0x564bd1[_0x104df9(0x199)]})),'tool_calls':_0x77631b(_0x59b3e2[_0x104df9(0x131)]),'messages':_0x59b3e2[_0x104df9(0x131)]?.[_0x104df9(0xce)](_0x3a8d77=>({'role':_0x3a8d77[_0x104df9(0x17a)],'content':_0x3a8d77[_0x104df9(0x14f)],..._0x3a8d77[_0x104df9(0x183)]?{'tool_calls':_0x3a8d77[_0x104df9(0x183)][_0x104df9(0xfd)]}:{},..._0x3a8d77[_0x104df9(0x9d)]?{'tool_call_id':_0x3a8d77['tool_call_id']}:{}})),'request_content':{'query':_0x90dc19[_0x104df9(0xe2)][_0x104df9(0x14e)],'repo_path':_0x90dc19[_0x104df9(0xe2)][_0x104df9(0x11b)],'repoRoot':a0_0x422565[_0x104df9(0xe8)](_0x90dc19[_0x104df9(0xe2)][_0x104df9(0x11b)]),'model':_0x104df9(0x9f)}},'stack_trace':_0xa5a2e7?.[_0x104df9(0x190)]||undefined,'source':_0x104df9(0x104)})[_0x104df9(0x168)](()=>{});}else _0x80d10b=_0x104df9(0x189);}return{'content':[{'type':'text','text':_0x80d10b}]};}catch(_0x1008de){const _0x3fb76d=handleMorphAPIError(_0x1008de);if(_0x3fb76d)return _0x3fb76d;const _0x517069=_0x1008de instanceof Error?_0x1008de[_0x104df9(0xc3)]:String(_0x1008de),_0x32a5b6=_0x517069['toLowerCase']()[_0x104df9(0xaa)]('timeout')||_0x517069[_0x104df9(0xd5)]()[_0x104df9(0xaa)](_0x104df9(0xe6))||_0x517069[_0x104df9(0xd5)]()[_0x104df9(0xaa)](_0x104df9(0x99))||_0x1008de instanceof Error&&_0x1008de[_0x104df9(0x15b)]===_0x104df9(0x16a);return reportMorphError({'error_message':_0x517069,'error_type':_0x32a5b6?'TimeoutError':_0x1008de instanceof Error?_0x1008de[_0x104df9(0x179)][_0x104df9(0x15b)]:_0x104df9(0xe5),'context':{'tool':_0x104df9(0x18b),'repo_path':_0x90dc19[_0x104df9(0xe2)][_0x104df9(0x11b)],'query':_0x90dc19['data'][_0x104df9(0x14e)],'model':_0x104df9(0x9f),'is_timeout':_0x32a5b6,'exception_phase':_0x104df9(0xc6),'request_content':{'query':_0x90dc19[_0x104df9(0xe2)][_0x104df9(0x14e)],'repo_path':_0x90dc19[_0x104df9(0xe2)][_0x104df9(0x11b)],'repoRoot':a0_0x422565['resolve'](_0x90dc19[_0x104df9(0xe2)][_0x104df9(0x11b)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x1008de instanceof Error?_0x1008de[_0x104df9(0x190)]:undefined,'source':'mcp-filesystem'})[_0x104df9(0x168)](()=>{}),{'content':[{'type':'text','text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x517069}],'isError':![]};}}case _0x104df9(0xdd):{const _0x497eb4=WarpGrepGitHubArgsSchema['safeParse'](_0x4ce01a);if(!_0x497eb4[_0x104df9(0x162)])return{'content':[{'type':_0x104df9(0x153),'text':_0x104df9(0x120)+_0x497eb4[_0x104df9(0x105)]}],'isError':!![]};const _0x5f2cf2=_0x497eb4[_0x104df9(0xe2)]['github_url']||_0x497eb4['data'][_0x104df9(0x156)];if(!_0x5f2cf2)return{'content':[{'type':'text','text':_0x104df9(0x91)}],'isError':!![]};const _0x4b428c=MORPH_API_KEY;if(!_0x4b428c)throw new Error(_0x104df9(0x116));const _0x4c10a0=Date[_0x104df9(0xe1)]();logMcpStderr(_0x104df9(0xc9)+_0x5f2cf2+_0x104df9(0xef)+_0x497eb4[_0x104df9(0xe2)]['search_string']+'\x22');try{const _0x475ca1=new WarpGrepClient({'morphApiKey':_0x4b428c,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0xe68d58=await _0x475ca1['searchGitHub']({'searchTerm':_0x497eb4['data'][_0x104df9(0x14e)],'github':_0x5f2cf2,'branch':_0x497eb4[_0x104df9(0xe2)][_0x104df9(0xf4)]}),_0x39600d=Date[_0x104df9(0xe1)]()-_0x4c10a0;logMcpStderr(_0x104df9(0x11f)+_0x39600d+_0x104df9(0x9e)+_0xe68d58[_0x104df9(0x162)]);const _0x2782d2=formatResult(_0xe68d58);return{'content':[{'type':_0x104df9(0x153),'text':_0x2782d2}]};}catch(_0x32f47a){const _0x21b05a=handleMorphAPIError(_0x32f47a);if(_0x21b05a)return _0x21b05a;const _0x593d93=Date[_0x104df9(0xe1)]()-_0x4c10a0,_0x47ebdf=_0x32f47a instanceof Error?_0x32f47a['message']:String(_0x32f47a);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x593d93+_0x104df9(0xfb),_0x47ebdf),reportMorphError({'error_message':_0x47ebdf,'error_type':_0x32f47a instanceof Error?_0x32f47a['constructor'][_0x104df9(0x15b)]:_0x104df9(0xe5),'context':{'tool':_0x104df9(0xdd),'github_url':_0x5f2cf2,'search_string':_0x497eb4[_0x104df9(0xe2)][_0x104df9(0x14e)],'branch':_0x497eb4['data']['branch']},'stack_trace':_0x32f47a instanceof Error?_0x32f47a[_0x104df9(0x190)]:undefined,'source':_0x104df9(0x104),'tool':_0x104df9(0xdd),'latency_ms':_0x593d93})['catch'](()=>{}),{'content':[{'type':_0x104df9(0x153),'text':_0x104df9(0xd9)+_0x47ebdf}],'isError':![]};}}default:throw new Error(_0x104df9(0xe7)+_0x19b1b6);}}catch(_0x3606dc){const _0x25005d=_0x3606dc instanceof Error?_0x3606dc[_0x104df9(0xc3)]:String(_0x3606dc);return reportMorphError({'error_message':_0x25005d,'error_type':_0x3606dc instanceof Error?_0x3606dc[_0x104df9(0x179)][_0x104df9(0x15b)]:_0x104df9(0xe5),'context':{'tool':_0x19b1b6,'arguments':_0x4ce01a?JSON[_0x104df9(0xbc)](_0x4ce01a)[_0x104df9(0x12b)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x3606dc instanceof Error?_0x3606dc[_0x104df9(0x190)]:undefined,'source':_0x104df9(0x104)})[_0x104df9(0x168)](()=>{}),{'content':[{'type':'text','text':_0x104df9(0x19e)+_0x25005d}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x556b4e){const _0x1d38e6=a0_0x58d244,_0x513836=await getValidRootDirectories(_0x556b4e);if(_0x513836[_0x1d38e6(0xfd)]>0x0)allowedDirectories=[..._0x513836],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x513836[_0x1d38e6(0xfd)]+_0x1d38e6(0xad));else{logMcpStderr(_0x1d38e6(0x197));if(ENABLE_WORKSPACE_MODE)try{const _0x56f5f0=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x56f5f0&&(allowedDirectories=[_0x56f5f0],logMcpStderr(_0x1d38e6(0x176)+_0x56f5f0));}catch(_0x512cb4){logMcpStderr(_0x1d38e6(0x157)+_0x512cb4);}}}server[a0_0x58d244(0x19d)](RootsListChangedNotificationSchema,async()=>{const _0x5300e7=a0_0x58d244;try{const _0x2f22dd=await server[_0x5300e7(0xa1)]();_0x2f22dd&&_0x5300e7(0x18c)in _0x2f22dd&&await updateAllowedDirectoriesFromRoots(_0x2f22dd['roots']);}catch(_0x2d0661){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x2d0661 instanceof Error?_0x2d0661[_0x5300e7(0xc3)]:String(_0x2d0661));}}),server['oninitialized']=async()=>{const _0x40959c=a0_0x58d244,_0x7c52ce=server[_0x40959c(0x121)]();if(_0x7c52ce?.[_0x40959c(0x18c)])try{const _0x44faec=await server[_0x40959c(0xa1)]();_0x44faec&&'roots'in _0x44faec?await updateAllowedDirectoriesFromRoots(_0x44faec[_0x40959c(0x18c)]):logMcpStderr(_0x40959c(0xd3));}catch(_0x374f59){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x374f59 instanceof Error?_0x374f59[_0x40959c(0xc3)]:String(_0x374f59));}else{if(allowedDirectories['length']>0x0)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x40959c(0xd1));}}};async function runServer(){const _0x2fafca=a0_0x58d244,_0x1c6e3e=new StdioServerTransport();await server[_0x2fafca(0xca)](_0x1c6e3e),logMcpStderr(_0x2fafca(0xb3)),allowedDirectories[_0x2fafca(0xfd)]===0x0&&logMcpStderr(_0x2fafca(0xae));}runServer()['catch'](_0x4bc091=>{const _0x27c893=a0_0x58d244;logMcpStderr(_0x27c893(0x170),_0x4bc091),process[_0x27c893(0xc5)](0x1);});
|
|
2
|
+
const a0_0x6a1d90=a0_0x510c;(function(_0x78ebf1,_0x2933ff){const _0x1f5056=a0_0x510c,_0x1e9bd9=_0x78ebf1();while(!![]){try{const _0xf00c43=parseInt(_0x1f5056(0x142))/0x1*(-parseInt(_0x1f5056(0x172))/0x2)+-parseInt(_0x1f5056(0x13a))/0x3+parseInt(_0x1f5056(0x154))/0x4+-parseInt(_0x1f5056(0x190))/0x5+parseInt(_0x1f5056(0x155))/0x6*(-parseInt(_0x1f5056(0x91))/0x7)+parseInt(_0x1f5056(0x99))/0x8*(parseInt(_0x1f5056(0x133))/0x9)+parseInt(_0x1f5056(0x16e))/0xa;if(_0xf00c43===_0x2933ff)break;else _0x1e9bd9['push'](_0x1e9bd9['shift']());}catch(_0x224215){_0x1e9bd9['push'](_0x1e9bd9['shift']());}}}(a0_0x118d,0x5f2e7));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_0xfa1d17 from'fs/promises';import a0_0xf80882 from'path';import a0_0x183998 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';function a0_0x510c(_0x4f9f60,_0x4e7000){_0x4f9f60=_0x4f9f60-0x8a;const _0x118d7c=a0_0x118d();let _0x510cc3=_0x118d7c[_0x4f9f60];return _0x510cc3;}import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x186284 from'axios';function fixPathRepetition(_0x3210da){const _0x2b7f02=a0_0x510c,_0x144cae=_0x3210da[_0x2b7f02(0x147)](a0_0xf80882['sep'])['filter'](Boolean);if(_0x144cae[_0x2b7f02(0x116)]<0x2)return null;for(let _0x2abba9=Math[_0x2b7f02(0xd8)](_0x144cae['length']/0x2);_0x2abba9>=0x1;_0x2abba9--){for(let _0x599706=0x0;_0x599706<=_0x144cae[_0x2b7f02(0x116)]-0x2*_0x2abba9;_0x599706++){const _0x44a838=_0x144cae[_0x2b7f02(0x12a)](_0x599706,_0x599706+_0x2abba9),_0x3b3f5e=_0x144cae[_0x2b7f02(0x12a)](_0x599706+_0x2abba9,_0x599706+0x2*_0x2abba9);if(_0x44a838['every']((_0x2ffde8,_0x1d4412)=>_0x2ffde8===_0x3b3f5e[_0x1d4412])){const _0x1dc45c=[..._0x144cae['slice'](0x0,_0x599706),..._0x144cae[_0x2b7f02(0x12a)](_0x599706+_0x2abba9)];return a0_0xf80882[_0x2b7f02(0xe4)]+_0x1dc45c[_0x2b7f02(0x16d)](a0_0xf80882[_0x2b7f02(0xe4)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x1a7578=a0_0x510c;try{const _0x5d75ab=require(_0x1a7578(0x18e));return _0x5d75ab[_0x1a7578(0x12b)]??_0x1a7578(0x137);}catch(_0xf1a60e){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0xf1a60e),_0x1a7578(0x137);}}function printHelp(){const _0x5ac528=a0_0x510c;console[_0x5ac528(0x14f)]('@morphllm/morphmcp\x20'+getPackageVersion()),console['log']('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x5ac528(0x14f)](_0x5ac528(0x106)),console[_0x5ac528(0x14f)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console['log']('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0x5ac528(0x14f)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console['log'](_0x5ac528(0x146)),console[_0x5ac528(0x14f)]('\x20\x20morph-mcp'),console[_0x5ac528(0x14f)](_0x5ac528(0x149));}const cliArgs=process[a0_0x6a1d90(0xfa)][a0_0x6a1d90(0x12a)](0x2),VERSION_FLAGS=new Set([a0_0x6a1d90(0x13d),'-v','-V']),HELP_FLAGS=new Set([a0_0x6a1d90(0xe2),'-h']);cliArgs[a0_0x6a1d90(0x165)](_0x38613b=>VERSION_FLAGS[a0_0x6a1d90(0x1a6)](_0x38613b))&&(console['log'](a0_0x6a1d90(0x188)+getPackageVersion()),process[a0_0x6a1d90(0x18c)](0x0));cliArgs[a0_0x6a1d90(0x165)](_0x407b55=>HELP_FLAGS['has'](_0x407b55))&&(printHelp(),process[a0_0x6a1d90(0x18c)](0x0));function getCliArg(_0xf610f9){const _0x3a8da9=a0_0x6a1d90;for(let _0x5642f3=0x0;_0x5642f3<cliArgs[_0x3a8da9(0x116)];_0x5642f3++){const _0x43ebe3=cliArgs[_0x5642f3];if(_0x43ebe3[_0x3a8da9(0x122)]('--'+_0xf610f9+'='))return _0x43ebe3[_0x3a8da9(0x12a)](('--'+_0xf610f9+'=')[_0x3a8da9(0x116)]);if(_0x43ebe3==='--'+_0xf610f9&&_0x5642f3+0x1<cliArgs[_0x3a8da9(0x116)])return cliArgs[_0x5642f3+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x6a1d90(0x116)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x6a1d90(0x1a6)](arg)||HELP_FLAGS[a0_0x6a1d90(0x1a6)](arg))continue;if(arg[a0_0x6a1d90(0x122)]('--api-key='))continue;if(arg===a0_0x6a1d90(0xe3)){i++;continue;}args[a0_0x6a1d90(0x170)](arg);}const WORKSPACE_ROOT=process[a0_0x6a1d90(0xc4)][a0_0x6a1d90(0x121)]||process[a0_0x6a1d90(0xc4)][a0_0x6a1d90(0xec)]||process[a0_0x6a1d90(0xee)](),ENABLE_WORKSPACE_MODE=process[a0_0x6a1d90(0xc4)][a0_0x6a1d90(0x13e)]!=='false',MORPH_API_KEY=getCliArg(a0_0x6a1d90(0x14a))??process['env'][a0_0x6a1d90(0x11a)],MORPH_API_URL=process['env'][a0_0x6a1d90(0xba)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x6a1d90(0xc4)][a0_0x6a1d90(0xb1)]?parseInt(process[a0_0x6a1d90(0xc4)][a0_0x6a1d90(0xb1)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x6a1d90(0xe0),'codebase_search',a0_0x6a1d90(0x139)]),DISABLED_TOOLS=process[a0_0x6a1d90(0xc4)][a0_0x6a1d90(0x177)]?new Set(process[a0_0x6a1d90(0xc4)][a0_0x6a1d90(0x177)]['split'](',')[a0_0x6a1d90(0x157)](_0x151389=>_0x151389[a0_0x6a1d90(0x179)]())[a0_0x6a1d90(0xbf)](_0x3dc206=>_0x3dc206[a0_0x6a1d90(0x116)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x6a1d90(0xc6)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x6a1d90(0xf2)](a0_0x6a1d90(0x183)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES][a0_0x6a1d90(0x16d)](',\x20'));}console[a0_0x6a1d90(0xf2)](a0_0x6a1d90(0x13f)+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x6a1d90(0x122)]('sk-')&&!MORPH_API_KEY[a0_0x6a1d90(0x122)]('morph-')&&logMcpStderr(a0_0x6a1d90(0xfe));async function reportMorphError(_0x645140){const _0x1bb282=a0_0x6a1d90;try{await a0_0x186284['post'](_0x1bb282(0x19a),{..._0x645140,'timestamp':new Date()[_0x1bb282(0x184)](),'source':_0x645140['source']||_0x1bb282(0x119),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x645140['context']}},{'timeout':0x1388,'headers':{'Content-Type':_0x1bb282(0x176),'Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x273334,_0x5a96ac){const _0x624a12=a0_0x6a1d90;if(_0x273334&&typeof _0x273334===_0x624a12(0x102)&&_0x624a12(0x1aa)in _0x273334)return _0x273334[_0x624a12(0x1aa)];if(_0x273334&&typeof _0x273334===_0x624a12(0x102)&&_0x624a12(0xdd)in _0x273334)return _0x273334[_0x624a12(0xdd)]?.[_0x624a12(0x1aa)];const _0xcda2ec=_0x5a96ac[_0x624a12(0x160)](/\b(401|429)\b/);return _0xcda2ec?parseInt(_0xcda2ec[0x1],0xa):null;}function handleMorphAPIError(_0x311101){const _0x25145d=a0_0x6a1d90,_0x3be6d4=_0x311101 instanceof Error?_0x311101[_0x25145d(0xbe)]:String(_0x311101),_0x3f9795=extractStatusCode(_0x311101,_0x3be6d4);switch(_0x3f9795){case 0x191:return{'content':[{'type':_0x25145d(0x163),'text':_0x25145d(0x9c)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x25145d(0x163),'text':'Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.'}],'isError':!![]};default:return null;}}args[a0_0x6a1d90(0x116)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x6a1d90(0x167)),logMcpStderr(a0_0x6a1d90(0x1a2)),logMcpStderr(a0_0x6a1d90(0x189)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x6a1d90(0xf8)),logMcpStderr(a0_0x6a1d90(0x1a0)));function normalizePath(_0x4597ba){return a0_0xf80882['normalize'](_0x4597ba);}function a0_0x118d(){const _0x1214ef=['Fatal\x20error\x20running\x20server:','`\x20in\x20`','source','stack','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','slice','version','indexOf','Unknown\x20error','warn','read','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','isArray','branch','1246149JtwqwT','utf-8','morph-warp-grep-v2.1','Max\x20results\x20to\x20return','unknown','all','github_codebase_search','401610EqNZWE','TimeoutError','\x20as\x20allowed\x20directory','--version','ENABLE_WORKSPACE_MODE','Disabled\x20tools:\x20','success','Fallback:\x20Using\x20workspace\x20root\x20','159NOSiZu','catch','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','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','\x0aExamples:','split','toLowerCase','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','api-key','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.','description','Tool\x20','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','log','ms.\x20Success:\x20','Specific\x20commit\x20hash\x20to\x20search','WarpGrepError','includes','963604LmEHJA','6odRitk','ENOENT','map','function','substring','stringify','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','ReadError','[github_codebase_search]\x20Failed\x20in\x20','readFile','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','match','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','Cargo.toml','text','completed','some','morph-','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','isDirectory','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','setNotificationHandler','RipgrepError','[github_codebase_search]\x20Done\x20in\x20','join','12378920UOxaqo','FileNotFound','push','code_edit','3048dyXgAY','number','\x20error(s)','morph-v3-fast','application/json','DISABLED_TOOLS','[github_codebase_search]\x20Searching\x20','trim','files','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.','GitHub\x20search\x20failed:\x20','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','pyproject.toml','string','stat','.git','terminated','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','toISOString','terminationReason','PathError','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','@morphllm/morphmcp\x20','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','errors','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','exit','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','../package.json','github_url','1599835rTzRuI','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','parse','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','ToolException','runWarpGrep_call','File\x20read\x20error:','realpath','\x20disabled\x20via\x20DISABLED_TOOLS','package.json','https://morphllm.com/api/error-report','Warning:\x20','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','[codebase_search]\x20compaction\x20failed','\x27\x20in\x20`','boolean','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','\x22>\x0a','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Morph\x20Edit\x20','has','[could\x20not\x20read\x20file:\x20','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','status','connect','timeout','constructor','Tool\x20\x22','Invalid\x20arguments:\x20','setRequestHandler','❌\x20Morph\x20Edit\x20Failed:\x20','3718666SlEsDi','Relevant\x20context\x20found:','morph-mcp',',\x20removed\x20','.\x20Changes:\x20','homedir','searchGitHub','\x20is\x20not\x20a\x20directory','8heBBCU','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','added\x20','Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','roots','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','\x22>\x0aError\x20reading\x20file:\x20','dirname','listRoots','payload','Morph\x20FastApply\x20failed\x20without\x20error\x20message','Error:\x20','assistant','grep_search','requiresApiKey','Repository\x20identifier','Preview\x20changes\x20without\x20applying\x20them.','repo_path','<file\x20path=\x22','command','describe','Error\x20accessing\x20directory\x20','now','MORPH_WARP_GREP_TIMEOUT','SymlinkError','composer.json','Error\x20running\x20fast\x20context\x20search:\x20','-\x20Read\x20file\x20`','UnknownError','pattern','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','finish','MORPH_API_URL','linesRemoved','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','node_modules','message','filter','codebase_search','-\x20Grepped\x20\x27','params','RipgrepNotAvailable','env','role','size','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','ms:','linesAdded','grep','metadata','data','tool_calls','enum','list_directory','search_type','search_string','read\x20','dryRun','\x20for:\x20\x22','Created\x20File','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','Failed\x20to\x20request\x20roots\x20from\x20client:','floor','go.mod','WarpGrep\x20sub-tool\x20errors:\x20','glob\x20\x27','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','response','code','inputSchema','edit_file','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','--help','--api-key','sep','Applied','path','default','tool_call_id','.vscode','Unknown\x20tool:\x20','content','PWD','.cursor','cwd','timed\x20out','lines','glob','error','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','messages','For\x20deletions:\x0a','safeParse','min','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','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.','argv','basename','unknown\x20error','Parent\x20directory\x20does\x20not\x20exist:\x20','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','FileReadError','Workspace\x20mode\x20enabled:\x20Using\x20','instructions','object','arguments','changes','completionId','\x0aOptions:','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','Warning:\x20Workspace\x20fallback\x20failed:\x20','Benefits:\x0a','timings','\x0a</file>','sk-','name',',\x20modified\x20','instruction','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.','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','optional','resolve','length','BinaryFile','0.2.0','mcp-filesystem','MORPH_API_KEY','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','linesModified','.\x20Path:\x20','\x20valid\x20directories','array','etimedout','WORKSPACE_ROOT','startsWith','\x20chars)','owner_repo'];a0_0x118d=function(){return _0x1214ef;};return a0_0x118d();}function expandHome(_0x2b9364){const _0xd4f890=a0_0x6a1d90;if(_0x2b9364['startsWith']('~/')||_0x2b9364==='~')return a0_0xf80882['join'](a0_0x183998[_0xd4f890(0x96)](),_0x2b9364[_0xd4f890(0x12a)](0x1));return _0x2b9364;}let allowedDirectories=await Promise[a0_0x6a1d90(0x138)](args['map'](async _0x3e0dfb=>{const _0x5681f1=a0_0x6a1d90,_0x307059=expandHome(_0x3e0dfb),_0x365e4f=a0_0xf80882[_0x5681f1(0x115)](_0x307059);try{const _0x20d9e8=await a0_0xfa1d17[_0x5681f1(0x197)](_0x365e4f);return normalizePath(_0x20d9e8);}catch(_0x58c225){return normalizePath(_0x365e4f);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x6a1d90(0x116)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x6a1d90(0x170)](workspaceDir),logMcpStderr(a0_0x6a1d90(0x100)+workspaceDir+a0_0x6a1d90(0x13c)));}catch(a0_0x178045){logMcpStderr(a0_0x6a1d90(0x193)+a0_0x178045);}async function detectWorkspaceRoot(_0x58d9f8){const _0x24a3bd=a0_0x6a1d90;let _0x395258=a0_0xf80882['resolve'](_0x58d9f8);const _0x5c2afc=[_0x24a3bd(0x181),_0x24a3bd(0xe9),_0x24a3bd(0x199),_0x24a3bd(0x162),_0x24a3bd(0x17e),_0x24a3bd(0xd9),_0x24a3bd(0xed),'tsconfig.json',_0x24a3bd(0xb3)];while(_0x395258!==a0_0xf80882[_0x24a3bd(0xa1)](_0x395258)){for(const _0x39fdd6 of _0x5c2afc){const _0x31f7c3=a0_0xf80882[_0x24a3bd(0x16d)](_0x395258,_0x39fdd6);try{return await a0_0xfa1d17['access'](_0x31f7c3),normalizePath(_0x395258);}catch{}}_0x395258=a0_0xf80882['dirname'](_0x395258);}return normalizePath(_0x58d9f8);}await Promise['all'](args[a0_0x6a1d90(0x157)](async _0x46fa9b=>{const _0x46e2cb=a0_0x6a1d90;try{const _0x1fc90f=await a0_0xfa1d17[_0x46e2cb(0x180)](expandHome(_0x46fa9b));!_0x1fc90f[_0x46e2cb(0x168)]()&&(logMcpStderr(_0x46e2cb(0xa5)+_0x46fa9b+_0x46e2cb(0x98)),process[_0x46e2cb(0x18c)](0x1));}catch(_0x471909){logMcpStderr(_0x46e2cb(0xaf)+_0x46fa9b+':',_0x471909),process[_0x46e2cb(0x18c)](0x1);}}));async function validatePath(_0x2f7f77){const _0x28a3f7=a0_0x6a1d90,_0xb8d55e=expandHome(_0x2f7f77),_0x28887b=a0_0xf80882['resolve'](_0xb8d55e);try{const _0x46d122=await a0_0xfa1d17[_0x28a3f7(0x197)](_0x28887b);return _0x46d122;}catch(_0x29d1c0){if(_0x29d1c0[_0x28a3f7(0xde)]===_0x28a3f7(0x156)){const _0x22e949=a0_0xf80882[_0x28a3f7(0xa1)](_0x28887b);try{const _0x148d94=await a0_0xfa1d17[_0x28a3f7(0x197)](_0x22e949);return a0_0xf80882[_0x28a3f7(0x16d)](_0x148d94,a0_0xf80882[_0x28a3f7(0xfb)](_0x28887b));}catch{throw new Error(_0x28a3f7(0xfd)+_0x22e949);}}throw _0x29d1c0;}}const MorphEditFileArgsSchema=z[a0_0x6a1d90(0x102)]({'path':z[a0_0x6a1d90(0x17f)](),'code_edit':z[a0_0x6a1d90(0x17f)]()[a0_0x6a1d90(0xae)](a0_0x6a1d90(0x129)),'instruction':z[a0_0x6a1d90(0x17f)]()[a0_0x6a1d90(0xae)](a0_0x6a1d90(0x187)),'dryRun':z[a0_0x6a1d90(0x19f)]()[a0_0x6a1d90(0xe7)](![])[a0_0x6a1d90(0xae)](a0_0x6a1d90(0xaa))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x6a1d90(0x17b),WarpGrepArgsSchema=z[a0_0x6a1d90(0x102)]({'search_string':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x6a1d90(0x17f)]()[a0_0x6a1d90(0xae)](a0_0x6a1d90(0x144)),'search_type':z[a0_0x6a1d90(0xce)]([a0_0x6a1d90(0xe7),a0_0x6a1d90(0xbd)])['optional']()[a0_0x6a1d90(0xae)](a0_0x6a1d90(0xb8))}),WarpGrepGitHubArgsSchema=z[a0_0x6a1d90(0x102)]({'search_string':z[a0_0x6a1d90(0x17f)]()[a0_0x6a1d90(0xae)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x6a1d90(0x17f)]()['optional']()['describe'](a0_0x6a1d90(0xf9)),'owner_repo':z[a0_0x6a1d90(0x17f)]()[a0_0x6a1d90(0x114)]()['describe'](a0_0x6a1d90(0x161)),'branch':z['string']()[a0_0x6a1d90(0x114)]()[a0_0x6a1d90(0xae)](a0_0x6a1d90(0x9f))}),CodebaseSearchArgsSchema=z[a0_0x6a1d90(0x102)]({'query':z[a0_0x6a1d90(0x17f)]()[a0_0x6a1d90(0xae)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()['describe'](a0_0x6a1d90(0xa9)),'branch':z[a0_0x6a1d90(0x17f)]()[a0_0x6a1d90(0x114)]()[a0_0x6a1d90(0xae)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x6a1d90(0x17f)]()['optional']()['describe'](a0_0x6a1d90(0x151)),'targetDirectories':z[a0_0x6a1d90(0x11f)](z[a0_0x6a1d90(0x17f)]())[a0_0x6a1d90(0xe7)]([])[a0_0x6a1d90(0xae)](a0_0x6a1d90(0x18b)),'limit':z[a0_0x6a1d90(0x173)]()[a0_0x6a1d90(0x114)]()[a0_0x6a1d90(0xe7)](0xa)[a0_0x6a1d90(0xae)](a0_0x6a1d90(0x136))}),server=new Server({'name':a0_0x6a1d90(0x93),'version':a0_0x6a1d90(0x118)},{'capabilities':{'tools':{}}});server[a0_0x6a1d90(0x8f)](ListToolsRequestSchema,async()=>{const _0xf5c857=a0_0x6a1d90,_0x10ac1c=[{'name':_0xf5c857(0xe0),'description':_0xf5c857(0x169)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0xf5c857(0x1a8)+_0xf5c857(0xc7)+_0xf5c857(0x109)+_0xf5c857(0x14e)+_0xf5c857(0x19c)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0xf5c857(0x9a)+_0xf5c857(0x130)+_0xf5c857(0x1a3)+_0xf5c857(0x107)+_0xf5c857(0xf5)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0xf5c857(0x1a9)+'Rules:\x0a'+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0xf5c857(0x113)+_0xf5c857(0x1a4)+_0xf5c857(0xdc)+_0xf5c857(0x17d)+'IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0xf5c857(0xc0),'description':'A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20'+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20'+_0xf5c857(0x9d)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x2ed784=_0x10ac1c[_0xf5c857(0xbf)](_0x36bb66=>{const _0x2c1b0b=_0xf5c857;if(DISABLED_TOOLS['has'](_0x36bb66['name']))return console[_0x2c1b0b(0xf2)](_0x2c1b0b(0x14d)+_0x36bb66[_0x2c1b0b(0x10d)]+_0x2c1b0b(0x198)),![];if(_0x2c1b0b(0xa8)in _0x36bb66&&_0x36bb66[_0x2c1b0b(0xa8)]&&!MORPH_API_KEY)return logMcpStderr(_0x2c1b0b(0x19b)+_0x36bb66[_0x2c1b0b(0x10d)]+_0x2c1b0b(0x145)),![];return!![];});return{'tools':_0x2ed784[_0xf5c857(0x157)](_0x2ea795=>({'name':_0x2ea795[_0xf5c857(0x10d)],'description':_0x2ea795[_0xf5c857(0x14c)],'inputSchema':_0x2ea795[_0xf5c857(0xdf)]}))};}),server[a0_0x6a1d90(0x8f)](CallToolRequestSchema,async _0x29562c=>{const _0x3ced32=a0_0x6a1d90,{name:_0x3c070f,arguments:_0x4b75f2}=_0x29562c[_0x3ced32(0xc2)];try{if(!MORPH_API_KEY)return{'content':[{'type':'text','text':_0x3ced32(0x15f)}],'isError':!![]};if(!MORPH_API_KEY[_0x3ced32(0x122)](_0x3ced32(0x10c))&&!MORPH_API_KEY['startsWith'](_0x3ced32(0x166)))return{'content':[{'type':'text','text':_0x3ced32(0x14b)}],'isError':!![]};if(DISABLED_TOOLS[_0x3ced32(0x1a6)](_0x3c070f))throw new Error(_0x3ced32(0x8d)+_0x3c070f+_0x3ced32(0xbc));switch(_0x3c070f){case _0x3ced32(0xe0):{const _0x5ea977=_0x4b75f2&&typeof _0x4b75f2===_0x3ced32(0x102)&&_0x3ced32(0x101)in _0x4b75f2&&!('instruction'in _0x4b75f2)?{..._0x4b75f2,'instruction':_0x4b75f2[_0x3ced32(0x101)],'instructions':undefined}:_0x4b75f2,_0x11a759=MorphEditFileArgsSchema[_0x3ced32(0xf6)](_0x5ea977);if(!_0x11a759[_0x3ced32(0x140)])throw new Error(_0x3ced32(0x11b)+_0x11a759[_0x3ced32(0xf2)]);const _0x5c4d02=await validatePath(_0x11a759['data'][_0x3ced32(0xe6)]);let _0x4e0613=null,_0x26dd67=!![],_0x2b10c8=null;try{_0x4e0613=await a0_0xfa1d17[_0x3ced32(0x15e)](_0x5c4d02,_0x3ced32(0x134));}catch(_0x5b1cfc){const _0x39bc11=_0x5b1cfc[_0x3ced32(0xde)];_0x39bc11===_0x3ced32(0x156)?(_0x26dd67=![],_0x4e0613=''):(_0x2b10c8='Failed\x20to\x20read\x20file:\x20'+(_0x39bc11||'unknown')+'\x20-\x20'+(_0x5b1cfc instanceof Error?_0x5b1cfc[_0x3ced32(0xbe)]:String(_0x5b1cfc)),logMcpStderr(_0x3ced32(0x19b)+_0x2b10c8));}let _0x283f09;try{const _0x568ccb=MORPH_API_KEY;if(!_0x568ccb)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x352bff=a0_0xf80882['dirname'](_0x5c4d02),_0x2b8ef1=a0_0xf80882['basename'](_0x5c4d02),_0x577374=await executeEditFile({'target_filepath':_0x2b8ef1,'code_edit':_0x11a759['data'][_0x3ced32(0x171)],'instruction':_0x11a759[_0x3ced32(0xcc)][_0x3ced32(0x10f)]},{'morphApiKey':_0x568ccb,'morphApiUrl':MORPH_API_URL,'baseDir':_0x352bff,'autoWrite':!_0x11a759[_0x3ced32(0xcc)][_0x3ced32(0xd3)],'generateUdiff':![],'debug':![]});_0x283f09=_0x577374[_0x3ced32(0x105)];if(!_0x577374[_0x3ced32(0x140)])throw new Error(_0x577374[_0x3ced32(0xf2)]||_0x3ced32(0xa4));const _0x3b9b26=_0x577374[_0x3ced32(0x104)],_0x2f64cd=_0x3ced32(0x9b)+_0x3b9b26[_0x3ced32(0xc9)]+_0x3ced32(0x94)+_0x3b9b26[_0x3ced32(0xbb)]+_0x3ced32(0x10e)+_0x3b9b26[_0x3ced32(0x11c)];if(_0x11a759[_0x3ced32(0xcc)]['dryRun'])return{'content':[{'type':_0x3ced32(0x163),'text':'Morph\x20Edit\x20Preview'+(_0x26dd67?'':'\x20(new\x20file)')+':\x20'+_0x11a759['data'][_0x3ced32(0x10f)]+_0x3ced32(0x95)+_0x2f64cd+_0x3ced32(0x11d)+_0x11a759['data'][_0x3ced32(0xe6)]+'.'}]};return{'content':[{'type':'text','text':_0x3ced32(0x1a5)+(_0x26dd67?_0x3ced32(0xe5):_0x3ced32(0xd5))+':\x20'+_0x11a759[_0x3ced32(0xcc)][_0x3ced32(0x10f)]+'.\x20Changes:\x20'+_0x2f64cd+_0x3ced32(0x11d)+_0x11a759[_0x3ced32(0xcc)]['path']+'.'}]};}catch(_0x2b9bd7){const _0x517e17=handleMorphAPIError(_0x2b9bd7);if(_0x517e17)return _0x517e17;const _0x14e73e=_0x2b9bd7 instanceof Error?_0x2b9bd7['message']:String(_0x2b9bd7);return reportMorphError({'error_message':_0x14e73e,'error_type':_0x2b9bd7 instanceof Error?_0x2b9bd7[_0x3ced32(0x8c)][_0x3ced32(0x10d)]:_0x3ced32(0xb6),'context':{'tool':_0x3ced32(0xe0),'completion_id':_0x283f09,'file_path':_0x11a759[_0x3ced32(0xcc)][_0x3ced32(0xe6)],'validated_path':_0x5c4d02,'instruction':_0x11a759[_0x3ced32(0xcc)][_0x3ced32(0x10f)],'model':_0x3ced32(0x175),'dry_run':_0x11a759[_0x3ced32(0xcc)][_0x3ced32(0xd3)],'file_exists':_0x26dd67,'file_read_error':_0x2b10c8,'file_readable':_0x4e0613!==null,'request_content':{'path':_0x11a759['data'][_0x3ced32(0xe6)],'code_edit':_0x11a759[_0x3ced32(0xcc)][_0x3ced32(0x171)],'instruction':_0x11a759['data'][_0x3ced32(0x10f)],'original_code':_0x4e0613!==null?_0x4e0613[_0x3ced32(0x116)]>0xc350?_0x4e0613[_0x3ced32(0x159)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x4e0613[_0x3ced32(0x116)]+_0x3ced32(0x123):_0x4e0613:_0x3ced32(0x1a7)+(_0x2b10c8||_0x3ced32(0xfc))+']','original_code_length':_0x4e0613?.[_0x3ced32(0x116)]??0x0,'model':'morph-v3-fast','dry_run':_0x11a759[_0x3ced32(0xcc)][_0x3ced32(0xd3)]}},'stack_trace':_0x2b9bd7 instanceof Error?_0x2b9bd7[_0x3ced32(0x128)]:undefined,'source':_0x3ced32(0x119)})[_0x3ced32(0x143)](()=>{}),{'content':[{'type':_0x3ced32(0x163),'text':_0x3ced32(0x90)+_0x14e73e}],'isError':!![]};}}case _0x3ced32(0xc0):{const _0x6a6635=WarpGrepArgsSchema['safeParse'](_0x4b75f2);if(!_0x6a6635[_0x3ced32(0x140)])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x6a6635['error']}],'isError':!![]};const _0x48c7ee=_0x33998c=>{const _0x10f1ff=_0x3ced32,_0x26002a=[];for(const _0x4514b3 of _0x33998c||[]){if(_0x4514b3[_0x10f1ff(0xc5)]===_0x10f1ff(0xa6)&&Array[_0x10f1ff(0x131)](_0x4514b3['tool_calls']))for(const _0x10b4a7 of _0x4514b3[_0x10f1ff(0xcd)]){try{const _0x4a3f3d=_0x10b4a7['function']?.[_0x10f1ff(0x10d)],_0x18efc1=JSON['parse'](_0x10b4a7['function']?.[_0x10f1ff(0x103)]||'{}');if(_0x4a3f3d===_0x10f1ff(0xa7))_0x26002a['push']('grep\x20\x27'+_0x18efc1[_0x10f1ff(0xb7)]+'\x27\x20'+(_0x18efc1['path']||'.'));else{if(_0x4a3f3d==='read')_0x26002a['push'](_0x10f1ff(0xd2)+_0x18efc1['path']);else{if(_0x4a3f3d===_0x10f1ff(0xcf))_0x26002a[_0x10f1ff(0x170)]('list_directory\x20'+(_0x18efc1['command']||'.'));else{if(_0x4a3f3d==='glob')_0x26002a['push'](_0x10f1ff(0xdb)+_0x18efc1[_0x10f1ff(0xb7)]+'\x27\x20'+(_0x18efc1[_0x10f1ff(0xe6)]||'.'));else _0x4a3f3d===_0x10f1ff(0xb9)&&_0x26002a['push'](_0x10f1ff(0xb9));}}}}catch{}}}return _0x26002a;},_0x578a0f=_0xe826ab=>{const _0x1f34ba=_0x3ced32,_0x16a1db=[];if(!_0xe826ab||!Array[_0x1f34ba(0x131)](_0xe826ab))return _0x16a1db;const _0x3773ea=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x1f34ba(0x16f),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x1f34ba(0x186),'tool':_0x1f34ba(0x12f)},{'pattern':/\[READ ERROR\]/,'error_type':_0x1f34ba(0x15c),'tool':_0x1f34ba(0x12f)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x1f34ba(0x16b),'tool':_0x1f34ba(0xca)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x1f34ba(0xc3),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':_0x1f34ba(0x117),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x1f34ba(0xb2),'tool':_0x1f34ba(0x12f)},{'pattern':/not a text file/,'error_type':_0x1f34ba(0x117),'tool':_0x1f34ba(0x12f)},{'pattern':/symbolic link/,'error_type':_0x1f34ba(0xb2),'tool':_0x1f34ba(0x12f)},{'pattern':/Error reading file:/,'error_type':_0x1f34ba(0x15c),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x1f34ba(0x194),'tool':_0x1f34ba(0x137)}];let _0x415f75=0x0;for(const _0x247cdc of _0xe826ab){_0x247cdc[_0x1f34ba(0xc5)]===_0x1f34ba(0xa6)&&Array['isArray'](_0x247cdc['tool_calls'])&&_0x415f75++;const _0x443640=_0x247cdc[_0x1f34ba(0xeb)];if((_0x247cdc[_0x1f34ba(0xc5)]==='tool'||_0x247cdc[_0x1f34ba(0xc5)]==='user')&&_0x443640&&typeof _0x443640===_0x1f34ba(0x17f))for(const {pattern:_0x2c6bb0,error_type:_0x42f601,tool:_0x44204f}of _0x3773ea){const _0x5a7800=_0x443640['match'](new RegExp(_0x2c6bb0[_0x1f34ba(0x127)],'g'));if(_0x5a7800)for(const _0x2b05ed of _0x5a7800){const _0x1cf14f=_0x443640[_0x1f34ba(0x12c)](_0x2b05ed),_0x1d054a=_0x443640[_0x1f34ba(0x159)](_0x1cf14f,Math[_0x1f34ba(0xf7)](_0x1cf14f+0xc8,_0x443640[_0x1f34ba(0x116)]));_0x16a1db['push']({'tool':_0x44204f,'error_type':_0x42f601,'error_message':_0x1d054a[_0x1f34ba(0x147)]('\x0a')[0x0],'turn':_0x415f75});}}}return _0x16a1db;};try{const _0x2725cf=a0_0xf80882['resolve'](_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xab)]),_0x275229=_0x6a6635['data'][_0x3ced32(0xd0)],_0x24d3e1=_0x275229===_0x3ced32(0xbd)?{'allowNames':['node_modules']}:undefined,_0x894d43=new LocalRipgrepProvider(_0x2725cf,undefined,_0x24d3e1),_0x1e8483=await runWarpGrep({'searchTerm':_0x6a6635['data'][_0x3ced32(0xd1)],'repoRoot':_0x2725cf,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x894d43,'search_type':_0x275229}),_0x513f4b=_0x578a0f(_0x1e8483[_0x3ced32(0xf4)]);_0x513f4b['length']>0x0&&reportMorphError({'error_message':_0x3ced32(0xda)+_0x513f4b['length']+_0x3ced32(0x174),'error_type':'SubToolError','level':_0x3ced32(0x12e),'tool':_0x3ced32(0xc0),'context':{'repo_path':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xab)],'query':_0x6a6635[_0x3ced32(0xcc)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x1e8483[_0x3ced32(0x185)],'sub_tool_errors':_0x513f4b,'timings':_0x1e8483['timings'],'tool_calls':_0x48c7ee(_0x1e8483[_0x3ced32(0xf4)]),'messages':_0x1e8483[_0x3ced32(0xf4)]?.['map'](_0x262b01=>({'role':_0x262b01[_0x3ced32(0xc5)],'content':_0x262b01[_0x3ced32(0xeb)],..._0x262b01[_0x3ced32(0xcd)]?{'tool_calls':_0x262b01['tool_calls'][_0x3ced32(0x116)]}:{},..._0x262b01[_0x3ced32(0xe8)]?{'tool_call_id':_0x262b01['tool_call_id']}:{}}))},'source':'mcp-filesystem'})[_0x3ced32(0x143)](()=>{});let _0x315696='';if(_0x1e8483['terminationReason']===_0x3ced32(0x164)&&_0x1e8483[_0x3ced32(0xb9)]?.['metadata']?.[_0x3ced32(0x17a)]){const _0x274d43=_0x1e8483[_0x3ced32(0xb9)][_0x3ced32(0xcb)][_0x3ced32(0x17a)];if(_0x274d43[_0x3ced32(0x116)]===0x0)return _0x315696=_0x1e8483[_0x3ced32(0xb9)][_0x3ced32(0xa3)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x3ced32(0x163),'text':_0x315696}]};const _0x4d7179=[],_0x2b4e00=[_0x3ced32(0x191)];for(const _0x4e6612 of _0x1e8483[_0x3ced32(0xf4)]){if(_0x4e6612[_0x3ced32(0xc5)]==='assistant'&&Array[_0x3ced32(0x131)](_0x4e6612['tool_calls']))for(const _0x127822 of _0x4e6612[_0x3ced32(0xcd)]){try{const _0x28e1d2=_0x127822[_0x3ced32(0x158)]?.['name'],_0x50e38c=JSON[_0x3ced32(0x192)](_0x127822[_0x3ced32(0x158)]?.[_0x3ced32(0x103)]||'{}');if(_0x28e1d2==='grep_search')_0x2b4e00[_0x3ced32(0x170)](_0x3ced32(0xc1)+_0x50e38c[_0x3ced32(0xb7)]+_0x3ced32(0x19e)+(_0x50e38c[_0x3ced32(0xe6)]||'.')+'`');else{if(_0x28e1d2===_0x3ced32(0x12f))_0x2b4e00[_0x3ced32(0x170)](_0x3ced32(0xb5)+_0x50e38c[_0x3ced32(0xe6)]+'`');else{if(_0x28e1d2===_0x3ced32(0xcf))_0x2b4e00[_0x3ced32(0x170)]('-\x20Listed\x20directory\x20`'+(_0x50e38c[_0x3ced32(0xad)]||'.')+'`');else _0x28e1d2===_0x3ced32(0xf1)&&_0x2b4e00[_0x3ced32(0x170)]('-\x20Glob\x20search\x20`'+_0x50e38c[_0x3ced32(0xb7)]+_0x3ced32(0x126)+(_0x50e38c[_0x3ced32(0xe6)]||'.')+'`');}}}catch{}}}_0x4d7179[_0x3ced32(0x170)](_0x2b4e00['join']('\x0a'));const _0x43c167=['',_0x3ced32(0x92)];for(const _0x5c306d of _0x274d43){if(_0x5c306d[_0x3ced32(0xf0)]==='*')_0x43c167[_0x3ced32(0x170)]('-\x20'+_0x5c306d[_0x3ced32(0xe6)]+':*');else{if(Array[_0x3ced32(0x131)](_0x5c306d[_0x3ced32(0xf0)])){const _0x2ad441=_0x5c306d['lines'][_0x3ced32(0x157)](([_0xe9254d,_0x3592e8])=>{if(_0xe9254d===_0x3592e8)return''+_0xe9254d;return _0xe9254d+'-'+_0x3592e8;});_0x43c167[_0x3ced32(0x170)]('-\x20'+_0x5c306d[_0x3ced32(0xe6)]+':'+_0x2ad441[_0x3ced32(0x16d)](','));}else _0x43c167['push']('-\x20'+_0x5c306d[_0x3ced32(0xe6)]+':*');}}_0x43c167[_0x3ced32(0x170)](''),_0x4d7179[_0x3ced32(0x170)](_0x43c167['join']('\x0a')),_0x4d7179['push']('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x1f1085=[],_0x3d80f3=[];for(const _0x535d38 of _0x274d43){let _0x21fcf6=a0_0xf80882[_0x3ced32(0x115)](_0x6a6635['data'][_0x3ced32(0xab)],_0x535d38[_0x3ced32(0xe6)]),_0x2e3750=null,_0x5ca29c=null;try{_0x2e3750=await a0_0xfa1d17[_0x3ced32(0x15e)](_0x21fcf6,{'encoding':_0x3ced32(0x134)});}catch(_0x21cbe1){const _0x260e49=fixPathRepetition(_0x21fcf6);if(_0x260e49)try{_0x2e3750=await a0_0xfa1d17[_0x3ced32(0x15e)](_0x260e49,{'encoding':_0x3ced32(0x134)}),_0x21fcf6=_0x260e49;}catch{_0x5ca29c=_0x21cbe1 instanceof Error?_0x21cbe1:new Error(String(_0x21cbe1));}else _0x5ca29c=_0x21cbe1 instanceof Error?_0x21cbe1:new Error(String(_0x21cbe1));}if(_0x2e3750!==null){const _0x27a72a=_0x2e3750['split'](/\r?\n/),_0x382291=[];if(_0x535d38[_0x3ced32(0xf0)]==='*'||!Array[_0x3ced32(0x131)](_0x535d38[_0x3ced32(0xf0)]))for(let _0x1b1ca4=0x1;_0x1b1ca4<=_0x27a72a[_0x3ced32(0x116)];_0x1b1ca4++){const _0x2cf3d0=_0x27a72a[_0x1b1ca4-0x1];_0x382291[_0x3ced32(0x170)](_0x1b1ca4+'|\x20'+_0x2cf3d0);}else for(const [_0xb6f575,_0x49ea96]of _0x535d38['lines']){_0x382291['length']>0x0&&_0x382291[_0x3ced32(0x170)]('');for(let _0x29fb87=_0xb6f575;_0x29fb87<=_0x49ea96&&_0x29fb87<=_0x27a72a['length'];_0x29fb87++){const _0xb75eae=_0x27a72a[_0x29fb87-0x1];_0x382291[_0x3ced32(0x170)](_0x29fb87+'|\x20'+_0xb75eae);}}_0x3d80f3[_0x3ced32(0x170)]({'path':_0x535d38[_0x3ced32(0xe6)],'content':_0x382291[_0x3ced32(0x16d)]('\x0a')});}else _0x1f1085[_0x3ced32(0x170)](_0x3ced32(0xac)+_0x535d38['path']+_0x3ced32(0xa0)+(_0x5ca29c?.[_0x3ced32(0xbe)]||_0x3ced32(0x12d))+_0x3ced32(0x10b));}try{const _0x165566=await compactFileContexts(_0x3d80f3,_0x6a6635[_0x3ced32(0xcc)]['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x38c0a9 of _0x165566){_0x1f1085[_0x3ced32(0x170)](_0x3ced32(0xac)+_0x38c0a9[_0x3ced32(0xe6)]+_0x3ced32(0x1a1)+_0x38c0a9['content']+'\x0a</file>');}}catch(_0x4ec629){console[_0x3ced32(0xf2)](_0x3ced32(0x19d),_0x4ec629);for(const _0x9be840 of _0x3d80f3){_0x1f1085[_0x3ced32(0x170)]('<file\x20path=\x22'+_0x9be840[_0x3ced32(0xe6)]+_0x3ced32(0x1a1)+_0x9be840[_0x3ced32(0xeb)]+_0x3ced32(0x10b));}}_0x4d7179[_0x3ced32(0x170)](_0x1f1085['join']('\x0a\x0a')),_0x315696=_0x4d7179[_0x3ced32(0x16d)]('\x0a');const _0x1c7f8d=_0x1e8483[_0x3ced32(0x18a)]?.[_0x3ced32(0xbf)](_0x41aa43=>_0x41aa43[_0x3ced32(0xbe)]?.[_0x3ced32(0x122)](_0x3ced32(0x196)))||[];if(_0x1c7f8d['length']>0x0){const _0xba8e35=_0x1c7f8d['map'](_0x2cd890=>_0x2cd890['message'])[_0x3ced32(0x16d)](';\x20');reportMorphError({'error_message':_0xba8e35,'error_type':_0x3ced32(0xff),'context':{'tool':_0x3ced32(0xc0),'repo_path':_0x6a6635[_0x3ced32(0xcc)]['repo_path'],'query':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xd1)],'model':_0x3ced32(0x135),'termination_reason':'completed_with_file_errors','error_count':_0x1c7f8d[_0x3ced32(0x116)],'is_timeout':![],'timings':_0x1e8483[_0x3ced32(0x10a)],'files_attempted':_0x274d43[_0x3ced32(0x157)](_0x523506=>({'path':_0x523506[_0x3ced32(0xe6)],'lines':_0x523506[_0x3ced32(0xf0)]})),'tool_calls':_0x48c7ee(_0x1e8483[_0x3ced32(0xf4)]),'messages':_0x1e8483[_0x3ced32(0xf4)]?.[_0x3ced32(0x157)](_0x5880b0=>({'role':_0x5880b0[_0x3ced32(0xc5)],'content':_0x5880b0['content'],..._0x5880b0[_0x3ced32(0xcd)]?{'tool_calls':_0x5880b0[_0x3ced32(0xcd)][_0x3ced32(0x116)]}:{},..._0x5880b0[_0x3ced32(0xe8)]?{'tool_call_id':_0x5880b0['tool_call_id']}:{}})),'request_content':{'query':_0x6a6635['data']['search_string'],'repo_path':_0x6a6635[_0x3ced32(0xcc)]['repo_path'],'repoRoot':a0_0xf80882[_0x3ced32(0x115)](_0x6a6635['data'][_0x3ced32(0xab)]),'model':_0x3ced32(0x135)}},'source':_0x3ced32(0x119)})['catch'](()=>{});}}else{if(_0x1e8483[_0x3ced32(0x185)]===_0x3ced32(0x182)&&_0x1e8483['errors'][_0x3ced32(0x116)]>0x0){const _0x2c1769=_0x1e8483['errors'][_0x3ced32(0x157)](_0x59c3eb=>_0x59c3eb['message'])[_0x3ced32(0x16d)](';\x20');_0x315696='Error:\x20'+_0x2c1769;const _0xfb3aee=_0x2c1769[_0x3ced32(0x148)]()[_0x3ced32(0x153)]('timeout')||_0x2c1769[_0x3ced32(0x148)]()[_0x3ced32(0x153)](_0x3ced32(0xef))||_0x2c1769[_0x3ced32(0x148)]()[_0x3ced32(0x153)]('etimedout'),_0x584fe5=_0x1e8483[_0x3ced32(0xb9)]?.[_0x3ced32(0xcb)]?.[_0x3ced32(0x17a)],_0x15a493=_0x1e8483['errors'][0x0];reportMorphError({'error_message':_0x2c1769,'error_type':_0xfb3aee?_0x3ced32(0x13b):_0x15a493?.[_0x3ced32(0x8c)]?.[_0x3ced32(0x10d)]||_0x3ced32(0x152),'context':{'tool':_0x3ced32(0xc0),'repo_path':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xab)],'query':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xd1)],'model':_0x3ced32(0x135),'termination_reason':_0x1e8483['terminationReason'],'error_count':_0x1e8483['errors'][_0x3ced32(0x116)],'is_timeout':_0xfb3aee,'timings':_0x1e8483[_0x3ced32(0x10a)],'files_attempted':_0x584fe5?.[_0x3ced32(0x157)](_0x251ef0=>({'path':_0x251ef0[_0x3ced32(0xe6)],'lines':_0x251ef0[_0x3ced32(0xf0)]})),'tool_calls':_0x48c7ee(_0x1e8483[_0x3ced32(0xf4)]),'messages':_0x1e8483[_0x3ced32(0xf4)]?.[_0x3ced32(0x157)](_0x24fec2=>({'role':_0x24fec2['role'],'content':_0x24fec2['content'],..._0x24fec2[_0x3ced32(0xcd)]?{'tool_calls':_0x24fec2[_0x3ced32(0xcd)]['length']}:{},..._0x24fec2[_0x3ced32(0xe8)]?{'tool_call_id':_0x24fec2['tool_call_id']}:{}})),'request_content':{'query':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xd1)],'repo_path':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xab)],'repoRoot':a0_0xf80882[_0x3ced32(0x115)](_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xab)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x15a493?.[_0x3ced32(0x128)]||undefined,'source':_0x3ced32(0x119)})[_0x3ced32(0x143)](()=>{});}else _0x315696=_0x3ced32(0x15b);}return{'content':[{'type':_0x3ced32(0x163),'text':_0x315696}]};}catch(_0x357f2e){const _0x4486c3=handleMorphAPIError(_0x357f2e);if(_0x4486c3)return _0x4486c3;const _0xfdad21=_0x357f2e instanceof Error?_0x357f2e[_0x3ced32(0xbe)]:String(_0x357f2e),_0x30bce6=_0xfdad21['toLowerCase']()[_0x3ced32(0x153)](_0x3ced32(0x8b))||_0xfdad21[_0x3ced32(0x148)]()[_0x3ced32(0x153)](_0x3ced32(0xef))||_0xfdad21[_0x3ced32(0x148)]()[_0x3ced32(0x153)](_0x3ced32(0x120))||_0x357f2e instanceof Error&&_0x357f2e[_0x3ced32(0x10d)]===_0x3ced32(0x13b);return reportMorphError({'error_message':_0xfdad21,'error_type':_0x30bce6?'TimeoutError':_0x357f2e instanceof Error?_0x357f2e[_0x3ced32(0x8c)][_0x3ced32(0x10d)]:_0x3ced32(0xb6),'context':{'tool':_0x3ced32(0xc0),'repo_path':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xab)],'query':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xd1)],'model':'morph-warp-grep-v2.1','is_timeout':_0x30bce6,'exception_phase':_0x3ced32(0x195),'request_content':{'query':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xd1)],'repo_path':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xab)],'repoRoot':a0_0xf80882[_0x3ced32(0x115)](_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xab)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x357f2e instanceof Error?_0x357f2e[_0x3ced32(0x128)]:undefined,'source':_0x3ced32(0x119)})['catch'](()=>{}),{'content':[{'type':'text','text':_0x3ced32(0xb4)+_0xfdad21}],'isError':![]};}}case _0x3ced32(0x139):{const _0x118f5a=WarpGrepGitHubArgsSchema['safeParse'](_0x4b75f2);if(!_0x118f5a[_0x3ced32(0x140)])return{'content':[{'type':_0x3ced32(0x163),'text':_0x3ced32(0x8e)+_0x118f5a[_0x3ced32(0xf2)]}],'isError':!![]};const _0x2b4a8c=_0x118f5a[_0x3ced32(0xcc)][_0x3ced32(0x18f)]||_0x118f5a['data'][_0x3ced32(0x124)];if(!_0x2b4a8c)return{'content':[{'type':_0x3ced32(0x163),'text':_0x3ced32(0x112)}],'isError':!![]};const _0x5b1211=MORPH_API_KEY;if(!_0x5b1211)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x3a966e=Date['now']();logMcpStderr(_0x3ced32(0x178)+_0x2b4a8c+_0x3ced32(0xd4)+_0x118f5a[_0x3ced32(0xcc)][_0x3ced32(0xd1)]+'\x22');try{const _0x15ed17=new WarpGrepClient({'morphApiKey':_0x5b1211,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x15980d=await _0x15ed17[_0x3ced32(0x97)]({'searchTerm':_0x118f5a[_0x3ced32(0xcc)][_0x3ced32(0xd1)],'github':_0x2b4a8c,'branch':_0x118f5a[_0x3ced32(0xcc)][_0x3ced32(0x132)]}),_0x4195db=Date['now']()-_0x3a966e;logMcpStderr(_0x3ced32(0x16c)+_0x4195db+_0x3ced32(0x150)+_0x15980d[_0x3ced32(0x140)]);const _0x2972a8=formatResult(_0x15980d);return{'content':[{'type':_0x3ced32(0x163),'text':_0x2972a8}]};}catch(_0x8fd194){const _0x6b47fe=handleMorphAPIError(_0x8fd194);if(_0x6b47fe)return _0x6b47fe;const _0x5d1f20=Date[_0x3ced32(0xb0)]()-_0x3a966e,_0x2ceb9d=_0x8fd194 instanceof Error?_0x8fd194[_0x3ced32(0xbe)]:String(_0x8fd194);return logMcpStderr(_0x3ced32(0x15d)+_0x5d1f20+_0x3ced32(0xc8),_0x2ceb9d),reportMorphError({'error_message':_0x2ceb9d,'error_type':_0x8fd194 instanceof Error?_0x8fd194[_0x3ced32(0x8c)][_0x3ced32(0x10d)]:_0x3ced32(0xb6),'context':{'tool':_0x3ced32(0x139),'github_url':_0x2b4a8c,'search_string':_0x118f5a[_0x3ced32(0xcc)][_0x3ced32(0xd1)],'branch':_0x118f5a[_0x3ced32(0xcc)]['branch']},'stack_trace':_0x8fd194 instanceof Error?_0x8fd194[_0x3ced32(0x128)]:undefined,'source':_0x3ced32(0x119),'tool':_0x3ced32(0x139),'latency_ms':_0x5d1f20})[_0x3ced32(0x143)](()=>{}),{'content':[{'type':_0x3ced32(0x163),'text':_0x3ced32(0x17c)+_0x2ceb9d}],'isError':![]};}}default:throw new Error(_0x3ced32(0xea)+_0x3c070f);}}catch(_0x40ec1b){const _0x237d3e=_0x40ec1b instanceof Error?_0x40ec1b['message']:String(_0x40ec1b);return reportMorphError({'error_message':_0x237d3e,'error_type':_0x40ec1b instanceof Error?_0x40ec1b[_0x3ced32(0x8c)][_0x3ced32(0x10d)]:_0x3ced32(0xb6),'context':{'tool':_0x3c070f,'arguments':_0x4b75f2?JSON[_0x3ced32(0x15a)](_0x4b75f2)[_0x3ced32(0x159)](0x0,0x1f4):undefined,'mcp_server_version':_0x3ced32(0x118)},'stack_trace':_0x40ec1b instanceof Error?_0x40ec1b[_0x3ced32(0x128)]:undefined,'source':_0x3ced32(0x119)})['catch'](()=>{}),{'content':[{'type':_0x3ced32(0x163),'text':_0x3ced32(0xa5)+_0x237d3e}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x21991e){const _0x318bcd=a0_0x6a1d90,_0x709567=await getValidRootDirectories(_0x21991e);if(_0x709567[_0x318bcd(0x116)]>0x0)allowedDirectories=[..._0x709567],logMcpStderr(_0x318bcd(0x111)+_0x709567[_0x318bcd(0x116)]+_0x318bcd(0x11e));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x3c1f2f=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3c1f2f&&(allowedDirectories=[_0x3c1f2f],logMcpStderr(_0x318bcd(0x141)+_0x3c1f2f));}catch(_0xac0cbc){logMcpStderr(_0x318bcd(0x108)+_0xac0cbc);}}}server[a0_0x6a1d90(0x16a)](RootsListChangedNotificationSchema,async()=>{const _0x20a6f5=a0_0x6a1d90;try{const _0x51fe0f=await server[_0x20a6f5(0xa2)]();_0x51fe0f&&_0x20a6f5(0x9e)in _0x51fe0f&&await updateAllowedDirectoriesFromRoots(_0x51fe0f[_0x20a6f5(0x9e)]);}catch(_0x975f33){logMcpStderr(_0x20a6f5(0xd7),_0x975f33 instanceof Error?_0x975f33[_0x20a6f5(0xbe)]:String(_0x975f33));}}),server['oninitialized']=async()=>{const _0x467ec3=a0_0x6a1d90,_0x2ad80f=server['getClientCapabilities']();if(_0x2ad80f?.['roots'])try{const _0x1bfa0a=await server[_0x467ec3(0xa2)]();_0x1bfa0a&&_0x467ec3(0x9e)in _0x1bfa0a?await updateAllowedDirectoriesFromRoots(_0x1bfa0a['roots']):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x467aa9){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x467aa9 instanceof Error?_0x467aa9[_0x467ec3(0xbe)]:String(_0x467aa9));}else{if(allowedDirectories[_0x467ec3(0x116)]>0x0)logMcpStderr(_0x467ec3(0xd6),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x467ec3(0x18d));else throw new Error(_0x467ec3(0x110));}}};async function runServer(){const _0x46a665=a0_0x6a1d90,_0xe9e671=new StdioServerTransport();await server[_0x46a665(0x8a)](_0xe9e671),logMcpStderr(_0x46a665(0xf3)),allowedDirectories['length']===0x0&&logMcpStderr(_0x46a665(0xe1));}runServer()[a0_0x6a1d90(0x143)](_0x1285cf=>{const _0x5d099d=a0_0x6a1d90;logMcpStderr(_0x5d099d(0x125),_0x1285cf),process[_0x5d099d(0x18c)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
function a1_0x5778(_0x480010,_0x3356f8){_0x480010=_0x480010-0xbf;var _0xd15cf8=a1_0xd15c();var _0x5778bb=_0xd15cf8[_0x480010];return _0x5778bb;}var a1_0x52a0ae=a1_0x5778;(function(_0x1b6a64,_0x2cd07c){var _0x37d10d=a1_0x5778,_0x58f45e=_0x1b6a64();while(!![]){try{var _0xf020cb=-parseInt(_0x37d10d(0xca))/0x1*(parseInt(_0x37d10d(0xc7))/0x2)+parseInt(_0x37d10d(0xd2))/0x3+parseInt(_0x37d10d(0xbf))/0x4+parseInt(_0x37d10d(0xc0))/0x5*(parseInt(_0x37d10d(0xc3))/0x6)+parseInt(_0x37d10d(0xcd))/0x7*(parseInt(_0x37d10d(0xc1))/0x8)+parseInt(_0x37d10d(0xce))/0x9*(-parseInt(_0x37d10d(0xc4))/0xa)+parseInt(_0x37d10d(0xcb))/0xb;if(_0xf020cb===_0x2cd07c)break;else _0x58f45e['push'](_0x58f45e['shift']());}catch(_0x256d30){_0x58f45e['push'](_0x58f45e['shift']());}}}(a1_0xd15c,0x71fff));function a1_0xd15c(){var _0x26b12a=['linux','[os=','727223IceWof','8312194PHCqIr','Unknown','119028qmuzIJ','4111686QovCIu','Windows','platform','macOS','603387wrxTCr','2439288XArDaO','4465ZCxFUP','24dclbDV','win32','3294xxozRU','20ShTebG','error','Linux','2YqmwqP'];a1_0xd15c=function(){return _0x26b12a;};return a1_0xd15c();}import a1_0x3265f6 from'os';export function getOperatingSystemType(_0x4716d2=a1_0x3265f6[a1_0x52a0ae(0xd0)]()){var _0xc2310e=a1_0x52a0ae;switch(_0x4716d2){case'darwin':return _0xc2310e(0xd1);case _0xc2310e(0xc2):return _0xc2310e(0xcf);case _0xc2310e(0xc8):return _0xc2310e(0xc6);default:return _0xc2310e(0xcc);}}export function formatMcpLogMessage(_0x1c0f92,_0x59f33a=a1_0x3265f6[a1_0x52a0ae(0xd0)]()){var _0xde4f3e=a1_0x52a0ae;return _0xde4f3e(0xc9)+getOperatingSystemType(_0x59f33a)+']\x20'+_0x1c0f92;}export function logMcpStderr(_0x3f4285,..._0x3e9d7e){var _0x12f0c9=a1_0x52a0ae;console[_0x12f0c9(0xc5)](formatMcpLogMessage(_0x3f4285),..._0x3e9d7e);}
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x425382,_0x177b02){const _0x364cc7=a2_0x21b4,_0x3cb7d0=_0x425382();while(!![]){try{const _0x4bcc63=-parseInt(_0x364cc7(0x93))/0x1*(-parseInt(_0x364cc7(0xa2))/0x2)+parseInt(_0x364cc7(0xa0))/0x3+parseInt(_0x364cc7(0x97))/0x4*(parseInt(_0x364cc7(0x98))/0x5)+parseInt(_0x364cc7(0x96))/0x6+parseInt(_0x364cc7(0x90))/0x7+-parseInt(_0x364cc7(0x94))/0x8+-parseInt(_0x364cc7(0x9c))/0x9*(parseInt(_0x364cc7(0x9a))/0xa);if(_0x4bcc63===_0x177b02)break;else _0x3cb7d0['push'](_0x3cb7d0['shift']());}catch(_0x27658c){_0x3cb7d0['push'](_0x3cb7d0['shift']());}}}(a2_0x5016,0x25c9f));import a2_0x630caa from'path';import a2_0x1c5c48 from'os';export function convertToWindowsPath(_0x275482){const _0x19de55=a2_0x21b4;if(_0x275482['startsWith'](_0x19de55(0x9f))){const _0x57eb00=_0x275482['charAt'](0x5)[_0x19de55(0x9b)](),_0x536350=_0x275482[_0x19de55(0x95)](0x6)['replace'](/\//g,'\x5c');return _0x57eb00+':'+_0x536350;}if(_0x275482[_0x19de55(0x9e)](/^\/[a-zA-Z]\//)){const _0x308817=_0x275482[_0x19de55(0x8f)](0x1)[_0x19de55(0x9b)](),_0x4059c1=_0x275482[_0x19de55(0x95)](0x2)[_0x19de55(0x92)](/\//g,'\x5c');return _0x308817+':'+_0x4059c1;}if(_0x275482[_0x19de55(0x9e)](/^[a-zA-Z]:/))return _0x275482[_0x19de55(0x92)](/\//g,'\x5c');return _0x275482;}function a2_0x21b4(_0x2bbad8,_0x372e0d){_0x2bbad8=_0x2bbad8-0x8f;const _0x501683=a2_0x5016();let _0x21b487=_0x501683[_0x2bbad8];return _0x21b487;}function a2_0x5016(){const _0x5659f4=['test','62BQkele','homedir','charAt','666155gIMfTN','trim','replace','9465lQCiGo','1805968CpEwGT','slice','1407006hUObrZ','35220LHJmoW','65XYJfsW','join','123390WJcLcK','toUpperCase','315cldzag','startsWith','match','/mnt/','224544WMZKev'];a2_0x5016=function(){return _0x5659f4;};return a2_0x5016();}export function normalizePath(_0x41c098){const _0x412a17=a2_0x21b4;_0x41c098=_0x41c098[_0x412a17(0x91)]()[_0x412a17(0x92)](/^["']|["']$/g,'');const _0x2ecefd=_0x41c098['startsWith']('/')&&!_0x41c098[_0x412a17(0x9e)](/^\/mnt\/[a-z]\//i)&&!_0x41c098[_0x412a17(0x9e)](/^\/[a-zA-Z]\//);if(_0x2ecefd)return _0x41c098[_0x412a17(0x92)](/\/+/g,'/')[_0x412a17(0x92)](/\/+$/,'');_0x41c098=convertToWindowsPath(_0x41c098);if(_0x41c098[_0x412a17(0x9d)]('\x5c\x5c')){let _0xa15e49=_0x41c098;_0xa15e49=_0xa15e49[_0x412a17(0x92)](/^\\{2,}/,'\x5c\x5c');const _0x56941d=_0xa15e49['substring'](0x2)[_0x412a17(0x92)](/\\\\/g,'\x5c');_0x41c098='\x5c\x5c'+_0x56941d;}else _0x41c098=_0x41c098[_0x412a17(0x92)](/\\\\/g,'\x5c');let _0x346f1f=a2_0x630caa['normalize'](_0x41c098);_0x41c098[_0x412a17(0x9d)]('\x5c\x5c')&&!_0x346f1f[_0x412a17(0x9d)]('\x5c\x5c')&&(_0x346f1f='\x5c'+_0x346f1f);if(_0x346f1f['match'](/^[a-zA-Z]:/)){let _0x4d8906=_0x346f1f[_0x412a17(0x92)](/\//g,'\x5c');return/^[a-z]:/[_0x412a17(0xa1)](_0x4d8906)&&(_0x4d8906=_0x4d8906[_0x412a17(0x8f)](0x0)[_0x412a17(0x9b)]()+_0x4d8906['slice'](0x1)),_0x4d8906;}return _0x346f1f[_0x412a17(0x92)](/\//g,'\x5c');}export function expandHome(_0x529f3c){const _0x5bb5ec=a2_0x21b4;if(_0x529f3c[_0x5bb5ec(0x9d)]('~/')||_0x529f3c==='~')return a2_0x630caa[_0x5bb5ec(0x99)](a2_0x1c5c48[_0x5bb5ec(0xa3)](),_0x529f3c[_0x5bb5ec(0x95)](0x1));return _0x529f3c;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x139865,_0x178b02){const _0x291ddf=a3_0x27f3,_0x5885d9=_0x139865();while(!![]){try{const _0x7c6d98=-parseInt(_0x291ddf(0x13f))/0x1+parseInt(_0x291ddf(0x14c))/0x2*(-parseInt(_0x291ddf(0x140))/0x3)+-parseInt(_0x291ddf(0x145))/0x4+parseInt(_0x291ddf(0x14f))/0x5*(-parseInt(_0x291ddf(0x152))/0x6)+-parseInt(_0x291ddf(0x150))/0x7+-parseInt(_0x291ddf(0x14b))/0x8*(-parseInt(_0x291ddf(0x141))/0x9)+parseInt(_0x291ddf(0x143))/0xa;if(_0x7c6d98===_0x178b02)break;else _0x5885d9['push'](_0x5885d9['shift']());}catch(_0x274b38){_0x5885d9['push'](_0x5885d9['shift']());}}}(a3_0x2428,0x42abd));function a3_0x2428(){const _0x17ad6b=['some','string','1304QsxdNS','52qbmKry','normalize','includes','20tcxVzG','1386483BGgldg','isAbsolute','687264GYoOzQ','19744GtfSee','19959SEhJOM','495qUYIqU','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','13358710lpSTEo','startsWith','891136DEyBUl','sep','resolve','length'];a3_0x2428=function(){return _0x17ad6b;};return a3_0x2428();}function a3_0x27f3(_0x42fb4d,_0x116b57){_0x42fb4d=_0x42fb4d-0x13f;const _0x2428de=a3_0x2428();let _0x27f34c=_0x2428de[_0x42fb4d];return _0x27f34c;}import a3_0x25b576 from'path';export function isPathWithinAllowedDirectories(_0x150bcc,_0x522a92){const _0x341c23=a3_0x27f3;if(typeof _0x150bcc!==_0x341c23(0x14a)||!Array['isArray'](_0x522a92))return![];if(!_0x150bcc||_0x522a92[_0x341c23(0x148)]===0x0)return![];if(_0x150bcc[_0x341c23(0x14e)]('\x00'))return![];let _0x967745;try{_0x967745=a3_0x25b576['resolve'](a3_0x25b576[_0x341c23(0x14d)](_0x150bcc));}catch{return![];}if(!a3_0x25b576[_0x341c23(0x151)](_0x967745))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x522a92[_0x341c23(0x149)](_0x27c032=>{const _0x464ce8=_0x341c23;if(typeof _0x27c032!==_0x464ce8(0x14a)||!_0x27c032)return![];if(_0x27c032[_0x464ce8(0x14e)]('\x00'))return![];let _0x5b7227;try{_0x5b7227=a3_0x25b576[_0x464ce8(0x147)](a3_0x25b576['normalize'](_0x27c032));}catch{return![];}if(!a3_0x25b576[_0x464ce8(0x151)](_0x5b7227))throw new Error(_0x464ce8(0x142));if(_0x967745===_0x5b7227)return!![];if(_0x5b7227===a3_0x25b576[_0x464ce8(0x146)])return _0x967745['startsWith'](a3_0x25b576['sep']);return _0x967745[_0x464ce8(0x144)](_0x5b7227+a3_0x25b576['sep']);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x4392db,_0x122084){const _0x24120b=a4_0x2daa,_0x320d3c=_0x4392db();while(!![]){try{const _0xeaee2e=parseInt(_0x24120b(0x114))/0x1+-parseInt(_0x24120b(0x103))/0x2*(parseInt(_0x24120b(0x117))/0x3)+-parseInt(_0x24120b(0x10a))/0x4*(parseInt(_0x24120b(0x108))/0x5)+parseInt(_0x24120b(0x109))/0x6*(-parseInt(_0x24120b(0x101))/0x7)+parseInt(_0x24120b(0xff))/0x8*(-parseInt(_0x24120b(0x10d))/0x9)+-parseInt(_0x24120b(0x115))/0xa+parseInt(_0x24120b(0x105))/0xb*(parseInt(_0x24120b(0x104))/0xc);if(_0xeaee2e===_0x122084)break;else _0x320d3c['push'](_0x320d3c['shift']());}catch(_0x20c33f){_0x320d3c['push'](_0x320d3c['shift']());}}}(a4_0xb6f8,0xe66d1));import{promises as a4_0x3bcf08}from'fs';function a4_0x2daa(_0x4febfb,_0x3ea5bc){_0x4febfb=_0x4febfb-0xfe;const _0xb6f8b=a4_0xb6f8();let _0x2daa79=_0xb6f8b[_0x4febfb];return _0x2daa79;}import a4_0x502b7a from'path';import a4_0x572c88 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x3be97c){const _0x3d0354=a4_0x2daa;try{const _0x3eb920=_0x3be97c[_0x3d0354(0x110)](_0x3d0354(0x100))?_0x3be97c[_0x3d0354(0x106)](0x7):_0x3be97c,_0x293a94=_0x3eb920[_0x3d0354(0x110)]('~/')||_0x3eb920==='~'?a4_0x502b7a[_0x3d0354(0x107)](a4_0x572c88[_0x3d0354(0xfe)](),_0x3eb920[_0x3d0354(0x106)](0x1)):_0x3eb920,_0x568e8c=a4_0x502b7a[_0x3d0354(0x102)](_0x293a94),_0x3ce562=await a4_0x3bcf08[_0x3d0354(0x10e)](_0x568e8c);return normalizePath(_0x3ce562);}catch{return null;}}function a4_0xb6f8(){const _0x4422a5=['207592SOVwfr','file://','73703UDimzT','resolve','2KDBotp','12MKSCWG','71686406gUYgkp','slice','join','29995vUSLGY','822DxMQno','44PzSApe','\x20due\x20to\x20error:\x20','message','576pQoIZn','realpath','Skipping\x20invalid\x20directory:\x20','startsWith','stat','invalid\x20path\x20or\x20inaccessible','push','663786eQvyRl','13922590YQCXeb','uri','5026350lAqfrX','homedir'];a4_0xb6f8=function(){return _0x4422a5;};return a4_0xb6f8();}function formatDirectoryError(_0x11a3d6,_0x3d7b90,_0x178094){const _0x14fc7e=a4_0x2daa;if(_0x178094)return'Skipping\x20'+_0x178094+':\x20'+_0x11a3d6;const _0x2f85e4=_0x3d7b90 instanceof Error?_0x3d7b90[_0x14fc7e(0x10c)]:String(_0x3d7b90);return _0x14fc7e(0x10f)+_0x11a3d6+_0x14fc7e(0x10b)+_0x2f85e4;}export async function getValidRootDirectories(_0x37094c){const _0x348cbd=a4_0x2daa,_0x4422a9=[];for(const _0xd28488 of _0x37094c){const _0x4dee77=await parseRootUri(_0xd28488[_0x348cbd(0x116)]);if(!_0x4dee77){logMcpStderr(formatDirectoryError(_0xd28488['uri'],undefined,_0x348cbd(0x112)));continue;}try{const _0x403cf0=await a4_0x3bcf08[_0x348cbd(0x111)](_0x4dee77);_0x403cf0['isDirectory']()?_0x4422a9[_0x348cbd(0x113)](_0x4dee77):logMcpStderr(formatDirectoryError(_0x4dee77,undefined,'non-directory\x20root'));}catch(_0x5d9b3a){logMcpStderr(formatDirectoryError(_0x4dee77,_0x5d9b3a));}}return _0x4422a9;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.155",
|
|
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.158",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|