@morphllm/morphmcp 0.8.77 → 0.8.78
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/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_0x3b5071=a0_0x582e;(function(_0x43d7a6,_0x9a58dd){const _0x48bb14=a0_0x582e,_0xacd420=_0x43d7a6();while(!![]){try{const _0x35d3c9=-parseInt(_0x48bb14(0x16b))/0x1*(parseInt(_0x48bb14(0x159))/0x2)+-parseInt(_0x48bb14(0xdf))/0x3*(parseInt(_0x48bb14(0xb9))/0x4)+parseInt(_0x48bb14(0x14f))/0x5*(-parseInt(_0x48bb14(0x148))/0x6)+parseInt(_0x48bb14(0x129))/0x7*(-parseInt(_0x48bb14(0x12b))/0x8)+parseInt(_0x48bb14(0x117))/0x9+-parseInt(_0x48bb14(0x105))/0xa*(-parseInt(_0x48bb14(0x179))/0xb)+parseInt(_0x48bb14(0xd4))/0xc;if(_0x35d3c9===_0x9a58dd)break;else _0xacd420['push'](_0xacd420['shift']());}catch(_0x21bd8f){_0xacd420['push'](_0xacd420['shift']());}}}(a0_0x662c,0xa3f0a));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_0x52bbf3 from'fs/promises';import a0_0x12e1b3 from'path';import a0_0x5df654 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider}from'@morphllm/morphsdk/tools/warp-grep';import{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';import a0_0x5bb58f from'axios';function fixPathRepetition(_0x2c598d){const _0x264dab=a0_0x582e,_0x598b63=_0x2c598d[_0x264dab(0x10a)](a0_0x12e1b3[_0x264dab(0x17c)])['filter'](Boolean);if(_0x598b63[_0x264dab(0x152)]<0x2)return null;for(let _0x4d8d58=Math[_0x264dab(0x149)](_0x598b63['length']/0x2);_0x4d8d58>=0x1;_0x4d8d58--){for(let _0x5ada08=0x0;_0x5ada08<=_0x598b63[_0x264dab(0x152)]-0x2*_0x4d8d58;_0x5ada08++){const _0x531d95=_0x598b63[_0x264dab(0xc4)](_0x5ada08,_0x5ada08+_0x4d8d58),_0x5049a6=_0x598b63[_0x264dab(0xc4)](_0x5ada08+_0x4d8d58,_0x5ada08+0x2*_0x4d8d58);if(_0x531d95['every']((_0x180403,_0x515404)=>_0x180403===_0x5049a6[_0x515404])){const _0x481556=[..._0x598b63['slice'](0x0,_0x5ada08),..._0x598b63[_0x264dab(0xc4)](_0x5ada08+_0x4d8d58)];return a0_0x12e1b3[_0x264dab(0x17c)]+_0x481556[_0x264dab(0x144)](a0_0x12e1b3[_0x264dab(0x17c)]);}}}return null;}function a0_0x582e(_0x54dd89,_0x70d3e7){_0x54dd89=_0x54dd89-0x8c;const _0x662c21=a0_0x662c();let _0x582e3c=_0x662c21[_0x54dd89];return _0x582e3c;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x314da6=a0_0x582e;try{const _0x134ebf=require(_0x314da6(0xaa));return _0x134ebf['version']??_0x314da6(0xe2);}catch(_0x50ac2b){return console['error'](_0x314da6(0x9f),_0x50ac2b),'unknown';}}function a0_0x662c(){const _0x2777a1=['log','resolve','Error:\x20','morph-','timings','0.2.0','morph-v3-fast','listRoots','linesRemoved','utf-8','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','\x0aExamples:','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','morph-mcp','content','object','Failed\x20to\x20request\x20roots\x20from\x20client:','5590jUebLI','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','warpgrep_codebase_search','finish','exit','split','stack','@morphllm/morphmcp\x20','params','false','commitHash','Invalid\x20arguments:\x20','edit_file','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','setRequestHandler','tsconfig.json','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','900216sMfpUu','realpath','limit','Repository\x20identifier','includes','branch','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','linesAdded','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','search_string','\x20is\x20not\x20a\x20directory','message','Applied','filter','terminationReason','query','assistant','❌\x20Morph\x20Edit\x20Failed:\x20','7MPUguq','path','3672904VrJJtZ','map','source','Unknown\x20error','toLowerCase','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','description','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','codebase_search','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.','number','push','substring','Max\x20results\x20to\x20return','MORPH_WARP_GREP_TIMEOUT','\x22>\x0aError\x20reading\x20file:\x20','UnknownError','dirname','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','requiresApiKey','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','Fallback:\x20Using\x20workspace\x20root\x20','join','metadata','Created\x20File','string','1398SEynmw','floor','-\x20Listed\x20directory\x20`','morph-warp-grep-v1-1111v0',',\x20removed\x20','File\x20read\x20error:','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','27050kAFPwS','errors','Specific\x20commit\x20hash\x20to\x20search','length','files','match','data','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','some','Warning:\x20','271856rTYNle','https://morphllm.com/api/error-report','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','grep\x20\x27','getClientCapabilities','\x20\x20\x20Lines\x20','.cursor','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','roots','homedir','ENOENT','Enabled\x20tools:\x20',',\x20modified\x20','completed_with_file_errors','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','role','timed\x20out','toFixed','4oEgNHn','Morph\x20Edit\x20','FileReadError','catch','Warning:\x20Workspace\x20fallback\x20failed:\x20','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','default','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','\x20as\x20allowed\x20directory','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','code_edit','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','.\x20Path:\x20','\x20\x20morph-mcp','23155eErWhg','describe','ENABLED_TOOLS','sep','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','\x27\x20in\x20`','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','access','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','go.mod','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','stats','<file\x20path=\x22','stat','trim','timeout','optional','Here\x20is\x20the\x20content\x20of\x20files:\x0a','constructor','startLine','TimeoutError','\x20valid\x20directories','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','Search\x20failed:\x20','lines','isArray','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','list_directory\x20','messages','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','instruction','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','has','repo_path','name','readFile','For\x20deletions:\x0a','[could\x20not\x20read\x20file:\x20','.vscode','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','../package.json','No\x20results\x20found\x20for\x20query:\x20\x22','Workspace\x20mode\x20enabled:\x20Using\x20','startsWith','\x20(new\x20file)','%\x20match)\x0a','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','application/json','post','basename','boolean','\x20-\x20','env','Rules:\x0a','...','4dsafgg','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','results','.git','targetDirectories','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','pyproject.toml','\x0a...\x20(truncated,\x20total:\x20','Note:\x20The\x20files\x20and\x20line\x20ranges\x20returned\x20by\x20this\x20tool\x20may\x20be\x20some\x20of\x20the\x20ones\x20needed\x20to\x20complete\x20the\x20user\x27s\x20request,\x20but\x20you\x20should\x20be\x20careful\x20in\x20evaluating\x20the\x20relevance\x20of\x20the\x20results,\x20since\x20the\x20subagent\x20might\x20make\x20mistakes.\x20','\x20chars)','slice','\x20results\x20in\x20','success','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','MORPH_API_URL','WORKSPACE_ROOT','etimedout','PWD','unknown\x20error','Bearer\x20','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','\x0a</file>','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','24432084QmWDvY','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','dryRun','\x20\x20\x20','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Morph\x20FastApply\x20failed\x20without\x20error\x20message','code','mcp-filesystem','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','isDirectory','searchTimeMs','1133619IWSRxM','Failed\x20to\x20read\x20file:\x20','sk-','unknown','Cargo.toml','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','error','rerankScore','all','--help','Fatal\x20error\x20running\x20server:','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','--version','toISOString','connect','composer.json','-\x20Read\x20file\x20`','Benefits:\x0a','WarpGrepError','safeParse','text'];a0_0x662c=function(){return _0x2777a1;};return a0_0x662c();}function printHelp(){const _0x56add9=a0_0x582e;console[_0x56add9(0xf4)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x56add9(0xf4)](_0x56add9(0x134)),console['log']('\x0aOptions:'),console[_0x56add9(0xf4)](_0x56add9(0x132)),console['log'](_0x56add9(0xce)),console[_0x56add9(0xf4)](_0x56add9(0xff)),console[_0x56add9(0xf4)](_0x56add9(0x178)),console['log']('\x20\x20morph-mcp\x20~/repo');}const cliArgs=process['argv'][a0_0x3b5071(0xc4)](0x2),VERSION_FLAGS=new Set([a0_0x3b5071(0xeb),'-v','-V']),HELP_FLAGS=new Set([a0_0x3b5071(0xe8),'-h']);cliArgs[a0_0x3b5071(0x157)](_0x1a96d5=>VERSION_FLAGS[a0_0x3b5071(0xa2)](_0x1a96d5))&&(console[a0_0x3b5071(0xf4)](a0_0x3b5071(0x10c)+getPackageVersion()),process['exit'](0x0));cliArgs['some'](_0x39c62e=>HELP_FLAGS[a0_0x3b5071(0xa2)](_0x39c62e))&&(printHelp(),process[a0_0x3b5071(0x109)](0x0));const args=cliArgs[a0_0x3b5071(0x124)](_0x239711=>!VERSION_FLAGS[a0_0x3b5071(0xa2)](_0x239711)&&!HELP_FLAGS['has'](_0x239711)),ALL_TOOLS=[a0_0x3b5071(0x111),'warpgrep_codebase_search',a0_0x3b5071(0x135)],DEFAULT_TOOLS=[a0_0x3b5071(0x111),a0_0x3b5071(0x107)],ENABLED_TOOLS=process[a0_0x3b5071(0xb6)][a0_0x3b5071(0x17b)]?process[a0_0x3b5071(0xb6)]['ENABLED_TOOLS']===a0_0x3b5071(0xe7)?ALL_TOOLS:process['env'][a0_0x3b5071(0x17b)]['split'](',')[a0_0x3b5071(0x12c)](_0x3653e5=>_0x3653e5[a0_0x3b5071(0x90)]()):DEFAULT_TOOLS;console[a0_0x3b5071(0xe5)](a0_0x3b5071(0x164)+ENABLED_TOOLS[a0_0x3b5071(0x144)](',\x20'));const WORKSPACE_ROOT=process[a0_0x3b5071(0xb6)][a0_0x3b5071(0xc9)]||process['env'][a0_0x3b5071(0xcb)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x3b5071(0xb6)]['ENABLE_WORKSPACE_MODE']!==a0_0x3b5071(0x10e),MORPH_API_KEY=process[a0_0x3b5071(0xb6)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x3b5071(0xb6)][a0_0x3b5071(0xc8)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x3b5071(0xb6)][a0_0x3b5071(0x13b)]?parseInt(process[a0_0x3b5071(0xb6)][a0_0x3b5071(0x13b)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x3b5071(0xe1))&&!MORPH_API_KEY[a0_0x3b5071(0xad)](a0_0x3b5071(0xf7))&&console[a0_0x3b5071(0xe5)]('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x3001c4){const _0x5c8750=a0_0x3b5071;try{await a0_0x5bb58f[_0x5c8750(0xb2)](_0x5c8750(0x15a),{..._0x3001c4,'timestamp':new Date()[_0x5c8750(0xec)](),'source':_0x3001c4[_0x5c8750(0x12d)]||_0x5c8750(0xdb)},{'timeout':0x1388,'headers':{'Content-Type':_0x5c8750(0xb1),'Authorization':_0x5c8750(0xcd)+MORPH_API_KEY}});}catch{}}args[a0_0x3b5071(0x152)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console['error'](a0_0x3b5071(0xcf)),console[a0_0x3b5071(0xe5)](a0_0x3b5071(0x156)),console[a0_0x3b5071(0xe5)](a0_0x3b5071(0x115)),console[a0_0x3b5071(0xe5)]('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),console[a0_0x3b5071(0xe5)](a0_0x3b5071(0x8c)),console[a0_0x3b5071(0xe5)](a0_0x3b5071(0x11f)));function normalizePath(_0x59d583){return a0_0x12e1b3['normalize'](_0x59d583);}function expandHome(_0x4c6333){const _0x3f5509=a0_0x3b5071;if(_0x4c6333[_0x3f5509(0xad)]('~/')||_0x4c6333==='~')return a0_0x12e1b3[_0x3f5509(0x144)](a0_0x5df654[_0x3f5509(0x162)](),_0x4c6333[_0x3f5509(0xc4)](0x1));return _0x4c6333;}let allowedDirectories=await Promise['all'](args['map'](async _0x519f7a=>{const _0x20b7b7=a0_0x3b5071,_0x4d5532=expandHome(_0x519f7a),_0x2336be=a0_0x12e1b3[_0x20b7b7(0xf5)](_0x4d5532);try{const _0x1e0ec5=await a0_0x52bbf3[_0x20b7b7(0x118)](_0x2336be);return normalizePath(_0x1e0ec5);}catch(_0x237819){return normalizePath(_0x2336be);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x3b5071(0x152)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x3b5071(0x138)](workspaceDir),console['error'](a0_0x3b5071(0xac)+workspaceDir+a0_0x3b5071(0x173)));}catch(a0_0x1c30f1){console['error'](a0_0x3b5071(0xd3)+a0_0x1c30f1);}async function detectWorkspaceRoot(_0x3c0f9c){const _0x2d5d31=a0_0x3b5071;let _0x4e43ab=a0_0x12e1b3['resolve'](_0x3c0f9c);const _0x3959f3=[_0x2d5d31(0xbd),_0x2d5d31(0xa8),'package.json',_0x2d5d31(0xe3),_0x2d5d31(0xc0),_0x2d5d31(0x182),_0x2d5d31(0x15f),_0x2d5d31(0x114),_0x2d5d31(0xee)];while(_0x4e43ab!==a0_0x12e1b3[_0x2d5d31(0x13e)](_0x4e43ab)){for(const _0x2b60e6 of _0x3959f3){const _0x526b5e=a0_0x12e1b3[_0x2d5d31(0x144)](_0x4e43ab,_0x2b60e6);try{return await a0_0x52bbf3[_0x2d5d31(0x180)](_0x526b5e),normalizePath(_0x4e43ab);}catch{}}_0x4e43ab=a0_0x12e1b3[_0x2d5d31(0x13e)](_0x4e43ab);}return normalizePath(_0x3c0f9c);}await Promise[a0_0x3b5071(0xe7)](args[a0_0x3b5071(0x12c)](async _0x2e4dc9=>{const _0x3e1d97=a0_0x3b5071;try{const _0x47ffe3=await a0_0x52bbf3[_0x3e1d97(0x8f)](expandHome(_0x2e4dc9));!_0x47ffe3[_0x3e1d97(0xdd)]()&&(console['error'](_0x3e1d97(0xf6)+_0x2e4dc9+_0x3e1d97(0x121)),process[_0x3e1d97(0x109)](0x1));}catch(_0x51a3f7){console[_0x3e1d97(0xe5)]('Error\x20accessing\x20directory\x20'+_0x2e4dc9+':',_0x51a3f7),process[_0x3e1d97(0x109)](0x1);}}));async function validatePath(_0x16435d){const _0x54ecad=a0_0x3b5071,_0x2faf89=expandHome(_0x16435d),_0x47f2e9=a0_0x12e1b3[_0x54ecad(0xf5)](_0x2faf89);try{const _0x343035=await a0_0x52bbf3['realpath'](_0x47f2e9);return _0x343035;}catch(_0xcacb5d){if(_0xcacb5d[_0x54ecad(0xda)]===_0x54ecad(0x163)){const _0x4c1a19=a0_0x12e1b3[_0x54ecad(0x13e)](_0x47f2e9);try{const _0x3122b9=await a0_0x52bbf3[_0x54ecad(0x118)](_0x4c1a19);return a0_0x12e1b3[_0x54ecad(0x144)](_0x3122b9,a0_0x12e1b3[_0x54ecad(0xb3)](_0x47f2e9));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x4c1a19);}}throw _0xcacb5d;}}const MorphEditFileArgsSchema=z[a0_0x3b5071(0x103)]({'path':z[a0_0x3b5071(0x147)](),'code_edit':z[a0_0x3b5071(0x147)]()[a0_0x3b5071(0x17a)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0x3b5071(0x147)]()['describe']('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0x3b5071(0xb4)]()[a0_0x3b5071(0x171)](![])[a0_0x3b5071(0x17a)]('Preview\x20changes\x20without\x20applying\x20them.')}),WarpGrepArgsSchema=z[a0_0x3b5071(0x103)]({'search_string':z[a0_0x3b5071(0x147)]()[a0_0x3b5071(0x17a)](a0_0x3b5071(0x176)),'repo_path':z['string']()[a0_0x3b5071(0x17a)]('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')}),CodebaseSearchArgsSchema=z['object']({'query':z['string']()[a0_0x3b5071(0x17a)]('Natural\x20language\x20query\x20to\x20search\x20for\x20code'),'repoId':z['string']()[a0_0x3b5071(0x17a)](a0_0x3b5071(0x11a)),'branch':z[a0_0x3b5071(0x147)]()[a0_0x3b5071(0x92)]()['describe'](a0_0x3b5071(0x17f)),'commitHash':z['string']()[a0_0x3b5071(0x92)]()[a0_0x3b5071(0x17a)](a0_0x3b5071(0x151)),'targetDirectories':z['array'](z[a0_0x3b5071(0x147)]())[a0_0x3b5071(0x171)]([])['describe'](a0_0x3b5071(0xbb)),'limit':z[a0_0x3b5071(0x137)]()[a0_0x3b5071(0x92)]()[a0_0x3b5071(0x171)](0xa)[a0_0x3b5071(0x17a)](a0_0x3b5071(0x13a))}),server=new Server({'name':a0_0x3b5071(0x101),'version':a0_0x3b5071(0xf9)},{'capabilities':{'tools':{}}});server[a0_0x3b5071(0x113)](ListToolsRequestSchema,async()=>{const _0x21637e=a0_0x3b5071,_0x3507fc=[{'name':_0x21637e(0x111),'description':_0x21637e(0xd5)+_0x21637e(0x160)+_0x21637e(0x174)+_0x21637e(0xe4)+_0x21637e(0xf0)+_0x21637e(0x172)+_0x21637e(0xea)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x21637e(0x142)+_0x21637e(0xbf)+_0x21637e(0xa9)+'Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'+_0x21637e(0xa6)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x21637e(0xfe)+_0x21637e(0xb7)+_0x21637e(0xc7)+_0x21637e(0x181)+_0x21637e(0x170)+_0x21637e(0x130)+_0x21637e(0xb0)+_0x21637e(0x13f)+'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':_0x21637e(0x107),'description':_0x21637e(0x14e)+'This\x20tool\x20invokes\x20a\x20subagent\x20that\x20runs\x20parallel\x20grep\x20and\x20readfile\x20calls\x20over\x20multiple\x20turns\x20to\x20locate\x20line\x20ranges\x20and\x20files\x20which\x20might\x20be\x20relevant\x20to\x20the\x20request.\x20'+'The\x20search\x20term\x20should\x20be\x20a\x20targeted\x20natural\x20language\x20query\x20based\x20on\x20what\x20you\x20are\x20trying\x20to\x20accomplish,\x20like\x20\x27Find\x20where\x20authentication\x20requests\x20are\x20handled\x20in\x20the\x20Express\x20routes\x27\x20or\x20\x27Modify\x20the\x20agentic\x20rollout\x20to\x20use\x20the\x20new\x20tokenizer\x20and\x20chat\x20template\x27\x20or\x20\x27Fix\x20the\x20bug\x20where\x20the\x20user\x20gets\x20redirected\x20from\x20the\x20/feed\x20page\x27.\x20'+_0x21637e(0xd2)+_0x21637e(0x9c)+_0x21637e(0xc2)+_0x21637e(0x100)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':'codebase_search','description':_0x21637e(0x167)+_0x21637e(0x15b)+'🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a'+_0x21637e(0xf0)+_0x21637e(0x141)+'-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a'+_0x21637e(0x106)+'-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a'+_0x21637e(0x131)+_0x21637e(0x98)+'Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x553018=_0x3507fc[_0x21637e(0x124)](_0x564d08=>{const _0x2899e4=_0x21637e;if(!ENABLED_TOOLS[_0x2899e4(0x11b)](_0x564d08[_0x2899e4(0xa4)]))return![];if(_0x2899e4(0x140)in _0x564d08&&_0x564d08[_0x2899e4(0x140)]&&!MORPH_API_KEY)return console['error'](_0x2899e4(0x158)+_0x564d08[_0x2899e4(0xa4)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x553018[_0x21637e(0x12c)](_0x28d433=>({'name':_0x28d433[_0x21637e(0xa4)],'description':_0x28d433[_0x21637e(0x133)],'inputSchema':_0x28d433['inputSchema']}))};}),server[a0_0x3b5071(0x113)](CallToolRequestSchema,async _0x30431d=>{const _0xaa9da7=a0_0x3b5071;try{const {name:_0x1ee6e6,arguments:_0x2c3f29}=_0x30431d[_0xaa9da7(0x10d)];switch(_0x1ee6e6){case _0xaa9da7(0x111):{const _0x54c4fd=MorphEditFileArgsSchema[_0xaa9da7(0xf2)](_0x2c3f29);if(!_0x54c4fd['success'])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x54c4fd[_0xaa9da7(0xe5)]);const _0x578657=await validatePath(_0x54c4fd[_0xaa9da7(0x155)][_0xaa9da7(0x12a)]);let _0x57283b=null,_0x54e9fa=!![],_0x1a82f5=null;try{_0x57283b=await a0_0x52bbf3[_0xaa9da7(0xa5)](_0x578657,_0xaa9da7(0xfd));}catch(_0xfed418){const _0xe98bfb=_0xfed418[_0xaa9da7(0xda)];_0xe98bfb===_0xaa9da7(0x163)?(_0x54e9fa=![],_0x57283b=''):(_0x1a82f5=_0xaa9da7(0xe0)+(_0xe98bfb||'unknown')+_0xaa9da7(0xb5)+(_0xfed418 instanceof Error?_0xfed418['message']:String(_0xfed418)),console[_0xaa9da7(0xe5)]('Warning:\x20'+_0x1a82f5));}try{const _0x4b1934=MORPH_API_KEY;if(!_0x4b1934)throw new Error(_0xaa9da7(0xdc));const _0x5ad248=a0_0x12e1b3['dirname'](_0x578657),_0x3dcece=a0_0x12e1b3[_0xaa9da7(0xb3)](_0x578657),_0x46e9c6=await executeEditFile({'target_filepath':_0x3dcece,'code_edit':_0x54c4fd[_0xaa9da7(0x155)]['code_edit'],'instructions':_0x54c4fd[_0xaa9da7(0x155)][_0xaa9da7(0xa0)]},{'morphApiKey':_0x4b1934,'morphApiUrl':MORPH_API_URL,'baseDir':_0x5ad248,'autoWrite':!_0x54c4fd[_0xaa9da7(0x155)][_0xaa9da7(0xd6)],'generateUdiff':![],'debug':![]});if(!_0x46e9c6[_0xaa9da7(0xc6)])throw new Error(_0x46e9c6['error']||_0xaa9da7(0xd9));const _0x40eddd=_0x46e9c6['changes'],_0x524e83='added\x20'+_0x40eddd[_0xaa9da7(0x11e)]+_0xaa9da7(0x14c)+_0x40eddd[_0xaa9da7(0xfc)]+_0xaa9da7(0x165)+_0x40eddd['linesModified'];if(_0x54c4fd[_0xaa9da7(0x155)]['dryRun'])return{'content':[{'type':_0xaa9da7(0xf3),'text':'Morph\x20Edit\x20Preview'+(_0x54e9fa?'':_0xaa9da7(0xae))+':\x20'+_0x54c4fd[_0xaa9da7(0x155)][_0xaa9da7(0xa0)]+'.\x20Changes:\x20'+_0x524e83+_0xaa9da7(0x177)+_0x54c4fd[_0xaa9da7(0x155)][_0xaa9da7(0x12a)]+'.'}]};return{'content':[{'type':_0xaa9da7(0xf3),'text':_0xaa9da7(0x16c)+(_0x54e9fa?_0xaa9da7(0x123):_0xaa9da7(0x146))+':\x20'+_0x54c4fd[_0xaa9da7(0x155)][_0xaa9da7(0xa0)]+'.\x20Changes:\x20'+_0x524e83+'.\x20Path:\x20'+_0x54c4fd[_0xaa9da7(0x155)][_0xaa9da7(0x12a)]+'.'}]};}catch(_0x466c1e){const _0x137518=_0x466c1e instanceof Error?_0x466c1e[_0xaa9da7(0x122)]:String(_0x466c1e);return reportMorphError({'error_message':_0x137518,'error_type':_0x466c1e instanceof Error?_0x466c1e[_0xaa9da7(0x94)][_0xaa9da7(0xa4)]:_0xaa9da7(0x13d),'context':{'tool':_0xaa9da7(0x111),'file_path':_0x54c4fd['data'][_0xaa9da7(0x12a)],'validated_path':_0x578657,'instruction':_0x54c4fd[_0xaa9da7(0x155)][_0xaa9da7(0xa0)],'model':_0xaa9da7(0xfa),'dry_run':_0x54c4fd[_0xaa9da7(0x155)][_0xaa9da7(0xd6)],'file_exists':_0x54e9fa,'file_read_error':_0x1a82f5,'file_readable':_0x57283b!==null,'request_content':{'path':_0x54c4fd[_0xaa9da7(0x155)]['path'],'code_edit':_0x54c4fd[_0xaa9da7(0x155)][_0xaa9da7(0x175)],'instruction':_0x54c4fd['data']['instruction'],'original_code':_0x57283b!==null?_0x57283b['length']>0xc350?_0x57283b[_0xaa9da7(0x139)](0x0,0xc350)+_0xaa9da7(0xc1)+_0x57283b['length']+_0xaa9da7(0xc3):_0x57283b:_0xaa9da7(0xa7)+(_0x1a82f5||_0xaa9da7(0xcc))+']','original_code_length':_0x57283b?.[_0xaa9da7(0x152)]??0x0,'model':_0xaa9da7(0xfa),'dry_run':_0x54c4fd['data']['dryRun']}},'stack_trace':_0x466c1e instanceof Error?_0x466c1e[_0xaa9da7(0x10b)]:undefined,'source':_0xaa9da7(0xdb)})[_0xaa9da7(0x16e)](()=>{}),{'content':[{'type':'text','text':_0xaa9da7(0x128)+_0x137518}],'isError':!![]};}}case'warpgrep_codebase_search':{const _0x273577=WarpGrepArgsSchema[_0xaa9da7(0xf2)](_0x2c3f29);if(!_0x273577[_0xaa9da7(0xc6)])return{'content':[{'type':_0xaa9da7(0xf3),'text':_0xaa9da7(0x110)+_0x273577[_0xaa9da7(0xe5)]}],'isError':!![]};const _0x2b19cf=_0xd1f156=>{const _0xa97983=_0xaa9da7,_0x1579d6=[];for(const _0x4cf21b of _0xd1f156||[]){const _0x5f2050=_0x4cf21b[_0xa97983(0x168)],_0x1ad581=_0x4cf21b['content'];if(_0x5f2050==='assistant'&&_0x1ad581){const _0x480358=_0x1ad581[_0xa97983(0x10a)]('\x0a')[_0xa97983(0x124)](_0x3133f9=>_0x3133f9[_0xa97983(0x90)]());for(const _0x12b782 of _0x480358){const _0x309edf=_0x12b782[_0xa97983(0x154)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x309edf){_0x1579d6['push'](_0xa97983(0x15c)+_0x309edf[0x1]+'\x27\x20'+_0x309edf[0x2]);continue;}const _0x11d37b=_0x12b782[_0xa97983(0x154)](/^read\s+(.+)$/);if(_0x11d37b){_0x1579d6[_0xa97983(0x138)]('read\x20'+_0x11d37b[0x1]);continue;}const _0x55cc1f=_0x12b782[_0xa97983(0x154)](/^list_directory\s+(.+)$/);if(_0x55cc1f){_0x1579d6[_0xa97983(0x138)](_0xa97983(0x9d)+_0x55cc1f[0x1]);continue;}}}}return _0x1579d6;};try{const _0x333757=a0_0x12e1b3['resolve'](_0x273577[_0xaa9da7(0x155)][_0xaa9da7(0xa3)]),_0x277d19=new LocalRipgrepProvider(_0x333757),_0x420b04=await runWarpGrep({'query':_0x273577[_0xaa9da7(0x155)][_0xaa9da7(0x120)],'repoRoot':_0x333757,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x277d19});let _0x4f4d77='';if(_0x420b04['terminationReason']==='completed'&&_0x420b04['finish']?.['metadata']?.[_0xaa9da7(0x153)]){const _0xb6b29d=_0x420b04[_0xaa9da7(0x108)][_0xaa9da7(0x145)][_0xaa9da7(0x153)],_0x4bce56=[],_0x265977=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x130b13 of _0x420b04[_0xaa9da7(0x9e)]){const _0x12a478=_0x130b13['role'],_0x2c31e7=_0x130b13[_0xaa9da7(0x102)];if(_0x12a478===_0xaa9da7(0x127)&&_0x2c31e7){const _0x476087=_0x2c31e7[_0xaa9da7(0x10a)]('\x0a')[_0xaa9da7(0x124)](_0x202071=>_0x202071['trim']());for(const _0xa24ca4 of _0x476087){const _0x3947a2=_0xa24ca4[_0xaa9da7(0x154)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x3947a2){_0x265977['push']('-\x20Grepped\x20\x27'+_0x3947a2[0x1]+_0xaa9da7(0x17e)+_0x3947a2[0x2]+'`');continue;}const _0x4d6e61=_0xa24ca4[_0xaa9da7(0x154)](/^read\s+(.+)$/);if(_0x4d6e61){_0x265977[_0xaa9da7(0x138)](_0xaa9da7(0xef)+_0x4d6e61[0x1]+'`');continue;}const _0xfc542b=_0xa24ca4[_0xaa9da7(0x154)](/^list_directory\s+(.+)$/);if(_0xfc542b){_0x265977[_0xaa9da7(0x138)](_0xaa9da7(0x14a)+_0xfc542b[0x1]+'`');continue;}}}}_0x4bce56[_0xaa9da7(0x138)](_0x265977[_0xaa9da7(0x144)]('\x0a'));const _0x1de845=['','Relevant\x20context\x20found:'];for(const _0x17536a of _0xb6b29d){if(_0x17536a[_0xaa9da7(0x9a)]==='*')_0x1de845['push']('-\x20'+_0x17536a[_0xaa9da7(0x12a)]+':*');else{if(Array[_0xaa9da7(0x9b)](_0x17536a[_0xaa9da7(0x9a)])){const _0x3b91d4=_0x17536a[_0xaa9da7(0x9a)][_0xaa9da7(0x12c)](([_0x175b87,_0x1da9b4])=>{if(_0x175b87===_0x1da9b4)return''+_0x175b87;return _0x175b87+'-'+_0x1da9b4;});_0x1de845['push']('-\x20'+_0x17536a['path']+':'+_0x3b91d4[_0xaa9da7(0x144)](','));}else _0x1de845[_0xaa9da7(0x138)]('-\x20'+_0x17536a[_0xaa9da7(0x12a)]+':*');}}_0x1de845[_0xaa9da7(0x138)](''),_0x4bce56[_0xaa9da7(0x138)](_0x1de845['join']('\x0a')),_0x4bce56[_0xaa9da7(0x138)](_0xaa9da7(0x93));const _0x39b008=[];for(const _0x340d5d of _0xb6b29d){let _0x395934=a0_0x12e1b3[_0xaa9da7(0xf5)](_0x273577[_0xaa9da7(0x155)][_0xaa9da7(0xa3)],_0x340d5d['path']),_0x41c366=null,_0x588dc5=null;try{_0x41c366=await a0_0x52bbf3[_0xaa9da7(0xa5)](_0x395934,{'encoding':'utf-8'});}catch(_0x30cdcd){const _0x2825d9=fixPathRepetition(_0x395934);if(_0x2825d9)try{_0x41c366=await a0_0x52bbf3[_0xaa9da7(0xa5)](_0x2825d9,{'encoding':_0xaa9da7(0xfd)}),_0x395934=_0x2825d9;}catch{_0x588dc5=_0x30cdcd instanceof Error?_0x30cdcd:new Error(String(_0x30cdcd));}else _0x588dc5=_0x30cdcd instanceof Error?_0x30cdcd:new Error(String(_0x30cdcd));}if(_0x41c366!==null){const _0x40d29c=_0x41c366[_0xaa9da7(0x10a)](/\r?\n/),_0x44fb10=[_0xaa9da7(0x8e)+_0x340d5d[_0xaa9da7(0x12a)]+'\x22>'];if(_0x340d5d[_0xaa9da7(0x9a)]==='*'||!Array[_0xaa9da7(0x9b)](_0x340d5d['lines']))for(let _0x34a792=0x1;_0x34a792<=_0x40d29c[_0xaa9da7(0x152)];_0x34a792++){const _0x4e5a40=_0x40d29c[_0x34a792-0x1];_0x44fb10[_0xaa9da7(0x138)](_0x34a792+'|\x20'+_0x4e5a40);}else for(const [_0x10ab29,_0x4fdcc2]of _0x340d5d['lines']){_0x44fb10[_0xaa9da7(0x152)]>0x1&&_0x44fb10[_0xaa9da7(0x138)]('');for(let _0xbaef20=_0x10ab29;_0xbaef20<=_0x4fdcc2&&_0xbaef20<=_0x40d29c[_0xaa9da7(0x152)];_0xbaef20++){const _0x94e686=_0x40d29c[_0xbaef20-0x1];_0x44fb10[_0xaa9da7(0x138)](_0xbaef20+'|\x20'+_0x94e686);}}_0x44fb10[_0xaa9da7(0x138)]('</file>'),_0x39b008['push'](_0x44fb10[_0xaa9da7(0x144)]('\x0a'));}else _0x39b008[_0xaa9da7(0x138)](_0xaa9da7(0x8e)+_0x340d5d[_0xaa9da7(0x12a)]+_0xaa9da7(0x13c)+(_0x588dc5?.[_0xaa9da7(0x122)]||_0xaa9da7(0x12e))+_0xaa9da7(0xd1));}_0x4bce56[_0xaa9da7(0x138)](_0x39b008['join']('\x0a\x0a')),_0x4f4d77=_0x4bce56[_0xaa9da7(0x144)]('\x0a');const _0x3dec10=_0x420b04['errors']?.['filter'](_0x44bb03=>_0x44bb03[_0xaa9da7(0x122)]?.['startsWith'](_0xaa9da7(0x14d)))||[];if(_0x3dec10[_0xaa9da7(0x152)]>0x0){const _0x36abc2=_0x3dec10[_0xaa9da7(0x12c)](_0x49d07a=>_0x49d07a[_0xaa9da7(0x122)])['join'](';\x20');reportMorphError({'error_message':_0x36abc2,'error_type':_0xaa9da7(0x16d),'context':{'tool':'warpgrep_codebase_search','repo_path':_0x273577[_0xaa9da7(0x155)]['repo_path'],'query':_0x273577[_0xaa9da7(0x155)][_0xaa9da7(0x120)],'model':_0xaa9da7(0x14b),'termination_reason':_0xaa9da7(0x166),'error_count':_0x3dec10[_0xaa9da7(0x152)],'is_timeout':![],'timings':_0x420b04[_0xaa9da7(0xf8)],'files_attempted':_0xb6b29d[_0xaa9da7(0x12c)](_0x4d4e20=>({'path':_0x4d4e20['path'],'lines':_0x4d4e20[_0xaa9da7(0x9a)]})),'tool_calls':_0x2b19cf(_0x420b04['messages']),'messages':_0x420b04[_0xaa9da7(0x9e)]?.[_0xaa9da7(0x12c)](_0x2e4f3f=>({'role':_0x2e4f3f[_0xaa9da7(0x168)],'content':_0x2e4f3f['content']})),'request_content':{'query':_0x273577[_0xaa9da7(0x155)][_0xaa9da7(0x120)],'repo_path':_0x273577[_0xaa9da7(0x155)][_0xaa9da7(0xa3)],'repoRoot':a0_0x12e1b3[_0xaa9da7(0xf5)](_0x273577['data'][_0xaa9da7(0xa3)]),'model':'morph-warp-grep-v1-1111v0'}},'source':_0xaa9da7(0xdb)})[_0xaa9da7(0x16e)](()=>{});}}else{if(_0x420b04['terminationReason']==='terminated'&&_0x420b04['errors'][_0xaa9da7(0x152)]>0x0){const _0x60741e=_0x420b04['errors']['map'](_0x2d7624=>_0x2d7624['message'])[_0xaa9da7(0x144)](';\x20');_0x4f4d77='Error:\x20'+_0x60741e;const _0x4196f2=_0x60741e[_0xaa9da7(0x12f)]()[_0xaa9da7(0x11b)](_0xaa9da7(0x91))||_0x60741e[_0xaa9da7(0x12f)]()[_0xaa9da7(0x11b)]('timed\x20out')||_0x60741e[_0xaa9da7(0x12f)]()[_0xaa9da7(0x11b)](_0xaa9da7(0xca)),_0x4ceee1=_0x420b04[_0xaa9da7(0x108)]?.[_0xaa9da7(0x145)]?.[_0xaa9da7(0x153)],_0x47cd27=_0x420b04[_0xaa9da7(0x150)][0x0];reportMorphError({'error_message':_0x60741e,'error_type':_0x4196f2?_0xaa9da7(0x96):_0x47cd27?.[_0xaa9da7(0x94)]?.['name']||_0xaa9da7(0xf1),'context':{'tool':_0xaa9da7(0x107),'repo_path':_0x273577[_0xaa9da7(0x155)][_0xaa9da7(0xa3)],'query':_0x273577[_0xaa9da7(0x155)]['search_string'],'model':_0xaa9da7(0x14b),'termination_reason':_0x420b04[_0xaa9da7(0x125)],'error_count':_0x420b04[_0xaa9da7(0x150)]['length'],'is_timeout':_0x4196f2,'timings':_0x420b04[_0xaa9da7(0xf8)],'files_attempted':_0x4ceee1?.[_0xaa9da7(0x12c)](_0x2699a6=>({'path':_0x2699a6[_0xaa9da7(0x12a)],'lines':_0x2699a6[_0xaa9da7(0x9a)]})),'tool_calls':_0x2b19cf(_0x420b04['messages']),'messages':_0x420b04[_0xaa9da7(0x9e)]?.[_0xaa9da7(0x12c)](_0x528fa4=>({'role':_0x528fa4[_0xaa9da7(0x168)],'content':_0x528fa4[_0xaa9da7(0x102)]})),'request_content':{'query':_0x273577['data']['search_string'],'repo_path':_0x273577[_0xaa9da7(0x155)][_0xaa9da7(0xa3)],'repoRoot':a0_0x12e1b3[_0xaa9da7(0xf5)](_0x273577[_0xaa9da7(0x155)][_0xaa9da7(0xa3)]),'model':_0xaa9da7(0x14b)}},'stack_trace':_0x47cd27?.[_0xaa9da7(0x10b)]||undefined,'source':_0xaa9da7(0xdb)})['catch'](()=>{});}else _0x4f4d77=_0xaa9da7(0x11d);}return{'content':[{'type':_0xaa9da7(0xf3),'text':_0x4f4d77}]};}catch(_0x586eca){const _0xf5a3da=_0x586eca instanceof Error?_0x586eca[_0xaa9da7(0x122)]:String(_0x586eca),_0x138e8f=_0xf5a3da[_0xaa9da7(0x12f)]()[_0xaa9da7(0x11b)](_0xaa9da7(0x91))||_0xf5a3da[_0xaa9da7(0x12f)]()['includes'](_0xaa9da7(0x169))||_0xf5a3da[_0xaa9da7(0x12f)]()[_0xaa9da7(0x11b)](_0xaa9da7(0xca))||_0x586eca instanceof Error&&_0x586eca[_0xaa9da7(0xa4)]==='TimeoutError';return reportMorphError({'error_message':_0xf5a3da,'error_type':_0x138e8f?_0xaa9da7(0x96):_0x586eca instanceof Error?_0x586eca[_0xaa9da7(0x94)][_0xaa9da7(0xa4)]:_0xaa9da7(0x13d),'context':{'tool':_0xaa9da7(0x107),'repo_path':_0x273577['data'][_0xaa9da7(0xa3)],'query':_0x273577['data'][_0xaa9da7(0x120)],'model':'morph-warp-grep-v1-1111v0','is_timeout':_0x138e8f,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x273577[_0xaa9da7(0x155)]['search_string'],'repo_path':_0x273577[_0xaa9da7(0x155)][_0xaa9da7(0xa3)],'repoRoot':a0_0x12e1b3['resolve'](_0x273577[_0xaa9da7(0x155)]['repo_path']),'model':_0xaa9da7(0x14b)}},'stack_trace':_0x586eca instanceof Error?_0x586eca[_0xaa9da7(0x10b)]:undefined,'source':_0xaa9da7(0xdb)})[_0xaa9da7(0x16e)](()=>{}),{'content':[{'type':'text','text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0xf5a3da}],'isError':![]};}}case _0xaa9da7(0x135):{const _0x1df51a=CodebaseSearchArgsSchema[_0xaa9da7(0xf2)](_0x2c3f29);if(!_0x1df51a[_0xaa9da7(0xc6)])return{'content':[{'type':_0xaa9da7(0xf3),'text':_0xaa9da7(0x110)+_0x1df51a[_0xaa9da7(0xe5)]}],'isError':!![]};try{const _0x527978=MORPH_API_KEY;if(!_0x527978)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.');const _0x5b42ea=_0x1df51a[_0xaa9da7(0x155)][_0xaa9da7(0xbe)],_0x3460d4=await executeCodebaseSearch({'query':_0x1df51a['data'][_0xaa9da7(0x126)],'target_directories':_0x5b42ea,'limit':_0x1df51a['data'][_0xaa9da7(0x119)]},{'apiKey':_0x527978,'repoId':_0x1df51a[_0xaa9da7(0x155)]['repoId'],'branch':_0x1df51a['data'][_0xaa9da7(0x11c)],'commitHash':_0x1df51a['data'][_0xaa9da7(0x10f)],'debug':![]});if(!_0x3460d4[_0xaa9da7(0xc6)])return{'content':[{'type':_0xaa9da7(0xf3),'text':_0xaa9da7(0x99)+_0x3460d4[_0xaa9da7(0xe5)]}],'isError':!![]};const _0x48bbf9=_0x3460d4[_0xaa9da7(0xbc)][_0xaa9da7(0x152)]===0x0?_0xaa9da7(0xab)+_0x1df51a[_0xaa9da7(0x155)][_0xaa9da7(0x126)]+'\x22':'Found\x20'+_0x3460d4[_0xaa9da7(0xbc)][_0xaa9da7(0x152)]+_0xaa9da7(0xc5)+_0x3460d4[_0xaa9da7(0x8d)][_0xaa9da7(0xde)]+'ms:\x0a\x0a'+_0x3460d4[_0xaa9da7(0xbc)][_0xaa9da7(0x12c)]((_0x514948,_0x2101e)=>_0x2101e+0x1+'.\x20'+_0x514948['filepath']+'\x20('+(_0x514948[_0xaa9da7(0xe6)]*0x64)[_0xaa9da7(0x16a)](0x1)+_0xaa9da7(0xaf)+(_0xaa9da7(0x15e)+_0x514948[_0xaa9da7(0x95)]+'-'+_0x514948['endLine']+'\x0a')+(_0xaa9da7(0xd7)+_0x514948['content'][_0xaa9da7(0x139)](0x0,0xc8)+(_0x514948[_0xaa9da7(0x102)]['length']>0xc8?_0xaa9da7(0xb8):'')+'\x0a'))['join']('\x0a');return{'content':[{'type':_0xaa9da7(0xf3),'text':_0x48bbf9}]};}catch(_0x4882b6){const _0x3b681e=_0x4882b6 instanceof Error?_0x4882b6['message']:String(_0x4882b6);return reportMorphError({'error_message':_0x3b681e,'error_type':_0x4882b6 instanceof Error?_0x4882b6[_0xaa9da7(0x94)]['name']:'UnknownError','context':{'tool':_0xaa9da7(0x135),'query':_0x1df51a['data']['query'],'repo_id':_0x1df51a[_0xaa9da7(0x155)]['repoId'],'target_directories':_0x1df51a['data']['targetDirectories']},'stack_trace':_0x4882b6 instanceof Error?_0x4882b6[_0xaa9da7(0x10b)]:undefined,'source':_0xaa9da7(0xdb)})['catch'](()=>{}),{'content':[{'type':_0xaa9da7(0xf3),'text':_0xaa9da7(0xf6)+_0x3b681e}],'isError':!![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x1ee6e6);}}catch(_0x4fb4fa){const _0x1a4ff4=_0x4fb4fa instanceof Error?_0x4fb4fa[_0xaa9da7(0x122)]:String(_0x4fb4fa);return reportMorphError({'error_message':_0x1a4ff4,'error_type':_0x4fb4fa instanceof Error?_0x4fb4fa[_0xaa9da7(0x94)][_0xaa9da7(0xa4)]:_0xaa9da7(0x13d),'context':{'tool':name,'arguments':args?JSON['stringify'](args)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0xaa9da7(0xf9)},'stack_trace':_0x4fb4fa instanceof Error?_0x4fb4fa[_0xaa9da7(0x10b)]:undefined,'source':_0xaa9da7(0xdb)})[_0xaa9da7(0x16e)](()=>{}),{'content':[{'type':_0xaa9da7(0xf3),'text':'Error:\x20'+_0x1a4ff4}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x1a7d9a){const _0x56db4e=a0_0x3b5071,_0xadab2e=await getValidRootDirectories(_0x1a7d9a);if(_0xadab2e[_0x56db4e(0x152)]>0x0)allowedDirectories=[..._0xadab2e],console['error'](_0x56db4e(0x116)+_0xadab2e['length']+_0x56db4e(0x97));else{console['error'](_0x56db4e(0x17d));if(ENABLE_WORKSPACE_MODE)try{const _0x3a78e4=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3a78e4&&(allowedDirectories=[_0x3a78e4],console[_0x56db4e(0xe5)](_0x56db4e(0x143)+_0x3a78e4));}catch(_0x4cbc5d){console[_0x56db4e(0xe5)](_0x56db4e(0x16f)+_0x4cbc5d);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x2c410c=a0_0x3b5071;try{const _0xc195b1=await server[_0x2c410c(0xfb)]();_0xc195b1&&_0x2c410c(0x161)in _0xc195b1&&await updateAllowedDirectoriesFromRoots(_0xc195b1[_0x2c410c(0x161)]);}catch(_0x5240f0){console[_0x2c410c(0xe5)](_0x2c410c(0x104),_0x5240f0 instanceof Error?_0x5240f0[_0x2c410c(0x122)]:String(_0x5240f0));}}),server['oninitialized']=async()=>{const _0x584ed7=a0_0x3b5071,_0x2a413f=server[_0x584ed7(0x15d)]();if(_0x2a413f?.[_0x584ed7(0x161)])try{const _0x412c66=await server[_0x584ed7(0xfb)]();_0x412c66&&_0x584ed7(0x161)in _0x412c66?await updateAllowedDirectoriesFromRoots(_0x412c66[_0x584ed7(0x161)]):console[_0x584ed7(0xe5)](_0x584ed7(0xba));}catch(_0x36dce2){console['error'](_0x584ed7(0xd8),_0x36dce2 instanceof Error?_0x36dce2[_0x584ed7(0x122)]:String(_0x36dce2));}else{if(allowedDirectories[_0x584ed7(0x152)]>0x0)console[_0x584ed7(0xe5)](_0x584ed7(0xa1),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console['error'](_0x584ed7(0xd0));else throw new Error(_0x584ed7(0x136));}}};async function runServer(){const _0x59bd44=a0_0x3b5071,_0x50f27a=new StdioServerTransport();await server[_0x59bd44(0xed)](_0x50f27a),console[_0x59bd44(0xe5)](_0x59bd44(0x112)),allowedDirectories[_0x59bd44(0x152)]===0x0&&console[_0x59bd44(0xe5)]('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x3b5071(0x16e)](_0x35f5ca=>{const _0x502a37=a0_0x3b5071;console[_0x502a37(0xe5)](_0x502a37(0xe9),_0x35f5ca),process[_0x502a37(0x109)](0x1);});
|
|
2
|
+
const a0_0x41a4db=a0_0x14e0;(function(_0x21be6c,_0x18c9d7){const _0x1f53ad=a0_0x14e0,_0x1d949c=_0x21be6c();while(!![]){try{const _0x133e5a=parseInt(_0x1f53ad(0x1cc))/0x1*(parseInt(_0x1f53ad(0x228))/0x2)+-parseInt(_0x1f53ad(0x260))/0x3+-parseInt(_0x1f53ad(0x1f4))/0x4*(parseInt(_0x1f53ad(0x248))/0x5)+parseInt(_0x1f53ad(0x21c))/0x6*(-parseInt(_0x1f53ad(0x220))/0x7)+parseInt(_0x1f53ad(0x1cb))/0x8+-parseInt(_0x1f53ad(0x1d7))/0x9*(-parseInt(_0x1f53ad(0x27a))/0xa)+-parseInt(_0x1f53ad(0x1e5))/0xb*(parseInt(_0x1f53ad(0x203))/0xc);if(_0x133e5a===_0x18c9d7)break;else _0x1d949c['push'](_0x1d949c['shift']());}catch(_0x37016d){_0x1d949c['push'](_0x1d949c['shift']());}}}(a0_0x1904,0x59377));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_0x14e0(_0x5d5c20,_0x31ba74){_0x5d5c20=_0x5d5c20-0x19d;const _0x19044c=a0_0x1904();let _0x14e093=_0x19044c[_0x5d5c20];return _0x14e093;}import a0_0x32ed6f from'fs/promises';import a0_0x44baea from'path';import a0_0x5d9386 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider}from'@morphllm/morphsdk/tools/warp-grep';import{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';import a0_0x412a99 from'axios';function fixPathRepetition(_0x5f27d4){const _0x124ec9=a0_0x14e0,_0x41a536=_0x5f27d4[_0x124ec9(0x238)](a0_0x44baea[_0x124ec9(0x1ce)])[_0x124ec9(0x1f2)](Boolean);if(_0x41a536[_0x124ec9(0x1d1)]<0x2)return null;for(let _0x249425=Math[_0x124ec9(0x1f3)](_0x41a536[_0x124ec9(0x1d1)]/0x2);_0x249425>=0x1;_0x249425--){for(let _0x4bf835=0x0;_0x4bf835<=_0x41a536[_0x124ec9(0x1d1)]-0x2*_0x249425;_0x4bf835++){const _0x53b785=_0x41a536[_0x124ec9(0x1fa)](_0x4bf835,_0x4bf835+_0x249425),_0x33919a=_0x41a536[_0x124ec9(0x1fa)](_0x4bf835+_0x249425,_0x4bf835+0x2*_0x249425);if(_0x53b785[_0x124ec9(0x20a)]((_0x680d8e,_0x21906c)=>_0x680d8e===_0x33919a[_0x21906c])){const _0x4ad44c=[..._0x41a536[_0x124ec9(0x1fa)](0x0,_0x4bf835),..._0x41a536[_0x124ec9(0x1fa)](_0x4bf835+_0x249425)];return a0_0x44baea[_0x124ec9(0x1ce)]+_0x4ad44c[_0x124ec9(0x200)](a0_0x44baea['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x1f9318=a0_0x14e0;try{const _0x3c5adc=require(_0x1f9318(0x23d));return _0x3c5adc['version']??_0x1f9318(0x26f);}catch(_0x149461){return console[_0x1f9318(0x1a5)]('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x149461),_0x1f9318(0x26f);}}function printHelp(){const _0x4f8203=a0_0x14e0;console[_0x4f8203(0x23f)]('@morphllm/morphmcp\x20'+getPackageVersion()),console['log'](_0x4f8203(0x1ad)),console['log'](_0x4f8203(0x226)),console[_0x4f8203(0x23f)](_0x4f8203(0x1c9)),console['log'](_0x4f8203(0x1f9)),console[_0x4f8203(0x23f)]('\x0aExamples:'),console[_0x4f8203(0x23f)](_0x4f8203(0x26b)),console[_0x4f8203(0x23f)]('\x20\x20morph-mcp\x20~/repo');}const cliArgs=process['argv'][a0_0x41a4db(0x1fa)](0x2),VERSION_FLAGS=new Set([a0_0x41a4db(0x22c),'-v','-V']),HELP_FLAGS=new Set([a0_0x41a4db(0x215),'-h']);cliArgs['some'](_0x2ab6db=>VERSION_FLAGS[a0_0x41a4db(0x259)](_0x2ab6db))&&(console[a0_0x41a4db(0x23f)](a0_0x41a4db(0x1f0)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x41a4db(0x27f)](_0xed4871=>HELP_FLAGS[a0_0x41a4db(0x259)](_0xed4871))&&(printHelp(),process[a0_0x41a4db(0x212)](0x0));const args=cliArgs[a0_0x41a4db(0x1f2)](_0x11dc2e=>!VERSION_FLAGS[a0_0x41a4db(0x259)](_0x11dc2e)&&!HELP_FLAGS[a0_0x41a4db(0x259)](_0x11dc2e)),ALL_TOOLS=[a0_0x41a4db(0x1b3),'warpgrep_codebase_search',a0_0x41a4db(0x279)],DEFAULT_TOOLS=['edit_file',a0_0x41a4db(0x29c)],ENABLED_TOOLS=process[a0_0x41a4db(0x26a)][a0_0x41a4db(0x1dd)]?process['env'][a0_0x41a4db(0x1dd)]===a0_0x41a4db(0x205)?ALL_TOOLS:process['env'][a0_0x41a4db(0x1dd)]['split'](',')[a0_0x41a4db(0x217)](_0x1619f7=>_0x1619f7[a0_0x41a4db(0x1ef)]()):DEFAULT_TOOLS;console[a0_0x41a4db(0x1a5)](a0_0x41a4db(0x1f6)+ENABLED_TOOLS['join'](',\x20'));const WORKSPACE_ROOT=process[a0_0x41a4db(0x26a)][a0_0x41a4db(0x24c)]||process['env'][a0_0x41a4db(0x1b7)]||process[a0_0x41a4db(0x265)](),ENABLE_WORKSPACE_MODE=process[a0_0x41a4db(0x26a)]['ENABLE_WORKSPACE_MODE']!==a0_0x41a4db(0x26e),MORPH_API_KEY=process[a0_0x41a4db(0x26a)][a0_0x41a4db(0x262)],MORPH_API_URL=process[a0_0x41a4db(0x26a)][a0_0x41a4db(0x1be)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x41a4db(0x26a)][a0_0x41a4db(0x21b)]?parseInt(process[a0_0x41a4db(0x26a)][a0_0x41a4db(0x21b)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x41a4db(0x225))&&!MORPH_API_KEY[a0_0x41a4db(0x232)](a0_0x41a4db(0x22d))&&console[a0_0x41a4db(0x1a5)](a0_0x41a4db(0x283));async function reportMorphError(_0x4936e2){const _0x285b8a=a0_0x41a4db;try{await a0_0x412a99['post'](_0x285b8a(0x1b1),{..._0x4936e2,'timestamp':new Date()[_0x285b8a(0x268)](),'source':_0x4936e2[_0x285b8a(0x1c2)]||'mcp-filesystem'},{'timeout':0x1388,'headers':{'Content-Type':_0x285b8a(0x1ed),'Authorization':_0x285b8a(0x28f)+MORPH_API_KEY}});}catch{}}args[a0_0x41a4db(0x1d1)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x41a4db(0x1a5)](a0_0x41a4db(0x1aa)),console['error']('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),console['error'](a0_0x41a4db(0x295)),console[a0_0x41a4db(0x1a5)]('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),console['error'](a0_0x41a4db(0x250)),console[a0_0x41a4db(0x1a5)](a0_0x41a4db(0x280)));function normalizePath(_0x118483){const _0x38d920=a0_0x41a4db;return a0_0x44baea[_0x38d920(0x27d)](_0x118483);}function expandHome(_0x5a8a4a){const _0x3c33da=a0_0x41a4db;if(_0x5a8a4a[_0x3c33da(0x232)]('~/')||_0x5a8a4a==='~')return a0_0x44baea[_0x3c33da(0x200)](a0_0x5d9386[_0x3c33da(0x1cd)](),_0x5a8a4a[_0x3c33da(0x1fa)](0x1));return _0x5a8a4a;}let allowedDirectories=await Promise[a0_0x41a4db(0x205)](args[a0_0x41a4db(0x217)](async _0x4c3e98=>{const _0x48c147=a0_0x41a4db,_0x3a5235=expandHome(_0x4c3e98),_0x1697e1=a0_0x44baea[_0x48c147(0x298)](_0x3a5235);try{const _0xf10e89=await a0_0x32ed6f[_0x48c147(0x231)](_0x1697e1);return normalizePath(_0xf10e89);}catch(_0x3ff294){return normalizePath(_0x1697e1);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x41a4db(0x1d1)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x41a4db(0x223)](workspaceDir),console[a0_0x41a4db(0x1a5)](a0_0x41a4db(0x1ee)+workspaceDir+a0_0x41a4db(0x278)));}catch(a0_0x5084d2){console[a0_0x41a4db(0x1a5)](a0_0x41a4db(0x276)+a0_0x5084d2);}function a0_0x1904(){const _0x453989=['startLine','ENABLED_TOOLS','\x22>\x0aError\x20reading\x20file:\x20','getClientCapabilities','targetDirectories','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','package.json','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','boolean','55RZRGkJ','Warning:\x20','describe','timings','roots','WarpGrepError','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','dirname','application/json','Workspace\x20mode\x20enabled:\x20Using\x20','trim','@morphllm/morphmcp\x20','ms:\x0a\x0a','filter','floor','836744GABqsK',',\x20modified\x20','Enabled\x20tools:\x20','.vscode','endLine','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','slice','Morph\x20FastApply\x20failed\x20without\x20error\x20message','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','Unknown\x20tool:\x20','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','Repository\x20identifier','join','name','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','951432hEzAIC','terminated','all','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','Unknown\x20error','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','every','-\x20Grepped\x20\x27','Fatal\x20error\x20running\x20server:','read\x20','unknown\x20error','terminationReason','oninitialized','TimeoutError','exit','.\x20Path:\x20','Applied','--help','Preview\x20changes\x20without\x20applying\x20them.','map','stats','repoId','utf-8','MORPH_WARP_GREP_TIMEOUT','624wnyKrD','requiresApiKey','[could\x20not\x20read\x20file:\x20','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','13055irZqQG','Relevant\x20context\x20found:','Cargo.toml','push','Natural\x20language\x20query\x20to\x20search\x20for\x20code','sk-','\x0aOptions:','files','69252Hnhort','mcp-filesystem','Max\x20results\x20to\x20return','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','--version','morph-','stack','-\x20Listed\x20directory\x20`','\x20-\x20','realpath','startsWith','query','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','changes','toLowerCase','default','split','<file\x20path=\x22','.\x20Changes:\x20','substring','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','../package.json','safeParse','log','repo_path','content','messages','code','metadata','Parent\x20directory\x20does\x20not\x20exist:\x20','path','morph-v3-fast','5SYtFYA','inputSchema','go.mod','morph-warp-grep-v1-1111v0','WORKSPACE_ROOT','assistant','array','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','\x20chars)','dryRun','linesRemoved','list_directory\x20','lines','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','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','has','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','tsconfig.json','\x20\x20\x20Lines\x20','Found\x20','Failed\x20to\x20request\x20roots\x20from\x20client:','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','449988bULsyj','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','MORPH_API_KEY','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','cwd','completed','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','toISOString','Note:\x20The\x20files\x20and\x20line\x20ranges\x20returned\x20by\x20this\x20tool\x20may\x20be\x20some\x20of\x20the\x20ones\x20needed\x20to\x20complete\x20the\x20user\x27s\x20request,\x20but\x20you\x20should\x20be\x20careful\x20in\x20evaluating\x20the\x20relevance\x20of\x20the\x20results,\x20since\x20the\x20subagent\x20might\x20make\x20mistakes.\x20','env','\x20\x20morph-mcp','Morph\x20Edit\x20Preview','...','false','unknown','Invalid\x20arguments:\x20','optional','catch','etimedout','data','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','\x20as\x20allowed\x20directory','codebase_search','424870CmFEph','ENOENT','includes','normalize','message','some','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','filepath','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Warning:\x20Workspace\x20fallback\x20failed:\x20','runWarpGrep_call','\x20\x20\x20','isDirectory','stat','No\x20results\x20found\x20for\x20query:\x20\x22','errors','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','\x20results\x20in\x20','rerankScore','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Bearer\x20','constructor','Morph\x20Edit\x20','object','Benefits:\x0a','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','search_string','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.','resolve','searchTimeMs','Error\x20accessing\x20directory\x20','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','warpgrep_codebase_search','.cursor','File\x20read\x20error:','linesModified','For\x20deletions:\x0a','❌\x20Morph\x20Edit\x20Failed:\x20','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','finish','FileReadError','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','success','readFile','error','timed\x20out','-\x20Read\x20file\x20`','grep\x20\x27','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','added\x20','role','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','Specific\x20commit\x20hash\x20to\x20search','description','https://morphllm.com/api/error-report','%\x20match)\x0a','edit_file','listRoots','code_edit','\x0a</file>','PWD','results','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','params','setRequestHandler','MORPH_API_URL','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','basename','Search\x20failed:\x20','source','connect','stringify','\x20is\x20not\x20a\x20directory','instruction','match','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','UnknownError','5119120aRJlcK','6KMVOBS','homedir','sep','\x27\x20in\x20`','Error:\x20','length','string','isArray','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','0.2.0','99okFPtt','timeout','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Failed\x20to\x20read\x20file:\x20','text'];a0_0x1904=function(){return _0x453989;};return a0_0x1904();}async function detectWorkspaceRoot(_0x3dd471){const _0x4eb970=a0_0x41a4db;let _0xb840f=a0_0x44baea[_0x4eb970(0x298)](_0x3dd471);const _0x42f386=['.git',_0x4eb970(0x1f7),_0x4eb970(0x1e2),_0x4eb970(0x222),'pyproject.toml',_0x4eb970(0x24a),_0x4eb970(0x29d),_0x4eb970(0x25b),'composer.json'];while(_0xb840f!==a0_0x44baea[_0x4eb970(0x1ec)](_0xb840f)){for(const _0x52c718 of _0x42f386){const _0x56da5f=a0_0x44baea[_0x4eb970(0x200)](_0xb840f,_0x52c718);try{return await a0_0x32ed6f['access'](_0x56da5f),normalizePath(_0xb840f);}catch{}}_0xb840f=a0_0x44baea[_0x4eb970(0x1ec)](_0xb840f);}return normalizePath(_0x3dd471);}await Promise[a0_0x41a4db(0x205)](args[a0_0x41a4db(0x217)](async _0x56bd03=>{const _0x531089=a0_0x41a4db;try{const _0x44e7f0=await a0_0x32ed6f[_0x531089(0x288)](expandHome(_0x56bd03));!_0x44e7f0[_0x531089(0x287)]()&&(console[_0x531089(0x1a5)](_0x531089(0x1d0)+_0x56bd03+_0x531089(0x1c5)),process[_0x531089(0x212)](0x1));}catch(_0x1f12f2){console['error'](_0x531089(0x29a)+_0x56bd03+':',_0x1f12f2),process['exit'](0x1);}}));async function validatePath(_0x1900b8){const _0x343144=a0_0x41a4db,_0x1db5a8=expandHome(_0x1900b8),_0x2ebf7e=a0_0x44baea['resolve'](_0x1db5a8);try{const _0x137a9d=await a0_0x32ed6f[_0x343144(0x231)](_0x2ebf7e);return _0x137a9d;}catch(_0x3a508f){if(_0x3a508f[_0x343144(0x243)]==='ENOENT'){const _0xe1978=a0_0x44baea[_0x343144(0x1ec)](_0x2ebf7e);try{const _0x403733=await a0_0x32ed6f['realpath'](_0xe1978);return a0_0x44baea['join'](_0x403733,a0_0x44baea[_0x343144(0x1c0)](_0x2ebf7e));}catch{throw new Error(_0x343144(0x245)+_0xe1978);}}throw _0x3a508f;}}const MorphEditFileArgsSchema=z[a0_0x41a4db(0x292)]({'path':z['string'](),'code_edit':z['string']()['describe'](a0_0x41a4db(0x258)),'instruction':z[a0_0x41a4db(0x1d2)]()[a0_0x41a4db(0x1e7)](a0_0x41a4db(0x209)),'dryRun':z[a0_0x41a4db(0x1e4)]()[a0_0x41a4db(0x237)](![])['describe'](a0_0x41a4db(0x216))}),WarpGrepArgsSchema=z[a0_0x41a4db(0x292)]({'search_string':z[a0_0x41a4db(0x1d2)]()[a0_0x41a4db(0x1e7)]('Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for'),'repo_path':z[a0_0x41a4db(0x1d2)]()[a0_0x41a4db(0x1e7)]('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')}),CodebaseSearchArgsSchema=z[a0_0x41a4db(0x292)]({'query':z[a0_0x41a4db(0x1d2)]()['describe'](a0_0x41a4db(0x224)),'repoId':z[a0_0x41a4db(0x1d2)]()[a0_0x41a4db(0x1e7)](a0_0x41a4db(0x1ff)),'branch':z[a0_0x41a4db(0x1d2)]()['optional']()[a0_0x41a4db(0x1e7)](a0_0x41a4db(0x1eb)),'commitHash':z[a0_0x41a4db(0x1d2)]()[a0_0x41a4db(0x271)]()['describe'](a0_0x41a4db(0x1af)),'targetDirectories':z[a0_0x41a4db(0x24e)](z[a0_0x41a4db(0x1d2)]())[a0_0x41a4db(0x237)]([])[a0_0x41a4db(0x1e7)]('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z['number']()['optional']()[a0_0x41a4db(0x237)](0xa)['describe'](a0_0x41a4db(0x22a))}),server=new Server({'name':'morph-mcp','version':a0_0x41a4db(0x1d6)},{'capabilities':{'tools':{}}});server[a0_0x41a4db(0x1bd)](ListToolsRequestSchema,async()=>{const _0x5d6311=a0_0x41a4db,_0x584ad9=[{'name':_0x5d6311(0x1b3),'description':_0x5d6311(0x282)+_0x5d6311(0x208)+_0x5d6311(0x263)+_0x5d6311(0x234)+_0x5d6311(0x293)+_0x5d6311(0x29b)+_0x5d6311(0x1d4)+_0x5d6311(0x1d9)+_0x5d6311(0x206)+_0x5d6311(0x23c)+_0x5d6311(0x1bb)+'Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'+_0x5d6311(0x19d)+_0x5d6311(0x1bf)+_0x5d6311(0x21f)+'Rules:\x0a'+_0x5d6311(0x267)+_0x5d6311(0x1a9)+_0x5d6311(0x1b9)+_0x5d6311(0x28e)+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x5d6311(0x256),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x5d6311(0x29c),'description':_0x5d6311(0x25a)+'This\x20tool\x20invokes\x20a\x20subagent\x20that\x20runs\x20parallel\x20grep\x20and\x20readfile\x20calls\x20over\x20multiple\x20turns\x20to\x20locate\x20line\x20ranges\x20and\x20files\x20which\x20might\x20be\x20relevant\x20to\x20the\x20request.\x20'+'The\x20search\x20term\x20should\x20be\x20a\x20targeted\x20natural\x20language\x20query\x20based\x20on\x20what\x20you\x20are\x20trying\x20to\x20accomplish,\x20like\x20\x27Find\x20where\x20authentication\x20requests\x20are\x20handled\x20in\x20the\x20Express\x20routes\x27\x20or\x20\x27Modify\x20the\x20agentic\x20rollout\x20to\x20use\x20the\x20new\x20tokenizer\x20and\x20chat\x20template\x27\x20or\x20\x27Fix\x20the\x20bug\x20where\x20the\x20user\x20gets\x20redirected\x20from\x20the\x20/feed\x20page\x27.\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20'+_0x5d6311(0x261)+_0x5d6311(0x269)+_0x5d6311(0x1fc)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':_0x5d6311(0x279),'description':_0x5d6311(0x1d5)+_0x5d6311(0x1fe)+'🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a'+_0x5d6311(0x293)+'-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a'+_0x5d6311(0x1e3)+_0x5d6311(0x294)+_0x5d6311(0x22b)+_0x5d6311(0x28b)+'Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20'+_0x5d6311(0x275),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x77d2d8=_0x584ad9[_0x5d6311(0x1f2)](_0xcd745f=>{const _0x1d57db=_0x5d6311;if(!ENABLED_TOOLS[_0x1d57db(0x27c)](_0xcd745f[_0x1d57db(0x201)]))return![];if(_0x1d57db(0x21d)in _0xcd745f&&_0xcd745f[_0x1d57db(0x21d)]&&!MORPH_API_KEY)return console[_0x1d57db(0x1a5)]('Warning:\x20'+_0xcd745f['name']+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x77d2d8[_0x5d6311(0x217)](_0x1588b4=>({'name':_0x1588b4[_0x5d6311(0x201)],'description':_0x1588b4[_0x5d6311(0x1b0)],'inputSchema':_0x1588b4[_0x5d6311(0x249)]}))};}),server[a0_0x41a4db(0x1bd)](CallToolRequestSchema,async _0x17e093=>{const _0x561fc0=a0_0x41a4db;try{const {name:_0x252cb9,arguments:_0x17500f}=_0x17e093[_0x561fc0(0x1bc)];switch(_0x252cb9){case _0x561fc0(0x1b3):{const _0x4e6bf6=MorphEditFileArgsSchema[_0x561fc0(0x23e)](_0x17500f);if(!_0x4e6bf6[_0x561fc0(0x1a3)])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x4e6bf6[_0x561fc0(0x1a5)]);const _0xfd1fe8=await validatePath(_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x246)]);let _0x305063=null,_0x54c0fc=!![],_0x3dbca0=null;try{_0x305063=await a0_0x32ed6f[_0x561fc0(0x1a4)](_0xfd1fe8,_0x561fc0(0x21a));}catch(_0x4e043b){const _0x52e321=_0x4e043b[_0x561fc0(0x243)];_0x52e321===_0x561fc0(0x27b)?(_0x54c0fc=![],_0x305063=''):(_0x3dbca0=_0x561fc0(0x1da)+(_0x52e321||_0x561fc0(0x26f))+_0x561fc0(0x230)+(_0x4e043b instanceof Error?_0x4e043b[_0x561fc0(0x27e)]:String(_0x4e043b)),console[_0x561fc0(0x1a5)](_0x561fc0(0x1e6)+_0x3dbca0));}try{const _0x174857=MORPH_API_KEY;if(!_0x174857)throw new Error(_0x561fc0(0x19f));const _0x2e33b8=a0_0x44baea['dirname'](_0xfd1fe8),_0x529b6b=a0_0x44baea[_0x561fc0(0x1c0)](_0xfd1fe8),_0x4c5181=await executeEditFile({'target_filepath':_0x529b6b,'code_edit':_0x4e6bf6[_0x561fc0(0x274)]['code_edit'],'instructions':_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x1c6)]},{'morphApiKey':_0x174857,'morphApiUrl':MORPH_API_URL,'baseDir':_0x2e33b8,'autoWrite':!_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x252)],'generateUdiff':![],'debug':![]});if(!_0x4c5181[_0x561fc0(0x1a3)])throw new Error(_0x4c5181[_0x561fc0(0x1a5)]||_0x561fc0(0x1fb));const _0x23339f=_0x4c5181[_0x561fc0(0x235)],_0x3912c5=_0x561fc0(0x1ab)+_0x23339f['linesAdded']+',\x20removed\x20'+_0x23339f[_0x561fc0(0x253)]+_0x561fc0(0x1f5)+_0x23339f[_0x561fc0(0x29f)];if(_0x4e6bf6[_0x561fc0(0x274)]['dryRun'])return{'content':[{'type':'text','text':_0x561fc0(0x26c)+(_0x54c0fc?'':'\x20(new\x20file)')+':\x20'+_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x1c6)]+_0x561fc0(0x23a)+_0x3912c5+_0x561fc0(0x213)+_0x4e6bf6['data']['path']+'.'}]};return{'content':[{'type':'text','text':_0x561fc0(0x291)+(_0x54c0fc?_0x561fc0(0x214):'Created\x20File')+':\x20'+_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x1c6)]+_0x561fc0(0x23a)+_0x3912c5+_0x561fc0(0x213)+_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x246)]+'.'}]};}catch(_0x59f1b9){const _0x45be4c=_0x59f1b9 instanceof Error?_0x59f1b9[_0x561fc0(0x27e)]:String(_0x59f1b9);return reportMorphError({'error_message':_0x45be4c,'error_type':_0x59f1b9 instanceof Error?_0x59f1b9[_0x561fc0(0x290)][_0x561fc0(0x201)]:_0x561fc0(0x1ca),'context':{'tool':_0x561fc0(0x1b3),'file_path':_0x4e6bf6['data'][_0x561fc0(0x246)],'validated_path':_0xfd1fe8,'instruction':_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x1c6)],'model':'morph-v3-fast','dry_run':_0x4e6bf6[_0x561fc0(0x274)]['dryRun'],'file_exists':_0x54c0fc,'file_read_error':_0x3dbca0,'file_readable':_0x305063!==null,'request_content':{'path':_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x246)],'code_edit':_0x4e6bf6['data'][_0x561fc0(0x1b5)],'instruction':_0x4e6bf6[_0x561fc0(0x274)]['instruction'],'original_code':_0x305063!==null?_0x305063[_0x561fc0(0x1d1)]>0xc350?_0x305063[_0x561fc0(0x23b)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x305063[_0x561fc0(0x1d1)]+_0x561fc0(0x251):_0x305063:_0x561fc0(0x21e)+(_0x3dbca0||_0x561fc0(0x20e))+']','original_code_length':_0x305063?.[_0x561fc0(0x1d1)]??0x0,'model':_0x561fc0(0x247),'dry_run':_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x252)]}},'stack_trace':_0x59f1b9 instanceof Error?_0x59f1b9[_0x561fc0(0x22e)]:undefined,'source':_0x561fc0(0x229)})[_0x561fc0(0x272)](()=>{}),{'content':[{'type':'text','text':_0x561fc0(0x19e)+_0x45be4c}],'isError':!![]};}}case _0x561fc0(0x29c):{const _0x325cc6=WarpGrepArgsSchema[_0x561fc0(0x23e)](_0x17500f);if(!_0x325cc6[_0x561fc0(0x1a3)])return{'content':[{'type':_0x561fc0(0x1db),'text':'Invalid\x20arguments:\x20'+_0x325cc6['error']}],'isError':!![]};const _0x49a2cc=_0x4ace5c=>{const _0x132e53=_0x561fc0,_0x3e3c0d=[];for(const _0x349647 of _0x4ace5c||[]){const _0xc84033=_0x349647[_0x132e53(0x1ac)],_0x3a0a3a=_0x349647['content'];if(_0xc84033===_0x132e53(0x24d)&&_0x3a0a3a){const _0x504e73=_0x3a0a3a[_0x132e53(0x238)]('\x0a')[_0x132e53(0x1f2)](_0x230c39=>_0x230c39[_0x132e53(0x1ef)]());for(const _0x1e105a of _0x504e73){const _0x2d06ea=_0x1e105a['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x2d06ea){_0x3e3c0d[_0x132e53(0x223)](_0x132e53(0x1a8)+_0x2d06ea[0x1]+'\x27\x20'+_0x2d06ea[0x2]);continue;}const _0x2ce96b=_0x1e105a[_0x132e53(0x1c7)](/^read\s+(.+)$/);if(_0x2ce96b){_0x3e3c0d[_0x132e53(0x223)](_0x132e53(0x20d)+_0x2ce96b[0x1]);continue;}const _0x53295d=_0x1e105a[_0x132e53(0x1c7)](/^list_directory\s+(.+)$/);if(_0x53295d){_0x3e3c0d['push'](_0x132e53(0x254)+_0x53295d[0x1]);continue;}}}}return _0x3e3c0d;};try{const _0x374f6b=a0_0x44baea['resolve'](_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x240)]),_0xed8de9=new LocalRipgrepProvider(_0x374f6b),_0x3c34cc=await runWarpGrep({'query':_0x325cc6[_0x561fc0(0x274)]['search_string'],'repoRoot':_0x374f6b,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0xed8de9});let _0x58e0ec='';if(_0x3c34cc[_0x561fc0(0x20f)]===_0x561fc0(0x266)&&_0x3c34cc[_0x561fc0(0x1a0)]?.[_0x561fc0(0x244)]?.['files']){const _0x557ff0=_0x3c34cc[_0x561fc0(0x1a0)][_0x561fc0(0x244)]['files'],_0xcdd734=[],_0x11e895=[_0x561fc0(0x1ba)];for(const _0x2374a0 of _0x3c34cc[_0x561fc0(0x242)]){const _0x102c3e=_0x2374a0[_0x561fc0(0x1ac)],_0x3bc37e=_0x2374a0['content'];if(_0x102c3e===_0x561fc0(0x24d)&&_0x3bc37e){const _0x6bbe7a=_0x3bc37e[_0x561fc0(0x238)]('\x0a')[_0x561fc0(0x1f2)](_0x43f834=>_0x43f834[_0x561fc0(0x1ef)]());for(const _0x443953 of _0x6bbe7a){const _0x1b7daa=_0x443953[_0x561fc0(0x1c7)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x1b7daa){_0x11e895['push'](_0x561fc0(0x20b)+_0x1b7daa[0x1]+_0x561fc0(0x1cf)+_0x1b7daa[0x2]+'`');continue;}const _0x2fcf04=_0x443953[_0x561fc0(0x1c7)](/^read\s+(.+)$/);if(_0x2fcf04){_0x11e895[_0x561fc0(0x223)](_0x561fc0(0x1a7)+_0x2fcf04[0x1]+'`');continue;}const _0x264d45=_0x443953[_0x561fc0(0x1c7)](/^list_directory\s+(.+)$/);if(_0x264d45){_0x11e895[_0x561fc0(0x223)](_0x561fc0(0x22f)+_0x264d45[0x1]+'`');continue;}}}}_0xcdd734[_0x561fc0(0x223)](_0x11e895['join']('\x0a'));const _0x1d812e=['',_0x561fc0(0x221)];for(const _0x49cb77 of _0x557ff0){if(_0x49cb77[_0x561fc0(0x255)]==='*')_0x1d812e[_0x561fc0(0x223)]('-\x20'+_0x49cb77['path']+':*');else{if(Array[_0x561fc0(0x1d3)](_0x49cb77[_0x561fc0(0x255)])){const _0x479630=_0x49cb77[_0x561fc0(0x255)][_0x561fc0(0x217)](([_0x36256c,_0x41ebf1])=>{if(_0x36256c===_0x41ebf1)return''+_0x36256c;return _0x36256c+'-'+_0x41ebf1;});_0x1d812e[_0x561fc0(0x223)]('-\x20'+_0x49cb77['path']+':'+_0x479630[_0x561fc0(0x200)](','));}else _0x1d812e[_0x561fc0(0x223)]('-\x20'+_0x49cb77['path']+':*');}}_0x1d812e[_0x561fc0(0x223)](''),_0xcdd734[_0x561fc0(0x223)](_0x1d812e['join']('\x0a')),_0xcdd734['push']('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x32ff24=[];for(const _0x54a019 of _0x557ff0){let _0x25554b=a0_0x44baea[_0x561fc0(0x298)](_0x325cc6[_0x561fc0(0x274)]['repo_path'],_0x54a019[_0x561fc0(0x246)]),_0x3fc072=null,_0x2581c1=null;try{_0x3fc072=await a0_0x32ed6f[_0x561fc0(0x1a4)](_0x25554b,{'encoding':_0x561fc0(0x21a)});}catch(_0x3132da){const _0x14900c=fixPathRepetition(_0x25554b);if(_0x14900c)try{_0x3fc072=await a0_0x32ed6f[_0x561fc0(0x1a4)](_0x14900c,{'encoding':'utf-8'}),_0x25554b=_0x14900c;}catch{_0x2581c1=_0x3132da instanceof Error?_0x3132da:new Error(String(_0x3132da));}else _0x2581c1=_0x3132da instanceof Error?_0x3132da:new Error(String(_0x3132da));}if(_0x3fc072!==null){const _0x5bb6bd=_0x3fc072[_0x561fc0(0x238)](/\r?\n/),_0x583d8d=['<file\x20path=\x22'+_0x54a019[_0x561fc0(0x246)]+'\x22>'];if(_0x54a019['lines']==='*'||!Array[_0x561fc0(0x1d3)](_0x54a019[_0x561fc0(0x255)]))for(let _0x28ceab=0x1;_0x28ceab<=_0x5bb6bd[_0x561fc0(0x1d1)];_0x28ceab++){const _0x4bff65=_0x5bb6bd[_0x28ceab-0x1];_0x583d8d[_0x561fc0(0x223)](_0x28ceab+'|\x20'+_0x4bff65);}else for(const [_0x3ed50d,_0x175a63]of _0x54a019[_0x561fc0(0x255)]){_0x583d8d[_0x561fc0(0x1d1)]>0x1&&_0x583d8d[_0x561fc0(0x223)]('');for(let _0x43d58c=_0x3ed50d;_0x43d58c<=_0x175a63&&_0x43d58c<=_0x5bb6bd[_0x561fc0(0x1d1)];_0x43d58c++){const _0x5ce020=_0x5bb6bd[_0x43d58c-0x1];_0x583d8d['push'](_0x43d58c+'|\x20'+_0x5ce020);}}_0x583d8d['push']('</file>'),_0x32ff24[_0x561fc0(0x223)](_0x583d8d[_0x561fc0(0x200)]('\x0a'));}else _0x32ff24[_0x561fc0(0x223)](_0x561fc0(0x239)+_0x54a019[_0x561fc0(0x246)]+_0x561fc0(0x1de)+(_0x2581c1?.['message']||_0x561fc0(0x207))+_0x561fc0(0x1b6));}_0xcdd734[_0x561fc0(0x223)](_0x32ff24[_0x561fc0(0x200)]('\x0a\x0a')),_0x58e0ec=_0xcdd734['join']('\x0a');const _0x16f213=_0x3c34cc[_0x561fc0(0x28a)]?.[_0x561fc0(0x1f2)](_0x56c836=>_0x56c836[_0x561fc0(0x27e)]?.[_0x561fc0(0x232)](_0x561fc0(0x29e)))||[];if(_0x16f213[_0x561fc0(0x1d1)]>0x0){const _0x5375b7=_0x16f213['map'](_0x368c6b=>_0x368c6b[_0x561fc0(0x27e)])[_0x561fc0(0x200)](';\x20');reportMorphError({'error_message':_0x5375b7,'error_type':_0x561fc0(0x1a1),'context':{'tool':_0x561fc0(0x29c),'repo_path':_0x325cc6['data'][_0x561fc0(0x240)],'query':_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x296)],'model':_0x561fc0(0x24b),'termination_reason':'completed_with_file_errors','error_count':_0x16f213['length'],'is_timeout':![],'timings':_0x3c34cc['timings'],'files_attempted':_0x557ff0[_0x561fc0(0x217)](_0x55236d=>({'path':_0x55236d[_0x561fc0(0x246)],'lines':_0x55236d['lines']})),'tool_calls':_0x49a2cc(_0x3c34cc[_0x561fc0(0x242)]),'messages':_0x3c34cc[_0x561fc0(0x242)]?.[_0x561fc0(0x217)](_0x3426ce=>({'role':_0x3426ce['role'],'content':_0x3426ce[_0x561fc0(0x241)]})),'request_content':{'query':_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x296)],'repo_path':_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x240)],'repoRoot':a0_0x44baea['resolve'](_0x325cc6['data'][_0x561fc0(0x240)]),'model':_0x561fc0(0x24b)}},'source':_0x561fc0(0x229)})['catch'](()=>{});}}else{if(_0x3c34cc[_0x561fc0(0x20f)]===_0x561fc0(0x204)&&_0x3c34cc[_0x561fc0(0x28a)][_0x561fc0(0x1d1)]>0x0){const _0x35e6bc=_0x3c34cc[_0x561fc0(0x28a)]['map'](_0x4e21e5=>_0x4e21e5[_0x561fc0(0x27e)])['join'](';\x20');_0x58e0ec=_0x561fc0(0x1d0)+_0x35e6bc;const _0x158c5c=_0x35e6bc['toLowerCase']()['includes']('timeout')||_0x35e6bc[_0x561fc0(0x236)]()[_0x561fc0(0x27c)](_0x561fc0(0x1a6))||_0x35e6bc[_0x561fc0(0x236)]()[_0x561fc0(0x27c)](_0x561fc0(0x273)),_0x4b2dc6=_0x3c34cc[_0x561fc0(0x1a0)]?.[_0x561fc0(0x244)]?.[_0x561fc0(0x227)],_0x5b4d56=_0x3c34cc[_0x561fc0(0x28a)][0x0];reportMorphError({'error_message':_0x35e6bc,'error_type':_0x158c5c?_0x561fc0(0x211):_0x5b4d56?.[_0x561fc0(0x290)]?.[_0x561fc0(0x201)]||_0x561fc0(0x1ea),'context':{'tool':_0x561fc0(0x29c),'repo_path':_0x325cc6['data'][_0x561fc0(0x240)],'query':_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x296)],'model':_0x561fc0(0x24b),'termination_reason':_0x3c34cc[_0x561fc0(0x20f)],'error_count':_0x3c34cc['errors']['length'],'is_timeout':_0x158c5c,'timings':_0x3c34cc[_0x561fc0(0x1e8)],'files_attempted':_0x4b2dc6?.[_0x561fc0(0x217)](_0x1f3549=>({'path':_0x1f3549['path'],'lines':_0x1f3549[_0x561fc0(0x255)]})),'tool_calls':_0x49a2cc(_0x3c34cc[_0x561fc0(0x242)]),'messages':_0x3c34cc[_0x561fc0(0x242)]?.[_0x561fc0(0x217)](_0x1bb22a=>({'role':_0x1bb22a[_0x561fc0(0x1ac)],'content':_0x1bb22a['content']})),'request_content':{'query':_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x296)],'repo_path':_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x240)],'repoRoot':a0_0x44baea[_0x561fc0(0x298)](_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x240)]),'model':'morph-warp-grep-v1-1111v0'}},'stack_trace':_0x5b4d56?.[_0x561fc0(0x22e)]||undefined,'source':_0x561fc0(0x229)})[_0x561fc0(0x272)](()=>{});}else _0x58e0ec=_0x561fc0(0x277);}return{'content':[{'type':_0x561fc0(0x1db),'text':_0x58e0ec}]};}catch(_0x1a03f7){const _0x463b4c=_0x1a03f7 instanceof Error?_0x1a03f7[_0x561fc0(0x27e)]:String(_0x1a03f7),_0x536775=_0x463b4c['toLowerCase']()['includes'](_0x561fc0(0x1d8))||_0x463b4c['toLowerCase']()[_0x561fc0(0x27c)](_0x561fc0(0x1a6))||_0x463b4c[_0x561fc0(0x236)]()[_0x561fc0(0x27c)](_0x561fc0(0x273))||_0x1a03f7 instanceof Error&&_0x1a03f7[_0x561fc0(0x201)]===_0x561fc0(0x211);return reportMorphError({'error_message':_0x463b4c,'error_type':_0x536775?_0x561fc0(0x211):_0x1a03f7 instanceof Error?_0x1a03f7[_0x561fc0(0x290)][_0x561fc0(0x201)]:_0x561fc0(0x1ca),'context':{'tool':'warpgrep_codebase_search','repo_path':_0x325cc6[_0x561fc0(0x274)]['repo_path'],'query':_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x296)],'model':_0x561fc0(0x24b),'is_timeout':_0x536775,'exception_phase':_0x561fc0(0x285),'request_content':{'query':_0x325cc6[_0x561fc0(0x274)]['search_string'],'repo_path':_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x240)],'repoRoot':a0_0x44baea[_0x561fc0(0x298)](_0x325cc6[_0x561fc0(0x274)]['repo_path']),'model':_0x561fc0(0x24b)}},'stack_trace':_0x1a03f7 instanceof Error?_0x1a03f7['stack']:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':_0x561fc0(0x1db),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x463b4c}],'isError':![]};}}case _0x561fc0(0x279):{const _0x4e6bef=CodebaseSearchArgsSchema[_0x561fc0(0x23e)](_0x17500f);if(!_0x4e6bef[_0x561fc0(0x1a3)])return{'content':[{'type':'text','text':_0x561fc0(0x270)+_0x4e6bef[_0x561fc0(0x1a5)]}],'isError':!![]};try{const _0x5bbb9=MORPH_API_KEY;if(!_0x5bbb9)throw new Error(_0x561fc0(0x1ae));const _0x1f1c72=_0x4e6bef['data'][_0x561fc0(0x1e0)],_0x4f67fd=await executeCodebaseSearch({'query':_0x4e6bef[_0x561fc0(0x274)]['query'],'target_directories':_0x1f1c72,'limit':_0x4e6bef['data']['limit']},{'apiKey':_0x5bbb9,'repoId':_0x4e6bef[_0x561fc0(0x274)][_0x561fc0(0x219)],'branch':_0x4e6bef[_0x561fc0(0x274)]['branch'],'commitHash':_0x4e6bef['data']['commitHash'],'debug':![]});if(!_0x4f67fd[_0x561fc0(0x1a3)])return{'content':[{'type':_0x561fc0(0x1db),'text':_0x561fc0(0x1c1)+_0x4f67fd[_0x561fc0(0x1a5)]}],'isError':!![]};const _0x421789=_0x4f67fd[_0x561fc0(0x1b8)][_0x561fc0(0x1d1)]===0x0?_0x561fc0(0x289)+_0x4e6bef[_0x561fc0(0x274)][_0x561fc0(0x233)]+'\x22':_0x561fc0(0x25d)+_0x4f67fd['results']['length']+_0x561fc0(0x28c)+_0x4f67fd[_0x561fc0(0x218)][_0x561fc0(0x299)]+_0x561fc0(0x1f1)+_0x4f67fd[_0x561fc0(0x1b8)]['map']((_0x33520e,_0x1485a2)=>_0x1485a2+0x1+'.\x20'+_0x33520e[_0x561fc0(0x281)]+'\x20('+(_0x33520e[_0x561fc0(0x28d)]*0x64)['toFixed'](0x1)+_0x561fc0(0x1b2)+(_0x561fc0(0x25c)+_0x33520e[_0x561fc0(0x1dc)]+'-'+_0x33520e[_0x561fc0(0x1f8)]+'\x0a')+(_0x561fc0(0x286)+_0x33520e[_0x561fc0(0x241)][_0x561fc0(0x23b)](0x0,0xc8)+(_0x33520e[_0x561fc0(0x241)][_0x561fc0(0x1d1)]>0xc8?_0x561fc0(0x26d):'')+'\x0a'))['join']('\x0a');return{'content':[{'type':_0x561fc0(0x1db),'text':_0x421789}]};}catch(_0x4f9195){const _0x227a24=_0x4f9195 instanceof Error?_0x4f9195[_0x561fc0(0x27e)]:String(_0x4f9195);return reportMorphError({'error_message':_0x227a24,'error_type':_0x4f9195 instanceof Error?_0x4f9195[_0x561fc0(0x290)]['name']:_0x561fc0(0x1ca),'context':{'tool':_0x561fc0(0x279),'query':_0x4e6bef[_0x561fc0(0x274)]['query'],'repo_id':_0x4e6bef[_0x561fc0(0x274)]['repoId'],'target_directories':_0x4e6bef[_0x561fc0(0x274)]['targetDirectories']},'stack_trace':_0x4f9195 instanceof Error?_0x4f9195[_0x561fc0(0x22e)]:undefined,'source':_0x561fc0(0x229)})['catch'](()=>{}),{'content':[{'type':_0x561fc0(0x1db),'text':'Error:\x20'+_0x227a24}],'isError':!![]};}}default:throw new Error(_0x561fc0(0x1fd)+_0x252cb9);}}catch(_0x4e4c1e){const _0x59c911=_0x4e4c1e instanceof Error?_0x4e4c1e[_0x561fc0(0x27e)]:String(_0x4e4c1e);return reportMorphError({'error_message':_0x59c911,'error_type':_0x4e4c1e instanceof Error?_0x4e4c1e[_0x561fc0(0x290)][_0x561fc0(0x201)]:'UnknownError','context':{'tool':name,'arguments':args?JSON[_0x561fc0(0x1c4)](args)[_0x561fc0(0x23b)](0x0,0x1f4):undefined,'mcp_server_version':_0x561fc0(0x1d6)},'stack_trace':_0x4e4c1e instanceof Error?_0x4e4c1e[_0x561fc0(0x22e)]:undefined,'source':_0x561fc0(0x229)})[_0x561fc0(0x272)](()=>{}),{'content':[{'type':_0x561fc0(0x1db),'text':_0x561fc0(0x1d0)+_0x59c911}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x9699f0){const _0xa6f34d=a0_0x41a4db,_0x4c7739=await getValidRootDirectories(_0x9699f0);if(_0x4c7739[_0xa6f34d(0x1d1)]>0x0)allowedDirectories=[..._0x4c7739],console[_0xa6f34d(0x1a5)](_0xa6f34d(0x1e1)+_0x4c7739[_0xa6f34d(0x1d1)]+'\x20valid\x20directories');else{console[_0xa6f34d(0x1a5)](_0xa6f34d(0x24f));if(ENABLE_WORKSPACE_MODE)try{const _0x3fb03d=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3fb03d&&(allowedDirectories=[_0x3fb03d],console[_0xa6f34d(0x1a5)]('Fallback:\x20Using\x20workspace\x20root\x20'+_0x3fb03d));}catch(_0x1a8383){console[_0xa6f34d(0x1a5)](_0xa6f34d(0x284)+_0x1a8383);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x5d8819=a0_0x41a4db;try{const _0x1fed5d=await server[_0x5d8819(0x1b4)]();_0x1fed5d&&'roots'in _0x1fed5d&&await updateAllowedDirectoriesFromRoots(_0x1fed5d[_0x5d8819(0x1e9)]);}catch(_0x64e74c){console[_0x5d8819(0x1a5)](_0x5d8819(0x25e),_0x64e74c instanceof Error?_0x64e74c['message']:String(_0x64e74c));}}),server[a0_0x41a4db(0x210)]=async()=>{const _0x30b2c5=a0_0x41a4db,_0x44ff19=server[_0x30b2c5(0x1df)]();if(_0x44ff19?.[_0x30b2c5(0x1e9)])try{const _0xd2c0f1=await server[_0x30b2c5(0x1b4)]();_0xd2c0f1&&_0x30b2c5(0x1e9)in _0xd2c0f1?await updateAllowedDirectoriesFromRoots(_0xd2c0f1['roots']):console['error'](_0x30b2c5(0x202));}catch(_0x331c65){console[_0x30b2c5(0x1a5)](_0x30b2c5(0x257),_0x331c65 instanceof Error?_0x331c65[_0x30b2c5(0x27e)]:String(_0x331c65));}else{if(allowedDirectories[_0x30b2c5(0x1d1)]>0x0)console[_0x30b2c5(0x1a5)](_0x30b2c5(0x1a2),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x30b2c5(0x1a5)](_0x30b2c5(0x1c8));else throw new Error(_0x30b2c5(0x297));}}};async function runServer(){const _0x55f842=a0_0x41a4db,_0x3225dc=new StdioServerTransport();await server[_0x55f842(0x1c3)](_0x3225dc),console[_0x55f842(0x1a5)](_0x55f842(0x25f)),allowedDirectories[_0x55f842(0x1d1)]===0x0&&console['error'](_0x55f842(0x264));}runServer()[a0_0x41a4db(0x272)](_0xab36f1=>{const _0x2dd675=a0_0x41a4db;console['error'](_0x2dd675(0x20c),_0xab36f1),process[_0x2dd675(0x212)](0x1);});
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x1f18b6,_0x5b92ad){const _0x294874=a1_0x1dcb,_0x3a2d9a=_0x1f18b6();while(!![]){try{const _0x18124f=parseInt(_0x294874(0xc9))/0x1+parseInt(_0x294874(0xc7))/0x2*(parseInt(_0x294874(0xc5))/0x3)+-parseInt(_0x294874(0xc8))/0x4*(parseInt(_0x294874(0xca))/0x5)+-parseInt(_0x294874(0xbf))/0x6+parseInt(_0x294874(0xbc))/0x7*(-parseInt(_0x294874(0xbb))/0x8)+-parseInt(_0x294874(0xba))/0x9+-parseInt(_0x294874(0xcd))/0xa*(-parseInt(_0x294874(0xd0))/0xb);if(_0x18124f===_0x5b92ad)break;else _0x3a2d9a['push'](_0x3a2d9a['shift']());}catch(_0x2fc7ee){_0x3a2d9a['push'](_0x3a2d9a['shift']());}}}(a1_0x37ee,0x9fb17));import a1_0x46fbd3 from'path';import a1_0x69c27f from'os';export function convertToWindowsPath(_0x4ddee6){const _0x237079=a1_0x1dcb;if(_0x4ddee6[_0x237079(0xb9)](_0x237079(0xcf))){const _0x5361dd=_0x4ddee6['charAt'](0x5)['toUpperCase'](),_0x550eee=_0x4ddee6[_0x237079(0xc6)](0x6)['replace'](/\//g,'\x5c');return _0x5361dd+':'+_0x550eee;}if(_0x4ddee6[_0x237079(0xbe)](/^\/[a-zA-Z]\//)){const _0x482ace=_0x4ddee6[_0x237079(0xbd)](0x1)[_0x237079(0xce)](),_0x3dfc6e=_0x4ddee6['slice'](0x2)[_0x237079(0xc0)](/\//g,'\x5c');return _0x482ace+':'+_0x3dfc6e;}if(_0x4ddee6[_0x237079(0xbe)](/^[a-zA-Z]:/))return _0x4ddee6[_0x237079(0xc0)](/\//g,'\x5c');return _0x4ddee6;}export function normalizePath(_0x62a72f){const _0x506b51=a1_0x1dcb;_0x62a72f=_0x62a72f[_0x506b51(0xc1)]()[_0x506b51(0xc0)](/^["']|["']$/g,'');const _0x2ccb56=_0x62a72f[_0x506b51(0xb9)]('/')&&!_0x62a72f['match'](/^\/mnt\/[a-z]\//i)&&!_0x62a72f['match'](/^\/[a-zA-Z]\//);if(_0x2ccb56)return _0x62a72f[_0x506b51(0xc0)](/\/+/g,'/')['replace'](/\/+$/,'');_0x62a72f=convertToWindowsPath(_0x62a72f);if(_0x62a72f[_0x506b51(0xb9)]('\x5c\x5c')){let _0x2c80fa=_0x62a72f;_0x2c80fa=_0x2c80fa[_0x506b51(0xc0)](/^\\{2,}/,'\x5c\x5c');const _0x55730b=_0x2c80fa[_0x506b51(0xcb)](0x2)[_0x506b51(0xc0)](/\\\\/g,'\x5c');_0x62a72f='\x5c\x5c'+_0x55730b;}else _0x62a72f=_0x62a72f['replace'](/\\\\/g,'\x5c');let _0x33a226=a1_0x46fbd3[_0x506b51(0xc4)](_0x62a72f);_0x62a72f[_0x506b51(0xb9)]('\x5c\x5c')&&!_0x33a226[_0x506b51(0xb9)]('\x5c\x5c')&&(_0x33a226='\x5c'+_0x33a226);if(_0x33a226[_0x506b51(0xbe)](/^[a-zA-Z]:/)){let _0x18bcd4=_0x33a226['replace'](/\//g,'\x5c');return/^[a-z]:/[_0x506b51(0xc2)](_0x18bcd4)&&(_0x18bcd4=_0x18bcd4[_0x506b51(0xbd)](0x0)[_0x506b51(0xce)]()+_0x18bcd4[_0x506b51(0xc6)](0x1)),_0x18bcd4;}return _0x33a226[_0x506b51(0xc0)](/\//g,'\x5c');}function a1_0x1dcb(_0x263f87,_0xbd654a){_0x263f87=_0x263f87-0xb9;const _0x37ee58=a1_0x37ee();let _0x1dcb74=_0x37ee58[_0x263f87];return _0x1dcb74;}function a1_0x37ee(){const _0x161f3e=['446817RkoMxJ','slice','10zfKRRt','36928ljHshQ','803759cuYZDF','35nqhXsW','substring','join','15273070LggrDo','toUpperCase','/mnt/','11ffFaQF','startsWith','6016950HxNqVG','8UmOytw','4178419UEfdHz','charAt','match','6549402yZSzQy','replace','trim','test','homedir','normalize'];a1_0x37ee=function(){return _0x161f3e;};return a1_0x37ee();}export function expandHome(_0x100f37){const _0x214edd=a1_0x1dcb;if(_0x100f37[_0x214edd(0xb9)]('~/')||_0x100f37==='~')return a1_0x46fbd3[_0x214edd(0xcc)](a1_0x69c27f[_0x214edd(0xc3)](),_0x100f37['slice'](0x1));return _0x100f37;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a2_0x4ca1(){const _0x240fb8=['includes','1384BVXCwT','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','length','3563szpyRy','20676yLmoFL','2858QUPbbe','some','4436631XBcoNm','3546738cBcSIe','36496416CQDpSP','startsWith','resolve','string','540YjppJf','normalize','32tqCZdG','sep','Path\x20must\x20be\x20absolute\x20after\x20normalization','isArray','isAbsolute','168608lCFtOY','5235220MLXiHM','5KfHlOx'];a2_0x4ca1=function(){return _0x240fb8;};return a2_0x4ca1();}(function(_0x34292a,_0xd0c3d2){const _0x5a194f=a2_0x1018,_0x55dbe2=_0x34292a();while(!![]){try{const _0x6c1218=-parseInt(_0x5a194f(0x1f7))/0x1*(-parseInt(_0x5a194f(0x20a))/0x2)+-parseInt(_0x5a194f(0x1fa))/0x3+parseInt(_0x5a194f(0x207))/0x4*(-parseInt(_0x5a194f(0x208))/0x5)+parseInt(_0x5a194f(0x1f6))/0x6*(parseInt(_0x5a194f(0x1f5))/0x7)+-parseInt(_0x5a194f(0x201))/0x8*(-parseInt(_0x5a194f(0x1f9))/0x9)+-parseInt(_0x5a194f(0x1ff))/0xa*(-parseInt(_0x5a194f(0x206))/0xb)+-parseInt(_0x5a194f(0x1fb))/0xc;if(_0x6c1218===_0xd0c3d2)break;else _0x55dbe2['push'](_0x55dbe2['shift']());}catch(_0x1a8009){_0x55dbe2['push'](_0x55dbe2['shift']());}}}(a2_0x4ca1,0xf3ddf));function a2_0x1018(_0x5ce0fb,_0x183851){_0x5ce0fb=_0x5ce0fb-0x1f3;const _0x4ca1a6=a2_0x4ca1();let _0x1018bf=_0x4ca1a6[_0x5ce0fb];return _0x1018bf;}import a2_0x88a833 from'path';export function isPathWithinAllowedDirectories(_0x4858fd,_0x3a7034){const _0x36258e=a2_0x1018;if(typeof _0x4858fd!==_0x36258e(0x1fe)||!Array[_0x36258e(0x204)](_0x3a7034))return![];if(!_0x4858fd||_0x3a7034[_0x36258e(0x1f4)]===0x0)return![];if(_0x4858fd[_0x36258e(0x209)]('\x00'))return![];let _0x4d1cad;try{_0x4d1cad=a2_0x88a833[_0x36258e(0x1fd)](a2_0x88a833['normalize'](_0x4858fd));}catch{return![];}if(!a2_0x88a833['isAbsolute'](_0x4d1cad))throw new Error(_0x36258e(0x203));return _0x3a7034[_0x36258e(0x1f8)](_0x516f48=>{const _0x3ebad2=_0x36258e;if(typeof _0x516f48!=='string'||!_0x516f48)return![];if(_0x516f48[_0x3ebad2(0x209)]('\x00'))return![];let _0x12a682;try{_0x12a682=a2_0x88a833['resolve'](a2_0x88a833[_0x3ebad2(0x200)](_0x516f48));}catch{return![];}if(!a2_0x88a833[_0x3ebad2(0x205)](_0x12a682))throw new Error(_0x3ebad2(0x1f3));if(_0x4d1cad===_0x12a682)return!![];if(_0x12a682===a2_0x88a833[_0x3ebad2(0x202)])return _0x4d1cad[_0x3ebad2(0x1fc)](a2_0x88a833['sep']);return _0x4d1cad[_0x3ebad2(0x1fc)](_0x12a682+a2_0x88a833[_0x3ebad2(0x202)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a3_0x1e13(){const _0x5b6b36=['Skipping\x20invalid\x20directory:\x20','invalid\x20path\x20or\x20inaccessible','25QgIQJh','\x20due\x20to\x20error:\x20','isDirectory','488YspKAE','1636320BKtBPM','error','slice','file://','75061biMTjv','uri','join','1458346sOgMmD','message','resolve','1635042DRDSBR','3684244dCgfTE','homedir','253617azJvPo','realpath','4941495yqfhWs','non-directory\x20root','startsWith'];a3_0x1e13=function(){return _0x5b6b36;};return a3_0x1e13();}(function(_0x1e7f2f,_0x42f331){const _0x2c2729=a3_0x443f,_0x348d6e=_0x1e7f2f();while(!![]){try{const _0x4796b8=parseInt(_0x2c2729(0x1d7))/0x1+parseInt(_0x2c2729(0x1d1))/0x2+-parseInt(_0x2c2729(0x1e2))/0x3+-parseInt(_0x2c2729(0x1d5))/0x4+-parseInt(_0x2c2729(0x1de))/0x5*(-parseInt(_0x2c2729(0x1d4))/0x6)+-parseInt(_0x2c2729(0x1ce))/0x7*(parseInt(_0x2c2729(0x1e1))/0x8)+parseInt(_0x2c2729(0x1d9))/0x9;if(_0x4796b8===_0x42f331)break;else _0x348d6e['push'](_0x348d6e['shift']());}catch(_0x51707a){_0x348d6e['push'](_0x348d6e['shift']());}}}(a3_0x1e13,0xbce90));import{promises as a3_0x5e88d6}from'fs';import a3_0x586471 from'path';function a3_0x443f(_0x3cce9d,_0x3c0e81){_0x3cce9d=_0x3cce9d-0x1cd;const _0x1e1360=a3_0x1e13();let _0x443f0e=_0x1e1360[_0x3cce9d];return _0x443f0e;}import a3_0x17212 from'os';import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x3a40e1){const _0x20093c=a3_0x443f;try{const _0x3cad52=_0x3a40e1['startsWith'](_0x20093c(0x1cd))?_0x3a40e1[_0x20093c(0x1e4)](0x7):_0x3a40e1,_0x476f84=_0x3cad52[_0x20093c(0x1db)]('~/')||_0x3cad52==='~'?a3_0x586471[_0x20093c(0x1d0)](a3_0x17212[_0x20093c(0x1d6)](),_0x3cad52[_0x20093c(0x1e4)](0x1)):_0x3cad52,_0x19ec96=a3_0x586471[_0x20093c(0x1d3)](_0x476f84),_0x1e9958=await a3_0x5e88d6[_0x20093c(0x1d8)](_0x19ec96);return normalizePath(_0x1e9958);}catch{return null;}}function formatDirectoryError(_0x1fafbe,_0x15e518,_0x11a329){const _0x1da016=a3_0x443f;if(_0x11a329)return'Skipping\x20'+_0x11a329+':\x20'+_0x1fafbe;const _0x2d9550=_0x15e518 instanceof Error?_0x15e518[_0x1da016(0x1d2)]:String(_0x15e518);return _0x1da016(0x1dc)+_0x1fafbe+_0x1da016(0x1df)+_0x2d9550;}export async function getValidRootDirectories(_0x1a04d1){const _0x32d7dc=a3_0x443f,_0x469523=[];for(const _0x277119 of _0x1a04d1){const _0x445081=await parseRootUri(_0x277119[_0x32d7dc(0x1cf)]);if(!_0x445081){console['error'](formatDirectoryError(_0x277119['uri'],undefined,_0x32d7dc(0x1dd)));continue;}try{const _0x5f55d6=await a3_0x5e88d6['stat'](_0x445081);_0x5f55d6[_0x32d7dc(0x1e0)]()?_0x469523['push'](_0x445081):console[_0x32d7dc(0x1e3)](formatDirectoryError(_0x445081,undefined,_0x32d7dc(0x1da)));}catch(_0x5635cf){console[_0x32d7dc(0x1e3)](formatDirectoryError(_0x445081,_0x5635cf));}}return _0x469523;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.78",
|
|
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.102",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|