@morphllm/morphmcp 0.8.96 → 0.8.97
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_0x3ae23d=a0_0x2a99;(function(_0x4904b4,_0x15868f){const _0x6ca71f=a0_0x2a99,_0x42c35a=_0x4904b4();while(!![]){try{const _0x1e67d1=-parseInt(_0x6ca71f(0x208))/0x1+parseInt(_0x6ca71f(0x277))/0x2*(parseInt(_0x6ca71f(0x20d))/0x3)+parseInt(_0x6ca71f(0x1a2))/0x4+parseInt(_0x6ca71f(0x272))/0x5+-parseInt(_0x6ca71f(0x251))/0x6+parseInt(_0x6ca71f(0x1f6))/0x7*(parseInt(_0x6ca71f(0x271))/0x8)+parseInt(_0x6ca71f(0x246))/0x9*(-parseInt(_0x6ca71f(0x22a))/0xa);if(_0x1e67d1===_0x15868f)break;else _0x42c35a['push'](_0x42c35a['shift']());}catch(_0x4c1bee){_0x42c35a['push'](_0x42c35a['shift']());}}}(a0_0x3324,0x2ed6d));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';function a0_0x2a99(_0x3387f3,_0x597d86){_0x3387f3=_0x3387f3-0x19f;const _0x33248a=a0_0x3324();let _0x2a9963=_0x33248a[_0x3387f3];return _0x2a9963;}import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0xdf4074 from'fs/promises';import a0_0x10a20c from'path';import a0_0x52a4ef 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_0x584d91 from'axios';function fixPathRepetition(_0x1c6d2e){const _0x3c0256=a0_0x2a99,_0x182ff3=_0x1c6d2e['split'](a0_0x10a20c['sep'])[_0x3c0256(0x241)](Boolean);if(_0x182ff3[_0x3c0256(0x1a3)]<0x2)return null;for(let _0x2a2ed9=Math[_0x3c0256(0x257)](_0x182ff3[_0x3c0256(0x1a3)]/0x2);_0x2a2ed9>=0x1;_0x2a2ed9--){for(let _0xa69ac0=0x0;_0xa69ac0<=_0x182ff3[_0x3c0256(0x1a3)]-0x2*_0x2a2ed9;_0xa69ac0++){const _0xf15340=_0x182ff3[_0x3c0256(0x1cb)](_0xa69ac0,_0xa69ac0+_0x2a2ed9),_0x23e1df=_0x182ff3['slice'](_0xa69ac0+_0x2a2ed9,_0xa69ac0+0x2*_0x2a2ed9);if(_0xf15340[_0x3c0256(0x1f3)]((_0x5aef0b,_0x2ba7bb)=>_0x5aef0b===_0x23e1df[_0x2ba7bb])){const _0x5c8564=[..._0x182ff3[_0x3c0256(0x1cb)](0x0,_0xa69ac0),..._0x182ff3[_0x3c0256(0x1cb)](_0xa69ac0+_0x2a2ed9)];return a0_0x10a20c[_0x3c0256(0x1ff)]+_0x5c8564[_0x3c0256(0x243)](a0_0x10a20c[_0x3c0256(0x1ff)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x2d7417=a0_0x2a99;try{const _0x3bd2db=require(_0x2d7417(0x1c5));return _0x3bd2db['version']??_0x2d7417(0x27e);}catch(_0x20708d){return console[_0x2d7417(0x25b)](_0x2d7417(0x20b),_0x20708d),_0x2d7417(0x27e);}}function printHelp(){const _0x5d3b48=a0_0x2a99;console['log'](_0x5d3b48(0x1e5)+getPackageVersion()),console[_0x5d3b48(0x26b)](_0x5d3b48(0x1e3)),console[_0x5d3b48(0x26b)]('\x0aOptions:'),console[_0x5d3b48(0x26b)](_0x5d3b48(0x275)),console[_0x5d3b48(0x26b)](_0x5d3b48(0x28a)),console['log'](_0x5d3b48(0x296)),console[_0x5d3b48(0x26b)]('\x0aExamples:'),console[_0x5d3b48(0x26b)](_0x5d3b48(0x1f1)),console[_0x5d3b48(0x26b)](_0x5d3b48(0x26f));}const cliArgs=process[a0_0x3ae23d(0x1ce)][a0_0x3ae23d(0x1cb)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x3ae23d(0x240),'-h']);cliArgs['some'](_0x4714be=>VERSION_FLAGS[a0_0x3ae23d(0x1f4)](_0x4714be))&&(console[a0_0x3ae23d(0x26b)]('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x3ae23d(0x269)](0x0));cliArgs['some'](_0x326d49=>HELP_FLAGS[a0_0x3ae23d(0x1f4)](_0x326d49))&&(printHelp(),process['exit'](0x0));function getCliArg(_0xe77258){const _0x47e688=a0_0x3ae23d;for(let _0x57aff2=0x0;_0x57aff2<cliArgs['length'];_0x57aff2++){const _0x14faf5=cliArgs[_0x57aff2];if(_0x14faf5[_0x47e688(0x23e)]('--'+_0xe77258+'='))return _0x14faf5[_0x47e688(0x1cb)](('--'+_0xe77258+'=')[_0x47e688(0x1a3)]);if(_0x14faf5==='--'+_0xe77258&&_0x57aff2+0x1<cliArgs[_0x47e688(0x1a3)])return cliArgs[_0x57aff2+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x3ae23d(0x1a3)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x3ae23d(0x1f4)](arg)||HELP_FLAGS[a0_0x3ae23d(0x1f4)](arg))continue;if(arg[a0_0x3ae23d(0x23e)](a0_0x3ae23d(0x26e)))continue;if(arg===a0_0x3ae23d(0x1f8)){i++;continue;}args[a0_0x3ae23d(0x27b)](arg);}const ALL_TOOLS=[a0_0x3ae23d(0x224),a0_0x3ae23d(0x24e),a0_0x3ae23d(0x245)],DEFAULT_TOOLS=[a0_0x3ae23d(0x224),a0_0x3ae23d(0x24e)],ENABLED_TOOLS=process[a0_0x3ae23d(0x26a)]['ENABLED_TOOLS']?process['env'][a0_0x3ae23d(0x24c)]===a0_0x3ae23d(0x1b2)?ALL_TOOLS:process[a0_0x3ae23d(0x26a)][a0_0x3ae23d(0x24c)]['split'](',')['map'](_0x5153a6=>_0x5153a6['trim']()):DEFAULT_TOOLS;console[a0_0x3ae23d(0x25b)](a0_0x3ae23d(0x233)+ENABLED_TOOLS[a0_0x3ae23d(0x243)](',\x20'));const WORKSPACE_ROOT=process[a0_0x3ae23d(0x26a)][a0_0x3ae23d(0x1b1)]||process['env'][a0_0x3ae23d(0x235)]||process[a0_0x3ae23d(0x223)](),ENABLE_WORKSPACE_MODE=process[a0_0x3ae23d(0x26a)][a0_0x3ae23d(0x278)]!==a0_0x3ae23d(0x24a),MORPH_API_KEY=getCliArg(a0_0x3ae23d(0x213))??process['env']['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x3ae23d(0x26a)]['MORPH_API_URL'],MORPH_WARP_GREP_TIMEOUT=process[a0_0x3ae23d(0x26a)][a0_0x3ae23d(0x230)]?parseInt(process['env'][a0_0x3ae23d(0x230)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x3ae23d(0x214))&&!MORPH_API_KEY[a0_0x3ae23d(0x23e)](a0_0x3ae23d(0x202))&&console['error'](a0_0x3ae23d(0x1a5));async function reportMorphError(_0x357057){const _0x7b0b13=a0_0x3ae23d;try{await a0_0x584d91[_0x7b0b13(0x211)](_0x7b0b13(0x1cd),{..._0x357057,'timestamp':new Date()[_0x7b0b13(0x279)](),'source':_0x357057[_0x7b0b13(0x1bf)]||_0x7b0b13(0x21d)},{'timeout':0x1388,'headers':{'Content-Type':_0x7b0b13(0x25e),'Authorization':_0x7b0b13(0x1e0)+MORPH_API_KEY}});}catch{}}args[a0_0x3ae23d(0x1a3)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console['error'](a0_0x3ae23d(0x1a1)),console[a0_0x3ae23d(0x25b)](a0_0x3ae23d(0x201)),console[a0_0x3ae23d(0x25b)]('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),console[a0_0x3ae23d(0x25b)](a0_0x3ae23d(0x2a4)),console[a0_0x3ae23d(0x25b)](a0_0x3ae23d(0x1fc)),console[a0_0x3ae23d(0x25b)]('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x517a28){const _0x3625aa=a0_0x3ae23d;return a0_0x10a20c[_0x3625aa(0x27f)](_0x517a28);}function expandHome(_0x2315e5){const _0x41729c=a0_0x3ae23d;if(_0x2315e5[_0x41729c(0x23e)]('~/')||_0x2315e5==='~')return a0_0x10a20c[_0x41729c(0x243)](a0_0x52a4ef[_0x41729c(0x1a9)](),_0x2315e5[_0x41729c(0x1cb)](0x1));return _0x2315e5;}function a0_0x3324(){const _0x468a5d=['filepath','\x22>\x0aError\x20reading\x20file:\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','exit','env','log','WarpGrepError','role','--api-key=','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','safeParse','1458904LRmhYw','1778755Mcqyij','dirname','.vscode','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','<file\x20path=\x22','8KOQoXo','ENABLE_WORKSPACE_MODE','toISOString','stats','push','completed_with_file_errors','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','unknown','normalize','endLine','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','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','limit','\x20(new\x20file)','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','lines','search_string','-\x20Listed\x20directory\x20`','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','oninitialized','unknown\x20error','\x0a...\x20(truncated,\x20total:\x20','linesRemoved','Unknown\x20tool:\x20','connect','substring','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','catch','payload','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','stack','\x20results\x20in\x20','optional','stat','rerankScore','tsconfig.json','includes','Applied','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','Natural\x20language\x20query\x20to\x20search\x20for\x20code','Failed\x20to\x20read\x20file:\x20','listRoots','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','instruction','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','305908FDbknb','length','FileReadError','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','pyproject.toml','basename','number','homedir','isDirectory','TimeoutError','Error\x20running\x20fast\x20context\x20search:\x20','resolve','code','metadata','setRequestHandler','WORKSPACE_ROOT','all','array','targetDirectories','query','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','composer.json','go.mod','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','timings','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','Morph\x20Edit\x20','default','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','source','results','roots','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',',\x20removed\x20','describe','../package.json','grep\x20\x27','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.','Max\x20results\x20to\x20return','string','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','slice','terminationReason','https://morphllm.com/api/error-report','argv','.\x20Changes:\x20','morph-warp-grep-v1-1111v0','0.2.0','finish','name','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','terminated','path','...','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','No\x20results\x20found\x20for\x20query:\x20\x22','params','File\x20read\x20error:','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','searchTimeMs','ENOENT','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','Bearer\x20','Found\x20','map','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','\x20as\x20allowed\x20directory','@morphllm/morphmcp\x20','trim','dryRun','\x20-\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','success','Invalid\x20arguments:\x20','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','toLowerCase','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','runWarpGrep_call','\x20\x20morph-mcp','description','every','has','completionId','14aSYfgf','toFixed','--api-key','Preview\x20changes\x20without\x20applying\x20them.','realpath','timed\x20out','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Created\x20File','repoId','sep','assistant','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','morph-','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','Morph\x20FastApply\x20failed\x20without\x20error\x20message','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','\x27\x20in\x20`','</file>','95641jUwmLW','object','message','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','%\x20match)\x0a','152259zbAMqT','Here\x20is\x20the\x20content\x20of\x20files:\x0a','Relevant\x20context\x20found:','Failed\x20to\x20request\x20roots\x20from\x20client:','post','Morph\x20Edit\x20Preview','api-key','sk-','UnknownError','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','changes','content','utf-8','\x20\x20\x20Lines\x20','timeout','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','mcp-filesystem','repo_path','data','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','readFile','cwd','edit_file','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','Error:\x20','\x20is\x20not\x20a\x20directory','added\x20','Benefits:\x0a','5933450AyzyZx','access','\x20valid\x20directories','\x20chars)','Repository\x20identifier','-\x20Read\x20file\x20`','MORPH_WARP_GREP_TIMEOUT','\x20\x20\x20','text','Enabled\x20tools:\x20','Cargo.toml','PWD','constructor','morph-mcp','branch','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','.\x20Path:\x20','match','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','errors','startsWith','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','--help','filter','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','join','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','codebase_search','9jkMZiv','\x0a</file>','completed','files','false','startLine','ENABLED_TOOLS','isArray','warpgrep_codebase_search','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','morph-v3-fast','714762RUFSZn','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','messages','linesModified','floor','read\x20','Warning:\x20','requiresApiKey','error','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','.git','application/json','❌\x20Morph\x20Edit\x20Failed:\x20','split','.cursor','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','code_edit'];a0_0x3324=function(){return _0x468a5d;};return a0_0x3324();}let allowedDirectories=await Promise['all'](args[a0_0x3ae23d(0x1e2)](async _0x110834=>{const _0x56b1b2=a0_0x3ae23d,_0x310db8=expandHome(_0x110834),_0x34d41e=a0_0x10a20c['resolve'](_0x310db8);try{const _0x5b4540=await a0_0xdf4074[_0x56b1b2(0x1fa)](_0x34d41e);return normalizePath(_0x5b4540);}catch(_0x3e8849){return normalizePath(_0x34d41e);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x3ae23d(0x1a3)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),console[a0_0x3ae23d(0x25b)]('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0x3ae23d(0x1e4)));}catch(a0_0x3f14ce){console[a0_0x3ae23d(0x25b)](a0_0x3ae23d(0x253)+a0_0x3f14ce);}async function detectWorkspaceRoot(_0x3aa332){const _0x447323=a0_0x3ae23d;let _0x468af2=a0_0x10a20c[_0x447323(0x1ad)](_0x3aa332);const _0x44fe50=[_0x447323(0x25d),_0x447323(0x274),'package.json',_0x447323(0x234),_0x447323(0x1a6),_0x447323(0x1b8),_0x447323(0x261),_0x447323(0x29c),_0x447323(0x1b7)];while(_0x468af2!==a0_0x10a20c[_0x447323(0x273)](_0x468af2)){for(const _0x38bb52 of _0x44fe50){const _0x2fd822=a0_0x10a20c[_0x447323(0x243)](_0x468af2,_0x38bb52);try{return await a0_0xdf4074[_0x447323(0x22b)](_0x2fd822),normalizePath(_0x468af2);}catch{}}_0x468af2=a0_0x10a20c[_0x447323(0x273)](_0x468af2);}return normalizePath(_0x3aa332);}await Promise[a0_0x3ae23d(0x1b2)](args[a0_0x3ae23d(0x1e2)](async _0xd87d79=>{const _0x1db992=a0_0x3ae23d;try{const _0x454e6c=await a0_0xdf4074[_0x1db992(0x29a)](expandHome(_0xd87d79));!_0x454e6c[_0x1db992(0x1aa)]()&&(console[_0x1db992(0x25b)]('Error:\x20'+_0xd87d79+_0x1db992(0x227)),process['exit'](0x1));}catch(_0x673ebc){console[_0x1db992(0x25b)]('Error\x20accessing\x20directory\x20'+_0xd87d79+':',_0x673ebc),process[_0x1db992(0x269)](0x1);}}));async function validatePath(_0x4f1a84){const _0x472793=a0_0x3ae23d,_0x3b15ac=expandHome(_0x4f1a84),_0x6e69ce=a0_0x10a20c[_0x472793(0x1ad)](_0x3b15ac);try{const _0x33d054=await a0_0xdf4074[_0x472793(0x1fa)](_0x6e69ce);return _0x33d054;}catch(_0x45254d){if(_0x45254d['code']==='ENOENT'){const _0x1c07df=a0_0x10a20c['dirname'](_0x6e69ce);try{const _0x24aa05=await a0_0xdf4074[_0x472793(0x1fa)](_0x1c07df);return a0_0x10a20c[_0x472793(0x243)](_0x24aa05,a0_0x10a20c[_0x472793(0x1a7)](_0x6e69ce));}catch{throw new Error(_0x472793(0x254)+_0x1c07df);}}throw _0x45254d;}}const MorphEditFileArgsSchema=z[a0_0x3ae23d(0x209)]({'path':z[a0_0x3ae23d(0x1c9)](),'code_edit':z['string']()[a0_0x3ae23d(0x1c4)](a0_0x3ae23d(0x263)),'instruction':z[a0_0x3ae23d(0x1c9)]()[a0_0x3ae23d(0x1c4)]('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z['boolean']()[a0_0x3ae23d(0x1bd)](![])[a0_0x3ae23d(0x1c4)](a0_0x3ae23d(0x1f9))}),WarpGrepArgsSchema=z[a0_0x3ae23d(0x209)]({'search_string':z[a0_0x3ae23d(0x1c9)]()[a0_0x3ae23d(0x1c4)](a0_0x3ae23d(0x216)),'repo_path':z['string']()[a0_0x3ae23d(0x1c4)](a0_0x3ae23d(0x1c2))}),CodebaseSearchArgsSchema=z[a0_0x3ae23d(0x209)]({'query':z[a0_0x3ae23d(0x1c9)]()['describe'](a0_0x3ae23d(0x2a0)),'repoId':z[a0_0x3ae23d(0x1c9)]()[a0_0x3ae23d(0x1c4)](a0_0x3ae23d(0x22e)),'branch':z['string']()[a0_0x3ae23d(0x299)]()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x3ae23d(0x1c9)]()[a0_0x3ae23d(0x299)]()[a0_0x3ae23d(0x1c4)]('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x3ae23d(0x1b3)](z['string']())[a0_0x3ae23d(0x1bd)]([])[a0_0x3ae23d(0x1c4)](a0_0x3ae23d(0x1a0)),'limit':z[a0_0x3ae23d(0x1a8)]()[a0_0x3ae23d(0x299)]()['default'](0xa)[a0_0x3ae23d(0x1c4)](a0_0x3ae23d(0x1c8))}),server=new Server({'name':a0_0x3ae23d(0x237),'version':a0_0x3ae23d(0x1d1)},{'capabilities':{'tools':{}}});server[a0_0x3ae23d(0x1b0)](ListToolsRequestSchema,async()=>{const _0x4a7c37=a0_0x3ae23d,_0x1355b4=[{'name':'edit_file','description':_0x4a7c37(0x293)+_0x4a7c37(0x244)+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+_0x4a7c37(0x268)+_0x4a7c37(0x229)+_0x4a7c37(0x242)+'-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a'+_0x4a7c37(0x239)+_0x4a7c37(0x1ec)+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+_0x4a7c37(0x203)+_0x4a7c37(0x1d4)+'For\x20deletions:\x0a'+_0x4a7c37(0x1b9)+_0x4a7c37(0x28b)+'Rules:\x0a'+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+_0x4a7c37(0x285)+_0x4a7c37(0x262)+_0x4a7c37(0x1ca)+_0x4a7c37(0x1dc)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x4a7c37(0x282),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':'warpgrep_codebase_search','description':_0x4a7c37(0x23c)+_0x4a7c37(0x1d8)+_0x4a7c37(0x1e9)+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20'+_0x4a7c37(0x1b6)+_0x4a7c37(0x29f)+_0x4a7c37(0x1ef)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':_0x4a7c37(0x245),'description':_0x4a7c37(0x27d)+_0x4a7c37(0x1bb)+_0x4a7c37(0x252)+_0x4a7c37(0x229)+_0x4a7c37(0x225)+_0x4a7c37(0x25c)+_0x4a7c37(0x2a3)+'-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a'+_0x4a7c37(0x221)+'Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20'+_0x4a7c37(0x23f),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x14a479=_0x1355b4[_0x4a7c37(0x241)](_0x26eec9=>{const _0x2788e0=_0x4a7c37;if(!ENABLED_TOOLS[_0x2788e0(0x29d)](_0x26eec9['name']))return![];if(_0x2788e0(0x25a)in _0x26eec9&&_0x26eec9[_0x2788e0(0x25a)]&&!MORPH_API_KEY)return console[_0x2788e0(0x25b)]('Warning:\x20'+_0x26eec9[_0x2788e0(0x1d3)]+_0x2788e0(0x286)),![];return!![];});return{'tools':_0x14a479['map'](_0x491317=>({'name':_0x491317[_0x4a7c37(0x1d3)],'description':_0x491317[_0x4a7c37(0x1f2)],'inputSchema':_0x491317['inputSchema']}))};}),server[a0_0x3ae23d(0x1b0)](CallToolRequestSchema,async _0x557b28=>{const _0x453378=a0_0x3ae23d;try{const {name:_0x4b5f41,arguments:_0x2a69a8}=_0x557b28[_0x453378(0x1da)];switch(_0x4b5f41){case _0x453378(0x224):{const _0x15e018=MorphEditFileArgsSchema['safeParse'](_0x2a69a8);if(!_0x15e018['success'])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x15e018[_0x453378(0x25b)]);const _0x1233b5=await validatePath(_0x15e018['data'][_0x453378(0x1d6)]);let _0x3b5a5e=null,_0x44e0d6=!![],_0x2c8a16=null;try{_0x3b5a5e=await a0_0xdf4074['readFile'](_0x1233b5,_0x453378(0x219));}catch(_0x1df741){const _0x46de1b=_0x1df741[_0x453378(0x1ae)];_0x46de1b===_0x453378(0x1de)?(_0x44e0d6=![],_0x3b5a5e=''):(_0x2c8a16=_0x453378(0x2a1)+(_0x46de1b||_0x453378(0x27e))+_0x453378(0x1e8)+(_0x1df741 instanceof Error?_0x1df741['message']:String(_0x1df741)),console[_0x453378(0x25b)](_0x453378(0x259)+_0x2c8a16));}let _0x1bbcdb;try{const _0x3ac65e=MORPH_API_KEY;if(!_0x3ac65e)throw new Error(_0x453378(0x220));const _0x45590b=a0_0x10a20c[_0x453378(0x273)](_0x1233b5),_0x4ff248=a0_0x10a20c[_0x453378(0x1a7)](_0x1233b5),_0x471531=await executeEditFile({'target_filepath':_0x4ff248,'code_edit':_0x15e018[_0x453378(0x21f)][_0x453378(0x264)],'instructions':_0x15e018[_0x453378(0x21f)][_0x453378(0x19f)]},{'morphApiKey':_0x3ac65e,'morphApiUrl':MORPH_API_URL,'baseDir':_0x45590b,'autoWrite':!_0x15e018['data'][_0x453378(0x1e7)],'generateUdiff':![],'debug':![]});_0x1bbcdb=_0x471531[_0x453378(0x1f5)];if(!_0x471531['success'])throw new Error(_0x471531[_0x453378(0x25b)]||_0x453378(0x204));const _0x5852d0=_0x471531[_0x453378(0x217)],_0x15722a=_0x453378(0x228)+_0x5852d0['linesAdded']+_0x453378(0x1c3)+_0x5852d0[_0x453378(0x28f)]+',\x20modified\x20'+_0x5852d0[_0x453378(0x256)];if(_0x15e018[_0x453378(0x21f)]['dryRun'])return{'content':[{'type':_0x453378(0x232),'text':_0x453378(0x212)+(_0x44e0d6?'':_0x453378(0x284))+':\x20'+_0x15e018[_0x453378(0x21f)][_0x453378(0x19f)]+_0x453378(0x1cf)+_0x15722a+_0x453378(0x23a)+_0x15e018[_0x453378(0x21f)][_0x453378(0x1d6)]+'.'}]};return{'content':[{'type':'text','text':_0x453378(0x1bc)+(_0x44e0d6?_0x453378(0x29e):_0x453378(0x1fd))+':\x20'+_0x15e018[_0x453378(0x21f)]['instruction']+_0x453378(0x1cf)+_0x15722a+_0x453378(0x23a)+_0x15e018['data'][_0x453378(0x1d6)]+'.'}]};}catch(_0x581346){const _0x5e0e64=_0x581346 instanceof Error?_0x581346['message']:String(_0x581346);return reportMorphError({'error_message':_0x5e0e64,'error_type':_0x581346 instanceof Error?_0x581346[_0x453378(0x236)][_0x453378(0x1d3)]:_0x453378(0x215),'context':{'tool':'edit_file','completion_id':_0x1bbcdb,'file_path':_0x15e018[_0x453378(0x21f)][_0x453378(0x1d6)],'validated_path':_0x1233b5,'instruction':_0x15e018[_0x453378(0x21f)][_0x453378(0x19f)],'model':_0x453378(0x250),'dry_run':_0x15e018[_0x453378(0x21f)][_0x453378(0x1e7)],'file_exists':_0x44e0d6,'file_read_error':_0x2c8a16,'file_readable':_0x3b5a5e!==null,'request_content':{'path':_0x15e018['data'][_0x453378(0x1d6)],'code_edit':_0x15e018[_0x453378(0x21f)][_0x453378(0x264)],'instruction':_0x15e018[_0x453378(0x21f)]['instruction'],'original_code':_0x3b5a5e!==null?_0x3b5a5e[_0x453378(0x1a3)]>0xc350?_0x3b5a5e[_0x453378(0x292)](0x0,0xc350)+_0x453378(0x28e)+_0x3b5a5e[_0x453378(0x1a3)]+_0x453378(0x22d):_0x3b5a5e:'[could\x20not\x20read\x20file:\x20'+(_0x2c8a16||_0x453378(0x28d))+']','original_code_length':_0x3b5a5e?.[_0x453378(0x1a3)]??0x0,'model':'morph-v3-fast','dry_run':_0x15e018['data'][_0x453378(0x1e7)]}},'stack_trace':_0x581346 instanceof Error?_0x581346[_0x453378(0x297)]:undefined,'source':_0x453378(0x21d)})[_0x453378(0x294)](()=>{}),{'content':[{'type':_0x453378(0x232),'text':_0x453378(0x25f)+_0x5e0e64}],'isError':!![]};}}case _0x453378(0x24e):{const _0x29dff1=WarpGrepArgsSchema[_0x453378(0x270)](_0x2a69a8);if(!_0x29dff1['success'])return{'content':[{'type':_0x453378(0x232),'text':'Invalid\x20arguments:\x20'+_0x29dff1[_0x453378(0x25b)]}],'isError':!![]};const _0x4f3aa2=_0x2af738=>{const _0x55324b=_0x453378,_0x42674f=[];for(const _0x50bfe6 of _0x2af738||[]){const _0x3004ed=_0x50bfe6[_0x55324b(0x26d)],_0x2aa750=_0x50bfe6[_0x55324b(0x218)];if(_0x3004ed===_0x55324b(0x200)&&_0x2aa750){const _0x5296cb=_0x2aa750[_0x55324b(0x260)]('\x0a')[_0x55324b(0x241)](_0x2d09e4=>_0x2d09e4['trim']());for(const _0xd0e16e of _0x5296cb){const _0x2d56b9=_0xd0e16e[_0x55324b(0x23b)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x2d56b9){_0x42674f[_0x55324b(0x27b)](_0x55324b(0x1c6)+_0x2d56b9[0x1]+'\x27\x20'+_0x2d56b9[0x2]);continue;}const _0x4004b1=_0xd0e16e['match'](/^read\s+(.+)$/);if(_0x4004b1){_0x42674f['push'](_0x55324b(0x258)+_0x4004b1[0x1]);continue;}const _0x3f410e=_0xd0e16e[_0x55324b(0x23b)](/^list_directory\s+(.+)$/);if(_0x3f410e){_0x42674f[_0x55324b(0x27b)]('list_directory\x20'+_0x3f410e[0x1]);continue;}}}}return _0x42674f;};try{const _0x4bc7ee=a0_0x10a20c[_0x453378(0x1ad)](_0x29dff1[_0x453378(0x21f)]['repo_path']),_0x30b93f=new LocalRipgrepProvider(_0x4bc7ee),_0x519b9d=await runWarpGrep({'query':_0x29dff1[_0x453378(0x21f)][_0x453378(0x288)],'repoRoot':_0x4bc7ee,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x30b93f});let _0x2939d4='';if(_0x519b9d[_0x453378(0x1cc)]===_0x453378(0x248)&&_0x519b9d[_0x453378(0x1d2)]?.[_0x453378(0x1af)]?.[_0x453378(0x249)]){const _0x43592d=_0x519b9d[_0x453378(0x1d2)][_0x453378(0x1af)][_0x453378(0x249)];if(_0x43592d[_0x453378(0x1a3)]===0x0)return _0x2939d4=_0x519b9d[_0x453378(0x1d2)][_0x453378(0x295)]||_0x453378(0x1ee),{'content':[{'type':_0x453378(0x232),'text':_0x2939d4}]};const _0x1803dc=[],_0x3183f5=[_0x453378(0x21c)];for(const _0x3556dc of _0x519b9d[_0x453378(0x255)]){const _0xa8871b=_0x3556dc[_0x453378(0x26d)],_0x35c3c3=_0x3556dc['content'];if(_0xa8871b===_0x453378(0x200)&&_0x35c3c3){const _0x45450f=_0x35c3c3[_0x453378(0x260)]('\x0a')[_0x453378(0x241)](_0x170000=>_0x170000[_0x453378(0x1e6)]());for(const _0x4f81b2 of _0x45450f){const _0x335b9f=_0x4f81b2[_0x453378(0x23b)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x335b9f){_0x3183f5[_0x453378(0x27b)]('-\x20Grepped\x20\x27'+_0x335b9f[0x1]+_0x453378(0x206)+_0x335b9f[0x2]+'`');continue;}const _0x1ef6a1=_0x4f81b2[_0x453378(0x23b)](/^read\s+(.+)$/);if(_0x1ef6a1){_0x3183f5[_0x453378(0x27b)](_0x453378(0x22f)+_0x1ef6a1[0x1]+'`');continue;}const _0x20cd3a=_0x4f81b2[_0x453378(0x23b)](/^list_directory\s+(.+)$/);if(_0x20cd3a){_0x3183f5['push'](_0x453378(0x289)+_0x20cd3a[0x1]+'`');continue;}}}}_0x1803dc[_0x453378(0x27b)](_0x3183f5[_0x453378(0x243)]('\x0a'));const _0x28de2a=['',_0x453378(0x20f)];for(const _0x5ba1bd of _0x43592d){if(_0x5ba1bd['lines']==='*')_0x28de2a[_0x453378(0x27b)]('-\x20'+_0x5ba1bd[_0x453378(0x1d6)]+':*');else{if(Array[_0x453378(0x24d)](_0x5ba1bd[_0x453378(0x287)])){const _0x216dd6=_0x5ba1bd[_0x453378(0x287)][_0x453378(0x1e2)](([_0x164c62,_0x50f841])=>{if(_0x164c62===_0x50f841)return''+_0x164c62;return _0x164c62+'-'+_0x50f841;});_0x28de2a[_0x453378(0x27b)]('-\x20'+_0x5ba1bd[_0x453378(0x1d6)]+':'+_0x216dd6['join'](','));}else _0x28de2a[_0x453378(0x27b)]('-\x20'+_0x5ba1bd[_0x453378(0x1d6)]+':*');}}_0x28de2a[_0x453378(0x27b)](''),_0x1803dc[_0x453378(0x27b)](_0x28de2a[_0x453378(0x243)]('\x0a')),_0x1803dc[_0x453378(0x27b)](_0x453378(0x20e));const _0x2654aa=[];for(const _0x251f99 of _0x43592d){let _0x2c907b=a0_0x10a20c[_0x453378(0x1ad)](_0x29dff1[_0x453378(0x21f)][_0x453378(0x21e)],_0x251f99[_0x453378(0x1d6)]),_0x454be3=null,_0x8f61c1=null;try{_0x454be3=await a0_0xdf4074['readFile'](_0x2c907b,{'encoding':_0x453378(0x219)});}catch(_0x11bf68){const _0xd8c99f=fixPathRepetition(_0x2c907b);if(_0xd8c99f)try{_0x454be3=await a0_0xdf4074[_0x453378(0x222)](_0xd8c99f,{'encoding':'utf-8'}),_0x2c907b=_0xd8c99f;}catch{_0x8f61c1=_0x11bf68 instanceof Error?_0x11bf68:new Error(String(_0x11bf68));}else _0x8f61c1=_0x11bf68 instanceof Error?_0x11bf68:new Error(String(_0x11bf68));}if(_0x454be3!==null){const _0x4a7737=_0x454be3[_0x453378(0x260)](/\r?\n/),_0x15aa8b=[_0x453378(0x276)+_0x251f99['path']+'\x22>'];if(_0x251f99['lines']==='*'||!Array[_0x453378(0x24d)](_0x251f99['lines']))for(let _0x50c1c9=0x1;_0x50c1c9<=_0x4a7737[_0x453378(0x1a3)];_0x50c1c9++){const _0x3f3171=_0x4a7737[_0x50c1c9-0x1];_0x15aa8b[_0x453378(0x27b)](_0x50c1c9+'|\x20'+_0x3f3171);}else for(const [_0x1a62fe,_0x4c40f1]of _0x251f99['lines']){_0x15aa8b[_0x453378(0x1a3)]>0x1&&_0x15aa8b['push']('');for(let _0x501343=_0x1a62fe;_0x501343<=_0x4c40f1&&_0x501343<=_0x4a7737[_0x453378(0x1a3)];_0x501343++){const _0x4a39e4=_0x4a7737[_0x501343-0x1];_0x15aa8b[_0x453378(0x27b)](_0x501343+'|\x20'+_0x4a39e4);}}_0x15aa8b[_0x453378(0x27b)](_0x453378(0x207)),_0x2654aa['push'](_0x15aa8b['join']('\x0a'));}else _0x2654aa[_0x453378(0x27b)]('<file\x20path=\x22'+_0x251f99[_0x453378(0x1d6)]+_0x453378(0x266)+(_0x8f61c1?.[_0x453378(0x20a)]||'Unknown\x20error')+_0x453378(0x247));}_0x1803dc[_0x453378(0x27b)](_0x2654aa[_0x453378(0x243)]('\x0a\x0a')),_0x2939d4=_0x1803dc[_0x453378(0x243)]('\x0a');const _0x3d9da9=_0x519b9d[_0x453378(0x23d)]?.['filter'](_0x2ba4d2=>_0x2ba4d2[_0x453378(0x20a)]?.['startsWith'](_0x453378(0x1db)))||[];if(_0x3d9da9[_0x453378(0x1a3)]>0x0){const _0x2f47df=_0x3d9da9[_0x453378(0x1e2)](_0x5959af=>_0x5959af[_0x453378(0x20a)])[_0x453378(0x243)](';\x20');reportMorphError({'error_message':_0x2f47df,'error_type':_0x453378(0x1a4),'context':{'tool':_0x453378(0x24e),'repo_path':_0x29dff1[_0x453378(0x21f)][_0x453378(0x21e)],'query':_0x29dff1[_0x453378(0x21f)]['search_string'],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x453378(0x27c),'error_count':_0x3d9da9['length'],'is_timeout':![],'timings':_0x519b9d[_0x453378(0x1ba)],'files_attempted':_0x43592d[_0x453378(0x1e2)](_0x311b98=>({'path':_0x311b98[_0x453378(0x1d6)],'lines':_0x311b98[_0x453378(0x287)]})),'tool_calls':_0x4f3aa2(_0x519b9d[_0x453378(0x255)]),'messages':_0x519b9d['messages']?.['map'](_0x302730=>({'role':_0x302730[_0x453378(0x26d)],'content':_0x302730[_0x453378(0x218)]})),'request_content':{'query':_0x29dff1[_0x453378(0x21f)][_0x453378(0x288)],'repo_path':_0x29dff1['data'][_0x453378(0x21e)],'repoRoot':a0_0x10a20c['resolve'](_0x29dff1[_0x453378(0x21f)][_0x453378(0x21e)]),'model':_0x453378(0x1d0)}},'source':_0x453378(0x21d)})['catch'](()=>{});}}else{if(_0x519b9d[_0x453378(0x1cc)]===_0x453378(0x1d5)&&_0x519b9d[_0x453378(0x23d)][_0x453378(0x1a3)]>0x0){const _0x232015=_0x519b9d[_0x453378(0x23d)][_0x453378(0x1e2)](_0x16459a=>_0x16459a[_0x453378(0x20a)])['join'](';\x20');_0x2939d4=_0x453378(0x226)+_0x232015;const _0x348e00=_0x232015[_0x453378(0x1ed)]()['includes'](_0x453378(0x21b))||_0x232015[_0x453378(0x1ed)]()[_0x453378(0x29d)](_0x453378(0x1fb))||_0x232015['toLowerCase']()[_0x453378(0x29d)]('etimedout'),_0x527030=_0x519b9d['finish']?.['metadata']?.[_0x453378(0x249)],_0x438f5a=_0x519b9d[_0x453378(0x23d)][0x0];reportMorphError({'error_message':_0x232015,'error_type':_0x348e00?'TimeoutError':_0x438f5a?.[_0x453378(0x236)]?.[_0x453378(0x1d3)]||_0x453378(0x26c),'context':{'tool':_0x453378(0x24e),'repo_path':_0x29dff1[_0x453378(0x21f)][_0x453378(0x21e)],'query':_0x29dff1['data'][_0x453378(0x288)],'model':_0x453378(0x1d0),'termination_reason':_0x519b9d[_0x453378(0x1cc)],'error_count':_0x519b9d[_0x453378(0x23d)][_0x453378(0x1a3)],'is_timeout':_0x348e00,'timings':_0x519b9d[_0x453378(0x1ba)],'files_attempted':_0x527030?.[_0x453378(0x1e2)](_0xd7aed3=>({'path':_0xd7aed3[_0x453378(0x1d6)],'lines':_0xd7aed3[_0x453378(0x287)]})),'tool_calls':_0x4f3aa2(_0x519b9d[_0x453378(0x255)]),'messages':_0x519b9d[_0x453378(0x255)]?.['map'](_0x115d5c=>({'role':_0x115d5c[_0x453378(0x26d)],'content':_0x115d5c[_0x453378(0x218)]})),'request_content':{'query':_0x29dff1[_0x453378(0x21f)][_0x453378(0x288)],'repo_path':_0x29dff1[_0x453378(0x21f)][_0x453378(0x21e)],'repoRoot':a0_0x10a20c[_0x453378(0x1ad)](_0x29dff1[_0x453378(0x21f)][_0x453378(0x21e)]),'model':_0x453378(0x1d0)}},'stack_trace':_0x438f5a?.['stack']||undefined,'source':_0x453378(0x21d)})[_0x453378(0x294)](()=>{});}else _0x2939d4=_0x453378(0x24f);}return{'content':[{'type':_0x453378(0x232),'text':_0x2939d4}]};}catch(_0xb3644e){const _0x4c3956=_0xb3644e instanceof Error?_0xb3644e[_0x453378(0x20a)]:String(_0xb3644e),_0x4e922a=_0x4c3956[_0x453378(0x1ed)]()[_0x453378(0x29d)]('timeout')||_0x4c3956[_0x453378(0x1ed)]()[_0x453378(0x29d)](_0x453378(0x1fb))||_0x4c3956[_0x453378(0x1ed)]()['includes']('etimedout')||_0xb3644e instanceof Error&&_0xb3644e[_0x453378(0x1d3)]===_0x453378(0x1ab);return reportMorphError({'error_message':_0x4c3956,'error_type':_0x4e922a?_0x453378(0x1ab):_0xb3644e instanceof Error?_0xb3644e[_0x453378(0x236)]['name']:_0x453378(0x215),'context':{'tool':_0x453378(0x24e),'repo_path':_0x29dff1['data'][_0x453378(0x21e)],'query':_0x29dff1[_0x453378(0x21f)][_0x453378(0x288)],'model':_0x453378(0x1d0),'is_timeout':_0x4e922a,'exception_phase':_0x453378(0x1f0),'request_content':{'query':_0x29dff1[_0x453378(0x21f)][_0x453378(0x288)],'repo_path':_0x29dff1[_0x453378(0x21f)][_0x453378(0x21e)],'repoRoot':a0_0x10a20c[_0x453378(0x1ad)](_0x29dff1['data']['repo_path']),'model':_0x453378(0x1d0)}},'stack_trace':_0xb3644e instanceof Error?_0xb3644e[_0x453378(0x297)]:undefined,'source':_0x453378(0x21d)})[_0x453378(0x294)](()=>{}),{'content':[{'type':_0x453378(0x232),'text':_0x453378(0x1ac)+_0x4c3956}],'isError':![]};}}case _0x453378(0x245):{const _0x559688=CodebaseSearchArgsSchema[_0x453378(0x270)](_0x2a69a8);if(!_0x559688[_0x453378(0x1ea)])return{'content':[{'type':_0x453378(0x232),'text':_0x453378(0x1eb)+_0x559688['error']}],'isError':!![]};try{const _0x31a92c=MORPH_API_KEY;if(!_0x31a92c)throw new Error(_0x453378(0x205));const _0x4568c9=_0x559688[_0x453378(0x21f)][_0x453378(0x1b4)],_0x1e7fcb=await executeCodebaseSearch({'query':_0x559688[_0x453378(0x21f)]['query'],'target_directories':_0x4568c9,'limit':_0x559688[_0x453378(0x21f)][_0x453378(0x283)]},{'apiKey':_0x31a92c,'repoId':_0x559688[_0x453378(0x21f)][_0x453378(0x1fe)],'branch':_0x559688[_0x453378(0x21f)][_0x453378(0x238)],'commitHash':_0x559688[_0x453378(0x21f)]['commitHash'],'debug':![]});if(!_0x1e7fcb['success'])return{'content':[{'type':'text','text':'Search\x20failed:\x20'+_0x1e7fcb[_0x453378(0x25b)]}],'isError':!![]};const _0x2ce37a=_0x1e7fcb[_0x453378(0x1c0)][_0x453378(0x1a3)]===0x0?_0x453378(0x1d9)+_0x559688['data']['query']+'\x22':_0x453378(0x1e1)+_0x1e7fcb[_0x453378(0x1c0)][_0x453378(0x1a3)]+_0x453378(0x298)+_0x1e7fcb[_0x453378(0x27a)][_0x453378(0x1dd)]+'ms:\x0a\x0a'+_0x1e7fcb['results']['map']((_0x320153,_0x561536)=>_0x561536+0x1+'.\x20'+_0x320153[_0x453378(0x265)]+'\x20('+(_0x320153[_0x453378(0x29b)]*0x64)[_0x453378(0x1f7)](0x1)+_0x453378(0x20c)+(_0x453378(0x21a)+_0x320153[_0x453378(0x24b)]+'-'+_0x320153[_0x453378(0x280)]+'\x0a')+(_0x453378(0x231)+_0x320153[_0x453378(0x218)][_0x453378(0x292)](0x0,0xc8)+(_0x320153[_0x453378(0x218)][_0x453378(0x1a3)]>0xc8?_0x453378(0x1d7):'')+'\x0a'))[_0x453378(0x243)]('\x0a');return{'content':[{'type':_0x453378(0x232),'text':_0x2ce37a}]};}catch(_0x3fb7c0){const _0x3b891a=_0x3fb7c0 instanceof Error?_0x3fb7c0[_0x453378(0x20a)]:String(_0x3fb7c0);return reportMorphError({'error_message':_0x3b891a,'error_type':_0x3fb7c0 instanceof Error?_0x3fb7c0[_0x453378(0x236)][_0x453378(0x1d3)]:_0x453378(0x215),'context':{'tool':_0x453378(0x245),'query':_0x559688[_0x453378(0x21f)][_0x453378(0x1b5)],'repo_id':_0x559688[_0x453378(0x21f)][_0x453378(0x1fe)],'target_directories':_0x559688['data'][_0x453378(0x1b4)]},'stack_trace':_0x3fb7c0 instanceof Error?_0x3fb7c0[_0x453378(0x297)]:undefined,'source':_0x453378(0x21d)})['catch'](()=>{}),{'content':[{'type':_0x453378(0x232),'text':_0x453378(0x226)+_0x3b891a}],'isError':!![]};}}default:throw new Error(_0x453378(0x290)+_0x4b5f41);}}catch(_0x3aab88){const _0x31d1d1=_0x3aab88 instanceof Error?_0x3aab88['message']:String(_0x3aab88);return reportMorphError({'error_message':_0x31d1d1,'error_type':_0x3aab88 instanceof Error?_0x3aab88[_0x453378(0x236)][_0x453378(0x1d3)]:'UnknownError','context':{'tool':name,'arguments':args?JSON['stringify'](args)[_0x453378(0x292)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x3aab88 instanceof Error?_0x3aab88[_0x453378(0x297)]:undefined,'source':_0x453378(0x21d)})[_0x453378(0x294)](()=>{}),{'content':[{'type':_0x453378(0x232),'text':_0x453378(0x226)+_0x31d1d1}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x50d774){const _0x10c876=a0_0x3ae23d,_0x34260d=await getValidRootDirectories(_0x50d774);if(_0x34260d[_0x10c876(0x1a3)]>0x0)allowedDirectories=[..._0x34260d],console['error']('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x34260d[_0x10c876(0x1a3)]+_0x10c876(0x22c));else{console[_0x10c876(0x25b)]('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x2a1a47=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x2a1a47&&(allowedDirectories=[_0x2a1a47],console[_0x10c876(0x25b)]('Fallback:\x20Using\x20workspace\x20root\x20'+_0x2a1a47));}catch(_0x184ff8){console['error']('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x184ff8);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x5aa486=a0_0x3ae23d;try{const _0x4114a7=await server[_0x5aa486(0x2a2)]();_0x4114a7&&'roots'in _0x4114a7&&await updateAllowedDirectoriesFromRoots(_0x4114a7[_0x5aa486(0x1c1)]);}catch(_0x46c7ac){console[_0x5aa486(0x25b)](_0x5aa486(0x210),_0x46c7ac instanceof Error?_0x46c7ac[_0x5aa486(0x20a)]:String(_0x46c7ac));}}),server[a0_0x3ae23d(0x28c)]=async()=>{const _0xa3dce2=a0_0x3ae23d,_0x2534c8=server['getClientCapabilities']();if(_0x2534c8?.[_0xa3dce2(0x1c1)])try{const _0x32bacd=await server['listRoots']();_0x32bacd&&_0xa3dce2(0x1c1)in _0x32bacd?await updateAllowedDirectoriesFromRoots(_0x32bacd['roots']):console['error'](_0xa3dce2(0x281));}catch(_0x1605b8){console[_0xa3dce2(0x25b)]('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x1605b8 instanceof Error?_0x1605b8[_0xa3dce2(0x20a)]:String(_0x1605b8));}else{if(allowedDirectories[_0xa3dce2(0x1a3)]>0x0)console[_0xa3dce2(0x25b)](_0xa3dce2(0x1be),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0xa3dce2(0x25b)](_0xa3dce2(0x267));else throw new Error(_0xa3dce2(0x1c7));}}};async function runServer(){const _0x3c361c=a0_0x3ae23d,_0x513df8=new StdioServerTransport();await server[_0x3c361c(0x291)](_0x513df8),console[_0x3c361c(0x25b)](_0x3c361c(0x1df)),allowedDirectories[_0x3c361c(0x1a3)]===0x0&&console['error']('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x3ae23d(0x294)](_0x99afa3=>{const _0x3fb417=a0_0x3ae23d;console['error']('Fatal\x20error\x20running\x20server:',_0x99afa3),process[_0x3fb417(0x269)](0x1);});
|
|
2
|
+
const a0_0x1cf0f4=a0_0x430d;(function(_0x46573e,_0x4f0b07){const _0x34ca69=a0_0x430d,_0x3abe49=_0x46573e();while(!![]){try{const _0x57479d=parseInt(_0x34ca69(0x182))/0x1+-parseInt(_0x34ca69(0x176))/0x2*(-parseInt(_0x34ca69(0xe4))/0x3)+-parseInt(_0x34ca69(0x174))/0x4*(parseInt(_0x34ca69(0x131))/0x5)+parseInt(_0x34ca69(0x1a1))/0x6+-parseInt(_0x34ca69(0xf0))/0x7+-parseInt(_0x34ca69(0xf4))/0x8+parseInt(_0x34ca69(0x11a))/0x9;if(_0x57479d===_0x4f0b07)break;else _0x3abe49['push'](_0x3abe49['shift']());}catch(_0x3ed824){_0x3abe49['push'](_0x3abe49['shift']());}}}(a0_0x43c6,0xbe944));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_0xfed783 from'fs/promises';import a0_0x32078b from'path';import a0_0xba5ba4 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';function a0_0x430d(_0x4eccd2,_0x298e16){_0x4eccd2=_0x4eccd2-0xde;const _0x43c65b=a0_0x43c6();let _0x430d10=_0x43c65b[_0x4eccd2];return _0x430d10;}import{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';import a0_0x73db60 from'axios';function fixPathRepetition(_0xa57631){const _0x239319=a0_0x430d,_0x32cd8b=_0xa57631[_0x239319(0x1a0)](a0_0x32078b[_0x239319(0x13f)])[_0x239319(0x1bd)](Boolean);if(_0x32cd8b[_0x239319(0x152)]<0x2)return null;for(let _0x37e17a=Math['floor'](_0x32cd8b[_0x239319(0x152)]/0x2);_0x37e17a>=0x1;_0x37e17a--){for(let _0xe287a2=0x0;_0xe287a2<=_0x32cd8b['length']-0x2*_0x37e17a;_0xe287a2++){const _0x4923d6=_0x32cd8b[_0x239319(0x189)](_0xe287a2,_0xe287a2+_0x37e17a),_0x2ad43b=_0x32cd8b[_0x239319(0x189)](_0xe287a2+_0x37e17a,_0xe287a2+0x2*_0x37e17a);if(_0x4923d6['every']((_0x249f77,_0x1c460b)=>_0x249f77===_0x2ad43b[_0x1c460b])){const _0x3583f3=[..._0x32cd8b['slice'](0x0,_0xe287a2),..._0x32cd8b['slice'](_0xe287a2+_0x37e17a)];return a0_0x32078b[_0x239319(0x13f)]+_0x3583f3['join'](a0_0x32078b[_0x239319(0x13f)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x68ebe1=a0_0x430d;try{const _0x2c6ab0=require(_0x68ebe1(0x10c));return _0x2c6ab0['version']??'unknown';}catch(_0x3306c1){return console[_0x68ebe1(0x1a3)]('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x3306c1),'unknown';}}function printHelp(){const _0x2734d0=a0_0x430d;console[_0x2734d0(0x185)](_0x2734d0(0x169)+getPackageVersion()),console[_0x2734d0(0x185)](_0x2734d0(0x154)),console[_0x2734d0(0x185)]('\x0aOptions:'),console[_0x2734d0(0x185)](_0x2734d0(0x14d)),console[_0x2734d0(0x185)]('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console['log'](_0x2734d0(0x1a2)),console[_0x2734d0(0x185)](_0x2734d0(0x175)),console[_0x2734d0(0x185)]('\x20\x20morph-mcp'),console['log']('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x1cf0f4(0x13c)][a0_0x1cf0f4(0x189)](0x2),VERSION_FLAGS=new Set([a0_0x1cf0f4(0x142),'-v','-V']),HELP_FLAGS=new Set([a0_0x1cf0f4(0x1b6),'-h']);cliArgs[a0_0x1cf0f4(0x1bb)](_0x590e04=>VERSION_FLAGS[a0_0x1cf0f4(0x12a)](_0x590e04))&&(console['log'](a0_0x1cf0f4(0x169)+getPackageVersion()),process[a0_0x1cf0f4(0x16f)](0x0));function a0_0x43c6(){const _0x33510b=['Branch\x20to\x20search\x20(uses\x20latest\x20commit)','repoId','-\x20Read\x20file\x20`','9875334gJHTGU','toLowerCase','TimeoutError','getClientCapabilities','6185856mhLIpH','UnknownError','errors','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','metadata','content','number','source','warpgrep_codebase_search','code','stack','FileReadError','filepath','isArray','\x20valid\x20directories','\x20(new\x20file)','env','--api-key','grep\x20\x27','connect','mcp-filesystem','No\x20results\x20found\x20for\x20query:\x20\x22','results','Relevant\x20context\x20found:','../package.json','Unknown\x20tool:\x20','Max\x20results\x20to\x20return','\x0a...\x20(truncated,\x20total:\x20','basename','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','role','package.json','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','Fallback:\x20Using\x20workspace\x20root\x20','Here\x20is\x20the\x20content\x20of\x20files:\x0a','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','resolve','-\x20Grepped\x20\x27','3720285GsjYEO','readFile','constructor','success','morph-v3-fast','Enabled\x20tools:\x20','Rules:\x0a','string','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','added\x20','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','--api-key=','finish','Repository\x20identifier','trim','lines','has','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','MORPH_WARP_GREP_TIMEOUT','application/json','map','Morph\x20Edit\x20Preview','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','557195EXXZBs','repo_path','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','join','endLine','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.','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio',',\x20removed\x20','\x20results\x20in\x20','utf-8','morph-warp-grep-v1-1111v0','argv','.git','terminated','sep','Warning:\x20','Error\x20accessing\x20directory\x20','--version','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','params','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','false','Error:\x20','default','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','pyproject.toml','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','payload','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','code_edit','</file>','morph-mcp','For\x20deletions:\x0a','length','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','normalize','includes','dryRun','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','Morph\x20FastApply\x20failed\x20without\x20error\x20message','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','isDirectory','setRequestHandler','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','limit','stats','substring','toISOString','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','homedir','ENABLED_TOOLS','messages','-\x20Listed\x20directory\x20`','@morphllm/morphmcp\x20','setNotificationHandler','listRoots','ENOENT','<file\x20path=\x22','optional','exit','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','roots','requiresApiKey','16VPpGFC','\x0aExamples:','169328GdgaYZ','timed\x20out','.vscode','Error\x20running\x20fast\x20context\x20search:\x20','changes','all','composer.json','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','inputSchema','ms:\x0a\x0a','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','471023rzNlLq','data','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','log','0.2.0','timeout','safeParse','slice','message','\x0a</file>','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','instruction','catch','runWarpGrep_call','Specific\x20commit\x20hash\x20to\x20search','search_string','.\x20Changes:\x20','Found\x20','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','%\x20match)\x0a','\x20-\x20','list_directory\x20','assistant','Applied','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','object','morph-','https://morphllm.com/api/error-report',',\x20modified\x20','rerankScore','split','6520116TvOktP','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','error','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','edit_file','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','timings','.\x20Path:\x20','dirname','description','WORKSPACE_ROOT','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','Created\x20File','terminationReason','Unknown\x20error','push','codebase_search','realpath','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','Fatal\x20error\x20running\x20server:','files','--help','api-key','query','startsWith','describe','some','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','filter','PWD','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','text','Invalid\x20arguments:\x20','startLine','completionId','Workspace\x20mode\x20enabled:\x20Using\x20','name','File\x20read\x20error:','path','etimedout','completed_with_file_errors','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','unknown\x20error','branch','Morph\x20Edit\x20','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','Benefits:\x0a','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','\x20chars)','Natural\x20language\x20query\x20to\x20search\x20for\x20code','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','stat','oninitialized','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','\x27\x20in\x20`','linesRemoved','match','completed','array','targetDirectories','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','toFixed','51qTetaU','MORPH_API_KEY','❌\x20Morph\x20Edit\x20Failed:\x20','.cursor','stringify','Bearer\x20','WarpGrepError','access','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'];a0_0x43c6=function(){return _0x33510b;};return a0_0x43c6();}cliArgs[a0_0x1cf0f4(0x1bb)](_0x5d1e22=>HELP_FLAGS[a0_0x1cf0f4(0x12a)](_0x5d1e22))&&(printHelp(),process[a0_0x1cf0f4(0x16f)](0x0));function getCliArg(_0x3c1242){const _0x247bd9=a0_0x1cf0f4;for(let _0x5d8676=0x0;_0x5d8676<cliArgs['length'];_0x5d8676++){const _0x84a35b=cliArgs[_0x5d8676];if(_0x84a35b[_0x247bd9(0x1b9)]('--'+_0x3c1242+'='))return _0x84a35b['slice'](('--'+_0x3c1242+'=')[_0x247bd9(0x152)]);if(_0x84a35b==='--'+_0x3c1242&&_0x5d8676+0x1<cliArgs[_0x247bd9(0x152)])return cliArgs[_0x5d8676+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x1cf0f4(0x12a)](arg)||HELP_FLAGS[a0_0x1cf0f4(0x12a)](arg))continue;if(arg['startsWith'](a0_0x1cf0f4(0x125)))continue;if(arg===a0_0x1cf0f4(0x105)){i++;continue;}args['push'](arg);}const ALL_TOOLS=[a0_0x1cf0f4(0x1a5),a0_0x1cf0f4(0xfc),a0_0x1cf0f4(0x1b1)],DEFAULT_TOOLS=[a0_0x1cf0f4(0x1a5),'warpgrep_codebase_search'],ENABLED_TOOLS=process[a0_0x1cf0f4(0x104)][a0_0x1cf0f4(0x166)]?process[a0_0x1cf0f4(0x104)][a0_0x1cf0f4(0x166)]===a0_0x1cf0f4(0x17b)?ALL_TOOLS:process['env'][a0_0x1cf0f4(0x166)][a0_0x1cf0f4(0x1a0)](',')[a0_0x1cf0f4(0x12e)](_0x3abb81=>_0x3abb81[a0_0x1cf0f4(0x128)]()):DEFAULT_TOOLS;console[a0_0x1cf0f4(0x1a3)](a0_0x1cf0f4(0x11f)+ENABLED_TOOLS['join'](',\x20'));const WORKSPACE_ROOT=process[a0_0x1cf0f4(0x104)][a0_0x1cf0f4(0x1ab)]||process[a0_0x1cf0f4(0x104)][a0_0x1cf0f4(0x1be)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x1cf0f4(0x104)]['ENABLE_WORKSPACE_MODE']!==a0_0x1cf0f4(0x146),MORPH_API_KEY=getCliArg(a0_0x1cf0f4(0x1b7))??process[a0_0x1cf0f4(0x104)][a0_0x1cf0f4(0xe5)],MORPH_API_URL=process[a0_0x1cf0f4(0x104)]['MORPH_API_URL'],MORPH_WARP_GREP_TIMEOUT=process[a0_0x1cf0f4(0x104)][a0_0x1cf0f4(0x12c)]?parseInt(process[a0_0x1cf0f4(0x104)][a0_0x1cf0f4(0x12c)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x1cf0f4(0x1b9)]('sk-')&&!MORPH_API_KEY[a0_0x1cf0f4(0x1b9)](a0_0x1cf0f4(0x19c))&&console[a0_0x1cf0f4(0x1a3)](a0_0x1cf0f4(0x17d));async function reportMorphError(_0x8f69f2){const _0x20bded=a0_0x1cf0f4;try{await a0_0x73db60['post'](_0x20bded(0x19d),{..._0x8f69f2,'timestamp':new Date()[_0x20bded(0x162)](),'source':_0x8f69f2[_0x20bded(0xfb)]||_0x20bded(0x108)},{'timeout':0x1388,'headers':{'Content-Type':_0x20bded(0x12d),'Authorization':_0x20bded(0xe9)+MORPH_API_KEY}});}catch{}}args[a0_0x1cf0f4(0x152)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x1cf0f4(0x1a3)](a0_0x1cf0f4(0xf7)),console[a0_0x1cf0f4(0x1a3)](a0_0x1cf0f4(0x158)),console[a0_0x1cf0f4(0x1a3)]('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),console[a0_0x1cf0f4(0x1a3)](a0_0x1cf0f4(0x111)),console[a0_0x1cf0f4(0x1a3)]('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),console[a0_0x1cf0f4(0x1a3)](a0_0x1cf0f4(0x15b)));function normalizePath(_0x5d6d9f){const _0x3ee282=a0_0x1cf0f4;return a0_0x32078b[_0x3ee282(0x155)](_0x5d6d9f);}function expandHome(_0xc551){const _0x9a0aff=a0_0x1cf0f4;if(_0xc551[_0x9a0aff(0x1b9)]('~/')||_0xc551==='~')return a0_0x32078b[_0x9a0aff(0x134)](a0_0xba5ba4[_0x9a0aff(0x165)](),_0xc551[_0x9a0aff(0x189)](0x1));return _0xc551;}let allowedDirectories=await Promise[a0_0x1cf0f4(0x17b)](args[a0_0x1cf0f4(0x12e)](async _0xba680c=>{const _0x48a4a3=a0_0x1cf0f4,_0x56da9a=expandHome(_0xba680c),_0x29bedf=a0_0x32078b[_0x48a4a3(0x118)](_0x56da9a);try{const _0x309832=await a0_0xfed783['realpath'](_0x29bedf);return normalizePath(_0x309832);}catch(_0x516b2a){return normalizePath(_0x29bedf);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x1cf0f4(0x152)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x1cf0f4(0x1b0)](workspaceDir),console[a0_0x1cf0f4(0x1a3)](a0_0x1cf0f4(0x1c4)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x1c594c){console[a0_0x1cf0f4(0x1a3)]('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x1c594c);}async function detectWorkspaceRoot(_0x486bb4){const _0x2eb732=a0_0x1cf0f4;let _0x176277=a0_0x32078b[_0x2eb732(0x118)](_0x486bb4);const _0x4942eb=[_0x2eb732(0x13d),_0x2eb732(0x178),_0x2eb732(0x113),'Cargo.toml',_0x2eb732(0x14a),'go.mod',_0x2eb732(0xe7),'tsconfig.json',_0x2eb732(0x17c)];while(_0x176277!==a0_0x32078b[_0x2eb732(0x1a9)](_0x176277)){for(const _0x50f787 of _0x4942eb){const _0xf357c0=a0_0x32078b[_0x2eb732(0x134)](_0x176277,_0x50f787);try{return await a0_0xfed783[_0x2eb732(0xeb)](_0xf357c0),normalizePath(_0x176277);}catch{}}_0x176277=a0_0x32078b[_0x2eb732(0x1a9)](_0x176277);}return normalizePath(_0x486bb4);}await Promise['all'](args[a0_0x1cf0f4(0x12e)](async _0x4a5491=>{const _0x2ea1e9=a0_0x1cf0f4;try{const _0x136ae4=await a0_0xfed783[_0x2ea1e9(0x1d4)](expandHome(_0x4a5491));!_0x136ae4[_0x2ea1e9(0x15c)]()&&(console['error'](_0x2ea1e9(0x147)+_0x4a5491+'\x20is\x20not\x20a\x20directory'),process[_0x2ea1e9(0x16f)](0x1));}catch(_0x119869){console[_0x2ea1e9(0x1a3)](_0x2ea1e9(0x141)+_0x4a5491+':',_0x119869),process[_0x2ea1e9(0x16f)](0x1);}}));async function validatePath(_0x5a0213){const _0xeadecf=a0_0x1cf0f4,_0x44922c=expandHome(_0x5a0213),_0x4bf5ba=a0_0x32078b[_0xeadecf(0x118)](_0x44922c);try{const _0x30511f=await a0_0xfed783[_0xeadecf(0x1b2)](_0x4bf5ba);return _0x30511f;}catch(_0x134e18){if(_0x134e18[_0xeadecf(0xfd)]===_0xeadecf(0x16c)){const _0x599f4e=a0_0x32078b[_0xeadecf(0x1a9)](_0x4bf5ba);try{const _0x1f55c2=await a0_0xfed783[_0xeadecf(0x1b2)](_0x599f4e);return a0_0x32078b['join'](_0x1f55c2,a0_0x32078b[_0xeadecf(0x110)](_0x4bf5ba));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x599f4e);}}throw _0x134e18;}}const MorphEditFileArgsSchema=z[a0_0x1cf0f4(0x19b)]({'path':z['string'](),'code_edit':z[a0_0x1cf0f4(0x121)]()[a0_0x1cf0f4(0x1ba)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0x1cf0f4(0x121)]()[a0_0x1cf0f4(0x1ba)]('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z['boolean']()['default'](![])[a0_0x1cf0f4(0x1ba)]('Preview\x20changes\x20without\x20applying\x20them.')}),WarpGrepArgsSchema=z[a0_0x1cf0f4(0x19b)]({'search_string':z[a0_0x1cf0f4(0x121)]()['describe'](a0_0x1cf0f4(0x1d3)),'repo_path':z[a0_0x1cf0f4(0x121)]()[a0_0x1cf0f4(0x1ba)](a0_0x1cf0f4(0x133))}),CodebaseSearchArgsSchema=z[a0_0x1cf0f4(0x19b)]({'query':z[a0_0x1cf0f4(0x121)]()[a0_0x1cf0f4(0x1ba)](a0_0x1cf0f4(0x1d2)),'repoId':z['string']()['describe'](a0_0x1cf0f4(0x127)),'branch':z[a0_0x1cf0f4(0x121)]()['optional']()[a0_0x1cf0f4(0x1ba)](a0_0x1cf0f4(0xed)),'commitHash':z[a0_0x1cf0f4(0x121)]()['optional']()[a0_0x1cf0f4(0x1ba)](a0_0x1cf0f4(0x190)),'targetDirectories':z[a0_0x1cf0f4(0xe0)](z['string']())[a0_0x1cf0f4(0x148)]([])[a0_0x1cf0f4(0x1ba)](a0_0x1cf0f4(0x117)),'limit':z[a0_0x1cf0f4(0xfa)]()[a0_0x1cf0f4(0x16e)]()[a0_0x1cf0f4(0x148)](0xa)[a0_0x1cf0f4(0x1ba)](a0_0x1cf0f4(0x10e))}),server=new Server({'name':a0_0x1cf0f4(0x150),'version':a0_0x1cf0f4(0x186)},{'capabilities':{'tools':{}}});server[a0_0x1cf0f4(0x15d)](ListToolsRequestSchema,async()=>{const _0x376c53=a0_0x1cf0f4,_0xa60043=[{'name':_0x376c53(0x1a5),'description':_0x376c53(0x153)+_0x376c53(0x194)+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+_0x376c53(0x12b)+_0x376c53(0x1cf)+_0x376c53(0x1a4)+_0x376c53(0x15e)+_0x376c53(0xec)+_0x376c53(0x1bc)+_0x376c53(0x124)+_0x376c53(0x1d0)+_0x376c53(0x130)+_0x376c53(0x151)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x376c53(0x120)+_0x376c53(0x145)+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+'-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a'+_0x376c53(0x170)+_0x376c53(0x1bf)+_0x376c53(0x122),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x376c53(0xfc),'description':_0x376c53(0x1ce)+'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'+_0x376c53(0x163)+_0x376c53(0x164)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.'+_0x376c53(0x14b)+_0x376c53(0x171)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':'codebase_search','description':'**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a'+_0x376c53(0x1ac)+'🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a'+'Benefits:\x0a'+_0x376c53(0x17e)+_0x376c53(0x19a)+'-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a'+_0x376c53(0xe2)+'Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20'+_0x376c53(0x18c)+_0x376c53(0x143),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x4f2ac2=_0xa60043[_0x376c53(0x1bd)](_0x44890c=>{const _0x11ab0f=_0x376c53;if(!ENABLED_TOOLS['includes'](_0x44890c[_0x11ab0f(0x1c5)]))return![];if('requiresApiKey'in _0x44890c&&_0x44890c[_0x11ab0f(0x173)]&&!MORPH_API_KEY)return console[_0x11ab0f(0x1a3)](_0x11ab0f(0x140)+_0x44890c[_0x11ab0f(0x1c5)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x4f2ac2[_0x376c53(0x12e)](_0x54a377=>({'name':_0x54a377[_0x376c53(0x1c5)],'description':_0x54a377[_0x376c53(0x1aa)],'inputSchema':_0x54a377[_0x376c53(0x17f)]}))};}),server[a0_0x1cf0f4(0x15d)](CallToolRequestSchema,async _0x24af83=>{const _0x2bf88c=a0_0x1cf0f4;try{const {name:_0x23ef55,arguments:_0x386863}=_0x24af83[_0x2bf88c(0x144)];switch(_0x23ef55){case'edit_file':{const _0x212da2=MorphEditFileArgsSchema[_0x2bf88c(0x188)](_0x386863);if(!_0x212da2['success'])throw new Error(_0x2bf88c(0x1d7)+_0x212da2[_0x2bf88c(0x1a3)]);const _0x14061e=await validatePath(_0x212da2[_0x2bf88c(0x183)][_0x2bf88c(0x1c7)]);let _0x2ab9c9=null,_0x21522d=!![],_0x3d387e=null;try{_0x2ab9c9=await a0_0xfed783['readFile'](_0x14061e,_0x2bf88c(0x13a));}catch(_0x20fa5c){const _0x23e3f0=_0x20fa5c['code'];_0x23e3f0===_0x2bf88c(0x16c)?(_0x21522d=![],_0x2ab9c9=''):(_0x3d387e='Failed\x20to\x20read\x20file:\x20'+(_0x23e3f0||'unknown')+_0x2bf88c(0x196)+(_0x20fa5c instanceof Error?_0x20fa5c[_0x2bf88c(0x18a)]:String(_0x20fa5c)),console['error'](_0x2bf88c(0x140)+_0x3d387e));}let _0x5c0dd8;try{const _0x3280a7=MORPH_API_KEY;if(!_0x3280a7)throw new Error(_0x2bf88c(0x1a6));const _0x1dab26=a0_0x32078b[_0x2bf88c(0x1a9)](_0x14061e),_0x489794=a0_0x32078b[_0x2bf88c(0x110)](_0x14061e),_0xd27356=await executeEditFile({'target_filepath':_0x489794,'code_edit':_0x212da2[_0x2bf88c(0x183)][_0x2bf88c(0x14e)],'instructions':_0x212da2[_0x2bf88c(0x183)][_0x2bf88c(0x18d)]},{'morphApiKey':_0x3280a7,'morphApiUrl':MORPH_API_URL,'baseDir':_0x1dab26,'autoWrite':!_0x212da2['data'][_0x2bf88c(0x157)],'generateUdiff':![],'debug':![]});_0x5c0dd8=_0xd27356[_0x2bf88c(0x1c3)];if(!_0xd27356[_0x2bf88c(0x11d)])throw new Error(_0xd27356[_0x2bf88c(0x1a3)]||_0x2bf88c(0x15a));const _0x157528=_0xd27356[_0x2bf88c(0x17a)],_0x36b0de=_0x2bf88c(0x123)+_0x157528['linesAdded']+_0x2bf88c(0x138)+_0x157528[_0x2bf88c(0x1d9)]+_0x2bf88c(0x19e)+_0x157528['linesModified'];if(_0x212da2['data'][_0x2bf88c(0x157)])return{'content':[{'type':_0x2bf88c(0x1c0),'text':_0x2bf88c(0x12f)+(_0x21522d?'':_0x2bf88c(0x103))+':\x20'+_0x212da2['data'][_0x2bf88c(0x18d)]+_0x2bf88c(0x192)+_0x36b0de+_0x2bf88c(0x1a8)+_0x212da2['data'][_0x2bf88c(0x1c7)]+'.'}]};return{'content':[{'type':_0x2bf88c(0x1c0),'text':_0x2bf88c(0x1cd)+(_0x21522d?_0x2bf88c(0x199):_0x2bf88c(0x1ad))+':\x20'+_0x212da2[_0x2bf88c(0x183)][_0x2bf88c(0x18d)]+_0x2bf88c(0x192)+_0x36b0de+_0x2bf88c(0x1a8)+_0x212da2[_0x2bf88c(0x183)][_0x2bf88c(0x1c7)]+'.'}]};}catch(_0x581c68){const _0x1087ec=_0x581c68 instanceof Error?_0x581c68['message']:String(_0x581c68);return reportMorphError({'error_message':_0x1087ec,'error_type':_0x581c68 instanceof Error?_0x581c68[_0x2bf88c(0x11c)][_0x2bf88c(0x1c5)]:'UnknownError','context':{'tool':_0x2bf88c(0x1a5),'completion_id':_0x5c0dd8,'file_path':_0x212da2['data'][_0x2bf88c(0x1c7)],'validated_path':_0x14061e,'instruction':_0x212da2[_0x2bf88c(0x183)][_0x2bf88c(0x18d)],'model':'morph-v3-fast','dry_run':_0x212da2['data']['dryRun'],'file_exists':_0x21522d,'file_read_error':_0x3d387e,'file_readable':_0x2ab9c9!==null,'request_content':{'path':_0x212da2[_0x2bf88c(0x183)][_0x2bf88c(0x1c7)],'code_edit':_0x212da2[_0x2bf88c(0x183)]['code_edit'],'instruction':_0x212da2[_0x2bf88c(0x183)][_0x2bf88c(0x18d)],'original_code':_0x2ab9c9!==null?_0x2ab9c9['length']>0xc350?_0x2ab9c9['substring'](0x0,0xc350)+_0x2bf88c(0x10f)+_0x2ab9c9[_0x2bf88c(0x152)]+_0x2bf88c(0x1d1):_0x2ab9c9:'[could\x20not\x20read\x20file:\x20'+(_0x3d387e||_0x2bf88c(0x1cb))+']','original_code_length':_0x2ab9c9?.['length']??0x0,'model':_0x2bf88c(0x11e),'dry_run':_0x212da2[_0x2bf88c(0x183)][_0x2bf88c(0x157)]}},'stack_trace':_0x581c68 instanceof Error?_0x581c68[_0x2bf88c(0xfe)]:undefined,'source':_0x2bf88c(0x108)})[_0x2bf88c(0x18e)](()=>{}),{'content':[{'type':_0x2bf88c(0x1c0),'text':_0x2bf88c(0xe6)+_0x1087ec}],'isError':!![]};}}case'warpgrep_codebase_search':{const _0x30cec6=WarpGrepArgsSchema[_0x2bf88c(0x188)](_0x386863);if(!_0x30cec6[_0x2bf88c(0x11d)])return{'content':[{'type':'text','text':_0x2bf88c(0x1c1)+_0x30cec6[_0x2bf88c(0x1a3)]}],'isError':!![]};const _0x4cabe3=_0x3abeab=>{const _0x128ceb=_0x2bf88c,_0xbf3de3=[];for(const _0x15991f of _0x3abeab||[]){const _0x394c05=_0x15991f[_0x128ceb(0x112)],_0x113ce2=_0x15991f['content'];if(_0x394c05===_0x128ceb(0x198)&&_0x113ce2){const _0x245f65=_0x113ce2[_0x128ceb(0x1a0)]('\x0a')[_0x128ceb(0x1bd)](_0xcfae3e=>_0xcfae3e[_0x128ceb(0x128)]());for(const _0x37dc21 of _0x245f65){const _0x265128=_0x37dc21[_0x128ceb(0xde)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x265128){_0xbf3de3[_0x128ceb(0x1b0)](_0x128ceb(0x106)+_0x265128[0x1]+'\x27\x20'+_0x265128[0x2]);continue;}const _0x9d38ab=_0x37dc21['match'](/^read\s+(.+)$/);if(_0x9d38ab){_0xbf3de3['push']('read\x20'+_0x9d38ab[0x1]);continue;}const _0x3d3cc7=_0x37dc21['match'](/^list_directory\s+(.+)$/);if(_0x3d3cc7){_0xbf3de3['push'](_0x128ceb(0x197)+_0x3d3cc7[0x1]);continue;}}}}return _0xbf3de3;};try{const _0x3bc4a7=a0_0x32078b[_0x2bf88c(0x118)](_0x30cec6[_0x2bf88c(0x183)][_0x2bf88c(0x132)]),_0x482ab6=new LocalRipgrepProvider(_0x3bc4a7),_0x14c6a9=await runWarpGrep({'query':_0x30cec6[_0x2bf88c(0x183)][_0x2bf88c(0x191)],'repoRoot':_0x3bc4a7,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x482ab6});let _0xdcacfc='';if(_0x14c6a9[_0x2bf88c(0x1ae)]===_0x2bf88c(0xdf)&&_0x14c6a9[_0x2bf88c(0x126)]?.[_0x2bf88c(0xf8)]?.['files']){const _0x5bc360=_0x14c6a9[_0x2bf88c(0x126)]['metadata'][_0x2bf88c(0x1b5)];if(_0x5bc360[_0x2bf88c(0x152)]===0x0)return _0xdcacfc=_0x14c6a9[_0x2bf88c(0x126)][_0x2bf88c(0x14c)]||_0x2bf88c(0x184),{'content':[{'type':_0x2bf88c(0x1c0),'text':_0xdcacfc}]};const _0x448502=[],_0x3ac97b=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x1b70a8 of _0x14c6a9['messages']){const _0xaa5bc6=_0x1b70a8['role'],_0x2ff759=_0x1b70a8[_0x2bf88c(0xf9)];if(_0xaa5bc6===_0x2bf88c(0x198)&&_0x2ff759){const _0x2d5a53=_0x2ff759[_0x2bf88c(0x1a0)]('\x0a')[_0x2bf88c(0x1bd)](_0x1ef32d=>_0x1ef32d[_0x2bf88c(0x128)]());for(const _0x325d38 of _0x2d5a53){const _0x86dbce=_0x325d38[_0x2bf88c(0xde)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x86dbce){_0x3ac97b['push'](_0x2bf88c(0x119)+_0x86dbce[0x1]+_0x2bf88c(0x1d8)+_0x86dbce[0x2]+'`');continue;}const _0x42d691=_0x325d38['match'](/^read\s+(.+)$/);if(_0x42d691){_0x3ac97b[_0x2bf88c(0x1b0)](_0x2bf88c(0xef)+_0x42d691[0x1]+'`');continue;}const _0x49d7be=_0x325d38[_0x2bf88c(0xde)](/^list_directory\s+(.+)$/);if(_0x49d7be){_0x3ac97b[_0x2bf88c(0x1b0)](_0x2bf88c(0x168)+_0x49d7be[0x1]+'`');continue;}}}}_0x448502[_0x2bf88c(0x1b0)](_0x3ac97b[_0x2bf88c(0x134)]('\x0a'));const _0x1a280b=['',_0x2bf88c(0x10b)];for(const _0x2d6fe1 of _0x5bc360){if(_0x2d6fe1[_0x2bf88c(0x129)]==='*')_0x1a280b[_0x2bf88c(0x1b0)]('-\x20'+_0x2d6fe1['path']+':*');else{if(Array['isArray'](_0x2d6fe1[_0x2bf88c(0x129)])){const _0x35933a=_0x2d6fe1[_0x2bf88c(0x129)][_0x2bf88c(0x12e)](([_0x2826f,_0x19f704])=>{if(_0x2826f===_0x19f704)return''+_0x2826f;return _0x2826f+'-'+_0x19f704;});_0x1a280b[_0x2bf88c(0x1b0)]('-\x20'+_0x2d6fe1[_0x2bf88c(0x1c7)]+':'+_0x35933a[_0x2bf88c(0x134)](','));}else _0x1a280b[_0x2bf88c(0x1b0)]('-\x20'+_0x2d6fe1[_0x2bf88c(0x1c7)]+':*');}}_0x1a280b[_0x2bf88c(0x1b0)](''),_0x448502[_0x2bf88c(0x1b0)](_0x1a280b[_0x2bf88c(0x134)]('\x0a')),_0x448502[_0x2bf88c(0x1b0)](_0x2bf88c(0x116));const _0x36f079=[];for(const _0x27a599 of _0x5bc360){let _0x1b2ba9=a0_0x32078b[_0x2bf88c(0x118)](_0x30cec6[_0x2bf88c(0x183)][_0x2bf88c(0x132)],_0x27a599[_0x2bf88c(0x1c7)]),_0x25ba09=null,_0x222c67=null;try{_0x25ba09=await a0_0xfed783[_0x2bf88c(0x11b)](_0x1b2ba9,{'encoding':_0x2bf88c(0x13a)});}catch(_0x2eb892){const _0x98a17c=fixPathRepetition(_0x1b2ba9);if(_0x98a17c)try{_0x25ba09=await a0_0xfed783['readFile'](_0x98a17c,{'encoding':'utf-8'}),_0x1b2ba9=_0x98a17c;}catch{_0x222c67=_0x2eb892 instanceof Error?_0x2eb892:new Error(String(_0x2eb892));}else _0x222c67=_0x2eb892 instanceof Error?_0x2eb892:new Error(String(_0x2eb892));}if(_0x25ba09!==null){const _0x583f24=_0x25ba09[_0x2bf88c(0x1a0)](/\r?\n/),_0x45a08d=[_0x2bf88c(0x16d)+_0x27a599[_0x2bf88c(0x1c7)]+'\x22>'];if(_0x27a599[_0x2bf88c(0x129)]==='*'||!Array[_0x2bf88c(0x101)](_0x27a599[_0x2bf88c(0x129)]))for(let _0x4fb750=0x1;_0x4fb750<=_0x583f24[_0x2bf88c(0x152)];_0x4fb750++){const _0x29716c=_0x583f24[_0x4fb750-0x1];_0x45a08d[_0x2bf88c(0x1b0)](_0x4fb750+'|\x20'+_0x29716c);}else for(const [_0x372d40,_0x338885]of _0x27a599['lines']){_0x45a08d[_0x2bf88c(0x152)]>0x1&&_0x45a08d[_0x2bf88c(0x1b0)]('');for(let _0xbfa6=_0x372d40;_0xbfa6<=_0x338885&&_0xbfa6<=_0x583f24['length'];_0xbfa6++){const _0x180194=_0x583f24[_0xbfa6-0x1];_0x45a08d[_0x2bf88c(0x1b0)](_0xbfa6+'|\x20'+_0x180194);}}_0x45a08d['push'](_0x2bf88c(0x14f)),_0x36f079['push'](_0x45a08d[_0x2bf88c(0x134)]('\x0a'));}else _0x36f079['push'](_0x2bf88c(0x16d)+_0x27a599['path']+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x222c67?.[_0x2bf88c(0x18a)]||_0x2bf88c(0x1af))+_0x2bf88c(0x18b));}_0x448502[_0x2bf88c(0x1b0)](_0x36f079[_0x2bf88c(0x134)]('\x0a\x0a')),_0xdcacfc=_0x448502['join']('\x0a');const _0x256b45=_0x14c6a9['errors']?.[_0x2bf88c(0x1bd)](_0x3f3f47=>_0x3f3f47[_0x2bf88c(0x18a)]?.[_0x2bf88c(0x1b9)](_0x2bf88c(0x1c6)))||[];if(_0x256b45[_0x2bf88c(0x152)]>0x0){const _0x5495c6=_0x256b45['map'](_0x35b035=>_0x35b035[_0x2bf88c(0x18a)])['join'](';\x20');reportMorphError({'error_message':_0x5495c6,'error_type':_0x2bf88c(0xff),'context':{'tool':_0x2bf88c(0xfc),'repo_path':_0x30cec6['data'][_0x2bf88c(0x132)],'query':_0x30cec6[_0x2bf88c(0x183)][_0x2bf88c(0x191)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x2bf88c(0x1c9),'error_count':_0x256b45[_0x2bf88c(0x152)],'is_timeout':![],'timings':_0x14c6a9[_0x2bf88c(0x1a7)],'files_attempted':_0x5bc360[_0x2bf88c(0x12e)](_0x5a6840=>({'path':_0x5a6840[_0x2bf88c(0x1c7)],'lines':_0x5a6840[_0x2bf88c(0x129)]})),'tool_calls':_0x4cabe3(_0x14c6a9['messages']),'messages':_0x14c6a9[_0x2bf88c(0x167)]?.[_0x2bf88c(0x12e)](_0x2726e7=>({'role':_0x2726e7[_0x2bf88c(0x112)],'content':_0x2726e7[_0x2bf88c(0xf9)]})),'request_content':{'query':_0x30cec6['data'][_0x2bf88c(0x191)],'repo_path':_0x30cec6[_0x2bf88c(0x183)][_0x2bf88c(0x132)],'repoRoot':a0_0x32078b['resolve'](_0x30cec6[_0x2bf88c(0x183)][_0x2bf88c(0x132)]),'model':_0x2bf88c(0x13b)}},'source':_0x2bf88c(0x108)})[_0x2bf88c(0x18e)](()=>{});}}else{if(_0x14c6a9['terminationReason']===_0x2bf88c(0x13e)&&_0x14c6a9[_0x2bf88c(0xf6)][_0x2bf88c(0x152)]>0x0){const _0x4d7773=_0x14c6a9[_0x2bf88c(0xf6)][_0x2bf88c(0x12e)](_0xde0d99=>_0xde0d99[_0x2bf88c(0x18a)])[_0x2bf88c(0x134)](';\x20');_0xdcacfc=_0x2bf88c(0x147)+_0x4d7773;const _0x5609e1=_0x4d7773['toLowerCase']()[_0x2bf88c(0x156)](_0x2bf88c(0x187))||_0x4d7773[_0x2bf88c(0xf1)]()[_0x2bf88c(0x156)]('timed\x20out')||_0x4d7773[_0x2bf88c(0xf1)]()[_0x2bf88c(0x156)](_0x2bf88c(0x1c8)),_0x1194be=_0x14c6a9[_0x2bf88c(0x126)]?.[_0x2bf88c(0xf8)]?.[_0x2bf88c(0x1b5)],_0x17303a=_0x14c6a9['errors'][0x0];reportMorphError({'error_message':_0x4d7773,'error_type':_0x5609e1?_0x2bf88c(0xf2):_0x17303a?.[_0x2bf88c(0x11c)]?.[_0x2bf88c(0x1c5)]||_0x2bf88c(0xea),'context':{'tool':_0x2bf88c(0xfc),'repo_path':_0x30cec6[_0x2bf88c(0x183)][_0x2bf88c(0x132)],'query':_0x30cec6[_0x2bf88c(0x183)][_0x2bf88c(0x191)],'model':_0x2bf88c(0x13b),'termination_reason':_0x14c6a9[_0x2bf88c(0x1ae)],'error_count':_0x14c6a9['errors'][_0x2bf88c(0x152)],'is_timeout':_0x5609e1,'timings':_0x14c6a9['timings'],'files_attempted':_0x1194be?.[_0x2bf88c(0x12e)](_0x175182=>({'path':_0x175182[_0x2bf88c(0x1c7)],'lines':_0x175182[_0x2bf88c(0x129)]})),'tool_calls':_0x4cabe3(_0x14c6a9['messages']),'messages':_0x14c6a9['messages']?.['map'](_0x11119c=>({'role':_0x11119c[_0x2bf88c(0x112)],'content':_0x11119c['content']})),'request_content':{'query':_0x30cec6['data']['search_string'],'repo_path':_0x30cec6[_0x2bf88c(0x183)][_0x2bf88c(0x132)],'repoRoot':a0_0x32078b[_0x2bf88c(0x118)](_0x30cec6[_0x2bf88c(0x183)][_0x2bf88c(0x132)]),'model':_0x2bf88c(0x13b)}},'stack_trace':_0x17303a?.[_0x2bf88c(0xfe)]||undefined,'source':_0x2bf88c(0x108)})[_0x2bf88c(0x18e)](()=>{});}else _0xdcacfc=_0x2bf88c(0x159);}return{'content':[{'type':_0x2bf88c(0x1c0),'text':_0xdcacfc}]};}catch(_0x4338f0){const _0x2feae2=_0x4338f0 instanceof Error?_0x4338f0['message']:String(_0x4338f0),_0x3f9228=_0x2feae2[_0x2bf88c(0xf1)]()[_0x2bf88c(0x156)]('timeout')||_0x2feae2[_0x2bf88c(0xf1)]()[_0x2bf88c(0x156)](_0x2bf88c(0x177))||_0x2feae2['toLowerCase']()[_0x2bf88c(0x156)](_0x2bf88c(0x1c8))||_0x4338f0 instanceof Error&&_0x4338f0['name']===_0x2bf88c(0xf2);return reportMorphError({'error_message':_0x2feae2,'error_type':_0x3f9228?_0x2bf88c(0xf2):_0x4338f0 instanceof Error?_0x4338f0[_0x2bf88c(0x11c)][_0x2bf88c(0x1c5)]:_0x2bf88c(0xf5),'context':{'tool':_0x2bf88c(0xfc),'repo_path':_0x30cec6[_0x2bf88c(0x183)][_0x2bf88c(0x132)],'query':_0x30cec6[_0x2bf88c(0x183)][_0x2bf88c(0x191)],'model':_0x2bf88c(0x13b),'is_timeout':_0x3f9228,'exception_phase':_0x2bf88c(0x18f),'request_content':{'query':_0x30cec6[_0x2bf88c(0x183)][_0x2bf88c(0x191)],'repo_path':_0x30cec6[_0x2bf88c(0x183)][_0x2bf88c(0x132)],'repoRoot':a0_0x32078b[_0x2bf88c(0x118)](_0x30cec6[_0x2bf88c(0x183)][_0x2bf88c(0x132)]),'model':_0x2bf88c(0x13b)}},'stack_trace':_0x4338f0 instanceof Error?_0x4338f0[_0x2bf88c(0xfe)]:undefined,'source':'mcp-filesystem'})[_0x2bf88c(0x18e)](()=>{}),{'content':[{'type':'text','text':_0x2bf88c(0x179)+_0x2feae2}],'isError':![]};}}case _0x2bf88c(0x1b1):{const _0x474daf=CodebaseSearchArgsSchema[_0x2bf88c(0x188)](_0x386863);if(!_0x474daf[_0x2bf88c(0x11d)])return{'content':[{'type':_0x2bf88c(0x1c0),'text':_0x2bf88c(0x1c1)+_0x474daf[_0x2bf88c(0x1a3)]}],'isError':!![]};try{const _0x26b57b=MORPH_API_KEY;if(!_0x26b57b)throw new Error(_0x2bf88c(0x1b3));const _0x4df5ae=_0x474daf[_0x2bf88c(0x183)][_0x2bf88c(0xe1)],_0x5eded0=await executeCodebaseSearch({'query':_0x474daf[_0x2bf88c(0x183)][_0x2bf88c(0x1b8)],'target_directories':_0x4df5ae,'limit':_0x474daf[_0x2bf88c(0x183)][_0x2bf88c(0x15f)]},{'apiKey':_0x26b57b,'repoId':_0x474daf[_0x2bf88c(0x183)][_0x2bf88c(0xee)],'branch':_0x474daf[_0x2bf88c(0x183)][_0x2bf88c(0x1cc)],'commitHash':_0x474daf['data']['commitHash'],'debug':![]});if(!_0x5eded0[_0x2bf88c(0x11d)])return{'content':[{'type':_0x2bf88c(0x1c0),'text':'Search\x20failed:\x20'+_0x5eded0['error']}],'isError':!![]};const _0x1a6525=_0x5eded0[_0x2bf88c(0x10a)][_0x2bf88c(0x152)]===0x0?_0x2bf88c(0x109)+_0x474daf['data'][_0x2bf88c(0x1b8)]+'\x22':_0x2bf88c(0x193)+_0x5eded0[_0x2bf88c(0x10a)][_0x2bf88c(0x152)]+_0x2bf88c(0x139)+_0x5eded0[_0x2bf88c(0x160)]['searchTimeMs']+_0x2bf88c(0x180)+_0x5eded0[_0x2bf88c(0x10a)][_0x2bf88c(0x12e)]((_0x3a1253,_0x5d3724)=>_0x5d3724+0x1+'.\x20'+_0x3a1253[_0x2bf88c(0x100)]+'\x20('+(_0x3a1253[_0x2bf88c(0x19f)]*0x64)[_0x2bf88c(0xe3)](0x1)+_0x2bf88c(0x195)+('\x20\x20\x20Lines\x20'+_0x3a1253[_0x2bf88c(0x1c2)]+'-'+_0x3a1253[_0x2bf88c(0x135)]+'\x0a')+('\x20\x20\x20'+_0x3a1253[_0x2bf88c(0xf9)][_0x2bf88c(0x161)](0x0,0xc8)+(_0x3a1253['content'][_0x2bf88c(0x152)]>0xc8?'...':'')+'\x0a'))['join']('\x0a');return{'content':[{'type':_0x2bf88c(0x1c0),'text':_0x1a6525}]};}catch(_0x4e2647){const _0xc5a201=_0x4e2647 instanceof Error?_0x4e2647[_0x2bf88c(0x18a)]:String(_0x4e2647);return reportMorphError({'error_message':_0xc5a201,'error_type':_0x4e2647 instanceof Error?_0x4e2647['constructor'][_0x2bf88c(0x1c5)]:_0x2bf88c(0xf5),'context':{'tool':'codebase_search','query':_0x474daf[_0x2bf88c(0x183)][_0x2bf88c(0x1b8)],'repo_id':_0x474daf[_0x2bf88c(0x183)][_0x2bf88c(0xee)],'target_directories':_0x474daf[_0x2bf88c(0x183)]['targetDirectories']},'stack_trace':_0x4e2647 instanceof Error?_0x4e2647[_0x2bf88c(0xfe)]:undefined,'source':_0x2bf88c(0x108)})[_0x2bf88c(0x18e)](()=>{}),{'content':[{'type':_0x2bf88c(0x1c0),'text':'Error:\x20'+_0xc5a201}],'isError':!![]};}}default:throw new Error(_0x2bf88c(0x10d)+_0x23ef55);}}catch(_0x3971c9){const _0x1b4f71=_0x3971c9 instanceof Error?_0x3971c9['message']:String(_0x3971c9);return reportMorphError({'error_message':_0x1b4f71,'error_type':_0x3971c9 instanceof Error?_0x3971c9[_0x2bf88c(0x11c)][_0x2bf88c(0x1c5)]:_0x2bf88c(0xf5),'context':{'tool':name,'arguments':args?JSON[_0x2bf88c(0xe8)](args)[_0x2bf88c(0x161)](0x0,0x1f4):undefined,'mcp_server_version':_0x2bf88c(0x186)},'stack_trace':_0x3971c9 instanceof Error?_0x3971c9[_0x2bf88c(0xfe)]:undefined,'source':_0x2bf88c(0x108)})['catch'](()=>{}),{'content':[{'type':_0x2bf88c(0x1c0),'text':'Error:\x20'+_0x1b4f71}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x430c52){const _0x2be168=a0_0x1cf0f4,_0x14af53=await getValidRootDirectories(_0x430c52);if(_0x14af53['length']>0x0)allowedDirectories=[..._0x14af53],console[_0x2be168(0x1a3)]('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x14af53[_0x2be168(0x152)]+_0x2be168(0x102));else{console[_0x2be168(0x1a3)](_0x2be168(0x1ca));if(ENABLE_WORKSPACE_MODE)try{const _0x3115f7=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3115f7&&(allowedDirectories=[_0x3115f7],console[_0x2be168(0x1a3)](_0x2be168(0x115)+_0x3115f7));}catch(_0x1ce3f1){console['error']('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x1ce3f1);}}}server[a0_0x1cf0f4(0x16a)](RootsListChangedNotificationSchema,async()=>{const _0x470823=a0_0x1cf0f4;try{const _0x4cd4ae=await server[_0x470823(0x16b)]();_0x4cd4ae&&_0x470823(0x172)in _0x4cd4ae&&await updateAllowedDirectoriesFromRoots(_0x4cd4ae[_0x470823(0x172)]);}catch(_0x1279b8){console[_0x470823(0x1a3)]('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x1279b8 instanceof Error?_0x1279b8['message']:String(_0x1279b8));}}),server[a0_0x1cf0f4(0x1d5)]=async()=>{const _0x59c9b7=a0_0x1cf0f4,_0x472f8d=server[_0x59c9b7(0xf3)]();if(_0x472f8d?.['roots'])try{const _0x1163ac=await server['listRoots']();_0x1163ac&&_0x59c9b7(0x172)in _0x1163ac?await updateAllowedDirectoriesFromRoots(_0x1163ac[_0x59c9b7(0x172)]):console['error']('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0xa5627){console[_0x59c9b7(0x1a3)](_0x59c9b7(0x149),_0xa5627 instanceof Error?_0xa5627['message']:String(_0xa5627));}else{if(allowedDirectories[_0x59c9b7(0x152)]>0x0)console[_0x59c9b7(0x1a3)](_0x59c9b7(0x114),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console['error'](_0x59c9b7(0x181));else throw new Error(_0x59c9b7(0x136));}}};async function runServer(){const _0x1f616a=a0_0x1cf0f4,_0xd1f03f=new StdioServerTransport();await server[_0x1f616a(0x107)](_0xd1f03f),console[_0x1f616a(0x1a3)](_0x1f616a(0x137)),allowedDirectories['length']===0x0&&console[_0x1f616a(0x1a3)](_0x1f616a(0x1d6));}runServer()['catch'](_0x4c1a3f=>{const _0x24b1e5=a0_0x1cf0f4;console[_0x24b1e5(0x1a3)](_0x24b1e5(0x1b4),_0x4c1a3f),process[_0x24b1e5(0x16f)](0x1);});
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x3cc885,_0x12d846){const _0x4ab61b=a1_0x1ead,_0x55e7a8=_0x3cc885();while(!![]){try{const _0x18461a=parseInt(_0x4ab61b(0x1da))/0x1+-parseInt(_0x4ab61b(0x1c8))/0x2+-parseInt(_0x4ab61b(0x1cc))/0x3*(parseInt(_0x4ab61b(0x1dc))/0x4)+parseInt(_0x4ab61b(0x1db))/0x5*(parseInt(_0x4ab61b(0x1d9))/0x6)+parseInt(_0x4ab61b(0x1dd))/0x7+parseInt(_0x4ab61b(0x1d4))/0x8*(-parseInt(_0x4ab61b(0x1d2))/0x9)+-parseInt(_0x4ab61b(0x1d7))/0xa*(-parseInt(_0x4ab61b(0x1d6))/0xb);if(_0x18461a===_0x12d846)break;else _0x55e7a8['push'](_0x55e7a8['shift']());}catch(_0x97c450){_0x55e7a8['push'](_0x55e7a8['shift']());}}}(a1_0x58fa,0x329c0));import a1_0x5789cd from'path';import a1_0x1e4c02 from'os';function a1_0x1ead(_0x174424,_0x2bb9c0){_0x174424=_0x174424-0x1c6;const _0x58fa7c=a1_0x58fa();let _0x1eadf9=_0x58fa7c[_0x174424];return _0x1eadf9;}function a1_0x58fa(){const _0xeef078=['3687HHqavF','test','charAt','normalize','/mnt/','match','9bTbKCS','substring','1662008VgziEY','replace','547261EbMuKx','10xagnET','toUpperCase','6GYCJZv','76568CqTDVR','172745tmcSNv','68avdiiA','1975519hCGMLz','slice','homedir','14290imjLba','startsWith','trim','join'];a1_0x58fa=function(){return _0xeef078;};return a1_0x58fa();}export function convertToWindowsPath(_0x21ee21){const _0x21d48e=a1_0x1ead;if(_0x21ee21[_0x21d48e(0x1c9)](_0x21d48e(0x1d0))){const _0x3b698b=_0x21ee21['charAt'](0x5)[_0x21d48e(0x1d8)](),_0x615f23=_0x21ee21[_0x21d48e(0x1c6)](0x6)[_0x21d48e(0x1d5)](/\//g,'\x5c');return _0x3b698b+':'+_0x615f23;}if(_0x21ee21[_0x21d48e(0x1d1)](/^\/[a-zA-Z]\//)){const _0xfb96aa=_0x21ee21[_0x21d48e(0x1ce)](0x1)[_0x21d48e(0x1d8)](),_0x38e6aa=_0x21ee21[_0x21d48e(0x1c6)](0x2)[_0x21d48e(0x1d5)](/\//g,'\x5c');return _0xfb96aa+':'+_0x38e6aa;}if(_0x21ee21[_0x21d48e(0x1d1)](/^[a-zA-Z]:/))return _0x21ee21[_0x21d48e(0x1d5)](/\//g,'\x5c');return _0x21ee21;}export function normalizePath(_0x1ee50e){const _0x3ab055=a1_0x1ead;_0x1ee50e=_0x1ee50e[_0x3ab055(0x1ca)]()[_0x3ab055(0x1d5)](/^["']|["']$/g,'');const _0x3db78d=_0x1ee50e['startsWith']('/')&&!_0x1ee50e[_0x3ab055(0x1d1)](/^\/mnt\/[a-z]\//i)&&!_0x1ee50e[_0x3ab055(0x1d1)](/^\/[a-zA-Z]\//);if(_0x3db78d)return _0x1ee50e[_0x3ab055(0x1d5)](/\/+/g,'/')['replace'](/\/+$/,'');_0x1ee50e=convertToWindowsPath(_0x1ee50e);if(_0x1ee50e[_0x3ab055(0x1c9)]('\x5c\x5c')){let _0x1bb78e=_0x1ee50e;_0x1bb78e=_0x1bb78e[_0x3ab055(0x1d5)](/^\\{2,}/,'\x5c\x5c');const _0x3ec1d1=_0x1bb78e[_0x3ab055(0x1d3)](0x2)['replace'](/\\\\/g,'\x5c');_0x1ee50e='\x5c\x5c'+_0x3ec1d1;}else _0x1ee50e=_0x1ee50e[_0x3ab055(0x1d5)](/\\\\/g,'\x5c');let _0x428d7c=a1_0x5789cd[_0x3ab055(0x1cf)](_0x1ee50e);_0x1ee50e[_0x3ab055(0x1c9)]('\x5c\x5c')&&!_0x428d7c[_0x3ab055(0x1c9)]('\x5c\x5c')&&(_0x428d7c='\x5c'+_0x428d7c);if(_0x428d7c[_0x3ab055(0x1d1)](/^[a-zA-Z]:/)){let _0x3d103e=_0x428d7c['replace'](/\//g,'\x5c');return/^[a-z]:/[_0x3ab055(0x1cd)](_0x3d103e)&&(_0x3d103e=_0x3d103e[_0x3ab055(0x1ce)](0x0)[_0x3ab055(0x1d8)]()+_0x3d103e[_0x3ab055(0x1c6)](0x1)),_0x3d103e;}return _0x428d7c[_0x3ab055(0x1d5)](/\//g,'\x5c');}export function expandHome(_0x1bdb66){const _0x1a4d10=a1_0x1ead;if(_0x1bdb66['startsWith']('~/')||_0x1bdb66==='~')return a1_0x5789cd[_0x1a4d10(0x1cb)](a1_0x1e4c02[_0x1a4d10(0x1c7)](),_0x1bdb66[_0x1a4d10(0x1c6)](0x1));return _0x1bdb66;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0xb0993e,_0x550fdd){const _0x3d78d9=a2_0x508f,_0x17953b=_0xb0993e();while(!![]){try{const _0x27e2d4=parseInt(_0x3d78d9(0x195))/0x1*(parseInt(_0x3d78d9(0x186))/0x2)+parseInt(_0x3d78d9(0x197))/0x3+-parseInt(_0x3d78d9(0x191))/0x4+parseInt(_0x3d78d9(0x18c))/0x5+parseInt(_0x3d78d9(0x194))/0x6+-parseInt(_0x3d78d9(0x187))/0x7+parseInt(_0x3d78d9(0x192))/0x8*(-parseInt(_0x3d78d9(0x18f))/0x9);if(_0x27e2d4===_0x550fdd)break;else _0x17953b['push'](_0x17953b['shift']());}catch(_0x4515c4){_0x17953b['push'](_0x17953b['shift']());}}}(a2_0x226a,0x7b37a));function a2_0x508f(_0x45bbe2,_0x3cbea5){_0x45bbe2=_0x45bbe2-0x186;const _0x226a43=a2_0x226a();let _0x508fb2=_0x226a43[_0x45bbe2];return _0x508fb2;}import a2_0x5d68ba from'path';export function isPathWithinAllowedDirectories(_0x48340f,_0x474cc5){const _0x35a186=a2_0x508f;if(typeof _0x48340f!=='string'||!Array[_0x35a186(0x198)](_0x474cc5))return![];if(!_0x48340f||_0x474cc5['length']===0x0)return![];if(_0x48340f[_0x35a186(0x18e)]('\x00'))return![];let _0xafad1d;try{_0xafad1d=a2_0x5d68ba[_0x35a186(0x18a)](a2_0x5d68ba['normalize'](_0x48340f));}catch{return![];}if(!a2_0x5d68ba[_0x35a186(0x190)](_0xafad1d))throw new Error(_0x35a186(0x189));return _0x474cc5[_0x35a186(0x196)](_0x407033=>{const _0xa76d0a=_0x35a186;if(typeof _0x407033!=='string'||!_0x407033)return![];if(_0x407033[_0xa76d0a(0x18e)]('\x00'))return![];let _0x231aa3;try{_0x231aa3=a2_0x5d68ba[_0xa76d0a(0x18a)](a2_0x5d68ba[_0xa76d0a(0x193)](_0x407033));}catch{return![];}if(!a2_0x5d68ba[_0xa76d0a(0x190)](_0x231aa3))throw new Error(_0xa76d0a(0x188));if(_0xafad1d===_0x231aa3)return!![];if(_0x231aa3===a2_0x5d68ba[_0xa76d0a(0x18d)])return _0xafad1d[_0xa76d0a(0x18b)](a2_0x5d68ba['sep']);return _0xafad1d[_0xa76d0a(0x18b)](_0x231aa3+a2_0x5d68ba[_0xa76d0a(0x18d)]);});}function a2_0x226a(){const _0x573f10=['1408967qwPkPu','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','Path\x20must\x20be\x20absolute\x20after\x20normalization','resolve','startsWith','1796235djxugI','sep','includes','33921sfumse','isAbsolute','1379724TAiVTe','400GwoUEP','normalize','2148102KKvkSE','517558kIGLUX','some','13614KyYxgW','isArray','2ElyEhC'];a2_0x226a=function(){return _0x573f10;};return a2_0x226a();}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0xe02ef0,_0xbfdee8){const _0x42a4b4=a3_0x3b63,_0x1a686a=_0xe02ef0();while(!![]){try{const _0x7c576d=parseInt(_0x42a4b4(0x1ae))/0x1+parseInt(_0x42a4b4(0x1ba))/0x2+parseInt(_0x42a4b4(0x1ad))/0x3+-parseInt(_0x42a4b4(0x1b6))/0x4+-parseInt(_0x42a4b4(0x1a6))/0x5*(-parseInt(_0x42a4b4(0x1a8))/0x6)+parseInt(_0x42a4b4(0x1af))/0x7*(-parseInt(_0x42a4b4(0x1b2))/0x8)+parseInt(_0x42a4b4(0x1b1))/0x9*(-parseInt(_0x42a4b4(0x1b3))/0xa);if(_0x7c576d===_0xbfdee8)break;else _0x1a686a['push'](_0x1a686a['shift']());}catch(_0x3b015e){_0x1a686a['push'](_0x1a686a['shift']());}}}(a3_0x1306,0xde9c4));function a3_0x3b63(_0x15341d,_0x52a3d1){_0x15341d=_0x15341d-0x1a4;const _0x130670=a3_0x1306();let _0x3b63e5=_0x130670[_0x15341d];return _0x3b63e5;}function a3_0x1306(){const _0x2ba154=['file://','3807000MlDBpO','\x20due\x20to\x20error:\x20','slice','non-directory\x20root','527438PzNBaR','Skipping\x20invalid\x20directory:\x20','startsWith','53930NAWFvb','isDirectory','600qezlJb','stat','resolve','uri','realpath','331947iyZZQB','1603055OJiDvA','2198mbljwY','error','9AiVKSc','22456ZhEYVe','3110630GxfgOs','message'];a3_0x1306=function(){return _0x2ba154;};return a3_0x1306();}import{promises as a3_0x53818f}from'fs';import a3_0x46f210 from'path';import a3_0x7d3f7e from'os';import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x12af4a){const _0x35c0e8=a3_0x3b63;try{const _0x7bb8ac=_0x12af4a['startsWith'](_0x35c0e8(0x1b5))?_0x12af4a[_0x35c0e8(0x1b8)](0x7):_0x12af4a,_0x15cc21=_0x7bb8ac[_0x35c0e8(0x1a5)]('~/')||_0x7bb8ac==='~'?a3_0x46f210['join'](a3_0x7d3f7e['homedir'](),_0x7bb8ac['slice'](0x1)):_0x7bb8ac,_0x161f77=a3_0x46f210[_0x35c0e8(0x1aa)](_0x15cc21),_0x43ade4=await a3_0x53818f[_0x35c0e8(0x1ac)](_0x161f77);return normalizePath(_0x43ade4);}catch{return null;}}function formatDirectoryError(_0xd76e46,_0x4dbd4b,_0x1a6641){const _0x25196c=a3_0x3b63;if(_0x1a6641)return'Skipping\x20'+_0x1a6641+':\x20'+_0xd76e46;const _0x2e0968=_0x4dbd4b instanceof Error?_0x4dbd4b[_0x25196c(0x1b4)]:String(_0x4dbd4b);return _0x25196c(0x1a4)+_0xd76e46+_0x25196c(0x1b7)+_0x2e0968;}export async function getValidRootDirectories(_0x14bf36){const _0x34ecff=a3_0x3b63,_0x4c278c=[];for(const _0x3a05cf of _0x14bf36){const _0x47c2e8=await parseRootUri(_0x3a05cf[_0x34ecff(0x1ab)]);if(!_0x47c2e8){console[_0x34ecff(0x1b0)](formatDirectoryError(_0x3a05cf[_0x34ecff(0x1ab)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x55817b=await a3_0x53818f[_0x34ecff(0x1a9)](_0x47c2e8);_0x55817b[_0x34ecff(0x1a7)]()?_0x4c278c['push'](_0x47c2e8):console[_0x34ecff(0x1b0)](formatDirectoryError(_0x47c2e8,undefined,_0x34ecff(0x1b9)));}catch(_0x471630){console[_0x34ecff(0x1b0)](formatDirectoryError(_0x47c2e8,_0x471630));}}return _0x4c278c;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.97",
|
|
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.118",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|