@morphllm/morphmcp 0.8.78 → 0.8.79
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_0x41a4db=a0_0x14e0;(function(_0x21be6c,_0x18c9d7){const _0x1f53ad=a0_0x14e0,_0x1d949c=_0x21be6c();while(!![]){try{const _0x133e5a=parseInt(_0x1f53ad(0x1cc))/0x1*(parseInt(_0x1f53ad(0x228))/0x2)+-parseInt(_0x1f53ad(0x260))/0x3+-parseInt(_0x1f53ad(0x1f4))/0x4*(parseInt(_0x1f53ad(0x248))/0x5)+parseInt(_0x1f53ad(0x21c))/0x6*(-parseInt(_0x1f53ad(0x220))/0x7)+parseInt(_0x1f53ad(0x1cb))/0x8+-parseInt(_0x1f53ad(0x1d7))/0x9*(-parseInt(_0x1f53ad(0x27a))/0xa)+-parseInt(_0x1f53ad(0x1e5))/0xb*(parseInt(_0x1f53ad(0x203))/0xc);if(_0x133e5a===_0x18c9d7)break;else _0x1d949c['push'](_0x1d949c['shift']());}catch(_0x37016d){_0x1d949c['push'](_0x1d949c['shift']());}}}(a0_0x1904,0x59377));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';function a0_0x14e0(_0x5d5c20,_0x31ba74){_0x5d5c20=_0x5d5c20-0x19d;const _0x19044c=a0_0x1904();let _0x14e093=_0x19044c[_0x5d5c20];return _0x14e093;}import a0_0x32ed6f from'fs/promises';import a0_0x44baea from'path';import a0_0x5d9386 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider}from'@morphllm/morphsdk/tools/warp-grep';import{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';import a0_0x412a99 from'axios';function fixPathRepetition(_0x5f27d4){const _0x124ec9=a0_0x14e0,_0x41a536=_0x5f27d4[_0x124ec9(0x238)](a0_0x44baea[_0x124ec9(0x1ce)])[_0x124ec9(0x1f2)](Boolean);if(_0x41a536[_0x124ec9(0x1d1)]<0x2)return null;for(let _0x249425=Math[_0x124ec9(0x1f3)](_0x41a536[_0x124ec9(0x1d1)]/0x2);_0x249425>=0x1;_0x249425--){for(let _0x4bf835=0x0;_0x4bf835<=_0x41a536[_0x124ec9(0x1d1)]-0x2*_0x249425;_0x4bf835++){const _0x53b785=_0x41a536[_0x124ec9(0x1fa)](_0x4bf835,_0x4bf835+_0x249425),_0x33919a=_0x41a536[_0x124ec9(0x1fa)](_0x4bf835+_0x249425,_0x4bf835+0x2*_0x249425);if(_0x53b785[_0x124ec9(0x20a)]((_0x680d8e,_0x21906c)=>_0x680d8e===_0x33919a[_0x21906c])){const _0x4ad44c=[..._0x41a536[_0x124ec9(0x1fa)](0x0,_0x4bf835),..._0x41a536[_0x124ec9(0x1fa)](_0x4bf835+_0x249425)];return a0_0x44baea[_0x124ec9(0x1ce)]+_0x4ad44c[_0x124ec9(0x200)](a0_0x44baea['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x1f9318=a0_0x14e0;try{const _0x3c5adc=require(_0x1f9318(0x23d));return _0x3c5adc['version']??_0x1f9318(0x26f);}catch(_0x149461){return console[_0x1f9318(0x1a5)]('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x149461),_0x1f9318(0x26f);}}function printHelp(){const _0x4f8203=a0_0x14e0;console[_0x4f8203(0x23f)]('@morphllm/morphmcp\x20'+getPackageVersion()),console['log'](_0x4f8203(0x1ad)),console['log'](_0x4f8203(0x226)),console[_0x4f8203(0x23f)](_0x4f8203(0x1c9)),console['log'](_0x4f8203(0x1f9)),console[_0x4f8203(0x23f)]('\x0aExamples:'),console[_0x4f8203(0x23f)](_0x4f8203(0x26b)),console[_0x4f8203(0x23f)]('\x20\x20morph-mcp\x20~/repo');}const cliArgs=process['argv'][a0_0x41a4db(0x1fa)](0x2),VERSION_FLAGS=new Set([a0_0x41a4db(0x22c),'-v','-V']),HELP_FLAGS=new Set([a0_0x41a4db(0x215),'-h']);cliArgs['some'](_0x2ab6db=>VERSION_FLAGS[a0_0x41a4db(0x259)](_0x2ab6db))&&(console[a0_0x41a4db(0x23f)](a0_0x41a4db(0x1f0)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x41a4db(0x27f)](_0xed4871=>HELP_FLAGS[a0_0x41a4db(0x259)](_0xed4871))&&(printHelp(),process[a0_0x41a4db(0x212)](0x0));const args=cliArgs[a0_0x41a4db(0x1f2)](_0x11dc2e=>!VERSION_FLAGS[a0_0x41a4db(0x259)](_0x11dc2e)&&!HELP_FLAGS[a0_0x41a4db(0x259)](_0x11dc2e)),ALL_TOOLS=[a0_0x41a4db(0x1b3),'warpgrep_codebase_search',a0_0x41a4db(0x279)],DEFAULT_TOOLS=['edit_file',a0_0x41a4db(0x29c)],ENABLED_TOOLS=process[a0_0x41a4db(0x26a)][a0_0x41a4db(0x1dd)]?process['env'][a0_0x41a4db(0x1dd)]===a0_0x41a4db(0x205)?ALL_TOOLS:process['env'][a0_0x41a4db(0x1dd)]['split'](',')[a0_0x41a4db(0x217)](_0x1619f7=>_0x1619f7[a0_0x41a4db(0x1ef)]()):DEFAULT_TOOLS;console[a0_0x41a4db(0x1a5)](a0_0x41a4db(0x1f6)+ENABLED_TOOLS['join'](',\x20'));const WORKSPACE_ROOT=process[a0_0x41a4db(0x26a)][a0_0x41a4db(0x24c)]||process['env'][a0_0x41a4db(0x1b7)]||process[a0_0x41a4db(0x265)](),ENABLE_WORKSPACE_MODE=process[a0_0x41a4db(0x26a)]['ENABLE_WORKSPACE_MODE']!==a0_0x41a4db(0x26e),MORPH_API_KEY=process[a0_0x41a4db(0x26a)][a0_0x41a4db(0x262)],MORPH_API_URL=process[a0_0x41a4db(0x26a)][a0_0x41a4db(0x1be)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x41a4db(0x26a)][a0_0x41a4db(0x21b)]?parseInt(process[a0_0x41a4db(0x26a)][a0_0x41a4db(0x21b)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x41a4db(0x225))&&!MORPH_API_KEY[a0_0x41a4db(0x232)](a0_0x41a4db(0x22d))&&console[a0_0x41a4db(0x1a5)](a0_0x41a4db(0x283));async function reportMorphError(_0x4936e2){const _0x285b8a=a0_0x41a4db;try{await a0_0x412a99['post'](_0x285b8a(0x1b1),{..._0x4936e2,'timestamp':new Date()[_0x285b8a(0x268)](),'source':_0x4936e2[_0x285b8a(0x1c2)]||'mcp-filesystem'},{'timeout':0x1388,'headers':{'Content-Type':_0x285b8a(0x1ed),'Authorization':_0x285b8a(0x28f)+MORPH_API_KEY}});}catch{}}args[a0_0x41a4db(0x1d1)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x41a4db(0x1a5)](a0_0x41a4db(0x1aa)),console['error']('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),console['error'](a0_0x41a4db(0x295)),console[a0_0x41a4db(0x1a5)]('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),console['error'](a0_0x41a4db(0x250)),console[a0_0x41a4db(0x1a5)](a0_0x41a4db(0x280)));function normalizePath(_0x118483){const _0x38d920=a0_0x41a4db;return a0_0x44baea[_0x38d920(0x27d)](_0x118483);}function expandHome(_0x5a8a4a){const _0x3c33da=a0_0x41a4db;if(_0x5a8a4a[_0x3c33da(0x232)]('~/')||_0x5a8a4a==='~')return a0_0x44baea[_0x3c33da(0x200)](a0_0x5d9386[_0x3c33da(0x1cd)](),_0x5a8a4a[_0x3c33da(0x1fa)](0x1));return _0x5a8a4a;}let allowedDirectories=await Promise[a0_0x41a4db(0x205)](args[a0_0x41a4db(0x217)](async _0x4c3e98=>{const _0x48c147=a0_0x41a4db,_0x3a5235=expandHome(_0x4c3e98),_0x1697e1=a0_0x44baea[_0x48c147(0x298)](_0x3a5235);try{const _0xf10e89=await a0_0x32ed6f[_0x48c147(0x231)](_0x1697e1);return normalizePath(_0xf10e89);}catch(_0x3ff294){return normalizePath(_0x1697e1);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x41a4db(0x1d1)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x41a4db(0x223)](workspaceDir),console[a0_0x41a4db(0x1a5)](a0_0x41a4db(0x1ee)+workspaceDir+a0_0x41a4db(0x278)));}catch(a0_0x5084d2){console[a0_0x41a4db(0x1a5)](a0_0x41a4db(0x276)+a0_0x5084d2);}function a0_0x1904(){const _0x453989=['startLine','ENABLED_TOOLS','\x22>\x0aError\x20reading\x20file:\x20','getClientCapabilities','targetDirectories','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','package.json','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','boolean','55RZRGkJ','Warning:\x20','describe','timings','roots','WarpGrepError','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','dirname','application/json','Workspace\x20mode\x20enabled:\x20Using\x20','trim','@morphllm/morphmcp\x20','ms:\x0a\x0a','filter','floor','836744GABqsK',',\x20modified\x20','Enabled\x20tools:\x20','.vscode','endLine','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','slice','Morph\x20FastApply\x20failed\x20without\x20error\x20message','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','Unknown\x20tool:\x20','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','Repository\x20identifier','join','name','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','951432hEzAIC','terminated','all','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','Unknown\x20error','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','every','-\x20Grepped\x20\x27','Fatal\x20error\x20running\x20server:','read\x20','unknown\x20error','terminationReason','oninitialized','TimeoutError','exit','.\x20Path:\x20','Applied','--help','Preview\x20changes\x20without\x20applying\x20them.','map','stats','repoId','utf-8','MORPH_WARP_GREP_TIMEOUT','624wnyKrD','requiresApiKey','[could\x20not\x20read\x20file:\x20','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','13055irZqQG','Relevant\x20context\x20found:','Cargo.toml','push','Natural\x20language\x20query\x20to\x20search\x20for\x20code','sk-','\x0aOptions:','files','69252Hnhort','mcp-filesystem','Max\x20results\x20to\x20return','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','--version','morph-','stack','-\x20Listed\x20directory\x20`','\x20-\x20','realpath','startsWith','query','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','changes','toLowerCase','default','split','<file\x20path=\x22','.\x20Changes:\x20','substring','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','../package.json','safeParse','log','repo_path','content','messages','code','metadata','Parent\x20directory\x20does\x20not\x20exist:\x20','path','morph-v3-fast','5SYtFYA','inputSchema','go.mod','morph-warp-grep-v1-1111v0','WORKSPACE_ROOT','assistant','array','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','\x20chars)','dryRun','linesRemoved','list_directory\x20','lines','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','has','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','tsconfig.json','\x20\x20\x20Lines\x20','Found\x20','Failed\x20to\x20request\x20roots\x20from\x20client:','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','449988bULsyj','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','MORPH_API_KEY','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','cwd','completed','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','toISOString','Note:\x20The\x20files\x20and\x20line\x20ranges\x20returned\x20by\x20this\x20tool\x20may\x20be\x20some\x20of\x20the\x20ones\x20needed\x20to\x20complete\x20the\x20user\x27s\x20request,\x20but\x20you\x20should\x20be\x20careful\x20in\x20evaluating\x20the\x20relevance\x20of\x20the\x20results,\x20since\x20the\x20subagent\x20might\x20make\x20mistakes.\x20','env','\x20\x20morph-mcp','Morph\x20Edit\x20Preview','...','false','unknown','Invalid\x20arguments:\x20','optional','catch','etimedout','data','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','\x20as\x20allowed\x20directory','codebase_search','424870CmFEph','ENOENT','includes','normalize','message','some','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','filepath','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Warning:\x20Workspace\x20fallback\x20failed:\x20','runWarpGrep_call','\x20\x20\x20','isDirectory','stat','No\x20results\x20found\x20for\x20query:\x20\x22','errors','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','\x20results\x20in\x20','rerankScore','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Bearer\x20','constructor','Morph\x20Edit\x20','object','Benefits:\x0a','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','search_string','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','resolve','searchTimeMs','Error\x20accessing\x20directory\x20','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','warpgrep_codebase_search','.cursor','File\x20read\x20error:','linesModified','For\x20deletions:\x0a','❌\x20Morph\x20Edit\x20Failed:\x20','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','finish','FileReadError','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','success','readFile','error','timed\x20out','-\x20Read\x20file\x20`','grep\x20\x27','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','added\x20','role','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','Specific\x20commit\x20hash\x20to\x20search','description','https://morphllm.com/api/error-report','%\x20match)\x0a','edit_file','listRoots','code_edit','\x0a</file>','PWD','results','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','params','setRequestHandler','MORPH_API_URL','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','basename','Search\x20failed:\x20','source','connect','stringify','\x20is\x20not\x20a\x20directory','instruction','match','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','UnknownError','5119120aRJlcK','6KMVOBS','homedir','sep','\x27\x20in\x20`','Error:\x20','length','string','isArray','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','0.2.0','99okFPtt','timeout','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Failed\x20to\x20read\x20file:\x20','text'];a0_0x1904=function(){return _0x453989;};return a0_0x1904();}async function detectWorkspaceRoot(_0x3dd471){const _0x4eb970=a0_0x41a4db;let _0xb840f=a0_0x44baea[_0x4eb970(0x298)](_0x3dd471);const _0x42f386=['.git',_0x4eb970(0x1f7),_0x4eb970(0x1e2),_0x4eb970(0x222),'pyproject.toml',_0x4eb970(0x24a),_0x4eb970(0x29d),_0x4eb970(0x25b),'composer.json'];while(_0xb840f!==a0_0x44baea[_0x4eb970(0x1ec)](_0xb840f)){for(const _0x52c718 of _0x42f386){const _0x56da5f=a0_0x44baea[_0x4eb970(0x200)](_0xb840f,_0x52c718);try{return await a0_0x32ed6f['access'](_0x56da5f),normalizePath(_0xb840f);}catch{}}_0xb840f=a0_0x44baea[_0x4eb970(0x1ec)](_0xb840f);}return normalizePath(_0x3dd471);}await Promise[a0_0x41a4db(0x205)](args[a0_0x41a4db(0x217)](async _0x56bd03=>{const _0x531089=a0_0x41a4db;try{const _0x44e7f0=await a0_0x32ed6f[_0x531089(0x288)](expandHome(_0x56bd03));!_0x44e7f0[_0x531089(0x287)]()&&(console[_0x531089(0x1a5)](_0x531089(0x1d0)+_0x56bd03+_0x531089(0x1c5)),process[_0x531089(0x212)](0x1));}catch(_0x1f12f2){console['error'](_0x531089(0x29a)+_0x56bd03+':',_0x1f12f2),process['exit'](0x1);}}));async function validatePath(_0x1900b8){const _0x343144=a0_0x41a4db,_0x1db5a8=expandHome(_0x1900b8),_0x2ebf7e=a0_0x44baea['resolve'](_0x1db5a8);try{const _0x137a9d=await a0_0x32ed6f[_0x343144(0x231)](_0x2ebf7e);return _0x137a9d;}catch(_0x3a508f){if(_0x3a508f[_0x343144(0x243)]==='ENOENT'){const _0xe1978=a0_0x44baea[_0x343144(0x1ec)](_0x2ebf7e);try{const _0x403733=await a0_0x32ed6f['realpath'](_0xe1978);return a0_0x44baea['join'](_0x403733,a0_0x44baea[_0x343144(0x1c0)](_0x2ebf7e));}catch{throw new Error(_0x343144(0x245)+_0xe1978);}}throw _0x3a508f;}}const MorphEditFileArgsSchema=z[a0_0x41a4db(0x292)]({'path':z['string'](),'code_edit':z['string']()['describe'](a0_0x41a4db(0x258)),'instruction':z[a0_0x41a4db(0x1d2)]()[a0_0x41a4db(0x1e7)](a0_0x41a4db(0x209)),'dryRun':z[a0_0x41a4db(0x1e4)]()[a0_0x41a4db(0x237)](![])['describe'](a0_0x41a4db(0x216))}),WarpGrepArgsSchema=z[a0_0x41a4db(0x292)]({'search_string':z[a0_0x41a4db(0x1d2)]()[a0_0x41a4db(0x1e7)]('Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for'),'repo_path':z[a0_0x41a4db(0x1d2)]()[a0_0x41a4db(0x1e7)]('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos')}),CodebaseSearchArgsSchema=z[a0_0x41a4db(0x292)]({'query':z[a0_0x41a4db(0x1d2)]()['describe'](a0_0x41a4db(0x224)),'repoId':z[a0_0x41a4db(0x1d2)]()[a0_0x41a4db(0x1e7)](a0_0x41a4db(0x1ff)),'branch':z[a0_0x41a4db(0x1d2)]()['optional']()[a0_0x41a4db(0x1e7)](a0_0x41a4db(0x1eb)),'commitHash':z[a0_0x41a4db(0x1d2)]()[a0_0x41a4db(0x271)]()['describe'](a0_0x41a4db(0x1af)),'targetDirectories':z[a0_0x41a4db(0x24e)](z[a0_0x41a4db(0x1d2)]())[a0_0x41a4db(0x237)]([])[a0_0x41a4db(0x1e7)]('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z['number']()['optional']()[a0_0x41a4db(0x237)](0xa)['describe'](a0_0x41a4db(0x22a))}),server=new Server({'name':'morph-mcp','version':a0_0x41a4db(0x1d6)},{'capabilities':{'tools':{}}});server[a0_0x41a4db(0x1bd)](ListToolsRequestSchema,async()=>{const _0x5d6311=a0_0x41a4db,_0x584ad9=[{'name':_0x5d6311(0x1b3),'description':_0x5d6311(0x282)+_0x5d6311(0x208)+_0x5d6311(0x263)+_0x5d6311(0x234)+_0x5d6311(0x293)+_0x5d6311(0x29b)+_0x5d6311(0x1d4)+_0x5d6311(0x1d9)+_0x5d6311(0x206)+_0x5d6311(0x23c)+_0x5d6311(0x1bb)+'Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'+_0x5d6311(0x19d)+_0x5d6311(0x1bf)+_0x5d6311(0x21f)+'Rules:\x0a'+_0x5d6311(0x267)+_0x5d6311(0x1a9)+_0x5d6311(0x1b9)+_0x5d6311(0x28e)+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x5d6311(0x256),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x5d6311(0x29c),'description':_0x5d6311(0x25a)+'This\x20tool\x20invokes\x20a\x20subagent\x20that\x20runs\x20parallel\x20grep\x20and\x20readfile\x20calls\x20over\x20multiple\x20turns\x20to\x20locate\x20line\x20ranges\x20and\x20files\x20which\x20might\x20be\x20relevant\x20to\x20the\x20request.\x20'+'The\x20search\x20term\x20should\x20be\x20a\x20targeted\x20natural\x20language\x20query\x20based\x20on\x20what\x20you\x20are\x20trying\x20to\x20accomplish,\x20like\x20\x27Find\x20where\x20authentication\x20requests\x20are\x20handled\x20in\x20the\x20Express\x20routes\x27\x20or\x20\x27Modify\x20the\x20agentic\x20rollout\x20to\x20use\x20the\x20new\x20tokenizer\x20and\x20chat\x20template\x27\x20or\x20\x27Fix\x20the\x20bug\x20where\x20the\x20user\x20gets\x20redirected\x20from\x20the\x20/feed\x20page\x27.\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20'+_0x5d6311(0x261)+_0x5d6311(0x269)+_0x5d6311(0x1fc)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':_0x5d6311(0x279),'description':_0x5d6311(0x1d5)+_0x5d6311(0x1fe)+'🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a'+_0x5d6311(0x293)+'-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a'+_0x5d6311(0x1e3)+_0x5d6311(0x294)+_0x5d6311(0x22b)+_0x5d6311(0x28b)+'Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20'+_0x5d6311(0x275),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x77d2d8=_0x584ad9[_0x5d6311(0x1f2)](_0xcd745f=>{const _0x1d57db=_0x5d6311;if(!ENABLED_TOOLS[_0x1d57db(0x27c)](_0xcd745f[_0x1d57db(0x201)]))return![];if(_0x1d57db(0x21d)in _0xcd745f&&_0xcd745f[_0x1d57db(0x21d)]&&!MORPH_API_KEY)return console[_0x1d57db(0x1a5)]('Warning:\x20'+_0xcd745f['name']+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x77d2d8[_0x5d6311(0x217)](_0x1588b4=>({'name':_0x1588b4[_0x5d6311(0x201)],'description':_0x1588b4[_0x5d6311(0x1b0)],'inputSchema':_0x1588b4[_0x5d6311(0x249)]}))};}),server[a0_0x41a4db(0x1bd)](CallToolRequestSchema,async _0x17e093=>{const _0x561fc0=a0_0x41a4db;try{const {name:_0x252cb9,arguments:_0x17500f}=_0x17e093[_0x561fc0(0x1bc)];switch(_0x252cb9){case _0x561fc0(0x1b3):{const _0x4e6bf6=MorphEditFileArgsSchema[_0x561fc0(0x23e)](_0x17500f);if(!_0x4e6bf6[_0x561fc0(0x1a3)])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x4e6bf6[_0x561fc0(0x1a5)]);const _0xfd1fe8=await validatePath(_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x246)]);let _0x305063=null,_0x54c0fc=!![],_0x3dbca0=null;try{_0x305063=await a0_0x32ed6f[_0x561fc0(0x1a4)](_0xfd1fe8,_0x561fc0(0x21a));}catch(_0x4e043b){const _0x52e321=_0x4e043b[_0x561fc0(0x243)];_0x52e321===_0x561fc0(0x27b)?(_0x54c0fc=![],_0x305063=''):(_0x3dbca0=_0x561fc0(0x1da)+(_0x52e321||_0x561fc0(0x26f))+_0x561fc0(0x230)+(_0x4e043b instanceof Error?_0x4e043b[_0x561fc0(0x27e)]:String(_0x4e043b)),console[_0x561fc0(0x1a5)](_0x561fc0(0x1e6)+_0x3dbca0));}try{const _0x174857=MORPH_API_KEY;if(!_0x174857)throw new Error(_0x561fc0(0x19f));const _0x2e33b8=a0_0x44baea['dirname'](_0xfd1fe8),_0x529b6b=a0_0x44baea[_0x561fc0(0x1c0)](_0xfd1fe8),_0x4c5181=await executeEditFile({'target_filepath':_0x529b6b,'code_edit':_0x4e6bf6[_0x561fc0(0x274)]['code_edit'],'instructions':_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x1c6)]},{'morphApiKey':_0x174857,'morphApiUrl':MORPH_API_URL,'baseDir':_0x2e33b8,'autoWrite':!_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x252)],'generateUdiff':![],'debug':![]});if(!_0x4c5181[_0x561fc0(0x1a3)])throw new Error(_0x4c5181[_0x561fc0(0x1a5)]||_0x561fc0(0x1fb));const _0x23339f=_0x4c5181[_0x561fc0(0x235)],_0x3912c5=_0x561fc0(0x1ab)+_0x23339f['linesAdded']+',\x20removed\x20'+_0x23339f[_0x561fc0(0x253)]+_0x561fc0(0x1f5)+_0x23339f[_0x561fc0(0x29f)];if(_0x4e6bf6[_0x561fc0(0x274)]['dryRun'])return{'content':[{'type':'text','text':_0x561fc0(0x26c)+(_0x54c0fc?'':'\x20(new\x20file)')+':\x20'+_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x1c6)]+_0x561fc0(0x23a)+_0x3912c5+_0x561fc0(0x213)+_0x4e6bf6['data']['path']+'.'}]};return{'content':[{'type':'text','text':_0x561fc0(0x291)+(_0x54c0fc?_0x561fc0(0x214):'Created\x20File')+':\x20'+_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x1c6)]+_0x561fc0(0x23a)+_0x3912c5+_0x561fc0(0x213)+_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x246)]+'.'}]};}catch(_0x59f1b9){const _0x45be4c=_0x59f1b9 instanceof Error?_0x59f1b9[_0x561fc0(0x27e)]:String(_0x59f1b9);return reportMorphError({'error_message':_0x45be4c,'error_type':_0x59f1b9 instanceof Error?_0x59f1b9[_0x561fc0(0x290)][_0x561fc0(0x201)]:_0x561fc0(0x1ca),'context':{'tool':_0x561fc0(0x1b3),'file_path':_0x4e6bf6['data'][_0x561fc0(0x246)],'validated_path':_0xfd1fe8,'instruction':_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x1c6)],'model':'morph-v3-fast','dry_run':_0x4e6bf6[_0x561fc0(0x274)]['dryRun'],'file_exists':_0x54c0fc,'file_read_error':_0x3dbca0,'file_readable':_0x305063!==null,'request_content':{'path':_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x246)],'code_edit':_0x4e6bf6['data'][_0x561fc0(0x1b5)],'instruction':_0x4e6bf6[_0x561fc0(0x274)]['instruction'],'original_code':_0x305063!==null?_0x305063[_0x561fc0(0x1d1)]>0xc350?_0x305063[_0x561fc0(0x23b)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x305063[_0x561fc0(0x1d1)]+_0x561fc0(0x251):_0x305063:_0x561fc0(0x21e)+(_0x3dbca0||_0x561fc0(0x20e))+']','original_code_length':_0x305063?.[_0x561fc0(0x1d1)]??0x0,'model':_0x561fc0(0x247),'dry_run':_0x4e6bf6[_0x561fc0(0x274)][_0x561fc0(0x252)]}},'stack_trace':_0x59f1b9 instanceof Error?_0x59f1b9[_0x561fc0(0x22e)]:undefined,'source':_0x561fc0(0x229)})[_0x561fc0(0x272)](()=>{}),{'content':[{'type':'text','text':_0x561fc0(0x19e)+_0x45be4c}],'isError':!![]};}}case _0x561fc0(0x29c):{const _0x325cc6=WarpGrepArgsSchema[_0x561fc0(0x23e)](_0x17500f);if(!_0x325cc6[_0x561fc0(0x1a3)])return{'content':[{'type':_0x561fc0(0x1db),'text':'Invalid\x20arguments:\x20'+_0x325cc6['error']}],'isError':!![]};const _0x49a2cc=_0x4ace5c=>{const _0x132e53=_0x561fc0,_0x3e3c0d=[];for(const _0x349647 of _0x4ace5c||[]){const _0xc84033=_0x349647[_0x132e53(0x1ac)],_0x3a0a3a=_0x349647['content'];if(_0xc84033===_0x132e53(0x24d)&&_0x3a0a3a){const _0x504e73=_0x3a0a3a[_0x132e53(0x238)]('\x0a')[_0x132e53(0x1f2)](_0x230c39=>_0x230c39[_0x132e53(0x1ef)]());for(const _0x1e105a of _0x504e73){const _0x2d06ea=_0x1e105a['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x2d06ea){_0x3e3c0d[_0x132e53(0x223)](_0x132e53(0x1a8)+_0x2d06ea[0x1]+'\x27\x20'+_0x2d06ea[0x2]);continue;}const _0x2ce96b=_0x1e105a[_0x132e53(0x1c7)](/^read\s+(.+)$/);if(_0x2ce96b){_0x3e3c0d[_0x132e53(0x223)](_0x132e53(0x20d)+_0x2ce96b[0x1]);continue;}const _0x53295d=_0x1e105a[_0x132e53(0x1c7)](/^list_directory\s+(.+)$/);if(_0x53295d){_0x3e3c0d['push'](_0x132e53(0x254)+_0x53295d[0x1]);continue;}}}}return _0x3e3c0d;};try{const _0x374f6b=a0_0x44baea['resolve'](_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x240)]),_0xed8de9=new LocalRipgrepProvider(_0x374f6b),_0x3c34cc=await runWarpGrep({'query':_0x325cc6[_0x561fc0(0x274)]['search_string'],'repoRoot':_0x374f6b,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0xed8de9});let _0x58e0ec='';if(_0x3c34cc[_0x561fc0(0x20f)]===_0x561fc0(0x266)&&_0x3c34cc[_0x561fc0(0x1a0)]?.[_0x561fc0(0x244)]?.['files']){const _0x557ff0=_0x3c34cc[_0x561fc0(0x1a0)][_0x561fc0(0x244)]['files'],_0xcdd734=[],_0x11e895=[_0x561fc0(0x1ba)];for(const _0x2374a0 of _0x3c34cc[_0x561fc0(0x242)]){const _0x102c3e=_0x2374a0[_0x561fc0(0x1ac)],_0x3bc37e=_0x2374a0['content'];if(_0x102c3e===_0x561fc0(0x24d)&&_0x3bc37e){const _0x6bbe7a=_0x3bc37e[_0x561fc0(0x238)]('\x0a')[_0x561fc0(0x1f2)](_0x43f834=>_0x43f834[_0x561fc0(0x1ef)]());for(const _0x443953 of _0x6bbe7a){const _0x1b7daa=_0x443953[_0x561fc0(0x1c7)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x1b7daa){_0x11e895['push'](_0x561fc0(0x20b)+_0x1b7daa[0x1]+_0x561fc0(0x1cf)+_0x1b7daa[0x2]+'`');continue;}const _0x2fcf04=_0x443953[_0x561fc0(0x1c7)](/^read\s+(.+)$/);if(_0x2fcf04){_0x11e895[_0x561fc0(0x223)](_0x561fc0(0x1a7)+_0x2fcf04[0x1]+'`');continue;}const _0x264d45=_0x443953[_0x561fc0(0x1c7)](/^list_directory\s+(.+)$/);if(_0x264d45){_0x11e895[_0x561fc0(0x223)](_0x561fc0(0x22f)+_0x264d45[0x1]+'`');continue;}}}}_0xcdd734[_0x561fc0(0x223)](_0x11e895['join']('\x0a'));const _0x1d812e=['',_0x561fc0(0x221)];for(const _0x49cb77 of _0x557ff0){if(_0x49cb77[_0x561fc0(0x255)]==='*')_0x1d812e[_0x561fc0(0x223)]('-\x20'+_0x49cb77['path']+':*');else{if(Array[_0x561fc0(0x1d3)](_0x49cb77[_0x561fc0(0x255)])){const _0x479630=_0x49cb77[_0x561fc0(0x255)][_0x561fc0(0x217)](([_0x36256c,_0x41ebf1])=>{if(_0x36256c===_0x41ebf1)return''+_0x36256c;return _0x36256c+'-'+_0x41ebf1;});_0x1d812e[_0x561fc0(0x223)]('-\x20'+_0x49cb77['path']+':'+_0x479630[_0x561fc0(0x200)](','));}else _0x1d812e[_0x561fc0(0x223)]('-\x20'+_0x49cb77['path']+':*');}}_0x1d812e[_0x561fc0(0x223)](''),_0xcdd734[_0x561fc0(0x223)](_0x1d812e['join']('\x0a')),_0xcdd734['push']('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x32ff24=[];for(const _0x54a019 of _0x557ff0){let _0x25554b=a0_0x44baea[_0x561fc0(0x298)](_0x325cc6[_0x561fc0(0x274)]['repo_path'],_0x54a019[_0x561fc0(0x246)]),_0x3fc072=null,_0x2581c1=null;try{_0x3fc072=await a0_0x32ed6f[_0x561fc0(0x1a4)](_0x25554b,{'encoding':_0x561fc0(0x21a)});}catch(_0x3132da){const _0x14900c=fixPathRepetition(_0x25554b);if(_0x14900c)try{_0x3fc072=await a0_0x32ed6f[_0x561fc0(0x1a4)](_0x14900c,{'encoding':'utf-8'}),_0x25554b=_0x14900c;}catch{_0x2581c1=_0x3132da instanceof Error?_0x3132da:new Error(String(_0x3132da));}else _0x2581c1=_0x3132da instanceof Error?_0x3132da:new Error(String(_0x3132da));}if(_0x3fc072!==null){const _0x5bb6bd=_0x3fc072[_0x561fc0(0x238)](/\r?\n/),_0x583d8d=['<file\x20path=\x22'+_0x54a019[_0x561fc0(0x246)]+'\x22>'];if(_0x54a019['lines']==='*'||!Array[_0x561fc0(0x1d3)](_0x54a019[_0x561fc0(0x255)]))for(let _0x28ceab=0x1;_0x28ceab<=_0x5bb6bd[_0x561fc0(0x1d1)];_0x28ceab++){const _0x4bff65=_0x5bb6bd[_0x28ceab-0x1];_0x583d8d[_0x561fc0(0x223)](_0x28ceab+'|\x20'+_0x4bff65);}else for(const [_0x3ed50d,_0x175a63]of _0x54a019[_0x561fc0(0x255)]){_0x583d8d[_0x561fc0(0x1d1)]>0x1&&_0x583d8d[_0x561fc0(0x223)]('');for(let _0x43d58c=_0x3ed50d;_0x43d58c<=_0x175a63&&_0x43d58c<=_0x5bb6bd[_0x561fc0(0x1d1)];_0x43d58c++){const _0x5ce020=_0x5bb6bd[_0x43d58c-0x1];_0x583d8d['push'](_0x43d58c+'|\x20'+_0x5ce020);}}_0x583d8d['push']('</file>'),_0x32ff24[_0x561fc0(0x223)](_0x583d8d[_0x561fc0(0x200)]('\x0a'));}else _0x32ff24[_0x561fc0(0x223)](_0x561fc0(0x239)+_0x54a019[_0x561fc0(0x246)]+_0x561fc0(0x1de)+(_0x2581c1?.['message']||_0x561fc0(0x207))+_0x561fc0(0x1b6));}_0xcdd734[_0x561fc0(0x223)](_0x32ff24[_0x561fc0(0x200)]('\x0a\x0a')),_0x58e0ec=_0xcdd734['join']('\x0a');const _0x16f213=_0x3c34cc[_0x561fc0(0x28a)]?.[_0x561fc0(0x1f2)](_0x56c836=>_0x56c836[_0x561fc0(0x27e)]?.[_0x561fc0(0x232)](_0x561fc0(0x29e)))||[];if(_0x16f213[_0x561fc0(0x1d1)]>0x0){const _0x5375b7=_0x16f213['map'](_0x368c6b=>_0x368c6b[_0x561fc0(0x27e)])[_0x561fc0(0x200)](';\x20');reportMorphError({'error_message':_0x5375b7,'error_type':_0x561fc0(0x1a1),'context':{'tool':_0x561fc0(0x29c),'repo_path':_0x325cc6['data'][_0x561fc0(0x240)],'query':_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x296)],'model':_0x561fc0(0x24b),'termination_reason':'completed_with_file_errors','error_count':_0x16f213['length'],'is_timeout':![],'timings':_0x3c34cc['timings'],'files_attempted':_0x557ff0[_0x561fc0(0x217)](_0x55236d=>({'path':_0x55236d[_0x561fc0(0x246)],'lines':_0x55236d['lines']})),'tool_calls':_0x49a2cc(_0x3c34cc[_0x561fc0(0x242)]),'messages':_0x3c34cc[_0x561fc0(0x242)]?.[_0x561fc0(0x217)](_0x3426ce=>({'role':_0x3426ce['role'],'content':_0x3426ce[_0x561fc0(0x241)]})),'request_content':{'query':_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x296)],'repo_path':_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x240)],'repoRoot':a0_0x44baea['resolve'](_0x325cc6['data'][_0x561fc0(0x240)]),'model':_0x561fc0(0x24b)}},'source':_0x561fc0(0x229)})['catch'](()=>{});}}else{if(_0x3c34cc[_0x561fc0(0x20f)]===_0x561fc0(0x204)&&_0x3c34cc[_0x561fc0(0x28a)][_0x561fc0(0x1d1)]>0x0){const _0x35e6bc=_0x3c34cc[_0x561fc0(0x28a)]['map'](_0x4e21e5=>_0x4e21e5[_0x561fc0(0x27e)])['join'](';\x20');_0x58e0ec=_0x561fc0(0x1d0)+_0x35e6bc;const _0x158c5c=_0x35e6bc['toLowerCase']()['includes']('timeout')||_0x35e6bc[_0x561fc0(0x236)]()[_0x561fc0(0x27c)](_0x561fc0(0x1a6))||_0x35e6bc[_0x561fc0(0x236)]()[_0x561fc0(0x27c)](_0x561fc0(0x273)),_0x4b2dc6=_0x3c34cc[_0x561fc0(0x1a0)]?.[_0x561fc0(0x244)]?.[_0x561fc0(0x227)],_0x5b4d56=_0x3c34cc[_0x561fc0(0x28a)][0x0];reportMorphError({'error_message':_0x35e6bc,'error_type':_0x158c5c?_0x561fc0(0x211):_0x5b4d56?.[_0x561fc0(0x290)]?.[_0x561fc0(0x201)]||_0x561fc0(0x1ea),'context':{'tool':_0x561fc0(0x29c),'repo_path':_0x325cc6['data'][_0x561fc0(0x240)],'query':_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x296)],'model':_0x561fc0(0x24b),'termination_reason':_0x3c34cc[_0x561fc0(0x20f)],'error_count':_0x3c34cc['errors']['length'],'is_timeout':_0x158c5c,'timings':_0x3c34cc[_0x561fc0(0x1e8)],'files_attempted':_0x4b2dc6?.[_0x561fc0(0x217)](_0x1f3549=>({'path':_0x1f3549['path'],'lines':_0x1f3549[_0x561fc0(0x255)]})),'tool_calls':_0x49a2cc(_0x3c34cc[_0x561fc0(0x242)]),'messages':_0x3c34cc[_0x561fc0(0x242)]?.[_0x561fc0(0x217)](_0x1bb22a=>({'role':_0x1bb22a[_0x561fc0(0x1ac)],'content':_0x1bb22a['content']})),'request_content':{'query':_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x296)],'repo_path':_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x240)],'repoRoot':a0_0x44baea[_0x561fc0(0x298)](_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x240)]),'model':'morph-warp-grep-v1-1111v0'}},'stack_trace':_0x5b4d56?.[_0x561fc0(0x22e)]||undefined,'source':_0x561fc0(0x229)})[_0x561fc0(0x272)](()=>{});}else _0x58e0ec=_0x561fc0(0x277);}return{'content':[{'type':_0x561fc0(0x1db),'text':_0x58e0ec}]};}catch(_0x1a03f7){const _0x463b4c=_0x1a03f7 instanceof Error?_0x1a03f7[_0x561fc0(0x27e)]:String(_0x1a03f7),_0x536775=_0x463b4c['toLowerCase']()['includes'](_0x561fc0(0x1d8))||_0x463b4c['toLowerCase']()[_0x561fc0(0x27c)](_0x561fc0(0x1a6))||_0x463b4c[_0x561fc0(0x236)]()[_0x561fc0(0x27c)](_0x561fc0(0x273))||_0x1a03f7 instanceof Error&&_0x1a03f7[_0x561fc0(0x201)]===_0x561fc0(0x211);return reportMorphError({'error_message':_0x463b4c,'error_type':_0x536775?_0x561fc0(0x211):_0x1a03f7 instanceof Error?_0x1a03f7[_0x561fc0(0x290)][_0x561fc0(0x201)]:_0x561fc0(0x1ca),'context':{'tool':'warpgrep_codebase_search','repo_path':_0x325cc6[_0x561fc0(0x274)]['repo_path'],'query':_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x296)],'model':_0x561fc0(0x24b),'is_timeout':_0x536775,'exception_phase':_0x561fc0(0x285),'request_content':{'query':_0x325cc6[_0x561fc0(0x274)]['search_string'],'repo_path':_0x325cc6[_0x561fc0(0x274)][_0x561fc0(0x240)],'repoRoot':a0_0x44baea[_0x561fc0(0x298)](_0x325cc6[_0x561fc0(0x274)]['repo_path']),'model':_0x561fc0(0x24b)}},'stack_trace':_0x1a03f7 instanceof Error?_0x1a03f7['stack']:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':_0x561fc0(0x1db),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x463b4c}],'isError':![]};}}case _0x561fc0(0x279):{const _0x4e6bef=CodebaseSearchArgsSchema[_0x561fc0(0x23e)](_0x17500f);if(!_0x4e6bef[_0x561fc0(0x1a3)])return{'content':[{'type':'text','text':_0x561fc0(0x270)+_0x4e6bef[_0x561fc0(0x1a5)]}],'isError':!![]};try{const _0x5bbb9=MORPH_API_KEY;if(!_0x5bbb9)throw new Error(_0x561fc0(0x1ae));const _0x1f1c72=_0x4e6bef['data'][_0x561fc0(0x1e0)],_0x4f67fd=await executeCodebaseSearch({'query':_0x4e6bef[_0x561fc0(0x274)]['query'],'target_directories':_0x1f1c72,'limit':_0x4e6bef['data']['limit']},{'apiKey':_0x5bbb9,'repoId':_0x4e6bef[_0x561fc0(0x274)][_0x561fc0(0x219)],'branch':_0x4e6bef[_0x561fc0(0x274)]['branch'],'commitHash':_0x4e6bef['data']['commitHash'],'debug':![]});if(!_0x4f67fd[_0x561fc0(0x1a3)])return{'content':[{'type':_0x561fc0(0x1db),'text':_0x561fc0(0x1c1)+_0x4f67fd[_0x561fc0(0x1a5)]}],'isError':!![]};const _0x421789=_0x4f67fd[_0x561fc0(0x1b8)][_0x561fc0(0x1d1)]===0x0?_0x561fc0(0x289)+_0x4e6bef[_0x561fc0(0x274)][_0x561fc0(0x233)]+'\x22':_0x561fc0(0x25d)+_0x4f67fd['results']['length']+_0x561fc0(0x28c)+_0x4f67fd[_0x561fc0(0x218)][_0x561fc0(0x299)]+_0x561fc0(0x1f1)+_0x4f67fd[_0x561fc0(0x1b8)]['map']((_0x33520e,_0x1485a2)=>_0x1485a2+0x1+'.\x20'+_0x33520e[_0x561fc0(0x281)]+'\x20('+(_0x33520e[_0x561fc0(0x28d)]*0x64)['toFixed'](0x1)+_0x561fc0(0x1b2)+(_0x561fc0(0x25c)+_0x33520e[_0x561fc0(0x1dc)]+'-'+_0x33520e[_0x561fc0(0x1f8)]+'\x0a')+(_0x561fc0(0x286)+_0x33520e[_0x561fc0(0x241)][_0x561fc0(0x23b)](0x0,0xc8)+(_0x33520e[_0x561fc0(0x241)][_0x561fc0(0x1d1)]>0xc8?_0x561fc0(0x26d):'')+'\x0a'))['join']('\x0a');return{'content':[{'type':_0x561fc0(0x1db),'text':_0x421789}]};}catch(_0x4f9195){const _0x227a24=_0x4f9195 instanceof Error?_0x4f9195[_0x561fc0(0x27e)]:String(_0x4f9195);return reportMorphError({'error_message':_0x227a24,'error_type':_0x4f9195 instanceof Error?_0x4f9195[_0x561fc0(0x290)]['name']:_0x561fc0(0x1ca),'context':{'tool':_0x561fc0(0x279),'query':_0x4e6bef[_0x561fc0(0x274)]['query'],'repo_id':_0x4e6bef[_0x561fc0(0x274)]['repoId'],'target_directories':_0x4e6bef[_0x561fc0(0x274)]['targetDirectories']},'stack_trace':_0x4f9195 instanceof Error?_0x4f9195[_0x561fc0(0x22e)]:undefined,'source':_0x561fc0(0x229)})['catch'](()=>{}),{'content':[{'type':_0x561fc0(0x1db),'text':'Error:\x20'+_0x227a24}],'isError':!![]};}}default:throw new Error(_0x561fc0(0x1fd)+_0x252cb9);}}catch(_0x4e4c1e){const _0x59c911=_0x4e4c1e instanceof Error?_0x4e4c1e[_0x561fc0(0x27e)]:String(_0x4e4c1e);return reportMorphError({'error_message':_0x59c911,'error_type':_0x4e4c1e instanceof Error?_0x4e4c1e[_0x561fc0(0x290)][_0x561fc0(0x201)]:'UnknownError','context':{'tool':name,'arguments':args?JSON[_0x561fc0(0x1c4)](args)[_0x561fc0(0x23b)](0x0,0x1f4):undefined,'mcp_server_version':_0x561fc0(0x1d6)},'stack_trace':_0x4e4c1e instanceof Error?_0x4e4c1e[_0x561fc0(0x22e)]:undefined,'source':_0x561fc0(0x229)})[_0x561fc0(0x272)](()=>{}),{'content':[{'type':_0x561fc0(0x1db),'text':_0x561fc0(0x1d0)+_0x59c911}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x9699f0){const _0xa6f34d=a0_0x41a4db,_0x4c7739=await getValidRootDirectories(_0x9699f0);if(_0x4c7739[_0xa6f34d(0x1d1)]>0x0)allowedDirectories=[..._0x4c7739],console[_0xa6f34d(0x1a5)](_0xa6f34d(0x1e1)+_0x4c7739[_0xa6f34d(0x1d1)]+'\x20valid\x20directories');else{console[_0xa6f34d(0x1a5)](_0xa6f34d(0x24f));if(ENABLE_WORKSPACE_MODE)try{const _0x3fb03d=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3fb03d&&(allowedDirectories=[_0x3fb03d],console[_0xa6f34d(0x1a5)]('Fallback:\x20Using\x20workspace\x20root\x20'+_0x3fb03d));}catch(_0x1a8383){console[_0xa6f34d(0x1a5)](_0xa6f34d(0x284)+_0x1a8383);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x5d8819=a0_0x41a4db;try{const _0x1fed5d=await server[_0x5d8819(0x1b4)]();_0x1fed5d&&'roots'in _0x1fed5d&&await updateAllowedDirectoriesFromRoots(_0x1fed5d[_0x5d8819(0x1e9)]);}catch(_0x64e74c){console[_0x5d8819(0x1a5)](_0x5d8819(0x25e),_0x64e74c instanceof Error?_0x64e74c['message']:String(_0x64e74c));}}),server[a0_0x41a4db(0x210)]=async()=>{const _0x30b2c5=a0_0x41a4db,_0x44ff19=server[_0x30b2c5(0x1df)]();if(_0x44ff19?.[_0x30b2c5(0x1e9)])try{const _0xd2c0f1=await server[_0x30b2c5(0x1b4)]();_0xd2c0f1&&_0x30b2c5(0x1e9)in _0xd2c0f1?await updateAllowedDirectoriesFromRoots(_0xd2c0f1['roots']):console['error'](_0x30b2c5(0x202));}catch(_0x331c65){console[_0x30b2c5(0x1a5)](_0x30b2c5(0x257),_0x331c65 instanceof Error?_0x331c65[_0x30b2c5(0x27e)]:String(_0x331c65));}else{if(allowedDirectories[_0x30b2c5(0x1d1)]>0x0)console[_0x30b2c5(0x1a5)](_0x30b2c5(0x1a2),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x30b2c5(0x1a5)](_0x30b2c5(0x1c8));else throw new Error(_0x30b2c5(0x297));}}};async function runServer(){const _0x55f842=a0_0x41a4db,_0x3225dc=new StdioServerTransport();await server[_0x55f842(0x1c3)](_0x3225dc),console[_0x55f842(0x1a5)](_0x55f842(0x25f)),allowedDirectories[_0x55f842(0x1d1)]===0x0&&console['error'](_0x55f842(0x264));}runServer()[a0_0x41a4db(0x272)](_0xab36f1=>{const _0x2dd675=a0_0x41a4db;console['error'](_0x2dd675(0x20c),_0xab36f1),process[_0x2dd675(0x212)](0x1);});
|
|
2
|
+
const a0_0x5da547=a0_0xe85e;(function(_0x42d32a,_0x5779c6){const _0x26dc5e=a0_0xe85e,_0x585983=_0x42d32a();while(!![]){try{const _0x58fe86=-parseInt(_0x26dc5e(0x147))/0x1+parseInt(_0x26dc5e(0x150))/0x2*(-parseInt(_0x26dc5e(0xc3))/0x3)+parseInt(_0x26dc5e(0x17f))/0x4*(parseInt(_0x26dc5e(0x188))/0x5)+-parseInt(_0x26dc5e(0x157))/0x6+parseInt(_0x26dc5e(0x155))/0x7+-parseInt(_0x26dc5e(0xf0))/0x8*(parseInt(_0x26dc5e(0x178))/0x9)+-parseInt(_0x26dc5e(0x16d))/0xa;if(_0x58fe86===_0x5779c6)break;else _0x585983['push'](_0x585983['shift']());}catch(_0x5d92de){_0x585983['push'](_0x585983['shift']());}}}(a0_0x3cc1,0x848e2));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_0x308614 from'fs/promises';import a0_0x38881a from'path';import a0_0xb75fa4 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_0x347fce from'axios';function fixPathRepetition(_0x480565){const _0x34c053=a0_0xe85e,_0x87eef9=_0x480565[_0x34c053(0x141)](a0_0x38881a[_0x34c053(0xc5)])[_0x34c053(0xb6)](Boolean);if(_0x87eef9[_0x34c053(0xe8)]<0x2)return null;for(let _0x2ed91e=Math[_0x34c053(0x169)](_0x87eef9[_0x34c053(0xe8)]/0x2);_0x2ed91e>=0x1;_0x2ed91e--){for(let _0x3c0b60=0x0;_0x3c0b60<=_0x87eef9[_0x34c053(0xe8)]-0x2*_0x2ed91e;_0x3c0b60++){const _0x246908=_0x87eef9[_0x34c053(0x11b)](_0x3c0b60,_0x3c0b60+_0x2ed91e),_0x19bd78=_0x87eef9[_0x34c053(0x11b)](_0x3c0b60+_0x2ed91e,_0x3c0b60+0x2*_0x2ed91e);if(_0x246908[_0x34c053(0xda)]((_0x1e10bf,_0x59f317)=>_0x1e10bf===_0x19bd78[_0x59f317])){const _0x2c5bdf=[..._0x87eef9['slice'](0x0,_0x3c0b60),..._0x87eef9['slice'](_0x3c0b60+_0x2ed91e)];return a0_0x38881a[_0x34c053(0xc5)]+_0x2c5bdf[_0x34c053(0x1a1)](a0_0x38881a['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x2c1e0d=a0_0xe85e;try{const _0x1752ba=require(_0x2c1e0d(0x165));return _0x1752ba[_0x2c1e0d(0x10c)]??_0x2c1e0d(0x1b6);}catch(_0x8c4230){return console[_0x2c1e0d(0x12c)](_0x2c1e0d(0x10b),_0x8c4230),'unknown';}}function printHelp(){const _0xf8c318=a0_0xe85e;console[_0xf8c318(0xcf)](_0xf8c318(0x1b0)+getPackageVersion()),console[_0xf8c318(0xcf)](_0xf8c318(0x108)),console[_0xf8c318(0xcf)](_0xf8c318(0x184)),console[_0xf8c318(0xcf)]('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0xf8c318(0xcf)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0xf8c318(0xcf)](_0xf8c318(0xba)),console[_0xf8c318(0xcf)](_0xf8c318(0xbd)),console[_0xf8c318(0xcf)](_0xf8c318(0x13f));}const cliArgs=process[a0_0x5da547(0xd0)][a0_0x5da547(0x11b)](0x2),VERSION_FLAGS=new Set([a0_0x5da547(0xbb),'-v','-V']),HELP_FLAGS=new Set([a0_0x5da547(0x182),'-h']);cliArgs[a0_0x5da547(0xef)](_0x364310=>VERSION_FLAGS[a0_0x5da547(0x194)](_0x364310))&&(console['log'](a0_0x5da547(0x1b0)+getPackageVersion()),process[a0_0x5da547(0xbe)](0x0));cliArgs[a0_0x5da547(0xef)](_0x5afaf8=>HELP_FLAGS[a0_0x5da547(0x194)](_0x5afaf8))&&(printHelp(),process[a0_0x5da547(0xbe)](0x0));const args=cliArgs[a0_0x5da547(0xb6)](_0x21b61f=>!VERSION_FLAGS[a0_0x5da547(0x194)](_0x21b61f)&&!HELP_FLAGS['has'](_0x21b61f)),ALL_TOOLS=['edit_file',a0_0x5da547(0x160),a0_0x5da547(0xc8)],DEFAULT_TOOLS=[a0_0x5da547(0xd2),a0_0x5da547(0x160)],ENABLED_TOOLS=process[a0_0x5da547(0x110)][a0_0x5da547(0x11e)]?process[a0_0x5da547(0x110)][a0_0x5da547(0x11e)]===a0_0x5da547(0x131)?ALL_TOOLS:process[a0_0x5da547(0x110)]['ENABLED_TOOLS']['split'](',')[a0_0x5da547(0xe3)](_0x44c011=>_0x44c011[a0_0x5da547(0xea)]()):DEFAULT_TOOLS;console['error']('Enabled\x20tools:\x20'+ENABLED_TOOLS['join'](',\x20'));const WORKSPACE_ROOT=process['env'][a0_0x5da547(0x14b)]||process[a0_0x5da547(0x110)][a0_0x5da547(0x19e)]||process[a0_0x5da547(0x123)](),ENABLE_WORKSPACE_MODE=process[a0_0x5da547(0x110)][a0_0x5da547(0x180)]!==a0_0x5da547(0xf2),MORPH_API_KEY=process[a0_0x5da547(0x110)][a0_0x5da547(0x183)],MORPH_API_URL=process['env'][a0_0x5da547(0x181)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x5da547(0x110)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x5da547(0x110)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5da547(0x13c)](a0_0x5da547(0x18e))&&!MORPH_API_KEY[a0_0x5da547(0x13c)](a0_0x5da547(0xf5))&&console[a0_0x5da547(0x12c)](a0_0x5da547(0xc7));async function reportMorphError(_0xf56bb){const _0x4baaae=a0_0x5da547;try{await a0_0x347fce[_0x4baaae(0x10e)](_0x4baaae(0x176),{..._0xf56bb,'timestamp':new Date()[_0x4baaae(0x17a)](),'source':_0xf56bb[_0x4baaae(0x114)]||_0x4baaae(0x1ae)},{'timeout':0x1388,'headers':{'Content-Type':_0x4baaae(0xfb),'Authorization':_0x4baaae(0x111)+MORPH_API_KEY}});}catch{}}function a0_0xe85e(_0x390261,_0x1b9a6f){_0x390261=_0x390261-0xb5;const _0x3cc105=a0_0x3cc1();let _0xe85e8d=_0x3cc105[_0x390261];return _0xe85e8d;}args[a0_0x5da547(0xe8)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console['error'](a0_0x5da547(0x175)),console[a0_0x5da547(0x12c)](a0_0x5da547(0x134)),console['error']('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),console[a0_0x5da547(0x12c)]('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),console[a0_0x5da547(0x12c)](a0_0x5da547(0x1b4)),console[a0_0x5da547(0x12c)]('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x4bd1a5){const _0x227e8d=a0_0x5da547;return a0_0x38881a[_0x227e8d(0x135)](_0x4bd1a5);}function expandHome(_0x34a3fe){const _0x3dac05=a0_0x5da547;if(_0x34a3fe[_0x3dac05(0x13c)]('~/')||_0x34a3fe==='~')return a0_0x38881a[_0x3dac05(0x1a1)](a0_0xb75fa4['homedir'](),_0x34a3fe[_0x3dac05(0x11b)](0x1));return _0x34a3fe;}let allowedDirectories=await Promise[a0_0x5da547(0x131)](args[a0_0x5da547(0xe3)](async _0x539eb6=>{const _0x3bb112=a0_0x5da547,_0x559541=expandHome(_0x539eb6),_0x5b8490=a0_0x38881a['resolve'](_0x559541);try{const _0x5f5de6=await a0_0x308614[_0x3bb112(0x127)](_0x5b8490);return normalizePath(_0x5f5de6);}catch(_0x91671c){return normalizePath(_0x5b8490);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5da547(0x1a8)](workspaceDir),console['error'](a0_0x5da547(0xc6)+workspaceDir+a0_0x5da547(0x118)));}catch(a0_0xec5237){console[a0_0x5da547(0x12c)](a0_0x5da547(0x1ab)+a0_0xec5237);}async function detectWorkspaceRoot(_0x4d8e6c){const _0x642fe5=a0_0x5da547;let _0x3e327c=a0_0x38881a[_0x642fe5(0xdf)](_0x4d8e6c);const _0x27d92b=[_0x642fe5(0xd8),_0x642fe5(0x16f),_0x642fe5(0x125),'Cargo.toml','pyproject.toml',_0x642fe5(0x129),_0x642fe5(0x115),_0x642fe5(0x15f),_0x642fe5(0x148)];while(_0x3e327c!==a0_0x38881a[_0x642fe5(0x1b2)](_0x3e327c)){for(const _0x2fcb77 of _0x27d92b){const _0x44a5b5=a0_0x38881a[_0x642fe5(0x1a1)](_0x3e327c,_0x2fcb77);try{return await a0_0x308614['access'](_0x44a5b5),normalizePath(_0x3e327c);}catch{}}_0x3e327c=a0_0x38881a[_0x642fe5(0x1b2)](_0x3e327c);}return normalizePath(_0x4d8e6c);}await Promise[a0_0x5da547(0x131)](args['map'](async _0x5e33e3=>{const _0x4ed547=a0_0x5da547;try{const _0x34aa4a=await a0_0x308614[_0x4ed547(0x15b)](expandHome(_0x5e33e3));!_0x34aa4a[_0x4ed547(0xdd)]()&&(console['error'](_0x4ed547(0x144)+_0x5e33e3+_0x4ed547(0x19d)),process[_0x4ed547(0xbe)](0x1));}catch(_0x42e6ff){console['error']('Error\x20accessing\x20directory\x20'+_0x5e33e3+':',_0x42e6ff),process[_0x4ed547(0xbe)](0x1);}}));async function validatePath(_0x45bd92){const _0x200b26=a0_0x5da547,_0x5bd21d=expandHome(_0x45bd92),_0xce0e13=a0_0x38881a[_0x200b26(0xdf)](_0x5bd21d);try{const _0x2e294f=await a0_0x308614['realpath'](_0xce0e13);return _0x2e294f;}catch(_0x429763){if(_0x429763[_0x200b26(0xdc)]===_0x200b26(0x170)){const _0x4d42aa=a0_0x38881a[_0x200b26(0x1b2)](_0xce0e13);try{const _0x4e6328=await a0_0x308614[_0x200b26(0x127)](_0x4d42aa);return a0_0x38881a[_0x200b26(0x1a1)](_0x4e6328,a0_0x38881a['basename'](_0xce0e13));}catch{throw new Error(_0x200b26(0x16e)+_0x4d42aa);}}throw _0x429763;}}const MorphEditFileArgsSchema=z[a0_0x5da547(0x102)]({'path':z['string'](),'code_edit':z[a0_0x5da547(0x186)]()[a0_0x5da547(0xe4)](a0_0x5da547(0x191)),'instruction':z[a0_0x5da547(0x186)]()[a0_0x5da547(0xe4)](a0_0x5da547(0x14a)),'dryRun':z[a0_0x5da547(0xe0)]()['default'](![])[a0_0x5da547(0xe4)]('Preview\x20changes\x20without\x20applying\x20them.')}),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x5da547(0x186)]()['describe']('Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for'),'repo_path':z[a0_0x5da547(0x186)]()['describe']('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos')}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0x5da547(0x186)]()[a0_0x5da547(0xe4)](a0_0x5da547(0x106)),'repoId':z['string']()[a0_0x5da547(0xe4)](a0_0x5da547(0x101)),'branch':z[a0_0x5da547(0x186)]()[a0_0x5da547(0x120)]()[a0_0x5da547(0xe4)](a0_0x5da547(0xd1)),'commitHash':z[a0_0x5da547(0x186)]()[a0_0x5da547(0x120)]()[a0_0x5da547(0xe4)](a0_0x5da547(0xe1)),'targetDirectories':z[a0_0x5da547(0x197)](z[a0_0x5da547(0x186)]())[a0_0x5da547(0xc2)]([])[a0_0x5da547(0xe4)]('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z[a0_0x5da547(0x122)]()['optional']()[a0_0x5da547(0xc2)](0xa)['describe'](a0_0x5da547(0x190))}),server=new Server({'name':a0_0x5da547(0x1a7),'version':a0_0x5da547(0x171)},{'capabilities':{'tools':{}}});server[a0_0x5da547(0x16b)](ListToolsRequestSchema,async()=>{const _0x17c5dc=a0_0x5da547,_0x164c30=[{'name':'edit_file','description':_0x17c5dc(0x136)+_0x17c5dc(0x163)+_0x17c5dc(0x1ac)+_0x17c5dc(0x13d)+_0x17c5dc(0xd9)+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x17c5dc(0x18c)+_0x17c5dc(0x12a)+_0x17c5dc(0x13b)+_0x17c5dc(0x105)+_0x17c5dc(0x12d)+_0x17c5dc(0xf1)+_0x17c5dc(0x112)+_0x17c5dc(0x119)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x17c5dc(0x161)+_0x17c5dc(0x166)+_0x17c5dc(0x143)+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x17c5dc(0x17e)+_0x17c5dc(0x117)+_0x17c5dc(0x173)+_0x17c5dc(0x168),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x17c5dc(0x160),'description':_0x17c5dc(0xd7)+_0x17c5dc(0x16c)+'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'+_0x17c5dc(0x139)+_0x17c5dc(0x158)+_0x17c5dc(0x1a4)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':'codebase_search','description':_0x17c5dc(0xfa)+_0x17c5dc(0x153)+'🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a'+'Benefits:\x0a'+'-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a'+_0x17c5dc(0x104)+_0x17c5dc(0x1b3)+'-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a'+_0x17c5dc(0x162)+_0x17c5dc(0xb8)+_0x17c5dc(0x100),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x1cde05=_0x164c30[_0x17c5dc(0xb6)](_0x2f8672=>{const _0x362335=_0x17c5dc;if(!ENABLED_TOOLS['includes'](_0x2f8672[_0x362335(0xbf)]))return![];if(_0x362335(0xf4)in _0x2f8672&&_0x2f8672[_0x362335(0xf4)]&&!MORPH_API_KEY)return console[_0x362335(0x12c)]('Warning:\x20'+_0x2f8672[_0x362335(0xbf)]+_0x362335(0x145)),![];return!![];});return{'tools':_0x1cde05[_0x17c5dc(0xe3)](_0x43702c=>({'name':_0x43702c['name'],'description':_0x43702c[_0x17c5dc(0x187)],'inputSchema':_0x43702c[_0x17c5dc(0x14c)]}))};}),server[a0_0x5da547(0x16b)](CallToolRequestSchema,async _0x5e500b=>{const _0x1573ca=a0_0x5da547;try{const {name:_0x490d81,arguments:_0x501597}=_0x5e500b['params'];switch(_0x490d81){case _0x1573ca(0xd2):{const _0xa095a1=MorphEditFileArgsSchema[_0x1573ca(0xf8)](_0x501597);if(!_0xa095a1['success'])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0xa095a1[_0x1573ca(0x12c)]);const _0x3b3a71=await validatePath(_0xa095a1[_0x1573ca(0x159)][_0x1573ca(0x19c)]);let _0x38f6d4=null,_0x47c651=!![],_0x3fdf85=null;try{_0x38f6d4=await a0_0x308614['readFile'](_0x3b3a71,_0x1573ca(0x10a));}catch(_0x1718bb){const _0x2c7780=_0x1718bb[_0x1573ca(0xdc)];_0x2c7780===_0x1573ca(0x170)?(_0x47c651=![],_0x38f6d4=''):(_0x3fdf85=_0x1573ca(0x149)+(_0x2c7780||_0x1573ca(0x1b6))+_0x1573ca(0x17b)+(_0x1718bb instanceof Error?_0x1718bb[_0x1573ca(0xed)]:String(_0x1718bb)),console[_0x1573ca(0x12c)](_0x1573ca(0xfc)+_0x3fdf85));}try{const _0x8ff165=MORPH_API_KEY;if(!_0x8ff165)throw new Error(_0x1573ca(0x18f));const _0x495ebf=a0_0x38881a[_0x1573ca(0x1b2)](_0x3b3a71),_0x2decd6=a0_0x38881a[_0x1573ca(0x196)](_0x3b3a71),_0x9c5025=await executeEditFile({'target_filepath':_0x2decd6,'code_edit':_0xa095a1[_0x1573ca(0x159)]['code_edit'],'instructions':_0xa095a1[_0x1573ca(0x159)][_0x1573ca(0x18b)]},{'morphApiKey':_0x8ff165,'morphApiUrl':MORPH_API_URL,'baseDir':_0x495ebf,'autoWrite':!_0xa095a1[_0x1573ca(0x159)]['dryRun'],'generateUdiff':![],'debug':![]});if(!_0x9c5025[_0x1573ca(0x198)])throw new Error(_0x9c5025[_0x1573ca(0x12c)]||_0x1573ca(0x152));const _0x3479b5=_0x9c5025[_0x1573ca(0x1a2)],_0x4a351d='added\x20'+_0x3479b5[_0x1573ca(0x1af)]+_0x1573ca(0xf6)+_0x3479b5[_0x1573ca(0x18d)]+_0x1573ca(0xfe)+_0x3479b5[_0x1573ca(0x10d)];if(_0xa095a1['data'][_0x1573ca(0x19f)])return{'content':[{'type':_0x1573ca(0x14f),'text':'Morph\x20Edit\x20Preview'+(_0x47c651?'':_0x1573ca(0xe9))+':\x20'+_0xa095a1[_0x1573ca(0x159)]['instruction']+'.\x20Changes:\x20'+_0x4a351d+_0x1573ca(0x126)+_0xa095a1['data'][_0x1573ca(0x19c)]+'.'}]};return{'content':[{'type':_0x1573ca(0x14f),'text':_0x1573ca(0x1b5)+(_0x47c651?_0x1573ca(0x130):'Created\x20File')+':\x20'+_0xa095a1[_0x1573ca(0x159)][_0x1573ca(0x18b)]+_0x1573ca(0x185)+_0x4a351d+_0x1573ca(0x126)+_0xa095a1[_0x1573ca(0x159)][_0x1573ca(0x19c)]+'.'}]};}catch(_0x1fe350){const _0x42b1b8=_0x1fe350 instanceof Error?_0x1fe350[_0x1573ca(0xed)]:String(_0x1fe350);return reportMorphError({'error_message':_0x42b1b8,'error_type':_0x1fe350 instanceof Error?_0x1fe350[_0x1573ca(0x107)][_0x1573ca(0xbf)]:'UnknownError','context':{'tool':_0x1573ca(0xd2),'file_path':_0xa095a1[_0x1573ca(0x159)][_0x1573ca(0x19c)],'validated_path':_0x3b3a71,'instruction':_0xa095a1[_0x1573ca(0x159)]['instruction'],'model':_0x1573ca(0x17c),'dry_run':_0xa095a1[_0x1573ca(0x159)][_0x1573ca(0x19f)],'file_exists':_0x47c651,'file_read_error':_0x3fdf85,'file_readable':_0x38f6d4!==null,'request_content':{'path':_0xa095a1[_0x1573ca(0x159)][_0x1573ca(0x19c)],'code_edit':_0xa095a1[_0x1573ca(0x159)][_0x1573ca(0x10f)],'instruction':_0xa095a1[_0x1573ca(0x159)][_0x1573ca(0x18b)],'original_code':_0x38f6d4!==null?_0x38f6d4['length']>0xc350?_0x38f6d4[_0x1573ca(0xdb)](0x0,0xc350)+_0x1573ca(0x1ad)+_0x38f6d4[_0x1573ca(0xe8)]+_0x1573ca(0x199):_0x38f6d4:_0x1573ca(0xcd)+(_0x3fdf85||_0x1573ca(0x17d))+']','original_code_length':_0x38f6d4?.[_0x1573ca(0xe8)]??0x0,'model':_0x1573ca(0x17c),'dry_run':_0xa095a1[_0x1573ca(0x159)][_0x1573ca(0x19f)]}},'stack_trace':_0x1fe350 instanceof Error?_0x1fe350[_0x1573ca(0x14d)]:undefined,'source':'mcp-filesystem'})[_0x1573ca(0xd4)](()=>{}),{'content':[{'type':_0x1573ca(0x14f),'text':_0x1573ca(0xe2)+_0x42b1b8}],'isError':!![]};}}case _0x1573ca(0x160):{const _0x469ded=WarpGrepArgsSchema['safeParse'](_0x501597);if(!_0x469ded[_0x1573ca(0x198)])return{'content':[{'type':_0x1573ca(0x14f),'text':_0x1573ca(0x12b)+_0x469ded['error']}],'isError':!![]};const _0x26e45f=_0x59e2b5=>{const _0x34785c=_0x1573ca,_0x25f773=[];for(const _0xf23203 of _0x59e2b5||[]){const _0x5c680a=_0xf23203['role'],_0x4ff24e=_0xf23203['content'];if(_0x5c680a===_0x34785c(0xb5)&&_0x4ff24e){const _0x199f82=_0x4ff24e[_0x34785c(0x141)]('\x0a')[_0x34785c(0xb6)](_0x5d62b5=>_0x5d62b5[_0x34785c(0xea)]());for(const _0x23fb84 of _0x199f82){const _0x1628f8=_0x23fb84[_0x34785c(0x192)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x1628f8){_0x25f773[_0x34785c(0x1a8)](_0x34785c(0x116)+_0x1628f8[0x1]+'\x27\x20'+_0x1628f8[0x2]);continue;}const _0x23e241=_0x23fb84['match'](/^read\s+(.+)$/);if(_0x23e241){_0x25f773['push'](_0x34785c(0xd5)+_0x23e241[0x1]);continue;}const _0x55ce6a=_0x23fb84[_0x34785c(0x192)](/^list_directory\s+(.+)$/);if(_0x55ce6a){_0x25f773[_0x34785c(0x1a8)](_0x34785c(0x16a)+_0x55ce6a[0x1]);continue;}}}}return _0x25f773;};try{const _0x4f6f09=a0_0x38881a[_0x1573ca(0xdf)](_0x469ded['data'][_0x1573ca(0xb9)]),_0x4da50b=new LocalRipgrepProvider(_0x4f6f09),_0x1dd406=await runWarpGrep({'query':_0x469ded[_0x1573ca(0x159)][_0x1573ca(0x137)],'repoRoot':_0x4f6f09,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x4da50b});let _0x5c9e26='';if(_0x1dd406[_0x1573ca(0xf7)]==='completed'&&_0x1dd406[_0x1573ca(0xce)]?.[_0x1573ca(0x177)]?.[_0x1573ca(0x154)]){const _0x19632a=_0x1dd406['finish'][_0x1573ca(0x177)][_0x1573ca(0x154)],_0x27b2ab=[],_0x564de3=[_0x1573ca(0x128)];for(const _0x1f732c of _0x1dd406[_0x1573ca(0x18a)]){const _0x36de13=_0x1f732c[_0x1573ca(0x19b)],_0x433a7d=_0x1f732c[_0x1573ca(0x179)];if(_0x36de13===_0x1573ca(0xb5)&&_0x433a7d){const _0x5b9129=_0x433a7d['split']('\x0a')[_0x1573ca(0xb6)](_0x579cb1=>_0x579cb1['trim']());for(const _0x328b42 of _0x5b9129){const _0x538aa8=_0x328b42[_0x1573ca(0x192)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x538aa8){_0x564de3[_0x1573ca(0x1a8)](_0x1573ca(0x195)+_0x538aa8[0x1]+_0x1573ca(0xee)+_0x538aa8[0x2]+'`');continue;}const _0x2b753e=_0x328b42[_0x1573ca(0x192)](/^read\s+(.+)$/);if(_0x2b753e){_0x564de3[_0x1573ca(0x1a8)]('-\x20Read\x20file\x20`'+_0x2b753e[0x1]+'`');continue;}const _0xbb0120=_0x328b42[_0x1573ca(0x192)](/^list_directory\s+(.+)$/);if(_0xbb0120){_0x564de3[_0x1573ca(0x1a8)]('-\x20Listed\x20directory\x20`'+_0xbb0120[0x1]+'`');continue;}}}}_0x27b2ab[_0x1573ca(0x1a8)](_0x564de3[_0x1573ca(0x1a1)]('\x0a'));const _0x1143f9=['','Relevant\x20context\x20found:'];for(const _0x3fd07c of _0x19632a){if(_0x3fd07c['lines']==='*')_0x1143f9[_0x1573ca(0x1a8)]('-\x20'+_0x3fd07c[_0x1573ca(0x19c)]+':*');else{if(Array[_0x1573ca(0x146)](_0x3fd07c[_0x1573ca(0x138)])){const _0x27af79=_0x3fd07c[_0x1573ca(0x138)][_0x1573ca(0xe3)](([_0xd82815,_0x1835b9])=>{if(_0xd82815===_0x1835b9)return''+_0xd82815;return _0xd82815+'-'+_0x1835b9;});_0x1143f9[_0x1573ca(0x1a8)]('-\x20'+_0x3fd07c[_0x1573ca(0x19c)]+':'+_0x27af79[_0x1573ca(0x1a1)](','));}else _0x1143f9[_0x1573ca(0x1a8)]('-\x20'+_0x3fd07c[_0x1573ca(0x19c)]+':*');}}_0x1143f9[_0x1573ca(0x1a8)](''),_0x27b2ab[_0x1573ca(0x1a8)](_0x1143f9[_0x1573ca(0x1a1)]('\x0a')),_0x27b2ab['push']('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x3dd02e=[];for(const _0x4d8f9f of _0x19632a){let _0x43e2a9=a0_0x38881a['resolve'](_0x469ded['data'][_0x1573ca(0xb9)],_0x4d8f9f[_0x1573ca(0x19c)]),_0x301212=null,_0x52e209=null;try{_0x301212=await a0_0x308614[_0x1573ca(0x1a0)](_0x43e2a9,{'encoding':_0x1573ca(0x10a)});}catch(_0x55af03){const _0x47c9f4=fixPathRepetition(_0x43e2a9);if(_0x47c9f4)try{_0x301212=await a0_0x308614['readFile'](_0x47c9f4,{'encoding':_0x1573ca(0x10a)}),_0x43e2a9=_0x47c9f4;}catch{_0x52e209=_0x55af03 instanceof Error?_0x55af03:new Error(String(_0x55af03));}else _0x52e209=_0x55af03 instanceof Error?_0x55af03:new Error(String(_0x55af03));}if(_0x301212!==null){const _0x3303e1=_0x301212[_0x1573ca(0x141)](/\r?\n/),_0x3a5a5d=[_0x1573ca(0x11d)+_0x4d8f9f['path']+'\x22>'];if(_0x4d8f9f[_0x1573ca(0x138)]==='*'||!Array[_0x1573ca(0x146)](_0x4d8f9f[_0x1573ca(0x138)]))for(let _0x45de9c=0x1;_0x45de9c<=_0x3303e1[_0x1573ca(0xe8)];_0x45de9c++){const _0x3dd453=_0x3303e1[_0x45de9c-0x1];_0x3a5a5d[_0x1573ca(0x1a8)](_0x45de9c+'|\x20'+_0x3dd453);}else for(const [_0x2d5ad7,_0x42d4bf]of _0x4d8f9f[_0x1573ca(0x138)]){_0x3a5a5d[_0x1573ca(0xe8)]>0x1&&_0x3a5a5d[_0x1573ca(0x1a8)]('');for(let _0x3bf6e6=_0x2d5ad7;_0x3bf6e6<=_0x42d4bf&&_0x3bf6e6<=_0x3303e1['length'];_0x3bf6e6++){const _0x34bf91=_0x3303e1[_0x3bf6e6-0x1];_0x3a5a5d[_0x1573ca(0x1a8)](_0x3bf6e6+'|\x20'+_0x34bf91);}}_0x3a5a5d[_0x1573ca(0x1a8)](_0x1573ca(0x13e)),_0x3dd02e[_0x1573ca(0x1a8)](_0x3a5a5d[_0x1573ca(0x1a1)]('\x0a'));}else _0x3dd02e['push'](_0x1573ca(0x11d)+_0x4d8f9f[_0x1573ca(0x19c)]+_0x1573ca(0x11c)+(_0x52e209?.[_0x1573ca(0xed)]||'Unknown\x20error')+_0x1573ca(0xc1));}_0x27b2ab[_0x1573ca(0x1a8)](_0x3dd02e[_0x1573ca(0x1a1)]('\x0a\x0a')),_0x5c9e26=_0x27b2ab[_0x1573ca(0x1a1)]('\x0a');const _0x102edf=_0x1dd406[_0x1573ca(0xf9)]?.['filter'](_0x584c6d=>_0x584c6d[_0x1573ca(0xed)]?.[_0x1573ca(0x13c)](_0x1573ca(0xff)))||[];if(_0x102edf['length']>0x0){const _0x9403ee=_0x102edf['map'](_0x563876=>_0x563876[_0x1573ca(0xed)])[_0x1573ca(0x1a1)](';\x20');reportMorphError({'error_message':_0x9403ee,'error_type':_0x1573ca(0x12e),'context':{'tool':_0x1573ca(0x160),'repo_path':_0x469ded[_0x1573ca(0x159)][_0x1573ca(0xb9)],'query':_0x469ded['data']['search_string'],'model':_0x1573ca(0x1b8),'termination_reason':_0x1573ca(0xc9),'error_count':_0x102edf[_0x1573ca(0xe8)],'is_timeout':![],'timings':_0x1dd406[_0x1573ca(0x164)],'files_attempted':_0x19632a[_0x1573ca(0xe3)](_0x90e3d5=>({'path':_0x90e3d5['path'],'lines':_0x90e3d5['lines']})),'tool_calls':_0x26e45f(_0x1dd406[_0x1573ca(0x18a)]),'messages':_0x1dd406[_0x1573ca(0x18a)]?.[_0x1573ca(0xe3)](_0x5ce37d=>({'role':_0x5ce37d[_0x1573ca(0x19b)],'content':_0x5ce37d[_0x1573ca(0x179)]})),'request_content':{'query':_0x469ded[_0x1573ca(0x159)][_0x1573ca(0x137)],'repo_path':_0x469ded['data'][_0x1573ca(0xb9)],'repoRoot':a0_0x38881a['resolve'](_0x469ded[_0x1573ca(0x159)][_0x1573ca(0xb9)]),'model':'morph-warp-grep-v1-1111v0'}},'source':'mcp-filesystem'})[_0x1573ca(0xd4)](()=>{});}}else{if(_0x1dd406['terminationReason']==='terminated'&&_0x1dd406[_0x1573ca(0xf9)][_0x1573ca(0xe8)]>0x0){const _0x48ddca=_0x1dd406['errors']['map'](_0x3b1182=>_0x3b1182['message'])[_0x1573ca(0x1a1)](';\x20');_0x5c9e26=_0x1573ca(0x144)+_0x48ddca;const _0x3c2541=_0x48ddca['toLowerCase']()[_0x1573ca(0x1aa)](_0x1573ca(0xca))||_0x48ddca['toLowerCase']()['includes'](_0x1573ca(0xec))||_0x48ddca['toLowerCase']()[_0x1573ca(0x1aa)](_0x1573ca(0x15e)),_0x430176=_0x1dd406[_0x1573ca(0xce)]?.[_0x1573ca(0x177)]?.[_0x1573ca(0x154)],_0x597d97=_0x1dd406['errors'][0x0];reportMorphError({'error_message':_0x48ddca,'error_type':_0x3c2541?_0x1573ca(0xcc):_0x597d97?.[_0x1573ca(0x107)]?.[_0x1573ca(0xbf)]||'WarpGrepError','context':{'tool':'warpgrep_codebase_search','repo_path':_0x469ded[_0x1573ca(0x159)][_0x1573ca(0xb9)],'query':_0x469ded[_0x1573ca(0x159)][_0x1573ca(0x137)],'model':_0x1573ca(0x1b8),'termination_reason':_0x1dd406[_0x1573ca(0xf7)],'error_count':_0x1dd406[_0x1573ca(0xf9)][_0x1573ca(0xe8)],'is_timeout':_0x3c2541,'timings':_0x1dd406[_0x1573ca(0x164)],'files_attempted':_0x430176?.[_0x1573ca(0xe3)](_0x585ff0=>({'path':_0x585ff0[_0x1573ca(0x19c)],'lines':_0x585ff0[_0x1573ca(0x138)]})),'tool_calls':_0x26e45f(_0x1dd406['messages']),'messages':_0x1dd406[_0x1573ca(0x18a)]?.['map'](_0x38f90e=>({'role':_0x38f90e[_0x1573ca(0x19b)],'content':_0x38f90e[_0x1573ca(0x179)]})),'request_content':{'query':_0x469ded['data'][_0x1573ca(0x137)],'repo_path':_0x469ded[_0x1573ca(0x159)]['repo_path'],'repoRoot':a0_0x38881a[_0x1573ca(0xdf)](_0x469ded[_0x1573ca(0x159)][_0x1573ca(0xb9)]),'model':_0x1573ca(0x1b8)}},'stack_trace':_0x597d97?.['stack']||undefined,'source':_0x1573ca(0x1ae)})[_0x1573ca(0xd4)](()=>{});}else _0x5c9e26=_0x1573ca(0x1b7);}return{'content':[{'type':_0x1573ca(0x14f),'text':_0x5c9e26}]};}catch(_0x25d6bc){const _0x4b0620=_0x25d6bc instanceof Error?_0x25d6bc['message']:String(_0x25d6bc),_0x308f86=_0x4b0620[_0x1573ca(0x15d)]()[_0x1573ca(0x1aa)]('timeout')||_0x4b0620[_0x1573ca(0x15d)]()['includes']('timed\x20out')||_0x4b0620[_0x1573ca(0x15d)]()[_0x1573ca(0x1aa)]('etimedout')||_0x25d6bc instanceof Error&&_0x25d6bc['name']===_0x1573ca(0xcc);return reportMorphError({'error_message':_0x4b0620,'error_type':_0x308f86?'TimeoutError':_0x25d6bc instanceof Error?_0x25d6bc[_0x1573ca(0x107)][_0x1573ca(0xbf)]:_0x1573ca(0xbc),'context':{'tool':_0x1573ca(0x160),'repo_path':_0x469ded[_0x1573ca(0x159)][_0x1573ca(0xb9)],'query':_0x469ded[_0x1573ca(0x159)][_0x1573ca(0x137)],'model':_0x1573ca(0x1b8),'is_timeout':_0x308f86,'exception_phase':_0x1573ca(0x124),'request_content':{'query':_0x469ded[_0x1573ca(0x159)][_0x1573ca(0x137)],'repo_path':_0x469ded[_0x1573ca(0x159)][_0x1573ca(0xb9)],'repoRoot':a0_0x38881a['resolve'](_0x469ded[_0x1573ca(0x159)][_0x1573ca(0xb9)]),'model':_0x1573ca(0x1b8)}},'stack_trace':_0x25d6bc instanceof Error?_0x25d6bc[_0x1573ca(0x14d)]:undefined,'source':_0x1573ca(0x1ae)})[_0x1573ca(0xd4)](()=>{}),{'content':[{'type':_0x1573ca(0x14f),'text':_0x1573ca(0x13a)+_0x4b0620}],'isError':![]};}}case'codebase_search':{const _0x300285=CodebaseSearchArgsSchema[_0x1573ca(0xf8)](_0x501597);if(!_0x300285[_0x1573ca(0x198)])return{'content':[{'type':_0x1573ca(0x14f),'text':_0x1573ca(0x12b)+_0x300285[_0x1573ca(0x12c)]}],'isError':!![]};try{const _0x30608e=MORPH_API_KEY;if(!_0x30608e)throw new Error(_0x1573ca(0xd3));const _0x4d6e8e=_0x300285['data'][_0x1573ca(0x133)],_0xe4eb6=await executeCodebaseSearch({'query':_0x300285[_0x1573ca(0x159)][_0x1573ca(0x109)],'target_directories':_0x4d6e8e,'limit':_0x300285[_0x1573ca(0x159)][_0x1573ca(0x14e)]},{'apiKey':_0x30608e,'repoId':_0x300285[_0x1573ca(0x159)][_0x1573ca(0x12f)],'branch':_0x300285[_0x1573ca(0x159)][_0x1573ca(0xe6)],'commitHash':_0x300285[_0x1573ca(0x159)][_0x1573ca(0x15c)],'debug':![]});if(!_0xe4eb6[_0x1573ca(0x198)])return{'content':[{'type':'text','text':_0x1573ca(0x151)+_0xe4eb6[_0x1573ca(0x12c)]}],'isError':!![]};const _0x398984=_0xe4eb6[_0x1573ca(0xeb)][_0x1573ca(0xe8)]===0x0?_0x1573ca(0x1a3)+_0x300285[_0x1573ca(0x159)][_0x1573ca(0x109)]+'\x22':_0x1573ca(0xc4)+_0xe4eb6['results'][_0x1573ca(0xe8)]+_0x1573ca(0x193)+_0xe4eb6[_0x1573ca(0x172)][_0x1573ca(0xcb)]+_0x1573ca(0x1b1)+_0xe4eb6[_0x1573ca(0xeb)][_0x1573ca(0xe3)]((_0x254729,_0x3ef642)=>_0x3ef642+0x1+'.\x20'+_0x254729['filepath']+'\x20('+(_0x254729[_0x1573ca(0x15a)]*0x64)[_0x1573ca(0x189)](0x1)+'%\x20match)\x0a'+(_0x1573ca(0xb7)+_0x254729[_0x1573ca(0xf3)]+'-'+_0x254729[_0x1573ca(0x132)]+'\x0a')+(_0x1573ca(0xde)+_0x254729['content'][_0x1573ca(0xdb)](0x0,0xc8)+(_0x254729[_0x1573ca(0x179)][_0x1573ca(0xe8)]>0xc8?'...':'')+'\x0a'))[_0x1573ca(0x1a1)]('\x0a');return{'content':[{'type':'text','text':_0x398984}]};}catch(_0x5b464a){const _0x87e686=_0x5b464a instanceof Error?_0x5b464a[_0x1573ca(0xed)]:String(_0x5b464a);return reportMorphError({'error_message':_0x87e686,'error_type':_0x5b464a instanceof Error?_0x5b464a[_0x1573ca(0x107)][_0x1573ca(0xbf)]:_0x1573ca(0xbc),'context':{'tool':'codebase_search','query':_0x300285['data'][_0x1573ca(0x109)],'repo_id':_0x300285[_0x1573ca(0x159)][_0x1573ca(0x12f)],'target_directories':_0x300285['data'][_0x1573ca(0x133)]},'stack_trace':_0x5b464a instanceof Error?_0x5b464a[_0x1573ca(0x14d)]:undefined,'source':_0x1573ca(0x1ae)})['catch'](()=>{}),{'content':[{'type':_0x1573ca(0x14f),'text':_0x1573ca(0x144)+_0x87e686}],'isError':!![]};}}default:throw new Error(_0x1573ca(0xe7)+_0x490d81);}}catch(_0x50808d){const _0x2e0b93=_0x50808d instanceof Error?_0x50808d['message']:String(_0x50808d);return reportMorphError({'error_message':_0x2e0b93,'error_type':_0x50808d instanceof Error?_0x50808d[_0x1573ca(0x107)][_0x1573ca(0xbf)]:_0x1573ca(0xbc),'context':{'tool':name,'arguments':args?JSON[_0x1573ca(0x174)](args)[_0x1573ca(0xdb)](0x0,0x1f4):undefined,'mcp_server_version':_0x1573ca(0x171)},'stack_trace':_0x50808d instanceof Error?_0x50808d[_0x1573ca(0x14d)]:undefined,'source':_0x1573ca(0x1ae)})[_0x1573ca(0xd4)](()=>{}),{'content':[{'type':_0x1573ca(0x14f),'text':_0x1573ca(0x144)+_0x2e0b93}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x5a39e4){const _0x2feded=a0_0x5da547,_0x493343=await getValidRootDirectories(_0x5a39e4);if(_0x493343[_0x2feded(0xe8)]>0x0)allowedDirectories=[..._0x493343],console[_0x2feded(0x12c)](_0x2feded(0x140)+_0x493343['length']+_0x2feded(0x142));else{console[_0x2feded(0x12c)]('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x17e3ad=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x17e3ad&&(allowedDirectories=[_0x17e3ad],console[_0x2feded(0x12c)]('Fallback:\x20Using\x20workspace\x20root\x20'+_0x17e3ad));}catch(_0x4cf3a6){console[_0x2feded(0x12c)](_0x2feded(0xc0)+_0x4cf3a6);}}}function a0_0x3cc1(){const _0x4cadf5=['morph-v3-fast','unknown\x20error','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','1261284CPdmsH','ENABLE_WORKSPACE_MODE','MORPH_API_URL','--help','MORPH_API_KEY','\x0aOptions:','.\x20Changes:\x20','string','description','15QJVACa','toFixed','messages','instruction','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','linesRemoved','sk-','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Max\x20results\x20to\x20return','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','match','\x20results\x20in\x20','has','-\x20Grepped\x20\x27','basename','array','success','\x20chars)','Failed\x20to\x20request\x20roots\x20from\x20client:','role','path','\x20is\x20not\x20a\x20directory','PWD','dryRun','readFile','join','changes','No\x20results\x20found\x20for\x20query:\x20\x22','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','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.','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','morph-mcp','push','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','includes','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','\x0a...\x20(truncated,\x20total:\x20','mcp-filesystem','linesAdded','@morphllm/morphmcp\x20','ms:\x0a\x0a','dirname','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Morph\x20Edit\x20','unknown','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','morph-warp-grep-v1-1111v0','assistant','filter','\x20\x20\x20Lines\x20','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','repo_path','\x0aExamples:','--version','UnknownError','\x20\x20morph-mcp','exit','name','Warning:\x20Workspace\x20fallback\x20failed:\x20','\x0a</file>','default','1987179yvsKDO','Found\x20','sep','Workspace\x20mode\x20enabled:\x20Using\x20','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','codebase_search','completed_with_file_errors','timeout','searchTimeMs','TimeoutError','[could\x20not\x20read\x20file:\x20','finish','log','argv','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','edit_file','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','catch','read\x20','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','.git','Benefits:\x0a','every','substring','code','isDirectory','\x20\x20\x20','resolve','boolean','Specific\x20commit\x20hash\x20to\x20search','❌\x20Morph\x20Edit\x20Failed:\x20','map','describe','getClientCapabilities','branch','Unknown\x20tool:\x20','length','\x20(new\x20file)','trim','results','timed\x20out','message','\x27\x20in\x20`','some','2800SlvoLp','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','false','startLine','requiresApiKey','morph-',',\x20removed\x20','terminationReason','safeParse','errors','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','application/json','Warning:\x20','listRoots',',\x20modified\x20','File\x20read\x20error:','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','Repository\x20identifier','object','oninitialized','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','Natural\x20language\x20query\x20to\x20search\x20for\x20code','constructor','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','query','utf-8','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','version','linesModified','post','code_edit','env','Bearer\x20','For\x20deletions:\x0a','connect','source','.cursor','grep\x20\x27','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','\x20as\x20allowed\x20directory','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','setNotificationHandler','slice','\x22>\x0aError\x20reading\x20file:\x20','<file\x20path=\x22','ENABLED_TOOLS','Fatal\x20error\x20running\x20server:','optional','roots','number','cwd','runWarpGrep_call','package.json','.\x20Path:\x20','realpath','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','go.mod','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Invalid\x20arguments:\x20','error','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','FileReadError','repoId','Applied','all','endLine','targetDirectories','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','normalize','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','search_string','lines','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','Error\x20running\x20fast\x20context\x20search:\x20','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','startsWith','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','</file>','\x20\x20morph-mcp\x20~/repo','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','split','\x20valid\x20directories','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Error:\x20','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','isArray','365025wojwZJ','composer.json','Failed\x20to\x20read\x20file:\x20','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','WORKSPACE_ROOT','inputSchema','stack','limit','text','2GxeKFw','Search\x20failed:\x20','Morph\x20FastApply\x20failed\x20without\x20error\x20message','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','files','5978483EMeKce','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','34398dXwrHw','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','data','rerankScore','stat','commitHash','toLowerCase','etimedout','tsconfig.json','warpgrep_codebase_search','Rules:\x0a','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','timings','../package.json','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','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','floor','list_directory\x20','setRequestHandler','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','1973350dWsUCG','Parent\x20directory\x20does\x20not\x20exist:\x20','.vscode','ENOENT','0.2.0','stats','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','stringify','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','https://morphllm.com/api/error-report','metadata','684iDRcEC','content','toISOString','\x20-\x20'];a0_0x3cc1=function(){return _0x4cadf5;};return a0_0x3cc1();}server[a0_0x5da547(0x11a)](RootsListChangedNotificationSchema,async()=>{const _0x57b251=a0_0x5da547;try{const _0x87f67=await server['listRoots']();_0x87f67&&_0x57b251(0x121)in _0x87f67&&await updateAllowedDirectoriesFromRoots(_0x87f67[_0x57b251(0x121)]);}catch(_0x39ced1){console[_0x57b251(0x12c)](_0x57b251(0x19a),_0x39ced1 instanceof Error?_0x39ced1[_0x57b251(0xed)]:String(_0x39ced1));}}),server[a0_0x5da547(0x103)]=async()=>{const _0x58d1eb=a0_0x5da547,_0x2e4226=server[_0x58d1eb(0xe5)]();if(_0x2e4226?.['roots'])try{const _0x2c7a9b=await server[_0x58d1eb(0xfd)]();_0x2c7a9b&&_0x58d1eb(0x121)in _0x2c7a9b?await updateAllowedDirectoriesFromRoots(_0x2c7a9b[_0x58d1eb(0x121)]):console[_0x58d1eb(0x12c)](_0x58d1eb(0x1a6));}catch(_0x47a228){console['error'](_0x58d1eb(0xd6),_0x47a228 instanceof Error?_0x47a228[_0x58d1eb(0xed)]:String(_0x47a228));}else{if(allowedDirectories['length']>0x0)console['error'](_0x58d1eb(0x1a9),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x58d1eb(0x12c)](_0x58d1eb(0x156));else throw new Error(_0x58d1eb(0x1a5));}}};async function runServer(){const _0x3a1b15=a0_0x5da547,_0x3003f9=new StdioServerTransport();await server[_0x3a1b15(0x113)](_0x3003f9),console['error']('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x3a1b15(0xe8)]===0x0&&console[_0x3a1b15(0x12c)](_0x3a1b15(0x167));}runServer()[a0_0x5da547(0xd4)](_0x41fc47=>{const _0x36b415=a0_0x5da547;console['error'](_0x36b415(0x11f),_0x41fc47),process[_0x36b415(0xbe)](0x1);});
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x22c8bb,_0x15b651){const _0x5cca1c=a1_0x3420,_0x16674a=_0x22c8bb();while(!![]){try{const _0x4fa279=-parseInt(_0x5cca1c(0xab))/0x1+parseInt(_0x5cca1c(0xae))/0x2+-parseInt(_0x5cca1c(0xac))/0x3+-parseInt(_0x5cca1c(0xa6))/0x4*(-parseInt(_0x5cca1c(0xb0))/0x5)+-parseInt(_0x5cca1c(0xa7))/0x6+-parseInt(_0x5cca1c(0xb4))/0x7*(-parseInt(_0x5cca1c(0xa8))/0x8)+-parseInt(_0x5cca1c(0xa5))/0x9*(parseInt(_0x5cca1c(0xb2))/0xa);if(_0x4fa279===_0x15b651)break;else _0x16674a['push'](_0x16674a['shift']());}catch(_0x113dfa){_0x16674a['push'](_0x16674a['shift']());}}}(a1_0x44b8,0x6b377));import a1_0x3376ee from'path';function a1_0x3420(_0x3f0e14,_0x462c8d){_0x3f0e14=_0x3f0e14-0xa4;const _0x44b894=a1_0x44b8();let _0x34202c=_0x44b894[_0x3f0e14];return _0x34202c;}import a1_0x1d22b8 from'os';function a1_0x44b8(){const _0x7c4790=['783900SVKCgw','join','1273512yJkkNU','slice','191900qxRsNZ','toUpperCase','1610CSCXaJ','charAt','469952nEYfzU','replace','match','45342ZUrGmy','80OscGcQ','166614lxwkpq','48UTqnRA','test','startsWith','267826OMXKDQ'];a1_0x44b8=function(){return _0x7c4790;};return a1_0x44b8();}export function convertToWindowsPath(_0x593e08){const _0x5256b9=a1_0x3420;if(_0x593e08['startsWith']('/mnt/')){const _0x3fa63e=_0x593e08['charAt'](0x5)[_0x5256b9(0xb1)](),_0x2cd7d4=_0x593e08['slice'](0x6)[_0x5256b9(0xb5)](/\//g,'\x5c');return _0x3fa63e+':'+_0x2cd7d4;}if(_0x593e08[_0x5256b9(0xa4)](/^\/[a-zA-Z]\//)){const _0x4e5a8a=_0x593e08['charAt'](0x1)['toUpperCase'](),_0x5826b1=_0x593e08[_0x5256b9(0xaf)](0x2)['replace'](/\//g,'\x5c');return _0x4e5a8a+':'+_0x5826b1;}if(_0x593e08[_0x5256b9(0xa4)](/^[a-zA-Z]:/))return _0x593e08[_0x5256b9(0xb5)](/\//g,'\x5c');return _0x593e08;}export function normalizePath(_0x53a8e5){const _0x46090e=a1_0x3420;_0x53a8e5=_0x53a8e5['trim']()[_0x46090e(0xb5)](/^["']|["']$/g,'');const _0x2ac80b=_0x53a8e5[_0x46090e(0xaa)]('/')&&!_0x53a8e5[_0x46090e(0xa4)](/^\/mnt\/[a-z]\//i)&&!_0x53a8e5[_0x46090e(0xa4)](/^\/[a-zA-Z]\//);if(_0x2ac80b)return _0x53a8e5[_0x46090e(0xb5)](/\/+/g,'/')[_0x46090e(0xb5)](/\/+$/,'');_0x53a8e5=convertToWindowsPath(_0x53a8e5);if(_0x53a8e5['startsWith']('\x5c\x5c')){let _0x400fe4=_0x53a8e5;_0x400fe4=_0x400fe4[_0x46090e(0xb5)](/^\\{2,}/,'\x5c\x5c');const _0x11e202=_0x400fe4['substring'](0x2)['replace'](/\\\\/g,'\x5c');_0x53a8e5='\x5c\x5c'+_0x11e202;}else _0x53a8e5=_0x53a8e5[_0x46090e(0xb5)](/\\\\/g,'\x5c');let _0x974c5b=a1_0x3376ee['normalize'](_0x53a8e5);_0x53a8e5[_0x46090e(0xaa)]('\x5c\x5c')&&!_0x974c5b[_0x46090e(0xaa)]('\x5c\x5c')&&(_0x974c5b='\x5c'+_0x974c5b);if(_0x974c5b[_0x46090e(0xa4)](/^[a-zA-Z]:/)){let _0x2f0537=_0x974c5b[_0x46090e(0xb5)](/\//g,'\x5c');return/^[a-z]:/[_0x46090e(0xa9)](_0x2f0537)&&(_0x2f0537=_0x2f0537[_0x46090e(0xb3)](0x0)[_0x46090e(0xb1)]()+_0x2f0537[_0x46090e(0xaf)](0x1)),_0x2f0537;}return _0x974c5b[_0x46090e(0xb5)](/\//g,'\x5c');}export function expandHome(_0x5601c6){const _0x9a4882=a1_0x3420;if(_0x5601c6[_0x9a4882(0xaa)]('~/')||_0x5601c6==='~')return a1_0x3376ee[_0x9a4882(0xad)](a1_0x1d22b8['homedir'](),_0x5601c6[_0x9a4882(0xaf)](0x1));return _0x5601c6;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x4d2c5,_0x1a1e4d){const _0x1c372a=a2_0x10e2,_0x41e360=_0x4d2c5();while(!![]){try{const _0x439de0=-parseInt(_0x1c372a(0xb0))/0x1+parseInt(_0x1c372a(0xa9))/0x2+-parseInt(_0x1c372a(0xb9))/0x3*(-parseInt(_0x1c372a(0xae))/0x4)+parseInt(_0x1c372a(0xac))/0x5+-parseInt(_0x1c372a(0xad))/0x6*(-parseInt(_0x1c372a(0xb8))/0x7)+parseInt(_0x1c372a(0xa5))/0x8+parseInt(_0x1c372a(0xa4))/0x9*(-parseInt(_0x1c372a(0xab))/0xa);if(_0x439de0===_0x1a1e4d)break;else _0x41e360['push'](_0x41e360['shift']());}catch(_0xd4d31e){_0x41e360['push'](_0x41e360['shift']());}}}(a2_0x3358,0xf205f));import a2_0x2932e8 from'path';function a2_0x3358(){const _0xee4995=['some','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','isArray','resolve','315nYqURP','3SPAYFN','73332ZtuRha','10348560KLRNfe','includes','Path\x20must\x20be\x20absolute\x20after\x20normalization','string','2729930djnGqp','length','3430tefqZj','3782030fysfBW','161346NTRgOz','188644uHCJaM','startsWith','886106nlPDJu','sep','isAbsolute','normalize'];a2_0x3358=function(){return _0xee4995;};return a2_0x3358();}function a2_0x10e2(_0x3b7b01,_0x52db4c){_0x3b7b01=_0x3b7b01-0xa4;const _0x33585a=a2_0x3358();let _0x10e210=_0x33585a[_0x3b7b01];return _0x10e210;}export function isPathWithinAllowedDirectories(_0x302021,_0x472f3b){const _0x2d1d79=a2_0x10e2;if(typeof _0x302021!=='string'||!Array[_0x2d1d79(0xb6)](_0x472f3b))return![];if(!_0x302021||_0x472f3b[_0x2d1d79(0xaa)]===0x0)return![];if(_0x302021['includes']('\x00'))return![];let _0x4de4f2;try{_0x4de4f2=a2_0x2932e8[_0x2d1d79(0xb7)](a2_0x2932e8[_0x2d1d79(0xb3)](_0x302021));}catch{return![];}if(!a2_0x2932e8['isAbsolute'](_0x4de4f2))throw new Error(_0x2d1d79(0xa7));return _0x472f3b[_0x2d1d79(0xb4)](_0x119b67=>{const _0x4ca25e=_0x2d1d79;if(typeof _0x119b67!==_0x4ca25e(0xa8)||!_0x119b67)return![];if(_0x119b67[_0x4ca25e(0xa6)]('\x00'))return![];let _0x3ededc;try{_0x3ededc=a2_0x2932e8['resolve'](a2_0x2932e8[_0x4ca25e(0xb3)](_0x119b67));}catch{return![];}if(!a2_0x2932e8[_0x4ca25e(0xb2)](_0x3ededc))throw new Error(_0x4ca25e(0xb5));if(_0x4de4f2===_0x3ededc)return!![];if(_0x3ededc===a2_0x2932e8[_0x4ca25e(0xb1)])return _0x4de4f2['startsWith'](a2_0x2932e8[_0x4ca25e(0xb1)]);return _0x4de4f2[_0x4ca25e(0xaf)](_0x3ededc+a2_0x2932e8[_0x4ca25e(0xb1)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a3_0x2ad1(_0x13db01,_0x15f015){_0x13db01=_0x13db01-0x134;const _0x54823f=a3_0x5482();let _0x2ad164=_0x54823f[_0x13db01];return _0x2ad164;}(function(_0xbb775a,_0x5e8a0c){const _0xbc01cb=a3_0x2ad1,_0x4ad1ad=_0xbb775a();while(!![]){try{const _0x321199=parseInt(_0xbc01cb(0x149))/0x1*(-parseInt(_0xbc01cb(0x13d))/0x2)+-parseInt(_0xbc01cb(0x135))/0x3*(parseInt(_0xbc01cb(0x13c))/0x4)+parseInt(_0xbc01cb(0x147))/0x5+-parseInt(_0xbc01cb(0x13f))/0x6*(-parseInt(_0xbc01cb(0x139))/0x7)+-parseInt(_0xbc01cb(0x13a))/0x8+parseInt(_0xbc01cb(0x136))/0x9*(parseInt(_0xbc01cb(0x13b))/0xa)+parseInt(_0xbc01cb(0x143))/0xb*(parseInt(_0xbc01cb(0x134))/0xc);if(_0x321199===_0x5e8a0c)break;else _0x4ad1ad['push'](_0x4ad1ad['shift']());}catch(_0x29c6f3){_0x4ad1ad['push'](_0x4ad1ad['shift']());}}}(a3_0x5482,0x777a0));import{promises as a3_0x8c68e7}from'fs';function a3_0x5482(){const _0x2c1698=['5173YuzjSN','332728xBMrbS','70pCjOWT','4OAQZzn','132LmKtXz','uri','3594XphImA','error','slice','invalid\x20path\x20or\x20inaccessible','198MOaVFK','Skipping\x20','startsWith','join','3151680xziMmj','homedir','12279eCmZUV','message','436320zRALmV','1324377oqNLLx','71181kWpXfu','stat','resolve'];a3_0x5482=function(){return _0x2c1698;};return a3_0x5482();}import a3_0x31f079 from'path';import a3_0x1d75f0 from'os';import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x4587df){const _0x3f0ea3=a3_0x2ad1;try{const _0x1e835d=_0x4587df[_0x3f0ea3(0x145)]('file://')?_0x4587df[_0x3f0ea3(0x141)](0x7):_0x4587df,_0xd305d8=_0x1e835d[_0x3f0ea3(0x145)]('~/')||_0x1e835d==='~'?a3_0x31f079[_0x3f0ea3(0x146)](a3_0x1d75f0[_0x3f0ea3(0x148)](),_0x1e835d[_0x3f0ea3(0x141)](0x1)):_0x1e835d,_0x4d0730=a3_0x31f079[_0x3f0ea3(0x138)](_0xd305d8),_0x5ecae2=await a3_0x8c68e7['realpath'](_0x4d0730);return normalizePath(_0x5ecae2);}catch{return null;}}function formatDirectoryError(_0x3c0909,_0x51fc24,_0x26f165){const _0x1471d7=a3_0x2ad1;if(_0x26f165)return _0x1471d7(0x144)+_0x26f165+':\x20'+_0x3c0909;const _0x491c26=_0x51fc24 instanceof Error?_0x51fc24[_0x1471d7(0x14a)]:String(_0x51fc24);return'Skipping\x20invalid\x20directory:\x20'+_0x3c0909+'\x20due\x20to\x20error:\x20'+_0x491c26;}export async function getValidRootDirectories(_0x23b7a5){const _0x3d1851=a3_0x2ad1,_0x333064=[];for(const _0x22597d of _0x23b7a5){const _0x27b4d2=await parseRootUri(_0x22597d[_0x3d1851(0x13e)]);if(!_0x27b4d2){console['error'](formatDirectoryError(_0x22597d[_0x3d1851(0x13e)],undefined,_0x3d1851(0x142)));continue;}try{const _0x12edad=await a3_0x8c68e7[_0x3d1851(0x137)](_0x27b4d2);_0x12edad['isDirectory']()?_0x333064['push'](_0x27b4d2):console[_0x3d1851(0x140)](formatDirectoryError(_0x27b4d2,undefined,'non-directory\x20root'));}catch(_0x2bbdb3){console[_0x3d1851(0x140)](formatDirectoryError(_0x27b4d2,_0x2bbdb3));}}return _0x333064;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.79",
|
|
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.103",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|