@morphllm/morphmcp 0.8.146 → 0.8.148
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_0x5e2a04=a0_0x3b11;(function(_0x5b032a,_0x4309e2){const _0x25a32c=a0_0x3b11,_0x206cab=_0x5b032a();while(!![]){try{const _0x4ea0ce=-parseInt(_0x25a32c(0x1cf))/0x1*(parseInt(_0x25a32c(0x1e5))/0x2)+parseInt(_0x25a32c(0x1b5))/0x3*(-parseInt(_0x25a32c(0x28a))/0x4)+-parseInt(_0x25a32c(0x289))/0x5+parseInt(_0x25a32c(0x25d))/0x6+parseInt(_0x25a32c(0x246))/0x7*(parseInt(_0x25a32c(0x26f))/0x8)+parseInt(_0x25a32c(0x227))/0x9+parseInt(_0x25a32c(0x25f))/0xa;if(_0x4ea0ce===_0x4309e2)break;else _0x206cab['push'](_0x206cab['shift']());}catch(_0x3766fa){_0x206cab['push'](_0x206cab['shift']());}}}(a0_0x6c03,0xc817f));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_0x46b046 from'fs/promises';import a0_0x56ec11 from'path';import a0_0xb265c3 from'os';import{createRequire}from'module';function a0_0x3b11(_0x3de71e,_0x9f5b86){_0x3de71e=_0x3de71e-0x191;const _0x6c03db=a0_0x6c03();let _0x3b1122=_0x6c03db[_0x3de71e];return _0x3b1122;}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 a0_0x2d1474 from'axios';function fixPathRepetition(_0x312cd8){const _0x5bc744=a0_0x3b11,_0xdfd0ce=_0x312cd8[_0x5bc744(0x1f5)](a0_0x56ec11[_0x5bc744(0x23e)])[_0x5bc744(0x2aa)](Boolean);if(_0xdfd0ce[_0x5bc744(0x205)]<0x2)return null;for(let _0x192f4c=Math[_0x5bc744(0x1c0)](_0xdfd0ce[_0x5bc744(0x205)]/0x2);_0x192f4c>=0x1;_0x192f4c--){for(let _0x49da1d=0x0;_0x49da1d<=_0xdfd0ce['length']-0x2*_0x192f4c;_0x49da1d++){const _0x2c6df2=_0xdfd0ce['slice'](_0x49da1d,_0x49da1d+_0x192f4c),_0x57fc1d=_0xdfd0ce['slice'](_0x49da1d+_0x192f4c,_0x49da1d+0x2*_0x192f4c);if(_0x2c6df2[_0x5bc744(0x232)]((_0x4e0efb,_0x291a5f)=>_0x4e0efb===_0x57fc1d[_0x291a5f])){const _0x11d943=[..._0xdfd0ce['slice'](0x0,_0x49da1d),..._0xdfd0ce['slice'](_0x49da1d+_0x192f4c)];return a0_0x56ec11['sep']+_0x11d943[_0x5bc744(0x1c6)](a0_0x56ec11[_0x5bc744(0x23e)]);}}}return null;}const require=createRequire(import.meta.url);function a0_0x6c03(){const _0x169faf=['\x20disabled\x20via\x20DISABLED_TOOLS','Created\x20File','Morph\x20Edit\x20','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','Applied','message','pattern','mcp-filesystem','context','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','search_string','Warning:\x20','utf-8','source','Specific\x20commit\x20hash\x20to\x20search','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.','PathError','requiresApiKey','parse','messages','Error\x20accessing\x20directory\x20','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','code_edit','MORPH_WARP_GREP_TIMEOUT','read','1319292ygHcKc','getClientCapabilities','Bearer\x20','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','inputSchema','indexOf','Error\x20running\x20fast\x20context\x20search:\x20','.cursor','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','tsconfig.json','every',',\x20modified\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','payload','UnknownError','unknown','\x0aOptions:','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','repo_path','node_modules','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','package.json','sep','timeout','terminated','FileReadError','realpath','\x20error(s)','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','\x20\x20morph-mcp','168nNeINM','describe','RipgrepNotAvailable','owner_repo','\x0aExamples:','number','has','application/json','\x20valid\x20directories','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','user','dryRun','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','linesModified','morph-warp-grep-v2.1','completionId','codebase_search','toISOString','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','Invalid\x20arguments:\x20','Here\x20is\x20the\x20content\x20of\x20files:\x0a','-\x20Grepped\x20\x27','255774LAKSKh','all','1446880aNNupH','terminationReason','stack','searchGitHub','grep\x20\x27','-\x20Listed\x20directory\x20`','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','false','glob','PWD','constructor','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','path','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','timings','502512GYlRhP','@morphllm/morphmcp\x20','argv','edit_file','\x20as\x20allowed\x20directory','metadata','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','arguments','roots','changes','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','branch','code','[github_codebase_search]\x20Failed\x20in\x20','grep','Parent\x20directory\x20does\x20not\x20exist:\x20','--version','trim','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','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.','content','Tool\x20\x22','GitHub\x20search\x20failed:\x20','lines','.vscode','MORPH_API_URL','147635OACASc','2071048YwGLpm','Disabled\x20tools:\x20','\x20is\x20not\x20a\x20directory','read\x20','Workspace\x20mode\x20enabled:\x20Using\x20','\x20(new\x20file)','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','some','warn','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','search_type','push','DISABLED_TOOLS','ToolException','[github_codebase_search]\x20Done\x20in\x20','Rules:\x0a','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','glob\x20\x27','dirname','description','now','grep_search','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','list_directory\x20','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','map','Cargo.toml','optional','tool','github_codebase_search','Unknown\x20tool:\x20','completed_with_file_errors','filter','timed\x20out','tool_calls','function','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','WORKSPACE_ROOT','success','\x20chars)','connect','listRoots','catch','../package.json','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','pyproject.toml','oninitialized','</file>','File\x20read\x20error:','startsWith','command','exit','-\x20Read\x20file\x20`','string','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','TimeoutError','log','WarpGrep\x20sub-tool\x20errors:\x20','\x20-\x20','object','size','Morph\x20Edit\x20Preview','Warning:\x20Workspace\x20fallback\x20failed:\x20','access','0.2.0','basename','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','boolean','added\x20','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','3zKEAAX','readFile','Max\x20results\x20to\x20return','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','name','Preview\x20changes\x20without\x20applying\x20them.','errors','\x22.\x20Known\x20tools:\x20','\x0a...\x20(truncated,\x20total:\x20','BinaryFile','includes','floor','RipgrepError','ReadError','error','min','github_url','join','instruction','\x22>\x0aError\x20reading\x20file:\x20','post','Relevant\x20context\x20found:','unknown\x20error','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','text','files','474569bObkmh','setRequestHandler','etimedout','ENOENT','role','list_directory','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','morph-mcp','FileNotFound','assistant','`\x20in\x20`','SymlinkError','finish','array','.\x20Changes:\x20','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','stat','morph-v3-fast','go.mod','2HEKyAS','data','resolve','Error:\x20','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','version','isArray','SubToolError','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','Repository\x20identifier','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','completed','isDirectory','sk-','linesAdded','split','https://morphllm.com/api/error-report','stringify','tool_call_id','env','For\x20deletions:\x0a','linesRemoved','morph-','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','toLowerCase','safeParse','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','normalize','Tool\x20','slice','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','length','[could\x20not\x20read\x20file:\x20','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','substring','default','homedir','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','WarpGrepError','<file\x20path=\x22'];a0_0x6c03=function(){return _0x169faf;};return a0_0x6c03();}function getPackageVersion(){const _0x98081d=a0_0x3b11;try{const _0x2f903f=require(_0x98081d(0x199));return _0x2f903f[_0x98081d(0x1eb)]??_0x98081d(0x237);}catch(_0x14e6e5){return logMcpStderr(_0x98081d(0x252),_0x14e6e5),_0x98081d(0x237);}}function printHelp(){const _0x134202=a0_0x3b11;console['log'](_0x134202(0x270)+getPackageVersion()),console[_0x134202(0x1a7)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x134202(0x1a7)](_0x134202(0x238)),console['log']('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x134202(0x1a7)](_0x134202(0x1de)),console[_0x134202(0x1a7)](_0x134202(0x281)),console[_0x134202(0x1a7)](_0x134202(0x24a)),console['log'](_0x134202(0x245)),console[_0x134202(0x1a7)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x5e2a04(0x271)][a0_0x5e2a04(0x203)](0x2),VERSION_FLAGS=new Set([a0_0x5e2a04(0x27f),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0x5e2a04(0x291)](_0x3cc670=>VERSION_FLAGS['has'](_0x3cc670))&&(console['log'](a0_0x5e2a04(0x270)+getPackageVersion()),process[a0_0x5e2a04(0x1a1)](0x0));cliArgs[a0_0x5e2a04(0x291)](_0x2fd54b=>HELP_FLAGS['has'](_0x2fd54b))&&(printHelp(),process[a0_0x5e2a04(0x1a1)](0x0));function getCliArg(_0x113015){const _0x1df9d7=a0_0x5e2a04;for(let _0x49bd8e=0x0;_0x49bd8e<cliArgs[_0x1df9d7(0x205)];_0x49bd8e++){const _0x562578=cliArgs[_0x49bd8e];if(_0x562578[_0x1df9d7(0x19f)]('--'+_0x113015+'='))return _0x562578[_0x1df9d7(0x203)](('--'+_0x113015+'=')['length']);if(_0x562578==='--'+_0x113015&&_0x49bd8e+0x1<cliArgs[_0x1df9d7(0x205)])return cliArgs[_0x49bd8e+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x5e2a04(0x205)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0x5e2a04(0x24c)](arg))continue;if(arg[a0_0x5e2a04(0x19f)]('--api-key='))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x5e2a04(0x295)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x5e2a04(0x193)]||process[a0_0x5e2a04(0x1f9)][a0_0x5e2a04(0x268)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x5e2a04(0x1f9)]['ENABLE_WORKSPACE_MODE']!==a0_0x5e2a04(0x266),MORPH_API_KEY=getCliArg('api-key')??process['env']['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x5e2a04(0x1f9)][a0_0x5e2a04(0x288)],MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x5e2a04(0x225)]?parseInt(process['env']['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x5e2a04(0x272),a0_0x5e2a04(0x256),a0_0x5e2a04(0x2a7)]),DISABLED_TOOLS=process[a0_0x5e2a04(0x1f9)][a0_0x5e2a04(0x296)]?new Set(process[a0_0x5e2a04(0x1f9)][a0_0x5e2a04(0x296)][a0_0x5e2a04(0x1f5)](',')['map'](_0x362ae6=>_0x362ae6[a0_0x5e2a04(0x280)]())['filter'](_0x533d0c=>_0x533d0c[a0_0x5e2a04(0x205)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x5e2a04(0x1ab)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x5e2a04(0x1c3)](a0_0x5e2a04(0x23c)+tool+a0_0x5e2a04(0x1bc)+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console[a0_0x5e2a04(0x1c3)](a0_0x5e2a04(0x28b)+[...DISABLED_TOOLS][a0_0x5e2a04(0x1c6)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5e2a04(0x19f)](a0_0x5e2a04(0x1f3))&&!MORPH_API_KEY[a0_0x5e2a04(0x19f)](a0_0x5e2a04(0x1fc))&&logMcpStderr(a0_0x5e2a04(0x29a));async function reportMorphError(_0x4659b){const _0x1135b1=a0_0x5e2a04;try{await a0_0x2d1474[_0x1135b1(0x1c9)](_0x1135b1(0x1f6),{..._0x4659b,'timestamp':new Date()[_0x1135b1(0x257)](),'source':_0x4659b[_0x1135b1(0x21b)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x4659b[_0x1135b1(0x216)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x1135b1(0x24d),'Authorization':_0x1135b1(0x229)+MORPH_API_KEY}});}catch{}}args[a0_0x5e2a04(0x205)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x5e2a04(0x1f0)),logMcpStderr(a0_0x5e2a04(0x258)),logMcpStderr(a0_0x5e2a04(0x2a2)),logMcpStderr(a0_0x5e2a04(0x1a5)),logMcpStderr(a0_0x5e2a04(0x22f)),logMcpStderr(a0_0x5e2a04(0x234)));function normalizePath(_0x36adf7){const _0x4a7ef3=a0_0x5e2a04;return a0_0x56ec11[_0x4a7ef3(0x201)](_0x36adf7);}function expandHome(_0x2120d7){const _0x2f431a=a0_0x5e2a04;if(_0x2120d7[_0x2f431a(0x19f)]('~/')||_0x2120d7==='~')return a0_0x56ec11[_0x2f431a(0x1c6)](a0_0xb265c3[_0x2f431a(0x20a)](),_0x2120d7['slice'](0x1));return _0x2120d7;}let allowedDirectories=await Promise[a0_0x5e2a04(0x25e)](args['map'](async _0x1c68b5=>{const _0x583fa9=a0_0x5e2a04,_0x2e117c=expandHome(_0x1c68b5),_0x22661d=a0_0x56ec11[_0x583fa9(0x1e7)](_0x2e117c);try{const _0x2881c2=await a0_0x46b046['realpath'](_0x22661d);return normalizePath(_0x2881c2);}catch(_0x57cc6f){return normalizePath(_0x22661d);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5e2a04(0x205)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5e2a04(0x295)](workspaceDir),logMcpStderr(a0_0x5e2a04(0x28e)+workspaceDir+a0_0x5e2a04(0x273)));}catch(a0_0x25447a){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x25447a);}async function detectWorkspaceRoot(_0x25afd6){const _0x13b4ba=a0_0x5e2a04;let _0x311de0=a0_0x56ec11['resolve'](_0x25afd6);const _0x1987d6=['.git',_0x13b4ba(0x287),_0x13b4ba(0x23d),_0x13b4ba(0x2a4),_0x13b4ba(0x19b),_0x13b4ba(0x1e4),_0x13b4ba(0x22e),_0x13b4ba(0x231),'composer.json'];while(_0x311de0!==a0_0x56ec11['dirname'](_0x311de0)){for(const _0x49fa92 of _0x1987d6){const _0x124220=a0_0x56ec11[_0x13b4ba(0x1c6)](_0x311de0,_0x49fa92);try{return await a0_0x46b046[_0x13b4ba(0x1ae)](_0x124220),normalizePath(_0x311de0);}catch{}}_0x311de0=a0_0x56ec11[_0x13b4ba(0x29c)](_0x311de0);}return normalizePath(_0x25afd6);}await Promise[a0_0x5e2a04(0x25e)](args[a0_0x5e2a04(0x2a3)](async _0x1c336a=>{const _0x3ef9b0=a0_0x5e2a04;try{const _0x1d829e=await a0_0x46b046[_0x3ef9b0(0x1e2)](expandHome(_0x1c336a));!_0x1d829e[_0x3ef9b0(0x1f2)]()&&(logMcpStderr('Error:\x20'+_0x1c336a+_0x3ef9b0(0x28c)),process[_0x3ef9b0(0x1a1)](0x1));}catch(_0x3a2780){logMcpStderr(_0x3ef9b0(0x222)+_0x1c336a+':',_0x3a2780),process[_0x3ef9b0(0x1a1)](0x1);}}));async function validatePath(_0x394865){const _0x341b6c=a0_0x5e2a04,_0xba4841=expandHome(_0x394865),_0x34208e=a0_0x56ec11[_0x341b6c(0x1e7)](_0xba4841);try{const _0x2cfbc5=await a0_0x46b046[_0x341b6c(0x242)](_0x34208e);return _0x2cfbc5;}catch(_0x2abf20){if(_0x2abf20[_0x341b6c(0x27b)]===_0x341b6c(0x1d2)){const _0x101492=a0_0x56ec11[_0x341b6c(0x29c)](_0x34208e);try{const _0x470932=await a0_0x46b046[_0x341b6c(0x242)](_0x101492);return a0_0x56ec11[_0x341b6c(0x1c6)](_0x470932,a0_0x56ec11[_0x341b6c(0x1b0)](_0x34208e));}catch{throw new Error(_0x341b6c(0x27e)+_0x101492);}}throw _0x2abf20;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x5e2a04(0x1a3)](),'code_edit':z[a0_0x5e2a04(0x1a3)]()['describe'](a0_0x5e2a04(0x20b)),'instruction':z[a0_0x5e2a04(0x1a3)]()[a0_0x5e2a04(0x247)](a0_0x5e2a04(0x265)),'dryRun':z[a0_0x5e2a04(0x1b2)]()[a0_0x5e2a04(0x209)](![])[a0_0x5e2a04(0x247)](a0_0x5e2a04(0x1ba))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x5e2a04(0x1b4),WarpGrepArgsSchema=z[a0_0x5e2a04(0x1aa)]({'search_string':z[a0_0x5e2a04(0x1a3)]()[a0_0x5e2a04(0x247)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x5e2a04(0x247)]('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos'),'search_type':z['enum'](['default',a0_0x5e2a04(0x23b)])['optional']()['describe'](a0_0x5e2a04(0x207))}),WarpGrepGitHubArgsSchema=z[a0_0x5e2a04(0x1aa)]({'search_string':z[a0_0x5e2a04(0x1a3)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()['optional']()[a0_0x5e2a04(0x247)](a0_0x5e2a04(0x282)),'owner_repo':z[a0_0x5e2a04(0x1a3)]()['optional']()[a0_0x5e2a04(0x247)](a0_0x5e2a04(0x293)),'branch':z[a0_0x5e2a04(0x1a3)]()[a0_0x5e2a04(0x2a5)]()[a0_0x5e2a04(0x247)](a0_0x5e2a04(0x279))}),CodebaseSearchArgsSchema=z[a0_0x5e2a04(0x1aa)]({'query':z[a0_0x5e2a04(0x1a3)]()[a0_0x5e2a04(0x247)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x5e2a04(0x1a3)]()[a0_0x5e2a04(0x247)](a0_0x5e2a04(0x1ef)),'branch':z[a0_0x5e2a04(0x1a3)]()[a0_0x5e2a04(0x2a5)]()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x5e2a04(0x1a3)]()[a0_0x5e2a04(0x2a5)]()[a0_0x5e2a04(0x247)](a0_0x5e2a04(0x21c)),'targetDirectories':z[a0_0x5e2a04(0x1dc)](z[a0_0x5e2a04(0x1a3)]())[a0_0x5e2a04(0x209)]([])[a0_0x5e2a04(0x247)]('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z[a0_0x5e2a04(0x24b)]()[a0_0x5e2a04(0x2a5)]()[a0_0x5e2a04(0x209)](0xa)[a0_0x5e2a04(0x247)](a0_0x5e2a04(0x1b7))}),server=new Server({'name':a0_0x5e2a04(0x1d6),'version':a0_0x5e2a04(0x1af)},{'capabilities':{'tools':{}}});server[a0_0x5e2a04(0x1d0)](ListToolsRequestSchema,async()=>{const _0x3bb92c=a0_0x5e2a04,_0x60a466=[{'name':_0x3bb92c(0x272),'description':_0x3bb92c(0x1b1)+_0x3bb92c(0x1cc)+_0x3bb92c(0x26b)+_0x3bb92c(0x1b8)+'Benefits:\x0a'+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x3bb92c(0x259)+_0x3bb92c(0x1a4)+_0x3bb92c(0x230)+_0x3bb92c(0x290)+_0x3bb92c(0x244)+_0x3bb92c(0x223)+_0x3bb92c(0x1fa)+_0x3bb92c(0x239)+_0x3bb92c(0x22a)+_0x3bb92c(0x299)+_0x3bb92c(0x204)+_0x3bb92c(0x192)+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x3bb92c(0x24f)+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+_0x3bb92c(0x200)+'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':_0x3bb92c(0x256),'description':_0x3bb92c(0x1fd)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x3bb92c(0x1d5)+_0x3bb92c(0x1e0)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x2a4d3b=_0x60a466[_0x3bb92c(0x2aa)](_0x2b8a02=>{const _0x5c8a0c=_0x3bb92c;if(DISABLED_TOOLS[_0x5c8a0c(0x24c)](_0x2b8a02[_0x5c8a0c(0x1b9)]))return console[_0x5c8a0c(0x1c3)](_0x5c8a0c(0x202)+_0x2b8a02[_0x5c8a0c(0x1b9)]+_0x5c8a0c(0x20e)),![];if('requiresApiKey'in _0x2b8a02&&_0x2b8a02[_0x5c8a0c(0x21f)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x2b8a02['name']+_0x5c8a0c(0x211)),![];return!![];});return{'tools':_0x2a4d3b[_0x3bb92c(0x2a3)](_0x53da4b=>({'name':_0x53da4b[_0x3bb92c(0x1b9)],'description':_0x53da4b[_0x3bb92c(0x29d)],'inputSchema':_0x53da4b[_0x3bb92c(0x22b)]}))};}),server[a0_0x5e2a04(0x1d0)](CallToolRequestSchema,async _0x5058d7=>{const _0x2f9b86=a0_0x5e2a04,{name:_0x2dd778,arguments:_0x53ba2}=_0x5058d7['params'];try{if(DISABLED_TOOLS[_0x2f9b86(0x24c)](_0x2dd778))throw new Error(_0x2f9b86(0x284)+_0x2dd778+_0x2f9b86(0x1e1));switch(_0x2dd778){case _0x2f9b86(0x272):{const _0xe988d1=MorphEditFileArgsSchema['safeParse'](_0x53ba2);if(!_0xe988d1['success'])throw new Error(_0x2f9b86(0x2a0)+_0xe988d1['error']);const _0x59204b=await validatePath(_0xe988d1[_0x2f9b86(0x1e6)][_0x2f9b86(0x26c)]);let _0x2e2906=null,_0x1da874=!![],_0x4dd4fc=null;try{_0x2e2906=await a0_0x46b046[_0x2f9b86(0x1b6)](_0x59204b,'utf-8');}catch(_0x3419aa){const _0x32aff5=_0x3419aa[_0x2f9b86(0x27b)];_0x32aff5==='ENOENT'?(_0x1da874=![],_0x2e2906=''):(_0x4dd4fc='Failed\x20to\x20read\x20file:\x20'+(_0x32aff5||_0x2f9b86(0x237))+_0x2f9b86(0x1a9)+(_0x3419aa instanceof Error?_0x3419aa['message']:String(_0x3419aa)),logMcpStderr(_0x2f9b86(0x219)+_0x4dd4fc));}let _0x807472;try{const _0x27fcde=MORPH_API_KEY;if(!_0x27fcde)throw new Error(_0x2f9b86(0x1e9));const _0x58fa4e=a0_0x56ec11[_0x2f9b86(0x29c)](_0x59204b),_0x3b41d0=a0_0x56ec11[_0x2f9b86(0x1b0)](_0x59204b),_0x5ae0f2=await executeEditFile({'target_filepath':_0x3b41d0,'code_edit':_0xe988d1['data'][_0x2f9b86(0x224)],'instructions':_0xe988d1['data'][_0x2f9b86(0x1c7)]},{'morphApiKey':_0x27fcde,'morphApiUrl':MORPH_API_URL,'baseDir':_0x58fa4e,'autoWrite':!_0xe988d1[_0x2f9b86(0x1e6)][_0x2f9b86(0x251)],'generateUdiff':![],'debug':![]});_0x807472=_0x5ae0f2[_0x2f9b86(0x255)];if(!_0x5ae0f2[_0x2f9b86(0x194)])throw new Error(_0x5ae0f2[_0x2f9b86(0x1c3)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x279a16=_0x5ae0f2[_0x2f9b86(0x278)],_0x7d73d7=_0x2f9b86(0x1b3)+_0x279a16[_0x2f9b86(0x1f4)]+',\x20removed\x20'+_0x279a16[_0x2f9b86(0x1fb)]+_0x2f9b86(0x233)+_0x279a16[_0x2f9b86(0x253)];if(_0xe988d1['data'][_0x2f9b86(0x251)])return{'content':[{'type':_0x2f9b86(0x1cd),'text':_0x2f9b86(0x1ac)+(_0x1da874?'':_0x2f9b86(0x28f))+':\x20'+_0xe988d1[_0x2f9b86(0x1e6)][_0x2f9b86(0x1c7)]+_0x2f9b86(0x1dd)+_0x7d73d7+'.\x20Path:\x20'+_0xe988d1['data'][_0x2f9b86(0x26c)]+'.'}]};return{'content':[{'type':_0x2f9b86(0x1cd),'text':_0x2f9b86(0x210)+(_0x1da874?_0x2f9b86(0x212):_0x2f9b86(0x20f))+':\x20'+_0xe988d1[_0x2f9b86(0x1e6)][_0x2f9b86(0x1c7)]+'.\x20Changes:\x20'+_0x7d73d7+'.\x20Path:\x20'+_0xe988d1['data'][_0x2f9b86(0x26c)]+'.'}]};}catch(_0xcb02ad){const _0x4a70bf=_0xcb02ad instanceof Error?_0xcb02ad[_0x2f9b86(0x213)]:String(_0xcb02ad);return reportMorphError({'error_message':_0x4a70bf,'error_type':_0xcb02ad instanceof Error?_0xcb02ad[_0x2f9b86(0x269)][_0x2f9b86(0x1b9)]:_0x2f9b86(0x236),'context':{'tool':'edit_file','completion_id':_0x807472,'file_path':_0xe988d1['data']['path'],'validated_path':_0x59204b,'instruction':_0xe988d1[_0x2f9b86(0x1e6)][_0x2f9b86(0x1c7)],'model':_0x2f9b86(0x1e3),'dry_run':_0xe988d1['data'][_0x2f9b86(0x251)],'file_exists':_0x1da874,'file_read_error':_0x4dd4fc,'file_readable':_0x2e2906!==null,'request_content':{'path':_0xe988d1[_0x2f9b86(0x1e6)][_0x2f9b86(0x26c)],'code_edit':_0xe988d1['data']['code_edit'],'instruction':_0xe988d1[_0x2f9b86(0x1e6)][_0x2f9b86(0x1c7)],'original_code':_0x2e2906!==null?_0x2e2906[_0x2f9b86(0x205)]>0xc350?_0x2e2906[_0x2f9b86(0x208)](0x0,0xc350)+_0x2f9b86(0x1bd)+_0x2e2906[_0x2f9b86(0x205)]+_0x2f9b86(0x195):_0x2e2906:_0x2f9b86(0x206)+(_0x4dd4fc||_0x2f9b86(0x1cb))+']','original_code_length':_0x2e2906?.[_0x2f9b86(0x205)]??0x0,'model':_0x2f9b86(0x1e3),'dry_run':_0xe988d1[_0x2f9b86(0x1e6)][_0x2f9b86(0x251)]}},'stack_trace':_0xcb02ad instanceof Error?_0xcb02ad[_0x2f9b86(0x261)]:undefined,'source':_0x2f9b86(0x215)})[_0x2f9b86(0x198)](()=>{}),{'content':[{'type':'text','text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x4a70bf}],'isError':!![]};}}case _0x2f9b86(0x256):{const _0x16d9dd=WarpGrepArgsSchema[_0x2f9b86(0x1ff)](_0x53ba2);if(!_0x16d9dd[_0x2f9b86(0x194)])return{'content':[{'type':'text','text':_0x2f9b86(0x25a)+_0x16d9dd[_0x2f9b86(0x1c3)]}],'isError':!![]};const _0x81452f=_0x1bc553=>{const _0x45403b=_0x2f9b86,_0x58526b=[];for(const _0x14acb5 of _0x1bc553||[]){if(_0x14acb5[_0x45403b(0x1d3)]==='assistant'&&Array[_0x45403b(0x1ec)](_0x14acb5[_0x45403b(0x2ac)]))for(const _0x3872ee of _0x14acb5[_0x45403b(0x2ac)]){try{const _0x3f769c=_0x3872ee[_0x45403b(0x191)]?.['name'],_0x5732cd=JSON[_0x45403b(0x220)](_0x3872ee[_0x45403b(0x191)]?.[_0x45403b(0x276)]||'{}');if(_0x3f769c===_0x45403b(0x29f))_0x58526b[_0x45403b(0x295)](_0x45403b(0x263)+_0x5732cd[_0x45403b(0x214)]+'\x27\x20'+(_0x5732cd[_0x45403b(0x26c)]||'.'));else{if(_0x3f769c==='read')_0x58526b[_0x45403b(0x295)](_0x45403b(0x28d)+_0x5732cd[_0x45403b(0x26c)]);else{if(_0x3f769c===_0x45403b(0x1d4))_0x58526b[_0x45403b(0x295)](_0x45403b(0x2a1)+(_0x5732cd[_0x45403b(0x1a0)]||'.'));else{if(_0x3f769c==='glob')_0x58526b[_0x45403b(0x295)](_0x45403b(0x29b)+_0x5732cd[_0x45403b(0x214)]+'\x27\x20'+(_0x5732cd[_0x45403b(0x26c)]||'.'));else _0x3f769c===_0x45403b(0x1db)&&_0x58526b[_0x45403b(0x295)](_0x45403b(0x1db));}}}}catch{}}}return _0x58526b;},_0x59c961=_0x1f7908=>{const _0x13cb91=_0x2f9b86,_0x191812=[];if(!_0x1f7908||!Array[_0x13cb91(0x1ec)](_0x1f7908))return _0x191812;const _0x5bdf13=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x13cb91(0x1d7),'tool':_0x13cb91(0x226)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x13cb91(0x21e),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x13cb91(0x1c2),'tool':_0x13cb91(0x226)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x13cb91(0x1c1),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x13cb91(0x248),'tool':_0x13cb91(0x27d)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x13cb91(0x1be),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x13cb91(0x1da),'tool':_0x13cb91(0x226)},{'pattern':/not a text file/,'error_type':_0x13cb91(0x1be),'tool':'read'},{'pattern':/symbolic link/,'error_type':_0x13cb91(0x1da),'tool':_0x13cb91(0x226)},{'pattern':/Error reading file:/,'error_type':_0x13cb91(0x1c2),'tool':_0x13cb91(0x226)},{'pattern':/status="error"/,'error_type':_0x13cb91(0x297),'tool':_0x13cb91(0x237)}];let _0x6ac323=0x0;for(const _0xe51061 of _0x1f7908){_0xe51061[_0x13cb91(0x1d3)]===_0x13cb91(0x1d8)&&Array[_0x13cb91(0x1ec)](_0xe51061[_0x13cb91(0x2ac)])&&_0x6ac323++;const _0x3f894f=_0xe51061['content'];if((_0xe51061[_0x13cb91(0x1d3)]===_0x13cb91(0x2a6)||_0xe51061[_0x13cb91(0x1d3)]===_0x13cb91(0x250))&&_0x3f894f&&typeof _0x3f894f===_0x13cb91(0x1a3))for(const {pattern:_0x3ba0af,error_type:_0x4d2451,tool:_0x2984d9}of _0x5bdf13){const _0x3937c4=_0x3f894f['match'](new RegExp(_0x3ba0af[_0x13cb91(0x21b)],'g'));if(_0x3937c4)for(const _0x5b2c0b of _0x3937c4){const _0x512d83=_0x3f894f[_0x13cb91(0x22c)](_0x5b2c0b),_0x3ec289=_0x3f894f['substring'](_0x512d83,Math[_0x13cb91(0x1c4)](_0x512d83+0xc8,_0x3f894f[_0x13cb91(0x205)]));_0x191812[_0x13cb91(0x295)]({'tool':_0x2984d9,'error_type':_0x4d2451,'error_message':_0x3ec289[_0x13cb91(0x1f5)]('\x0a')[0x0],'turn':_0x6ac323});}}}return _0x191812;};try{const _0x17b212=a0_0x56ec11[_0x2f9b86(0x1e7)](_0x16d9dd['data'][_0x2f9b86(0x23a)]),_0x59a62e=_0x16d9dd[_0x2f9b86(0x1e6)][_0x2f9b86(0x294)],_0xb3acaf=_0x59a62e==='node_modules'?{'allowNames':['node_modules']}:undefined,_0x3139d9=new LocalRipgrepProvider(_0x17b212,undefined,_0xb3acaf),_0x492ed2=await runWarpGrep({'searchTerm':_0x16d9dd[_0x2f9b86(0x1e6)][_0x2f9b86(0x218)],'repoRoot':_0x17b212,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x3139d9,'search_type':_0x59a62e}),_0x5b0b77=_0x59c961(_0x492ed2[_0x2f9b86(0x221)]);_0x5b0b77['length']>0x0&&reportMorphError({'error_message':_0x2f9b86(0x1a8)+_0x5b0b77[_0x2f9b86(0x205)]+_0x2f9b86(0x243),'error_type':_0x2f9b86(0x1ed),'level':_0x2f9b86(0x292),'tool':'codebase_search','context':{'repo_path':_0x16d9dd[_0x2f9b86(0x1e6)][_0x2f9b86(0x23a)],'query':_0x16d9dd['data'][_0x2f9b86(0x218)],'model':'morph-warp-grep-v2.1','termination_reason':_0x492ed2[_0x2f9b86(0x260)],'sub_tool_errors':_0x5b0b77,'timings':_0x492ed2[_0x2f9b86(0x26e)],'tool_calls':_0x81452f(_0x492ed2[_0x2f9b86(0x221)]),'messages':_0x492ed2[_0x2f9b86(0x221)]?.[_0x2f9b86(0x2a3)](_0x71161e=>({'role':_0x71161e[_0x2f9b86(0x1d3)],'content':_0x71161e[_0x2f9b86(0x283)],..._0x71161e[_0x2f9b86(0x2ac)]?{'tool_calls':_0x71161e[_0x2f9b86(0x2ac)][_0x2f9b86(0x205)]}:{},..._0x71161e[_0x2f9b86(0x1f8)]?{'tool_call_id':_0x71161e[_0x2f9b86(0x1f8)]}:{}}))},'source':'mcp-filesystem'})[_0x2f9b86(0x198)](()=>{});let _0x44a4d3='';if(_0x492ed2[_0x2f9b86(0x260)]===_0x2f9b86(0x1f1)&&_0x492ed2[_0x2f9b86(0x1db)]?.[_0x2f9b86(0x274)]?.[_0x2f9b86(0x1ce)]){const _0x44782d=_0x492ed2[_0x2f9b86(0x1db)][_0x2f9b86(0x274)][_0x2f9b86(0x1ce)];if(_0x44782d[_0x2f9b86(0x205)]===0x0)return _0x44a4d3=_0x492ed2[_0x2f9b86(0x1db)][_0x2f9b86(0x235)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x2f9b86(0x1cd),'text':_0x44a4d3}]};const _0x180a64=[],_0x175622=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x353e87 of _0x492ed2['messages']){if(_0x353e87[_0x2f9b86(0x1d3)]===_0x2f9b86(0x1d8)&&Array['isArray'](_0x353e87[_0x2f9b86(0x2ac)]))for(const _0x3eeacb of _0x353e87[_0x2f9b86(0x2ac)]){try{const _0x11f8c6=_0x3eeacb[_0x2f9b86(0x191)]?.['name'],_0x43a8c1=JSON[_0x2f9b86(0x220)](_0x3eeacb[_0x2f9b86(0x191)]?.[_0x2f9b86(0x276)]||'{}');if(_0x11f8c6===_0x2f9b86(0x29f))_0x175622[_0x2f9b86(0x295)](_0x2f9b86(0x25c)+_0x43a8c1['pattern']+'\x27\x20in\x20`'+(_0x43a8c1['path']||'.')+'`');else{if(_0x11f8c6===_0x2f9b86(0x226))_0x175622[_0x2f9b86(0x295)](_0x2f9b86(0x1a2)+_0x43a8c1[_0x2f9b86(0x26c)]+'`');else{if(_0x11f8c6===_0x2f9b86(0x1d4))_0x175622[_0x2f9b86(0x295)](_0x2f9b86(0x264)+(_0x43a8c1[_0x2f9b86(0x1a0)]||'.')+'`');else _0x11f8c6===_0x2f9b86(0x267)&&_0x175622[_0x2f9b86(0x295)]('-\x20Glob\x20search\x20`'+_0x43a8c1[_0x2f9b86(0x214)]+_0x2f9b86(0x1d9)+(_0x43a8c1[_0x2f9b86(0x26c)]||'.')+'`');}}}catch{}}}_0x180a64[_0x2f9b86(0x295)](_0x175622['join']('\x0a'));const _0x40eee8=['',_0x2f9b86(0x1ca)];for(const _0x2beaac of _0x44782d){if(_0x2beaac[_0x2f9b86(0x286)]==='*')_0x40eee8[_0x2f9b86(0x295)]('-\x20'+_0x2beaac[_0x2f9b86(0x26c)]+':*');else{if(Array[_0x2f9b86(0x1ec)](_0x2beaac['lines'])){const _0x33efb4=_0x2beaac[_0x2f9b86(0x286)][_0x2f9b86(0x2a3)](([_0x2963b6,_0x16ff39])=>{if(_0x2963b6===_0x16ff39)return''+_0x2963b6;return _0x2963b6+'-'+_0x16ff39;});_0x40eee8[_0x2f9b86(0x295)]('-\x20'+_0x2beaac['path']+':'+_0x33efb4['join'](','));}else _0x40eee8[_0x2f9b86(0x295)]('-\x20'+_0x2beaac['path']+':*');}}_0x40eee8[_0x2f9b86(0x295)](''),_0x180a64[_0x2f9b86(0x295)](_0x40eee8[_0x2f9b86(0x1c6)]('\x0a')),_0x180a64[_0x2f9b86(0x295)](_0x2f9b86(0x25b));const _0x36e9ef=[];for(const _0x672858 of _0x44782d){let _0x1bd31e=a0_0x56ec11[_0x2f9b86(0x1e7)](_0x16d9dd['data']['repo_path'],_0x672858[_0x2f9b86(0x26c)]),_0x37b5fd=null,_0xbb993e=null;try{_0x37b5fd=await a0_0x46b046[_0x2f9b86(0x1b6)](_0x1bd31e,{'encoding':_0x2f9b86(0x21a)});}catch(_0x3718ae){const _0x4e8dbd=fixPathRepetition(_0x1bd31e);if(_0x4e8dbd)try{_0x37b5fd=await a0_0x46b046['readFile'](_0x4e8dbd,{'encoding':_0x2f9b86(0x21a)}),_0x1bd31e=_0x4e8dbd;}catch{_0xbb993e=_0x3718ae instanceof Error?_0x3718ae:new Error(String(_0x3718ae));}else _0xbb993e=_0x3718ae instanceof Error?_0x3718ae:new Error(String(_0x3718ae));}if(_0x37b5fd!==null){const _0x142ca2=_0x37b5fd[_0x2f9b86(0x1f5)](/\r?\n/),_0x77d4d7=[_0x2f9b86(0x20d)+_0x672858[_0x2f9b86(0x26c)]+'\x22>'];if(_0x672858[_0x2f9b86(0x286)]==='*'||!Array['isArray'](_0x672858[_0x2f9b86(0x286)]))for(let _0x254489=0x1;_0x254489<=_0x142ca2['length'];_0x254489++){const _0x389943=_0x142ca2[_0x254489-0x1];_0x77d4d7[_0x2f9b86(0x295)](_0x254489+'|\x20'+_0x389943);}else for(const [_0x3eb974,_0x424ad6]of _0x672858[_0x2f9b86(0x286)]){_0x77d4d7[_0x2f9b86(0x205)]>0x1&&_0x77d4d7[_0x2f9b86(0x295)]('');for(let _0x5926b0=_0x3eb974;_0x5926b0<=_0x424ad6&&_0x5926b0<=_0x142ca2['length'];_0x5926b0++){const _0x474657=_0x142ca2[_0x5926b0-0x1];_0x77d4d7['push'](_0x5926b0+'|\x20'+_0x474657);}}_0x77d4d7[_0x2f9b86(0x295)](_0x2f9b86(0x19d)),_0x36e9ef['push'](_0x77d4d7[_0x2f9b86(0x1c6)]('\x0a'));}else _0x36e9ef['push']('<file\x20path=\x22'+_0x672858['path']+_0x2f9b86(0x1c8)+(_0xbb993e?.[_0x2f9b86(0x213)]||'Unknown\x20error')+'\x0a</file>');}_0x180a64[_0x2f9b86(0x295)](_0x36e9ef[_0x2f9b86(0x1c6)]('\x0a\x0a')),_0x44a4d3=_0x180a64['join']('\x0a');const _0x3c3a09=_0x492ed2['errors']?.[_0x2f9b86(0x2aa)](_0x2acab5=>_0x2acab5[_0x2f9b86(0x213)]?.[_0x2f9b86(0x19f)](_0x2f9b86(0x19e)))||[];if(_0x3c3a09[_0x2f9b86(0x205)]>0x0){const _0x5b7af9=_0x3c3a09['map'](_0x5d7f55=>_0x5d7f55[_0x2f9b86(0x213)])[_0x2f9b86(0x1c6)](';\x20');reportMorphError({'error_message':_0x5b7af9,'error_type':_0x2f9b86(0x241),'context':{'tool':_0x2f9b86(0x256),'repo_path':_0x16d9dd[_0x2f9b86(0x1e6)][_0x2f9b86(0x23a)],'query':_0x16d9dd['data'][_0x2f9b86(0x218)],'model':_0x2f9b86(0x254),'termination_reason':_0x2f9b86(0x2a9),'error_count':_0x3c3a09[_0x2f9b86(0x205)],'is_timeout':![],'timings':_0x492ed2[_0x2f9b86(0x26e)],'files_attempted':_0x44782d[_0x2f9b86(0x2a3)](_0x356c3b=>({'path':_0x356c3b[_0x2f9b86(0x26c)],'lines':_0x356c3b[_0x2f9b86(0x286)]})),'tool_calls':_0x81452f(_0x492ed2[_0x2f9b86(0x221)]),'messages':_0x492ed2[_0x2f9b86(0x221)]?.[_0x2f9b86(0x2a3)](_0x4c55ce=>({'role':_0x4c55ce[_0x2f9b86(0x1d3)],'content':_0x4c55ce[_0x2f9b86(0x283)],..._0x4c55ce['tool_calls']?{'tool_calls':_0x4c55ce[_0x2f9b86(0x2ac)][_0x2f9b86(0x205)]}:{},..._0x4c55ce[_0x2f9b86(0x1f8)]?{'tool_call_id':_0x4c55ce[_0x2f9b86(0x1f8)]}:{}})),'request_content':{'query':_0x16d9dd[_0x2f9b86(0x1e6)][_0x2f9b86(0x218)],'repo_path':_0x16d9dd[_0x2f9b86(0x1e6)][_0x2f9b86(0x23a)],'repoRoot':a0_0x56ec11[_0x2f9b86(0x1e7)](_0x16d9dd['data']['repo_path']),'model':_0x2f9b86(0x254)}},'source':_0x2f9b86(0x215)})['catch'](()=>{});}}else{if(_0x492ed2[_0x2f9b86(0x260)]===_0x2f9b86(0x240)&&_0x492ed2[_0x2f9b86(0x1bb)][_0x2f9b86(0x205)]>0x0){const _0x1825ee=_0x492ed2[_0x2f9b86(0x1bb)]['map'](_0x659365=>_0x659365[_0x2f9b86(0x213)])[_0x2f9b86(0x1c6)](';\x20');_0x44a4d3=_0x2f9b86(0x1e8)+_0x1825ee;const _0x1977be=_0x1825ee[_0x2f9b86(0x1fe)]()[_0x2f9b86(0x1bf)](_0x2f9b86(0x23f))||_0x1825ee['toLowerCase']()[_0x2f9b86(0x1bf)](_0x2f9b86(0x2ab))||_0x1825ee['toLowerCase']()['includes'](_0x2f9b86(0x1d1)),_0x5de7c7=_0x492ed2[_0x2f9b86(0x1db)]?.[_0x2f9b86(0x274)]?.[_0x2f9b86(0x1ce)],_0x4a3737=_0x492ed2[_0x2f9b86(0x1bb)][0x0];reportMorphError({'error_message':_0x1825ee,'error_type':_0x1977be?_0x2f9b86(0x1a6):_0x4a3737?.[_0x2f9b86(0x269)]?.['name']||_0x2f9b86(0x20c),'context':{'tool':_0x2f9b86(0x256),'repo_path':_0x16d9dd[_0x2f9b86(0x1e6)]['repo_path'],'query':_0x16d9dd[_0x2f9b86(0x1e6)][_0x2f9b86(0x218)],'model':_0x2f9b86(0x254),'termination_reason':_0x492ed2[_0x2f9b86(0x260)],'error_count':_0x492ed2[_0x2f9b86(0x1bb)][_0x2f9b86(0x205)],'is_timeout':_0x1977be,'timings':_0x492ed2[_0x2f9b86(0x26e)],'files_attempted':_0x5de7c7?.[_0x2f9b86(0x2a3)](_0x4eae8a=>({'path':_0x4eae8a[_0x2f9b86(0x26c)],'lines':_0x4eae8a['lines']})),'tool_calls':_0x81452f(_0x492ed2[_0x2f9b86(0x221)]),'messages':_0x492ed2[_0x2f9b86(0x221)]?.[_0x2f9b86(0x2a3)](_0x676794=>({'role':_0x676794[_0x2f9b86(0x1d3)],'content':_0x676794[_0x2f9b86(0x283)],..._0x676794['tool_calls']?{'tool_calls':_0x676794[_0x2f9b86(0x2ac)][_0x2f9b86(0x205)]}:{},..._0x676794['tool_call_id']?{'tool_call_id':_0x676794[_0x2f9b86(0x1f8)]}:{}})),'request_content':{'query':_0x16d9dd['data'][_0x2f9b86(0x218)],'repo_path':_0x16d9dd[_0x2f9b86(0x1e6)]['repo_path'],'repoRoot':a0_0x56ec11[_0x2f9b86(0x1e7)](_0x16d9dd['data'][_0x2f9b86(0x23a)]),'model':_0x2f9b86(0x254)}},'stack_trace':_0x4a3737?.[_0x2f9b86(0x261)]||undefined,'source':_0x2f9b86(0x215)})[_0x2f9b86(0x198)](()=>{});}else _0x44a4d3=_0x2f9b86(0x1ee);}return{'content':[{'type':'text','text':_0x44a4d3}]};}catch(_0xd1692e){const _0x33382d=_0xd1692e instanceof Error?_0xd1692e[_0x2f9b86(0x213)]:String(_0xd1692e),_0x6ffcb9=_0x33382d[_0x2f9b86(0x1fe)]()['includes'](_0x2f9b86(0x23f))||_0x33382d[_0x2f9b86(0x1fe)]()[_0x2f9b86(0x1bf)](_0x2f9b86(0x2ab))||_0x33382d[_0x2f9b86(0x1fe)]()[_0x2f9b86(0x1bf)](_0x2f9b86(0x1d1))||_0xd1692e instanceof Error&&_0xd1692e[_0x2f9b86(0x1b9)]===_0x2f9b86(0x1a6);return reportMorphError({'error_message':_0x33382d,'error_type':_0x6ffcb9?_0x2f9b86(0x1a6):_0xd1692e instanceof Error?_0xd1692e['constructor'][_0x2f9b86(0x1b9)]:_0x2f9b86(0x236),'context':{'tool':_0x2f9b86(0x256),'repo_path':_0x16d9dd['data'][_0x2f9b86(0x23a)],'query':_0x16d9dd[_0x2f9b86(0x1e6)][_0x2f9b86(0x218)],'model':_0x2f9b86(0x254),'is_timeout':_0x6ffcb9,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x16d9dd[_0x2f9b86(0x1e6)][_0x2f9b86(0x218)],'repo_path':_0x16d9dd[_0x2f9b86(0x1e6)][_0x2f9b86(0x23a)],'repoRoot':a0_0x56ec11['resolve'](_0x16d9dd[_0x2f9b86(0x1e6)]['repo_path']),'model':_0x2f9b86(0x254)}},'stack_trace':_0xd1692e instanceof Error?_0xd1692e[_0x2f9b86(0x261)]:undefined,'source':_0x2f9b86(0x215)})[_0x2f9b86(0x198)](()=>{}),{'content':[{'type':_0x2f9b86(0x1cd),'text':_0x2f9b86(0x22d)+_0x33382d}],'isError':![]};}}case _0x2f9b86(0x2a7):{const _0x615929=WarpGrepGitHubArgsSchema[_0x2f9b86(0x1ff)](_0x53ba2);if(!_0x615929['success'])return{'content':[{'type':'text','text':_0x2f9b86(0x25a)+_0x615929[_0x2f9b86(0x1c3)]}],'isError':!![]};const _0x2ba4e1=_0x615929[_0x2f9b86(0x1e6)][_0x2f9b86(0x1c5)]||_0x615929[_0x2f9b86(0x1e6)][_0x2f9b86(0x249)];if(!_0x2ba4e1)return{'content':[{'type':_0x2f9b86(0x1cd),'text':_0x2f9b86(0x275)}],'isError':!![]};const _0x30c88d=MORPH_API_KEY;if(!_0x30c88d)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x29f07e=Date[_0x2f9b86(0x29e)]();logMcpStderr('[github_codebase_search]\x20Searching\x20'+_0x2ba4e1+'\x20for:\x20\x22'+_0x615929[_0x2f9b86(0x1e6)][_0x2f9b86(0x218)]+'\x22');try{const _0x103925=new WarpGrepClient({'morphApiKey':_0x30c88d,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x1dad7c=await _0x103925[_0x2f9b86(0x262)]({'searchTerm':_0x615929[_0x2f9b86(0x1e6)][_0x2f9b86(0x218)],'github':_0x2ba4e1,'branch':_0x615929['data'][_0x2f9b86(0x27a)]}),_0x150323=Date['now']()-_0x29f07e;logMcpStderr(_0x2f9b86(0x298)+_0x150323+'ms.\x20Success:\x20'+_0x1dad7c[_0x2f9b86(0x194)]);const _0x557ee8=formatResult(_0x1dad7c);return{'content':[{'type':_0x2f9b86(0x1cd),'text':_0x557ee8}]};}catch(_0x5557dc){const _0x20512e=Date['now']()-_0x29f07e,_0x4c136c=_0x5557dc instanceof Error?_0x5557dc[_0x2f9b86(0x213)]:String(_0x5557dc);return logMcpStderr(_0x2f9b86(0x27c)+_0x20512e+'ms:',_0x4c136c),reportMorphError({'error_message':_0x4c136c,'error_type':_0x5557dc instanceof Error?_0x5557dc[_0x2f9b86(0x269)]['name']:_0x2f9b86(0x236),'context':{'tool':_0x2f9b86(0x2a7),'github_url':_0x2ba4e1,'search_string':_0x615929[_0x2f9b86(0x1e6)][_0x2f9b86(0x218)],'branch':_0x615929[_0x2f9b86(0x1e6)][_0x2f9b86(0x27a)]},'stack_trace':_0x5557dc instanceof Error?_0x5557dc[_0x2f9b86(0x261)]:undefined,'source':_0x2f9b86(0x215),'tool':'github_codebase_search','latency_ms':_0x20512e})[_0x2f9b86(0x198)](()=>{}),{'content':[{'type':_0x2f9b86(0x1cd),'text':_0x2f9b86(0x285)+_0x4c136c}],'isError':![]};}}default:throw new Error(_0x2f9b86(0x2a8)+_0x2dd778);}}catch(_0x3680a1){const _0x2b915b=_0x3680a1 instanceof Error?_0x3680a1[_0x2f9b86(0x213)]:String(_0x3680a1);return reportMorphError({'error_message':_0x2b915b,'error_type':_0x3680a1 instanceof Error?_0x3680a1[_0x2f9b86(0x269)][_0x2f9b86(0x1b9)]:_0x2f9b86(0x236),'context':{'tool':_0x2dd778,'arguments':_0x53ba2?JSON[_0x2f9b86(0x1f7)](_0x53ba2)[_0x2f9b86(0x208)](0x0,0x1f4):undefined,'mcp_server_version':_0x2f9b86(0x1af)},'stack_trace':_0x3680a1 instanceof Error?_0x3680a1[_0x2f9b86(0x261)]:undefined,'source':_0x2f9b86(0x215)})[_0x2f9b86(0x198)](()=>{}),{'content':[{'type':_0x2f9b86(0x1cd),'text':_0x2f9b86(0x1e8)+_0x2b915b}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x33aa5a){const _0x1c42de=a0_0x5e2a04,_0x246bb0=await getValidRootDirectories(_0x33aa5a);if(_0x246bb0['length']>0x0)allowedDirectories=[..._0x246bb0],logMcpStderr(_0x1c42de(0x1df)+_0x246bb0['length']+_0x1c42de(0x24e));else{logMcpStderr(_0x1c42de(0x217));if(ENABLE_WORKSPACE_MODE)try{const _0x4fd9ce=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x4fd9ce&&(allowedDirectories=[_0x4fd9ce],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x4fd9ce));}catch(_0x464eba){logMcpStderr(_0x1c42de(0x1ad)+_0x464eba);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x1b1da5=a0_0x5e2a04;try{const _0xe57aba=await server[_0x1b1da5(0x197)]();_0xe57aba&&'roots'in _0xe57aba&&await updateAllowedDirectoriesFromRoots(_0xe57aba[_0x1b1da5(0x277)]);}catch(_0x5c0c0a){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x5c0c0a instanceof Error?_0x5c0c0a[_0x1b1da5(0x213)]:String(_0x5c0c0a));}}),server[a0_0x5e2a04(0x19c)]=async()=>{const _0x172adf=a0_0x5e2a04,_0x1474d1=server[_0x172adf(0x228)]();if(_0x1474d1?.['roots'])try{const _0x1fae06=await server[_0x172adf(0x197)]();_0x1fae06&&_0x172adf(0x277)in _0x1fae06?await updateAllowedDirectoriesFromRoots(_0x1fae06[_0x172adf(0x277)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x5aeadf){logMcpStderr(_0x172adf(0x19a),_0x5aeadf instanceof Error?_0x5aeadf[_0x172adf(0x213)]:String(_0x5aeadf));}else{if(allowedDirectories[_0x172adf(0x205)]>0x0)logMcpStderr(_0x172adf(0x26a),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x172adf(0x1ea));else throw new Error(_0x172adf(0x21d));}}};async function runServer(){const _0x368cc1=a0_0x5e2a04,_0x1ff740=new StdioServerTransport();await server[_0x368cc1(0x196)](_0x1ff740),logMcpStderr(_0x368cc1(0x26d)),allowedDirectories[_0x368cc1(0x205)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x5e2a04(0x198)](_0x1259ef=>{const _0x5e6426=a0_0x5e2a04;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x1259ef),process[_0x5e6426(0x1a1)](0x1);});
|
|
2
|
+
const a0_0x50bb38=a0_0x4c79;(function(_0x43cab9,_0x5d1be5){const _0x5edb3d=a0_0x4c79,_0x521da9=_0x43cab9();while(!![]){try{const _0x599e8f=-parseInt(_0x5edb3d(0x26c))/0x1+parseInt(_0x5edb3d(0x195))/0x2+parseInt(_0x5edb3d(0x1c1))/0x3+parseInt(_0x5edb3d(0x169))/0x4*(-parseInt(_0x5edb3d(0x19e))/0x5)+parseInt(_0x5edb3d(0x1a2))/0x6*(parseInt(_0x5edb3d(0x176))/0x7)+parseInt(_0x5edb3d(0x1c3))/0x8*(-parseInt(_0x5edb3d(0x19f))/0x9)+parseInt(_0x5edb3d(0x202))/0xa;if(_0x599e8f===_0x5d1be5)break;else _0x521da9['push'](_0x521da9['shift']());}catch(_0x2772f8){_0x521da9['push'](_0x521da9['shift']());}}}(a0_0xe4fd,0x5aa9f));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';function a0_0x4c79(_0x29b738,_0x2d36f7){_0x29b738=_0x29b738-0x166;const _0xe4fd55=a0_0xe4fd();let _0x4c7999=_0xe4fd55[_0x29b738];return _0x4c7999;}import a0_0x197418 from'fs/promises';import a0_0x54604a from'path';import a0_0x32cf42 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 a0_0x946e1 from'axios';function fixPathRepetition(_0x67d247){const _0x381d88=a0_0x4c79,_0x3e9c52=_0x67d247[_0x381d88(0x215)](a0_0x54604a[_0x381d88(0x216)])['filter'](Boolean);if(_0x3e9c52[_0x381d88(0x228)]<0x2)return null;for(let _0x403d75=Math[_0x381d88(0x242)](_0x3e9c52['length']/0x2);_0x403d75>=0x1;_0x403d75--){for(let _0x4583ea=0x0;_0x4583ea<=_0x3e9c52[_0x381d88(0x228)]-0x2*_0x403d75;_0x4583ea++){const _0x541c1b=_0x3e9c52[_0x381d88(0x211)](_0x4583ea,_0x4583ea+_0x403d75),_0x1f2dd4=_0x3e9c52[_0x381d88(0x211)](_0x4583ea+_0x403d75,_0x4583ea+0x2*_0x403d75);if(_0x541c1b[_0x381d88(0x18e)]((_0x1bef42,_0x4f3ba1)=>_0x1bef42===_0x1f2dd4[_0x4f3ba1])){const _0xe53a90=[..._0x3e9c52[_0x381d88(0x211)](0x0,_0x4583ea),..._0x3e9c52[_0x381d88(0x211)](_0x4583ea+_0x403d75)];return a0_0x54604a[_0x381d88(0x216)]+_0xe53a90['join'](a0_0x54604a[_0x381d88(0x216)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x542cf1=a0_0x4c79;try{const _0x260ec3=require('../package.json');return _0x260ec3[_0x542cf1(0x241)]??_0x542cf1(0x23b);}catch(_0x50f25b){return logMcpStderr(_0x542cf1(0x18b),_0x50f25b),_0x542cf1(0x23b);}}function printHelp(){const _0x733d65=a0_0x4c79;console[_0x733d65(0x198)](_0x733d65(0x22f)+getPackageVersion()),console[_0x733d65(0x198)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x733d65(0x198)](_0x733d65(0x1ce)),console['log']('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x733d65(0x198)](_0x733d65(0x24a)),console[_0x733d65(0x198)](_0x733d65(0x17f)),console[_0x733d65(0x198)]('\x0aExamples:'),console['log'](_0x733d65(0x1cb)),console['log']('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x50bb38(0x1f3)]['slice'](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x50bb38(0x1c8),'-h']);cliArgs['some'](_0x53501a=>VERSION_FLAGS[a0_0x50bb38(0x193)](_0x53501a))&&(console[a0_0x50bb38(0x198)](a0_0x50bb38(0x22f)+getPackageVersion()),process[a0_0x50bb38(0x20b)](0x0));cliArgs['some'](_0x319942=>HELP_FLAGS['has'](_0x319942))&&(printHelp(),process[a0_0x50bb38(0x20b)](0x0));function getCliArg(_0x3ea1c3){const _0x52fe84=a0_0x50bb38;for(let _0x58c499=0x0;_0x58c499<cliArgs[_0x52fe84(0x228)];_0x58c499++){const _0x38bb28=cliArgs[_0x58c499];if(_0x38bb28['startsWith']('--'+_0x3ea1c3+'='))return _0x38bb28[_0x52fe84(0x211)](('--'+_0x3ea1c3+'=')[_0x52fe84(0x228)]);if(_0x38bb28==='--'+_0x3ea1c3&&_0x58c499+0x1<cliArgs[_0x52fe84(0x228)])return cliArgs[_0x58c499+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x50bb38(0x193)](arg)||HELP_FLAGS['has'](arg))continue;if(arg[a0_0x50bb38(0x192)]('--api-key='))continue;if(arg===a0_0x50bb38(0x21b)){i++;continue;}args[a0_0x50bb38(0x252)](arg);}const WORKSPACE_ROOT=process[a0_0x50bb38(0x243)]['WORKSPACE_ROOT']||process[a0_0x50bb38(0x243)][a0_0x50bb38(0x1df)]||process[a0_0x50bb38(0x210)](),ENABLE_WORKSPACE_MODE=process[a0_0x50bb38(0x243)]['ENABLE_WORKSPACE_MODE']!==a0_0x50bb38(0x1e6),MORPH_API_KEY=getCliArg(a0_0x50bb38(0x1a0))??process[a0_0x50bb38(0x243)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x50bb38(0x243)][a0_0x50bb38(0x17b)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x50bb38(0x243)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x50bb38(0x243)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x50bb38(0x253),a0_0x50bb38(0x1f4),a0_0x50bb38(0x269)]),DISABLED_TOOLS=process[a0_0x50bb38(0x243)][a0_0x50bb38(0x1d7)]?new Set(process[a0_0x50bb38(0x243)][a0_0x50bb38(0x1d7)]['split'](',')[a0_0x50bb38(0x1a5)](_0x1d69c6=>_0x1d69c6[a0_0x50bb38(0x203)]())[a0_0x50bb38(0x172)](_0x59970e=>_0x59970e[a0_0x50bb38(0x228)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x50bb38(0x182)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x50bb38(0x193)](tool)&&console[a0_0x50bb38(0x19c)]('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+a0_0x50bb38(0x20f)+[...KNOWN_TOOL_NAMES][a0_0x50bb38(0x194)](',\x20'));}console[a0_0x50bb38(0x19c)](a0_0x50bb38(0x18f)+[...DISABLED_TOOLS][a0_0x50bb38(0x194)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x50bb38(0x268))&&!MORPH_API_KEY['startsWith'](a0_0x50bb38(0x18a))&&logMcpStderr(a0_0x50bb38(0x1c6));async function reportMorphError(_0x3a8086){const _0x1a05aa=a0_0x50bb38;try{await a0_0x946e1['post'](_0x1a05aa(0x181),{..._0x3a8086,'timestamp':new Date()[_0x1a05aa(0x173)](),'source':_0x3a8086['source']||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x3a8086[_0x1a05aa(0x208)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x1a05aa(0x17a),'Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x50bb38(0x267)),logMcpStderr(a0_0x50bb38(0x262)),logMcpStderr(a0_0x50bb38(0x20e)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x50bb38(0x178)),logMcpStderr('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x110cb6){const _0x3b8c4d=a0_0x50bb38;return a0_0x54604a[_0x3b8c4d(0x1d0)](_0x110cb6);}function expandHome(_0x311c8d){const _0x3dc6cb=a0_0x50bb38;if(_0x311c8d[_0x3dc6cb(0x192)]('~/')||_0x311c8d==='~')return a0_0x54604a[_0x3dc6cb(0x194)](a0_0x32cf42['homedir'](),_0x311c8d[_0x3dc6cb(0x211)](0x1));return _0x311c8d;}let allowedDirectories=await Promise[a0_0x50bb38(0x187)](args[a0_0x50bb38(0x1a5)](async _0x1ad17f=>{const _0x3a1ac1=a0_0x50bb38,_0x3dd947=expandHome(_0x1ad17f),_0x5ab296=a0_0x54604a[_0x3a1ac1(0x166)](_0x3dd947);try{const _0x3a1fad=await a0_0x197418[_0x3a1ac1(0x266)](_0x5ab296);return normalizePath(_0x3a1fad);}catch(_0x1b9a53){return normalizePath(_0x5ab296);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x50bb38(0x228)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x50bb38(0x252)](workspaceDir),logMcpStderr(a0_0x50bb38(0x1db)+workspaceDir+a0_0x50bb38(0x1fc)));}catch(a0_0x55d9ff){logMcpStderr(a0_0x50bb38(0x1b0)+a0_0x55d9ff);}async function detectWorkspaceRoot(_0x254be5){const _0x23c6c9=a0_0x50bb38;let _0x19c902=a0_0x54604a[_0x23c6c9(0x166)](_0x254be5);const _0x13ef84=[_0x23c6c9(0x226),'.vscode','package.json',_0x23c6c9(0x1bb),_0x23c6c9(0x1fa),_0x23c6c9(0x207),_0x23c6c9(0x227),_0x23c6c9(0x1eb),_0x23c6c9(0x18d)];while(_0x19c902!==a0_0x54604a[_0x23c6c9(0x1c0)](_0x19c902)){for(const _0x3e2eac of _0x13ef84){const _0x238c43=a0_0x54604a[_0x23c6c9(0x194)](_0x19c902,_0x3e2eac);try{return await a0_0x197418['access'](_0x238c43),normalizePath(_0x19c902);}catch{}}_0x19c902=a0_0x54604a['dirname'](_0x19c902);}return normalizePath(_0x254be5);}await Promise['all'](args['map'](async _0x888a35=>{const _0x2bac5d=a0_0x50bb38;try{const _0x1d2033=await a0_0x197418[_0x2bac5d(0x1f6)](expandHome(_0x888a35));!_0x1d2033['isDirectory']()&&(logMcpStderr(_0x2bac5d(0x233)+_0x888a35+_0x2bac5d(0x229)),process[_0x2bac5d(0x20b)](0x1));}catch(_0x48a617){logMcpStderr(_0x2bac5d(0x1ab)+_0x888a35+':',_0x48a617),process[_0x2bac5d(0x20b)](0x1);}}));async function validatePath(_0x52eda2){const _0xd03363=a0_0x50bb38,_0x3921a8=expandHome(_0x52eda2),_0x3be386=a0_0x54604a['resolve'](_0x3921a8);try{const _0x515805=await a0_0x197418['realpath'](_0x3be386);return _0x515805;}catch(_0x3c27a1){if(_0x3c27a1[_0xd03363(0x254)]==='ENOENT'){const _0x5dafe4=a0_0x54604a[_0xd03363(0x1c0)](_0x3be386);try{const _0x503e6f=await a0_0x197418[_0xd03363(0x266)](_0x5dafe4);return a0_0x54604a['join'](_0x503e6f,a0_0x54604a[_0xd03363(0x186)](_0x3be386));}catch{throw new Error(_0xd03363(0x224)+_0x5dafe4);}}throw _0x3c27a1;}}const MorphEditFileArgsSchema=z[a0_0x50bb38(0x21d)]({'path':z['string'](),'code_edit':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c7)](a0_0x50bb38(0x1e2)),'instruction':z['string']()[a0_0x50bb38(0x1c7)]('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0x50bb38(0x22c)]()['default'](![])[a0_0x50bb38(0x1c7)]('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION='Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.',WarpGrepArgsSchema=z[a0_0x50bb38(0x21d)]({'search_string':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c7)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c7)]('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos'),'search_type':z[a0_0x50bb38(0x1b2)]([a0_0x50bb38(0x22d),'node_modules'])[a0_0x50bb38(0x1c2)]()[a0_0x50bb38(0x1c7)](a0_0x50bb38(0x24e))}),WarpGrepGitHubArgsSchema=z[a0_0x50bb38(0x21d)]({'search_string':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c7)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c2)]()['describe']('GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'owner_repo':z[a0_0x50bb38(0x258)]()['optional']()[a0_0x50bb38(0x1c7)](a0_0x50bb38(0x204)),'branch':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c2)]()[a0_0x50bb38(0x1c7)]('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z[a0_0x50bb38(0x21d)]({'query':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c7)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x50bb38(0x258)]()['describe'](a0_0x50bb38(0x1c5)),'branch':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c2)]()[a0_0x50bb38(0x1c7)](a0_0x50bb38(0x1d2)),'commitHash':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c2)]()[a0_0x50bb38(0x1c7)]('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x50bb38(0x1bd)](z[a0_0x50bb38(0x258)]())[a0_0x50bb38(0x22d)]([])[a0_0x50bb38(0x1c7)](a0_0x50bb38(0x1c9)),'limit':z[a0_0x50bb38(0x1b5)]()['optional']()[a0_0x50bb38(0x22d)](0xa)[a0_0x50bb38(0x1c7)]('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x50bb38(0x1cf),'version':a0_0x50bb38(0x246)},{'capabilities':{'tools':{}}});server[a0_0x50bb38(0x19d)](ListToolsRequestSchema,async()=>{const _0x1e0da6=a0_0x50bb38,_0x389c61=[{'name':_0x1e0da6(0x253),'description':_0x1e0da6(0x1da)+_0x1e0da6(0x23a)+_0x1e0da6(0x170)+_0x1e0da6(0x22e)+_0x1e0da6(0x197)+_0x1e0da6(0x25c)+_0x1e0da6(0x26b)+_0x1e0da6(0x17e)+_0x1e0da6(0x171)+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+'ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a'+_0x1e0da6(0x1af)+_0x1e0da6(0x1aa)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x1e0da6(0x1a9)+_0x1e0da6(0x175)+_0x1e0da6(0x22a)+_0x1e0da6(0x1ff)+_0x1e0da6(0x24d)+_0x1e0da6(0x180)+_0x1e0da6(0x1fe)+_0x1e0da6(0x255)+'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':_0x1e0da6(0x1f4),'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'+_0x1e0da6(0x1ae)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x19b23a=_0x389c61['filter'](_0x1be38d=>{const _0x5e2c9d=_0x1e0da6;if(DISABLED_TOOLS[_0x5e2c9d(0x193)](_0x1be38d[_0x5e2c9d(0x1e4)]))return console[_0x5e2c9d(0x19c)](_0x5e2c9d(0x1e8)+_0x1be38d[_0x5e2c9d(0x1e4)]+_0x5e2c9d(0x231)),![];if(_0x5e2c9d(0x220)in _0x1be38d&&_0x1be38d[_0x5e2c9d(0x220)]&&!MORPH_API_KEY)return logMcpStderr(_0x5e2c9d(0x1b3)+_0x1be38d[_0x5e2c9d(0x1e4)]+_0x5e2c9d(0x1e0)),![];return!![];});return{'tools':_0x19b23a[_0x1e0da6(0x1a5)](_0x321aae=>({'name':_0x321aae[_0x1e0da6(0x1e4)],'description':_0x321aae[_0x1e0da6(0x1f5)],'inputSchema':_0x321aae[_0x1e0da6(0x1f2)]}))};}),server[a0_0x50bb38(0x19d)](CallToolRequestSchema,async _0x359e9a=>{const _0x2727ae=a0_0x50bb38,{name:_0x2750a0,arguments:_0x547ab6}=_0x359e9a[_0x2727ae(0x1d8)];try{if(DISABLED_TOOLS['has'](_0x2750a0))throw new Error(_0x2727ae(0x1b4)+_0x2750a0+_0x2727ae(0x244));switch(_0x2750a0){case _0x2727ae(0x253):{const _0x2e2412=MorphEditFileArgsSchema[_0x2727ae(0x1e7)](_0x547ab6);if(!_0x2e2412[_0x2727ae(0x26e)])throw new Error(_0x2727ae(0x209)+_0x2e2412[_0x2727ae(0x19c)]);const _0x25479f=await validatePath(_0x2e2412['data'][_0x2727ae(0x25a)]);let _0x2c33ba=null,_0x358f28=!![],_0x3eeedd=null;try{_0x2c33ba=await a0_0x197418[_0x2727ae(0x223)](_0x25479f,_0x2727ae(0x26d));}catch(_0x3d49ec){const _0x2f4e77=_0x3d49ec[_0x2727ae(0x254)];_0x2f4e77==='ENOENT'?(_0x358f28=![],_0x2c33ba=''):(_0x3eeedd=_0x2727ae(0x1ea)+(_0x2f4e77||_0x2727ae(0x23b))+_0x2727ae(0x261)+(_0x3d49ec instanceof Error?_0x3d49ec[_0x2727ae(0x1bc)]:String(_0x3d49ec)),logMcpStderr(_0x2727ae(0x1b3)+_0x3eeedd));}let _0x3a81ce;try{const _0x40e667=MORPH_API_KEY;if(!_0x40e667)throw new Error(_0x2727ae(0x225));const _0x5385a0=a0_0x54604a[_0x2727ae(0x1c0)](_0x25479f),_0x4307b0=a0_0x54604a['basename'](_0x25479f),_0x12de6d=await executeEditFile({'target_filepath':_0x4307b0,'code_edit':_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x26a)],'instructions':_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x234)]},{'morphApiKey':_0x40e667,'morphApiUrl':MORPH_API_URL,'baseDir':_0x5385a0,'autoWrite':!_0x2e2412['data'][_0x2727ae(0x21f)],'generateUdiff':![],'debug':![]});_0x3a81ce=_0x12de6d[_0x2727ae(0x205)];if(!_0x12de6d[_0x2727ae(0x26e)])throw new Error(_0x12de6d[_0x2727ae(0x19c)]||_0x2727ae(0x1ac));const _0x5a3a65=_0x12de6d[_0x2727ae(0x17d)],_0xab4f7d=_0x2727ae(0x23c)+_0x5a3a65[_0x2727ae(0x16d)]+_0x2727ae(0x189)+_0x5a3a65[_0x2727ae(0x1b9)]+_0x2727ae(0x222)+_0x5a3a65[_0x2727ae(0x1b1)];if(_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x21f)])return{'content':[{'type':_0x2727ae(0x1ca),'text':_0x2727ae(0x212)+(_0x358f28?'':_0x2727ae(0x1d4))+':\x20'+_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x234)]+'.\x20Changes:\x20'+_0xab4f7d+_0x2727ae(0x1f0)+_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x25a)]+'.'}]};return{'content':[{'type':_0x2727ae(0x1ca),'text':_0x2727ae(0x1b6)+(_0x358f28?_0x2727ae(0x16a):_0x2727ae(0x239))+':\x20'+_0x2e2412['data'][_0x2727ae(0x234)]+'.\x20Changes:\x20'+_0xab4f7d+_0x2727ae(0x1f0)+_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x25a)]+'.'}]};}catch(_0x2a4771){const _0x11ca75=_0x2a4771 instanceof Error?_0x2a4771[_0x2727ae(0x1bc)]:String(_0x2a4771);return reportMorphError({'error_message':_0x11ca75,'error_type':_0x2a4771 instanceof Error?_0x2a4771[_0x2727ae(0x24c)][_0x2727ae(0x1e4)]:_0x2727ae(0x247),'context':{'tool':_0x2727ae(0x253),'completion_id':_0x3a81ce,'file_path':_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x25a)],'validated_path':_0x25479f,'instruction':_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x234)],'model':'morph-v3-fast','dry_run':_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x21f)],'file_exists':_0x358f28,'file_read_error':_0x3eeedd,'file_readable':_0x2c33ba!==null,'request_content':{'path':_0x2e2412['data'][_0x2727ae(0x25a)],'code_edit':_0x2e2412['data'][_0x2727ae(0x26a)],'instruction':_0x2e2412[_0x2727ae(0x1f9)]['instruction'],'original_code':_0x2c33ba!==null?_0x2c33ba[_0x2727ae(0x228)]>0xc350?_0x2c33ba['substring'](0x0,0xc350)+_0x2727ae(0x25f)+_0x2c33ba['length']+_0x2727ae(0x245):_0x2c33ba:_0x2727ae(0x21a)+(_0x3eeedd||_0x2727ae(0x263))+']','original_code_length':_0x2c33ba?.[_0x2727ae(0x228)]??0x0,'model':'morph-v3-fast','dry_run':_0x2e2412['data'][_0x2727ae(0x21f)]}},'stack_trace':_0x2a4771 instanceof Error?_0x2a4771[_0x2727ae(0x26f)]:undefined,'source':_0x2727ae(0x1d1)})[_0x2727ae(0x250)](()=>{}),{'content':[{'type':'text','text':_0x2727ae(0x199)+_0x11ca75}],'isError':!![]};}}case _0x2727ae(0x1f4):{const _0x2a901c=WarpGrepArgsSchema[_0x2727ae(0x1e7)](_0x547ab6);if(!_0x2a901c['success'])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x2a901c[_0x2727ae(0x19c)]}],'isError':!![]};const _0x4a1a53=_0x1b5282=>{const _0x5d0972=_0x2727ae,_0x320c30=[];for(const _0x1f2603 of _0x1b5282||[]){if(_0x1f2603[_0x5d0972(0x1ee)]===_0x5d0972(0x201)&&Array['isArray'](_0x1f2603[_0x5d0972(0x179)]))for(const _0x1ce0ff of _0x1f2603[_0x5d0972(0x179)]){try{const _0x169244=_0x1ce0ff[_0x5d0972(0x260)]?.['name'],_0x38c7f2=JSON[_0x5d0972(0x256)](_0x1ce0ff[_0x5d0972(0x260)]?.[_0x5d0972(0x1ec)]||'{}');if(_0x169244===_0x5d0972(0x25e))_0x320c30[_0x5d0972(0x252)](_0x5d0972(0x16f)+_0x38c7f2[_0x5d0972(0x185)]+'\x27\x20'+(_0x38c7f2[_0x5d0972(0x25a)]||'.'));else{if(_0x169244===_0x5d0972(0x1ba))_0x320c30[_0x5d0972(0x252)](_0x5d0972(0x214)+_0x38c7f2[_0x5d0972(0x25a)]);else{if(_0x169244===_0x5d0972(0x1be))_0x320c30[_0x5d0972(0x252)](_0x5d0972(0x1dd)+(_0x38c7f2[_0x5d0972(0x1cd)]||'.'));else{if(_0x169244===_0x5d0972(0x1d6))_0x320c30[_0x5d0972(0x252)](_0x5d0972(0x24b)+_0x38c7f2[_0x5d0972(0x185)]+'\x27\x20'+(_0x38c7f2[_0x5d0972(0x25a)]||'.'));else _0x169244===_0x5d0972(0x1a4)&&_0x320c30[_0x5d0972(0x252)](_0x5d0972(0x1a4));}}}}catch{}}}return _0x320c30;},_0x236079=_0x5b7609=>{const _0x5029ab=_0x2727ae,_0x58be88=[];if(!_0x5b7609||!Array['isArray'](_0x5b7609))return _0x58be88;const _0x2726ca=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x5029ab(0x1e9),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x5029ab(0x1ba)},{'pattern':/\[READ ERROR\]/,'error_type':_0x5029ab(0x1c4),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x5029ab(0x213),'tool':_0x5029ab(0x1ba)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x5029ab(0x218),'tool':_0x5029ab(0x219)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x5029ab(0x1cc),'tool':_0x5029ab(0x219)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x5029ab(0x213),'tool':_0x5029ab(0x1ba)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x5029ab(0x1ba)},{'pattern':/not a text file/,'error_type':_0x5029ab(0x213),'tool':_0x5029ab(0x1ba)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':'read'},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':'read'},{'pattern':/status="error"/,'error_type':'ToolException','tool':_0x5029ab(0x23b)}];let _0xd43ca0=0x0;for(const _0x18f126 of _0x5b7609){_0x18f126['role']===_0x5029ab(0x201)&&Array[_0x5029ab(0x221)](_0x18f126[_0x5029ab(0x179)])&&_0xd43ca0++;const _0x15a142=_0x18f126[_0x5029ab(0x1e3)];if((_0x18f126['role']==='tool'||_0x18f126['role']===_0x5029ab(0x1a7))&&_0x15a142&&typeof _0x15a142===_0x5029ab(0x258))for(const {pattern:_0x219d77,error_type:_0x18a49e,tool:_0x3bbf15}of _0x2726ca){const _0x4083b6=_0x15a142[_0x5029ab(0x237)](new RegExp(_0x219d77[_0x5029ab(0x16b)],'g'));if(_0x4083b6)for(const _0x1ca146 of _0x4083b6){const _0x1264b6=_0x15a142['indexOf'](_0x1ca146),_0x4300ed=_0x15a142[_0x5029ab(0x238)](_0x1264b6,Math[_0x5029ab(0x232)](_0x1264b6+0xc8,_0x15a142[_0x5029ab(0x228)]));_0x58be88[_0x5029ab(0x252)]({'tool':_0x3bbf15,'error_type':_0x18a49e,'error_message':_0x4300ed[_0x5029ab(0x215)]('\x0a')[0x0],'turn':_0xd43ca0});}}}return _0x58be88;};try{const _0x20025f=a0_0x54604a['resolve'](_0x2a901c[_0x2727ae(0x1f9)]['repo_path']),_0x3b2c9e=_0x2a901c['data'][_0x2727ae(0x1fb)],_0x3b3b1c=_0x3b2c9e===_0x2727ae(0x1b8)?{'allowNames':['node_modules']}:undefined,_0x211f2e=new LocalRipgrepProvider(_0x20025f,undefined,_0x3b3b1c),_0xc6c84a=await runWarpGrep({'searchTerm':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x16c)],'repoRoot':_0x20025f,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x211f2e,'search_type':_0x3b2c9e}),_0x42a152=_0x236079(_0xc6c84a[_0x2727ae(0x1de)]);_0x42a152['length']>0x0&&reportMorphError({'error_message':_0x2727ae(0x259)+_0x42a152['length']+_0x2727ae(0x248),'error_type':_0x2727ae(0x1a6),'level':'warn','tool':_0x2727ae(0x1f4),'context':{'repo_path':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x230)],'query':_0x2a901c[_0x2727ae(0x1f9)]['search_string'],'model':_0x2727ae(0x1ef),'termination_reason':_0xc6c84a['terminationReason'],'sub_tool_errors':_0x42a152,'timings':_0xc6c84a[_0x2727ae(0x236)],'tool_calls':_0x4a1a53(_0xc6c84a[_0x2727ae(0x1de)]),'messages':_0xc6c84a['messages']?.[_0x2727ae(0x1a5)](_0x30a288=>({'role':_0x30a288[_0x2727ae(0x1ee)],'content':_0x30a288[_0x2727ae(0x1e3)],..._0x30a288[_0x2727ae(0x179)]?{'tool_calls':_0x30a288['tool_calls']['length']}:{},..._0x30a288[_0x2727ae(0x1d3)]?{'tool_call_id':_0x30a288[_0x2727ae(0x1d3)]}:{}}))},'source':'mcp-filesystem'})[_0x2727ae(0x250)](()=>{});let _0x511959='';if(_0xc6c84a[_0x2727ae(0x1bf)]===_0x2727ae(0x1d9)&&_0xc6c84a[_0x2727ae(0x1a4)]?.[_0x2727ae(0x191)]?.[_0x2727ae(0x206)]){const _0x561cdc=_0xc6c84a[_0x2727ae(0x1a4)][_0x2727ae(0x191)][_0x2727ae(0x206)];if(_0x561cdc[_0x2727ae(0x228)]===0x0)return _0x511959=_0xc6c84a['finish'][_0x2727ae(0x1f8)]||_0x2727ae(0x200),{'content':[{'type':'text','text':_0x511959}]};const _0x4b6b72=[],_0x5c8bd0=[_0x2727ae(0x1a3)];for(const _0x586bc7 of _0xc6c84a[_0x2727ae(0x1de)]){if(_0x586bc7[_0x2727ae(0x1ee)]===_0x2727ae(0x201)&&Array[_0x2727ae(0x221)](_0x586bc7[_0x2727ae(0x179)]))for(const _0x531346 of _0x586bc7[_0x2727ae(0x179)]){try{const _0x3e5b68=_0x531346[_0x2727ae(0x260)]?.[_0x2727ae(0x1e4)],_0x60450d=JSON[_0x2727ae(0x256)](_0x531346[_0x2727ae(0x260)]?.[_0x2727ae(0x1ec)]||'{}');if(_0x3e5b68==='grep_search')_0x5c8bd0['push'](_0x2727ae(0x167)+_0x60450d[_0x2727ae(0x185)]+_0x2727ae(0x1a8)+(_0x60450d[_0x2727ae(0x25a)]||'.')+'`');else{if(_0x3e5b68===_0x2727ae(0x1ba))_0x5c8bd0[_0x2727ae(0x252)]('-\x20Read\x20file\x20`'+_0x60450d['path']+'`');else{if(_0x3e5b68==='list_directory')_0x5c8bd0[_0x2727ae(0x252)]('-\x20Listed\x20directory\x20`'+(_0x60450d[_0x2727ae(0x1cd)]||'.')+'`');else _0x3e5b68===_0x2727ae(0x1d6)&&_0x5c8bd0['push'](_0x2727ae(0x1fd)+_0x60450d[_0x2727ae(0x185)]+'`\x20in\x20`'+(_0x60450d[_0x2727ae(0x25a)]||'.')+'`');}}}catch{}}}_0x4b6b72['push'](_0x5c8bd0[_0x2727ae(0x194)]('\x0a'));const _0x1faa00=['','Relevant\x20context\x20found:'];for(const _0xa0225a of _0x561cdc){if(_0xa0225a['lines']==='*')_0x1faa00[_0x2727ae(0x252)]('-\x20'+_0xa0225a[_0x2727ae(0x25a)]+':*');else{if(Array[_0x2727ae(0x221)](_0xa0225a[_0x2727ae(0x257)])){const _0x332806=_0xa0225a['lines']['map'](([_0x3ce1a4,_0x5a8e9b])=>{if(_0x3ce1a4===_0x5a8e9b)return''+_0x3ce1a4;return _0x3ce1a4+'-'+_0x5a8e9b;});_0x1faa00['push']('-\x20'+_0xa0225a[_0x2727ae(0x25a)]+':'+_0x332806[_0x2727ae(0x194)](','));}else _0x1faa00[_0x2727ae(0x252)]('-\x20'+_0xa0225a[_0x2727ae(0x25a)]+':*');}}_0x1faa00[_0x2727ae(0x252)](''),_0x4b6b72[_0x2727ae(0x252)](_0x1faa00[_0x2727ae(0x194)]('\x0a')),_0x4b6b72[_0x2727ae(0x252)](_0x2727ae(0x20a));const _0x5de1e6=[];for(const _0x50ce5e of _0x561cdc){let _0x4cdf80=a0_0x54604a['resolve'](_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x230)],_0x50ce5e[_0x2727ae(0x25a)]),_0xa38cea=null,_0x5c0cf8=null;try{_0xa38cea=await a0_0x197418[_0x2727ae(0x223)](_0x4cdf80,{'encoding':_0x2727ae(0x26d)});}catch(_0x1fa6fe){const _0x3c1edc=fixPathRepetition(_0x4cdf80);if(_0x3c1edc)try{_0xa38cea=await a0_0x197418[_0x2727ae(0x223)](_0x3c1edc,{'encoding':_0x2727ae(0x26d)}),_0x4cdf80=_0x3c1edc;}catch{_0x5c0cf8=_0x1fa6fe instanceof Error?_0x1fa6fe:new Error(String(_0x1fa6fe));}else _0x5c0cf8=_0x1fa6fe instanceof Error?_0x1fa6fe:new Error(String(_0x1fa6fe));}if(_0xa38cea!==null){const _0xa6abb5=_0xa38cea['split'](/\r?\n/),_0x390267=[_0x2727ae(0x23d)+_0x50ce5e[_0x2727ae(0x25a)]+'\x22>'];if(_0x50ce5e['lines']==='*'||!Array[_0x2727ae(0x221)](_0x50ce5e['lines']))for(let _0x296cef=0x1;_0x296cef<=_0xa6abb5[_0x2727ae(0x228)];_0x296cef++){const _0xe58649=_0xa6abb5[_0x296cef-0x1];_0x390267[_0x2727ae(0x252)](_0x296cef+'|\x20'+_0xe58649);}else for(const [_0xa285e2,_0x255c40]of _0x50ce5e[_0x2727ae(0x257)]){_0x390267[_0x2727ae(0x228)]>0x1&&_0x390267[_0x2727ae(0x252)]('');for(let _0x16eb80=_0xa285e2;_0x16eb80<=_0x255c40&&_0x16eb80<=_0xa6abb5['length'];_0x16eb80++){const _0x5c1536=_0xa6abb5[_0x16eb80-0x1];_0x390267[_0x2727ae(0x252)](_0x16eb80+'|\x20'+_0x5c1536);}}_0x390267['push'](_0x2727ae(0x1e5)),_0x5de1e6[_0x2727ae(0x252)](_0x390267[_0x2727ae(0x194)]('\x0a'));}else _0x5de1e6['push'](_0x2727ae(0x23d)+_0x50ce5e[_0x2727ae(0x25a)]+_0x2727ae(0x184)+(_0x5c0cf8?.['message']||_0x2727ae(0x174))+_0x2727ae(0x264));}_0x4b6b72['push'](_0x5de1e6['join']('\x0a\x0a')),_0x511959=_0x4b6b72[_0x2727ae(0x194)]('\x0a');const _0x5ba177=_0xc6c84a[_0x2727ae(0x190)]?.['filter'](_0x234eb9=>_0x234eb9[_0x2727ae(0x1bc)]?.[_0x2727ae(0x192)]('File\x20read\x20error:'))||[];if(_0x5ba177[_0x2727ae(0x228)]>0x0){const _0x265dd7=_0x5ba177[_0x2727ae(0x1a5)](_0x29dd5e=>_0x29dd5e[_0x2727ae(0x1bc)])['join'](';\x20');reportMorphError({'error_message':_0x265dd7,'error_type':'FileReadError','context':{'tool':_0x2727ae(0x1f4),'repo_path':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x230)],'query':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x16c)],'model':_0x2727ae(0x1ef),'termination_reason':_0x2727ae(0x1dc),'error_count':_0x5ba177[_0x2727ae(0x228)],'is_timeout':![],'timings':_0xc6c84a['timings'],'files_attempted':_0x561cdc[_0x2727ae(0x1a5)](_0x4521e0=>({'path':_0x4521e0[_0x2727ae(0x25a)],'lines':_0x4521e0['lines']})),'tool_calls':_0x4a1a53(_0xc6c84a[_0x2727ae(0x1de)]),'messages':_0xc6c84a[_0x2727ae(0x1de)]?.[_0x2727ae(0x1a5)](_0x5a1713=>({'role':_0x5a1713['role'],'content':_0x5a1713[_0x2727ae(0x1e3)],..._0x5a1713['tool_calls']?{'tool_calls':_0x5a1713[_0x2727ae(0x179)][_0x2727ae(0x228)]}:{},..._0x5a1713[_0x2727ae(0x1d3)]?{'tool_call_id':_0x5a1713['tool_call_id']}:{}})),'request_content':{'query':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x16c)],'repo_path':_0x2a901c['data'][_0x2727ae(0x230)],'repoRoot':a0_0x54604a['resolve'](_0x2a901c['data'][_0x2727ae(0x230)]),'model':_0x2727ae(0x1ef)}},'source':'mcp-filesystem'})[_0x2727ae(0x250)](()=>{});}}else{if(_0xc6c84a[_0x2727ae(0x1bf)]==='terminated'&&_0xc6c84a[_0x2727ae(0x190)][_0x2727ae(0x228)]>0x0){const _0x2f57a7=_0xc6c84a['errors']['map'](_0x40c429=>_0x40c429[_0x2727ae(0x1bc)])['join'](';\x20');_0x511959=_0x2727ae(0x233)+_0x2f57a7;const _0x4c91ca=_0x2f57a7[_0x2727ae(0x21c)]()['includes'](_0x2727ae(0x24f))||_0x2f57a7[_0x2727ae(0x21c)]()[_0x2727ae(0x188)]('timed\x20out')||_0x2f57a7[_0x2727ae(0x21c)]()[_0x2727ae(0x188)](_0x2727ae(0x177)),_0x29a5b9=_0xc6c84a[_0x2727ae(0x1a4)]?.['metadata']?.[_0x2727ae(0x206)],_0x2116b2=_0xc6c84a[_0x2727ae(0x190)][0x0];reportMorphError({'error_message':_0x2f57a7,'error_type':_0x4c91ca?_0x2727ae(0x21e):_0x2116b2?.[_0x2727ae(0x24c)]?.[_0x2727ae(0x1e4)]||_0x2727ae(0x25d),'context':{'tool':_0x2727ae(0x1f4),'repo_path':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x230)],'query':_0x2a901c[_0x2727ae(0x1f9)]['search_string'],'model':_0x2727ae(0x1ef),'termination_reason':_0xc6c84a['terminationReason'],'error_count':_0xc6c84a[_0x2727ae(0x190)]['length'],'is_timeout':_0x4c91ca,'timings':_0xc6c84a['timings'],'files_attempted':_0x29a5b9?.[_0x2727ae(0x1a5)](_0x5bbb89=>({'path':_0x5bbb89[_0x2727ae(0x25a)],'lines':_0x5bbb89['lines']})),'tool_calls':_0x4a1a53(_0xc6c84a[_0x2727ae(0x1de)]),'messages':_0xc6c84a[_0x2727ae(0x1de)]?.[_0x2727ae(0x1a5)](_0x1777d0=>({'role':_0x1777d0['role'],'content':_0x1777d0['content'],..._0x1777d0[_0x2727ae(0x179)]?{'tool_calls':_0x1777d0[_0x2727ae(0x179)][_0x2727ae(0x228)]}:{},..._0x1777d0[_0x2727ae(0x1d3)]?{'tool_call_id':_0x1777d0['tool_call_id']}:{}})),'request_content':{'query':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x16c)],'repo_path':_0x2a901c['data'][_0x2727ae(0x230)],'repoRoot':a0_0x54604a[_0x2727ae(0x166)](_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x230)]),'model':_0x2727ae(0x1ef)}},'stack_trace':_0x2116b2?.['stack']||undefined,'source':_0x2727ae(0x1d1)})[_0x2727ae(0x250)](()=>{});}else _0x511959=_0x2727ae(0x1f1);}return{'content':[{'type':'text','text':_0x511959}]};}catch(_0x633a70){const _0x26e683=_0x633a70 instanceof Error?_0x633a70['message']:String(_0x633a70),_0x5023b1=_0x26e683['toLowerCase']()[_0x2727ae(0x188)](_0x2727ae(0x24f))||_0x26e683[_0x2727ae(0x21c)]()[_0x2727ae(0x188)](_0x2727ae(0x1f7))||_0x26e683[_0x2727ae(0x21c)]()[_0x2727ae(0x188)](_0x2727ae(0x177))||_0x633a70 instanceof Error&&_0x633a70[_0x2727ae(0x1e4)]===_0x2727ae(0x21e);return reportMorphError({'error_message':_0x26e683,'error_type':_0x5023b1?_0x2727ae(0x21e):_0x633a70 instanceof Error?_0x633a70[_0x2727ae(0x24c)][_0x2727ae(0x1e4)]:_0x2727ae(0x247),'context':{'tool':'codebase_search','repo_path':_0x2a901c[_0x2727ae(0x1f9)]['repo_path'],'query':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x16c)],'model':_0x2727ae(0x1ef),'is_timeout':_0x5023b1,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x16c)],'repo_path':_0x2a901c['data'][_0x2727ae(0x230)],'repoRoot':a0_0x54604a['resolve'](_0x2a901c[_0x2727ae(0x1f9)]['repo_path']),'model':_0x2727ae(0x1ef)}},'stack_trace':_0x633a70 instanceof Error?_0x633a70['stack']:undefined,'source':_0x2727ae(0x1d1)})[_0x2727ae(0x250)](()=>{}),{'content':[{'type':_0x2727ae(0x1ca),'text':_0x2727ae(0x235)+_0x26e683}],'isError':![]};}}case'github_codebase_search':{const _0x108565=WarpGrepGitHubArgsSchema[_0x2727ae(0x1e7)](_0x547ab6);if(!_0x108565[_0x2727ae(0x26e)])return{'content':[{'type':'text','text':_0x2727ae(0x196)+_0x108565[_0x2727ae(0x19c)]}],'isError':!![]};const _0x2ca2fc=_0x108565[_0x2727ae(0x1f9)]['github_url']||_0x108565['data']['owner_repo'];if(!_0x2ca2fc)return{'content':[{'type':_0x2727ae(0x1ca),'text':_0x2727ae(0x1a1)}],'isError':!![]};const _0x586bd7=MORPH_API_KEY;if(!_0x586bd7)throw new Error(_0x2727ae(0x225));const _0x11d4c9=Date[_0x2727ae(0x1d5)]();logMcpStderr(_0x2727ae(0x22b)+_0x2ca2fc+'\x20for:\x20\x22'+_0x108565['data'][_0x2727ae(0x16c)]+'\x22');try{const _0x991b8e=new WarpGrepClient({'morphApiKey':_0x586bd7,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x90c6f8=await _0x991b8e[_0x2727ae(0x16e)]({'searchTerm':_0x108565[_0x2727ae(0x1f9)][_0x2727ae(0x16c)],'github':_0x2ca2fc,'branch':_0x108565[_0x2727ae(0x1f9)]['branch']}),_0x365a12=Date[_0x2727ae(0x1d5)]()-_0x11d4c9;logMcpStderr(_0x2727ae(0x1e1)+_0x365a12+_0x2727ae(0x19b)+_0x90c6f8[_0x2727ae(0x26e)]);const _0x8a319a=formatResult(_0x90c6f8);return{'content':[{'type':_0x2727ae(0x1ca),'text':_0x8a319a}]};}catch(_0x10070a){const _0x4c2230=Date['now']()-_0x11d4c9,_0x2100b3=_0x10070a instanceof Error?_0x10070a['message']:String(_0x10070a);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x4c2230+_0x2727ae(0x19a),_0x2100b3),reportMorphError({'error_message':_0x2100b3,'error_type':_0x10070a instanceof Error?_0x10070a[_0x2727ae(0x24c)][_0x2727ae(0x1e4)]:'UnknownError','context':{'tool':_0x2727ae(0x269),'github_url':_0x2ca2fc,'search_string':_0x108565[_0x2727ae(0x1f9)]['search_string'],'branch':_0x108565[_0x2727ae(0x1f9)][_0x2727ae(0x23f)]},'stack_trace':_0x10070a instanceof Error?_0x10070a[_0x2727ae(0x26f)]:undefined,'source':_0x2727ae(0x1d1),'tool':_0x2727ae(0x269),'latency_ms':_0x4c2230})['catch'](()=>{}),{'content':[{'type':_0x2727ae(0x1ca),'text':_0x2727ae(0x17c)+_0x2100b3}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x2750a0);}}catch(_0x12aa3a){const _0x596528=_0x12aa3a instanceof Error?_0x12aa3a[_0x2727ae(0x1bc)]:String(_0x12aa3a);return reportMorphError({'error_message':_0x596528,'error_type':_0x12aa3a instanceof Error?_0x12aa3a[_0x2727ae(0x24c)][_0x2727ae(0x1e4)]:_0x2727ae(0x247),'context':{'tool':_0x2750a0,'arguments':_0x547ab6?JSON['stringify'](_0x547ab6)[_0x2727ae(0x238)](0x0,0x1f4):undefined,'mcp_server_version':_0x2727ae(0x246)},'stack_trace':_0x12aa3a instanceof Error?_0x12aa3a[_0x2727ae(0x26f)]:undefined,'source':_0x2727ae(0x1d1)})[_0x2727ae(0x250)](()=>{}),{'content':[{'type':_0x2727ae(0x1ca),'text':_0x2727ae(0x233)+_0x596528}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x48421a){const _0x4947e6=a0_0x50bb38,_0x459d6e=await getValidRootDirectories(_0x48421a);if(_0x459d6e[_0x4947e6(0x228)]>0x0)allowedDirectories=[..._0x459d6e],logMcpStderr(_0x4947e6(0x251)+_0x459d6e['length']+_0x4947e6(0x1ad));else{logMcpStderr(_0x4947e6(0x20d));if(ENABLE_WORKSPACE_MODE)try{const _0x212e95=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x212e95&&(allowedDirectories=[_0x212e95],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x212e95));}catch(_0x2d73f9){logMcpStderr(_0x4947e6(0x18c)+_0x2d73f9);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x53c47d=a0_0x50bb38;try{const _0x38fa42=await server[_0x53c47d(0x20c)]();_0x38fa42&&_0x53c47d(0x217)in _0x38fa42&&await updateAllowedDirectoriesFromRoots(_0x38fa42[_0x53c47d(0x217)]);}catch(_0x5e7626){logMcpStderr(_0x53c47d(0x1ed),_0x5e7626 instanceof Error?_0x5e7626[_0x53c47d(0x1bc)]:String(_0x5e7626));}}),server[a0_0x50bb38(0x183)]=async()=>{const _0x10a1ad=a0_0x50bb38,_0x5d63c9=server[_0x10a1ad(0x240)]();if(_0x5d63c9?.[_0x10a1ad(0x217)])try{const _0x88a03f=await server[_0x10a1ad(0x20c)]();_0x88a03f&&_0x10a1ad(0x217)in _0x88a03f?await updateAllowedDirectoriesFromRoots(_0x88a03f[_0x10a1ad(0x217)]):logMcpStderr(_0x10a1ad(0x23e));}catch(_0x3cc775){logMcpStderr(_0x10a1ad(0x249),_0x3cc775 instanceof Error?_0x3cc775[_0x10a1ad(0x1bc)]:String(_0x3cc775));}else{if(allowedDirectories[_0x10a1ad(0x228)]>0x0)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x10a1ad(0x168));else throw new Error('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.');}}};async function runServer(){const _0x119ebf=a0_0x50bb38,_0x3f8868=new StdioServerTransport();await server[_0x119ebf(0x1b7)](_0x3f8868),logMcpStderr(_0x119ebf(0x265)),allowedDirectories[_0x119ebf(0x228)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x50bb38(0x250)](_0x4aafb6=>{const _0xfacbdc=a0_0x50bb38;logMcpStderr(_0xfacbdc(0x25b),_0x4aafb6),process[_0xfacbdc(0x20b)](0x1);});function a0_0xe4fd(){const _0x2f0df2=['morph-mcp','normalize','mcp-filesystem','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','tool_call_id','\x20(new\x20file)','now','glob','DISABLED_TOOLS','params','completed','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','Workspace\x20mode\x20enabled:\x20Using\x20','completed_with_file_errors','list_directory\x20','messages','PWD','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','[github_codebase_search]\x20Done\x20in\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','content','name','</file>','false','safeParse','Tool\x20','FileNotFound','Failed\x20to\x20read\x20file:\x20','tsconfig.json','arguments','Failed\x20to\x20request\x20roots\x20from\x20client:','role','morph-warp-grep-v2.1','.\x20Path:\x20','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','inputSchema','argv','codebase_search','description','stat','timed\x20out','payload','data','pyproject.toml','search_type','\x20as\x20allowed\x20directory','-\x20Glob\x20search\x20`','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','assistant','2239270CWzbbA','trim','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','completionId','files','go.mod','context','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','Here\x20is\x20the\x20content\x20of\x20files:\x0a','exit','listRoots','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','\x22.\x20Known\x20tools:\x20','cwd','slice','Morph\x20Edit\x20Preview','BinaryFile','read\x20','split','sep','roots','RipgrepError','grep','[could\x20not\x20read\x20file:\x20','--api-key','toLowerCase','object','TimeoutError','dryRun','requiresApiKey','isArray',',\x20modified\x20','readFile','Parent\x20directory\x20does\x20not\x20exist:\x20','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','.git','.cursor','length','\x20is\x20not\x20a\x20directory','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','[github_codebase_search]\x20Searching\x20','boolean','default','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','@morphllm/morphmcp\x20','repo_path','\x20disabled\x20via\x20DISABLED_TOOLS','min','Error:\x20','instruction','Error\x20running\x20fast\x20context\x20search:\x20','timings','match','substring','Created\x20File','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','unknown','added\x20','<file\x20path=\x22','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','branch','getClientCapabilities','version','floor','env','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','\x20chars)','0.2.0','UnknownError','\x20error(s)','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','glob\x20\x27','constructor','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','timeout','catch','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','push','edit_file','code','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','parse','lines','string','WarpGrep\x20sub-tool\x20errors:\x20','path','Fatal\x20error\x20running\x20server:','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','WarpGrepError','grep_search','\x0a...\x20(truncated,\x20total:\x20','function','\x20-\x20','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','unknown\x20error','\x0a</file>','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','realpath','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','sk-','github_codebase_search','code_edit','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','369148Abqirt','utf-8','success','stack','resolve','-\x20Grepped\x20\x27','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','1940Cwyxsv','Applied','source','search_string','linesAdded','searchGitHub','grep\x20\x27','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','filter','toISOString','Unknown\x20error','Rules:\x0a','7JuMwpG','etimedout','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','tool_calls','application/json','MORPH_API_URL','GitHub\x20search\x20failed:\x20','changes','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','https://morphllm.com/api/error-report','size','oninitialized','\x22>\x0aError\x20reading\x20file:\x20','pattern','basename','all','includes',',\x20removed\x20','morph-','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','Warning:\x20Workspace\x20fallback\x20failed:\x20','composer.json','every','Disabled\x20tools:\x20','errors','metadata','startsWith','has','join','257078wEtpuA','Invalid\x20arguments:\x20','Benefits:\x0a','log','❌\x20Morph\x20Edit\x20Failed:\x20','ms:','ms.\x20Success:\x20','error','setRequestHandler','10qOGVTR','9yKwwaO','api-key','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','2503194NOMWIT','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','finish','map','SubToolError','user','\x27\x20in\x20`','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','For\x20deletions:\x0a','Error\x20accessing\x20directory\x20','Morph\x20FastApply\x20failed\x20without\x20error\x20message','\x20valid\x20directories','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','linesModified','enum','Warning:\x20','Tool\x20\x22','number','Morph\x20Edit\x20','connect','node_modules','linesRemoved','read','Cargo.toml','message','array','list_directory','terminationReason','dirname','1531173MbBGvz','optional','4308632sYCFpo','ReadError','Repository\x20identifier','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','describe','--help','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','text','\x20\x20morph-mcp','RipgrepNotAvailable','command','\x0aOptions:'];a0_0xe4fd=function(){return _0x2f0df2;};return a0_0xe4fd();}
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x5bd386,_0x672b39){var _0xbe8d9b=a1_0x38a0,_0x472cc7=_0x5bd386();while(!![]){try{var _0x3f9bf8=-parseInt(_0xbe8d9b(0xfb))/0x1+-parseInt(_0xbe8d9b(0xfc))/0x2*(-parseInt(_0xbe8d9b(0x10b))/0x3)+-parseInt(_0xbe8d9b(0x109))/0x4*(parseInt(_0xbe8d9b(0x100))/0x5)+-parseInt(_0xbe8d9b(0x108))/0x6*(parseInt(_0xbe8d9b(0xf9))/0x7)+-parseInt(_0xbe8d9b(0xfe))/0x8*(parseInt(_0xbe8d9b(0x106))/0x9)+-parseInt(_0xbe8d9b(0x102))/0xa*(parseInt(_0xbe8d9b(0x101))/0xb)+parseInt(_0xbe8d9b(0xf8))/0xc;if(_0x3f9bf8===_0x672b39)break;else _0x472cc7['push'](_0x472cc7['shift']());}catch(_0x2113a7){_0x472cc7['push'](_0x472cc7['shift']());}}}(a1_0xa6bf,0x8982d));import a1_0x38f582 from'os';function a1_0x38a0(_0x4ecfb4,_0xd040ed){_0x4ecfb4=_0x4ecfb4-0xf7;var _0xa6bfca=a1_0xa6bf();var _0x38a0d7=_0xa6bfca[_0x4ecfb4];return _0x38a0d7;}export function getOperatingSystemType(_0x3aa787=a1_0x38f582['platform']()){var _0x57db14=a1_0x38a0;switch(_0x3aa787){case _0x57db14(0x105):return _0x57db14(0x103);case _0x57db14(0xff):return _0x57db14(0xf7);case _0x57db14(0xfd):return _0x57db14(0x107);default:return _0x57db14(0x104);}}export function formatMcpLogMessage(_0x2e28e3,_0x510ecb=a1_0x38f582['platform']()){var _0x23091c=a1_0x38a0;return _0x23091c(0x10a)+getOperatingSystemType(_0x510ecb)+']\x20'+_0x2e28e3;}function a1_0xa6bf(){var _0x2c152e=['98325eBuAwp','Linux','6uUxIeQ','88148rpFPGS','[os=','786rHbIIw','Windows','34064892TeCmHE','2480765ZEyIsJ','error','166115QDDBOr','7316TjFFeA','linux','656hhRQKu','win32','185xpadRP','11023793MktAKA','10KTtepI','macOS','Unknown','darwin'];a1_0xa6bf=function(){return _0x2c152e;};return a1_0xa6bf();}export function logMcpStderr(_0x3e3055,..._0x430745){var _0x43b4e2=a1_0x38a0;console[_0x43b4e2(0xfa)](formatMcpLogMessage(_0x3e3055),..._0x430745);}
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x1a062c,_0x2adf20){const _0x2f229e=a2_0x581a,_0x57effb=_0x1a062c();while(!![]){try{const _0x3f5154=parseInt(_0x2f229e(0x96))/0x1*(-parseInt(_0x2f229e(0x9d))/0x2)+-parseInt(_0x2f229e(0x95))/0x3*(-parseInt(_0x2f229e(0x9f))/0x4)+-parseInt(_0x2f229e(0x9a))/0x5*(parseInt(_0x2f229e(0x93))/0x6)+parseInt(_0x2f229e(0xa0))/0x7+-parseInt(_0x2f229e(0x9c))/0x8*(parseInt(_0x2f229e(0xa3))/0x9)+-parseInt(_0x2f229e(0x99))/0xa*(parseInt(_0x2f229e(0x94))/0xb)+parseInt(_0x2f229e(0xa1))/0xc;if(_0x3f5154===_0x2adf20)break;else _0x57effb['push'](_0x57effb['shift']());}catch(_0x14d304){_0x57effb['push'](_0x57effb['shift']());}}}(a2_0x3685,0xc18c2));import a2_0x1c3f02 from'path';import a2_0x3a8063 from'os';function a2_0x581a(_0x4ecefe,_0x2e66d9){_0x4ecefe=_0x4ecefe-0x90;const _0x36856d=a2_0x3685();let _0x581a69=_0x36856d[_0x4ecefe];return _0x581a69;}export function convertToWindowsPath(_0x174f62){const _0x5856e9=a2_0x581a;if(_0x174f62[_0x5856e9(0xa5)](_0x5856e9(0x90))){const _0x4ef097=_0x174f62[_0x5856e9(0xa7)](0x5)[_0x5856e9(0xa4)](),_0x21ccb5=_0x174f62[_0x5856e9(0xa6)](0x6)[_0x5856e9(0x91)](/\//g,'\x5c');return _0x4ef097+':'+_0x21ccb5;}if(_0x174f62[_0x5856e9(0x9e)](/^\/[a-zA-Z]\//)){const _0xf10b8d=_0x174f62[_0x5856e9(0xa7)](0x1)[_0x5856e9(0xa4)](),_0x304884=_0x174f62[_0x5856e9(0xa6)](0x2)[_0x5856e9(0x91)](/\//g,'\x5c');return _0xf10b8d+':'+_0x304884;}if(_0x174f62[_0x5856e9(0x9e)](/^[a-zA-Z]:/))return _0x174f62[_0x5856e9(0x91)](/\//g,'\x5c');return _0x174f62;}export function normalizePath(_0x4c0681){const _0x28cf17=a2_0x581a;_0x4c0681=_0x4c0681['trim']()[_0x28cf17(0x91)](/^["']|["']$/g,'');const _0x1bb6f3=_0x4c0681['startsWith']('/')&&!_0x4c0681['match'](/^\/mnt\/[a-z]\//i)&&!_0x4c0681[_0x28cf17(0x9e)](/^\/[a-zA-Z]\//);if(_0x1bb6f3)return _0x4c0681[_0x28cf17(0x91)](/\/+/g,'/')[_0x28cf17(0x91)](/\/+$/,'');_0x4c0681=convertToWindowsPath(_0x4c0681);if(_0x4c0681[_0x28cf17(0xa5)]('\x5c\x5c')){let _0x5b2081=_0x4c0681;_0x5b2081=_0x5b2081[_0x28cf17(0x91)](/^\\{2,}/,'\x5c\x5c');const _0x54aec0=_0x5b2081[_0x28cf17(0x98)](0x2)[_0x28cf17(0x91)](/\\\\/g,'\x5c');_0x4c0681='\x5c\x5c'+_0x54aec0;}else _0x4c0681=_0x4c0681[_0x28cf17(0x91)](/\\\\/g,'\x5c');let _0x966d2c=a2_0x1c3f02[_0x28cf17(0xa2)](_0x4c0681);_0x4c0681['startsWith']('\x5c\x5c')&&!_0x966d2c[_0x28cf17(0xa5)]('\x5c\x5c')&&(_0x966d2c='\x5c'+_0x966d2c);if(_0x966d2c[_0x28cf17(0x9e)](/^[a-zA-Z]:/)){let _0x486ac3=_0x966d2c[_0x28cf17(0x91)](/\//g,'\x5c');return/^[a-z]:/[_0x28cf17(0x97)](_0x486ac3)&&(_0x486ac3=_0x486ac3['charAt'](0x0)[_0x28cf17(0xa4)]()+_0x486ac3[_0x28cf17(0xa6)](0x1)),_0x486ac3;}return _0x966d2c[_0x28cf17(0x91)](/\//g,'\x5c');}function a2_0x3685(){const _0x40e639=['charAt','/mnt/','replace','join','1686upbBOb','14905EaXrmG','311511IFjpaF','113557CCftGc','test','substring','8650YvekrY','3190PrKdHc','homedir','8ClxNVk','16LsTtpc','match','4kuGAHF','677761JAFoOB','48445752CXIqno','normalize','10667043NTYsZX','toUpperCase','startsWith','slice'];a2_0x3685=function(){return _0x40e639;};return a2_0x3685();}export function expandHome(_0x1fdda4){const _0x149b26=a2_0x581a;if(_0x1fdda4[_0x149b26(0xa5)]('~/')||_0x1fdda4==='~')return a2_0x1c3f02[_0x149b26(0x92)](a2_0x3a8063[_0x149b26(0x9b)](),_0x1fdda4[_0x149b26(0xa6)](0x1));return _0x1fdda4;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x55a531,_0x15fba0){const _0x3b4da7=a3_0x3a7f,_0x3c0cb4=_0x55a531();while(!![]){try{const _0x5f4be6=parseInt(_0x3b4da7(0x156))/0x1+-parseInt(_0x3b4da7(0x152))/0x2+parseInt(_0x3b4da7(0x155))/0x3+-parseInt(_0x3b4da7(0x150))/0x4*(-parseInt(_0x3b4da7(0x157))/0x5)+parseInt(_0x3b4da7(0x15b))/0x6*(parseInt(_0x3b4da7(0x14a))/0x7)+parseInt(_0x3b4da7(0x14e))/0x8+-parseInt(_0x3b4da7(0x14b))/0x9;if(_0x5f4be6===_0x15fba0)break;else _0x3c0cb4['push'](_0x3c0cb4['shift']());}catch(_0x502dda){_0x3c0cb4['push'](_0x3c0cb4['shift']());}}}(a3_0x18b3,0x7404b));import a3_0x266710 from'path';function a3_0x3a7f(_0x45985b,_0x331af7){_0x45985b=_0x45985b-0x14a;const _0x18b315=a3_0x18b3();let _0x3a7f4e=_0x18b315[_0x45985b];return _0x3a7f4e;}export function isPathWithinAllowedDirectories(_0x5181ec,_0x419b8c){const _0x2f6418=a3_0x3a7f;if(typeof _0x5181ec!==_0x2f6418(0x14c)||!Array['isArray'](_0x419b8c))return![];if(!_0x5181ec||_0x419b8c['length']===0x0)return![];if(_0x5181ec[_0x2f6418(0x151)]('\x00'))return![];let _0x379289;try{_0x379289=a3_0x266710[_0x2f6418(0x153)](a3_0x266710[_0x2f6418(0x14d)](_0x5181ec));}catch{return![];}if(!a3_0x266710[_0x2f6418(0x158)](_0x379289))throw new Error(_0x2f6418(0x154));return _0x419b8c[_0x2f6418(0x15c)](_0x4a05cb=>{const _0x3a3cea=_0x2f6418;if(typeof _0x4a05cb!==_0x3a3cea(0x14c)||!_0x4a05cb)return![];if(_0x4a05cb['includes']('\x00'))return![];let _0x37038c;try{_0x37038c=a3_0x266710['resolve'](a3_0x266710[_0x3a3cea(0x14d)](_0x4a05cb));}catch{return![];}if(!a3_0x266710['isAbsolute'](_0x37038c))throw new Error(_0x3a3cea(0x159));if(_0x379289===_0x37038c)return!![];if(_0x37038c===a3_0x266710[_0x3a3cea(0x15a)])return _0x379289[_0x3a3cea(0x14f)](a3_0x266710[_0x3a3cea(0x15a)]);return _0x379289[_0x3a3cea(0x14f)](_0x37038c+a3_0x266710[_0x3a3cea(0x15a)]);});}function a3_0x18b3(){const _0x2ac9ce=['2340368ehDlmb','startsWith','527956gBBxMJ','includes','751622OikzoH','resolve','Path\x20must\x20be\x20absolute\x20after\x20normalization','2069727VuhTmn','171822rOuaYh','5tiizxL','isAbsolute','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','sep','780546dPfBxe','some','7TfhzDG','5088015XBQijK','string','normalize'];a3_0x18b3=function(){return _0x2ac9ce;};return a3_0x18b3();}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x1ced99,_0x4e94e3){const _0x5d6c03=a4_0x3955,_0x5b1e15=_0x1ced99();while(!![]){try{const _0x43eb5c=-parseInt(_0x5d6c03(0x1f8))/0x1+parseInt(_0x5d6c03(0x1f9))/0x2+-parseInt(_0x5d6c03(0x1f2))/0x3+parseInt(_0x5d6c03(0x1fc))/0x4+parseInt(_0x5d6c03(0x200))/0x5*(-parseInt(_0x5d6c03(0x1fb))/0x6)+-parseInt(_0x5d6c03(0x1f3))/0x7*(parseInt(_0x5d6c03(0x1f5))/0x8)+parseInt(_0x5d6c03(0x1fe))/0x9;if(_0x43eb5c===_0x4e94e3)break;else _0x5b1e15['push'](_0x5b1e15['shift']());}catch(_0x28a81a){_0x5b1e15['push'](_0x5b1e15['shift']());}}}(a4_0x2fae,0xd0919));import{promises as a4_0x2aae49}from'fs';import a4_0x3ef2ae from'path';import a4_0x5beb00 from'os';import{normalizePath}from'./path-utils.js';function a4_0x3955(_0x547d23,_0x332cad){_0x547d23=_0x547d23-0x1f2;const _0x2fae71=a4_0x2fae();let _0x39556e=_0x2fae71[_0x547d23];return _0x39556e;}import{logMcpStderr}from'./log-utils.js';function a4_0x2fae(){const _0x5e4c2e=['505325gaDoRe','3371284EMzJuM','startsWith','6CFwwTR','4377080lBFSoT','file://','19681353QWhcpt','\x20due\x20to\x20error:\x20','3015870IRrOZv','uri','push','stat','non-directory\x20root','join','message','slice','3922116AqVrZE','259DcXRKT','Skipping\x20invalid\x20directory:\x20','366824JZNIkT','Skipping\x20','homedir'];a4_0x2fae=function(){return _0x5e4c2e;};return a4_0x2fae();}async function parseRootUri(_0xfa57dd){const _0x30a418=a4_0x3955;try{const _0x415a11=_0xfa57dd['startsWith'](_0x30a418(0x1fd))?_0xfa57dd[_0x30a418(0x207)](0x7):_0xfa57dd,_0x2f5a80=_0x415a11[_0x30a418(0x1fa)]('~/')||_0x415a11==='~'?a4_0x3ef2ae[_0x30a418(0x205)](a4_0x5beb00[_0x30a418(0x1f7)](),_0x415a11[_0x30a418(0x207)](0x1)):_0x415a11,_0x1b76b4=a4_0x3ef2ae['resolve'](_0x2f5a80),_0x3181dd=await a4_0x2aae49['realpath'](_0x1b76b4);return normalizePath(_0x3181dd);}catch{return null;}}function formatDirectoryError(_0x9c7f8b,_0x5f4177,_0x34aa69){const _0x3becae=a4_0x3955;if(_0x34aa69)return _0x3becae(0x1f6)+_0x34aa69+':\x20'+_0x9c7f8b;const _0x22df70=_0x5f4177 instanceof Error?_0x5f4177[_0x3becae(0x206)]:String(_0x5f4177);return _0x3becae(0x1f4)+_0x9c7f8b+_0x3becae(0x1ff)+_0x22df70;}export async function getValidRootDirectories(_0xf94bd3){const _0x1fe72e=a4_0x3955,_0x22ec0d=[];for(const _0x1510d7 of _0xf94bd3){const _0x3edb03=await parseRootUri(_0x1510d7[_0x1fe72e(0x201)]);if(!_0x3edb03){logMcpStderr(formatDirectoryError(_0x1510d7[_0x1fe72e(0x201)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x144200=await a4_0x2aae49[_0x1fe72e(0x203)](_0x3edb03);_0x144200['isDirectory']()?_0x22ec0d[_0x1fe72e(0x202)](_0x3edb03):logMcpStderr(formatDirectoryError(_0x3edb03,undefined,_0x1fe72e(0x204)));}catch(_0x3b1cda){logMcpStderr(formatDirectoryError(_0x3edb03,_0x3b1cda));}}return _0x22ec0d;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.148",
|
|
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.153",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|