@morphllm/morphmcp 0.8.78 → 0.8.80
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_0x57c7fb=a0_0x4122;(function(_0x3fd8ab,_0x27966e){const _0x47b1b5=a0_0x4122,_0x478d68=_0x3fd8ab();while(!![]){try{const _0x428ab2=-parseInt(_0x47b1b5(0x190))/0x1+parseInt(_0x47b1b5(0x165))/0x2+parseInt(_0x47b1b5(0x1d2))/0x3+-parseInt(_0x47b1b5(0x239))/0x4*(parseInt(_0x47b1b5(0x1d1))/0x5)+-parseInt(_0x47b1b5(0x198))/0x6+parseInt(_0x47b1b5(0x16d))/0x7+-parseInt(_0x47b1b5(0x195))/0x8*(-parseInt(_0x47b1b5(0x1ad))/0x9);if(_0x428ab2===_0x27966e)break;else _0x478d68['push'](_0x478d68['shift']());}catch(_0x96db24){_0x478d68['push'](_0x478d68['shift']());}}}(a0_0xf7cf,0x6a069));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_0x188d76 from'fs/promises';import a0_0x4fd06a from'path';import a0_0x4fc1f2 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';function a0_0x4122(_0x4ecdd8,_0x4fb321){_0x4ecdd8=_0x4ecdd8-0x15a;const _0xf7cfda=a0_0xf7cf();let _0x4122f2=_0xf7cfda[_0x4ecdd8];return _0x4122f2;}import a0_0x5dba8f from'axios';function fixPathRepetition(_0x3673c9){const _0x52b1a7=a0_0x4122,_0x199312=_0x3673c9[_0x52b1a7(0x19e)](a0_0x4fd06a[_0x52b1a7(0x206)])['filter'](Boolean);if(_0x199312[_0x52b1a7(0x21a)]<0x2)return null;for(let _0x4136aa=Math['floor'](_0x199312[_0x52b1a7(0x21a)]/0x2);_0x4136aa>=0x1;_0x4136aa--){for(let _0x40b7af=0x0;_0x40b7af<=_0x199312[_0x52b1a7(0x21a)]-0x2*_0x4136aa;_0x40b7af++){const _0x29fe5c=_0x199312[_0x52b1a7(0x1a1)](_0x40b7af,_0x40b7af+_0x4136aa),_0x1356a3=_0x199312[_0x52b1a7(0x1a1)](_0x40b7af+_0x4136aa,_0x40b7af+0x2*_0x4136aa);if(_0x29fe5c[_0x52b1a7(0x201)]((_0x2b99e4,_0x18003e)=>_0x2b99e4===_0x1356a3[_0x18003e])){const _0x44521b=[..._0x199312['slice'](0x0,_0x40b7af),..._0x199312[_0x52b1a7(0x1a1)](_0x40b7af+_0x4136aa)];return a0_0x4fd06a[_0x52b1a7(0x206)]+_0x44521b[_0x52b1a7(0x1cd)](a0_0x4fd06a['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x328b6f=a0_0x4122;try{const _0x2c25ff=require('../package.json');return _0x2c25ff[_0x328b6f(0x22a)]??_0x328b6f(0x179);}catch(_0x5861ff){return console[_0x328b6f(0x230)](_0x328b6f(0x1cc),_0x5861ff),_0x328b6f(0x179);}}function printHelp(){const _0x1e8f37=a0_0x4122;console[_0x1e8f37(0x24b)](_0x1e8f37(0x23e)+getPackageVersion()),console['log'](_0x1e8f37(0x242)),console[_0x1e8f37(0x24b)]('\x0aOptions:'),console[_0x1e8f37(0x24b)](_0x1e8f37(0x15c)),console[_0x1e8f37(0x24b)](_0x1e8f37(0x1f6)),console[_0x1e8f37(0x24b)](_0x1e8f37(0x24d)),console[_0x1e8f37(0x24b)](_0x1e8f37(0x1be)),console[_0x1e8f37(0x24b)](_0x1e8f37(0x221));}const cliArgs=process['argv'][a0_0x57c7fb(0x1a1)](0x2),VERSION_FLAGS=new Set([a0_0x57c7fb(0x1bf),'-v','-V']),HELP_FLAGS=new Set([a0_0x57c7fb(0x15d),'-h']);cliArgs[a0_0x57c7fb(0x1ea)](_0x2906df=>VERSION_FLAGS['has'](_0x2906df))&&(console[a0_0x57c7fb(0x24b)](a0_0x57c7fb(0x23e)+getPackageVersion()),process[a0_0x57c7fb(0x194)](0x0));cliArgs[a0_0x57c7fb(0x1ea)](_0x32f526=>HELP_FLAGS[a0_0x57c7fb(0x244)](_0x32f526))&&(printHelp(),process[a0_0x57c7fb(0x194)](0x0));const args=cliArgs[a0_0x57c7fb(0x241)](_0x28b859=>!VERSION_FLAGS[a0_0x57c7fb(0x244)](_0x28b859)&&!HELP_FLAGS[a0_0x57c7fb(0x244)](_0x28b859)),ALL_TOOLS=[a0_0x57c7fb(0x160),a0_0x57c7fb(0x20c),a0_0x57c7fb(0x1f0)],DEFAULT_TOOLS=['edit_file','warpgrep_codebase_search'],ENABLED_TOOLS=process[a0_0x57c7fb(0x1a3)][a0_0x57c7fb(0x189)]?process['env'][a0_0x57c7fb(0x189)]===a0_0x57c7fb(0x18c)?ALL_TOOLS:process[a0_0x57c7fb(0x1a3)]['ENABLED_TOOLS'][a0_0x57c7fb(0x19e)](',')[a0_0x57c7fb(0x1ef)](_0x265e06=>_0x265e06[a0_0x57c7fb(0x171)]()):DEFAULT_TOOLS;console[a0_0x57c7fb(0x230)](a0_0x57c7fb(0x1d7)+ENABLED_TOOLS['join'](',\x20'));const WORKSPACE_ROOT=process[a0_0x57c7fb(0x1a3)][a0_0x57c7fb(0x1b5)]||process[a0_0x57c7fb(0x1a3)][a0_0x57c7fb(0x1bc)]||process[a0_0x57c7fb(0x15b)](),ENABLE_WORKSPACE_MODE=process[a0_0x57c7fb(0x1a3)]['ENABLE_WORKSPACE_MODE']!==a0_0x57c7fb(0x1b1),MORPH_API_KEY=process['env'][a0_0x57c7fb(0x250)],MORPH_API_URL=process['env'][a0_0x57c7fb(0x1ba)],MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x57c7fb(0x1f3)]?parseInt(process['env'][a0_0x57c7fb(0x1f3)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x57c7fb(0x202)]('sk-')&&!MORPH_API_KEY[a0_0x57c7fb(0x202)](a0_0x57c7fb(0x22d))&&console[a0_0x57c7fb(0x230)](a0_0x57c7fb(0x1f8));async function reportMorphError(_0x46cc3a){const _0x39c65e=a0_0x57c7fb;try{await a0_0x5dba8f['post'](_0x39c65e(0x185),{..._0x46cc3a,'timestamp':new Date()[_0x39c65e(0x251)](),'source':_0x46cc3a[_0x39c65e(0x23d)]||_0x39c65e(0x164)},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}args[a0_0x57c7fb(0x21a)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x57c7fb(0x230)](a0_0x57c7fb(0x17c)),console['error'](a0_0x57c7fb(0x18f)),console['error'](a0_0x57c7fb(0x1ac)),console['error'](a0_0x57c7fb(0x208)),console[a0_0x57c7fb(0x230)](a0_0x57c7fb(0x227)),console['error']('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0xa08cf){return a0_0x4fd06a['normalize'](_0xa08cf);}function a0_0xf7cf(){const _0x29c016=['-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','ENABLED_TOOLS','\x20is\x20not\x20a\x20directory','Preview\x20changes\x20without\x20applying\x20them.','all','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','push','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','820781hRiWmT','etimedout','\x22>\x0aError\x20reading\x20file:\x20','optional','exit','336xwIIUH','\x0a...\x20(truncated,\x20total:\x20','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','468336ntPSjU','toFixed','assistant','\x20results\x20in\x20','requiresApiKey','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','split','access','success','slice','Rules:\x0a','env','Max\x20results\x20to\x20return','name','morph-mcp','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','resolve','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','dirname','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','67086RRNmKv','ENOENT','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','default','false','Workspace\x20mode\x20enabled:\x20Using\x20','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','WORKSPACE_ROOT','\x20\x20\x20','search_string','endLine','linesAdded','MORPH_API_URL','query','PWD','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','\x20\x20morph-mcp','--version','data','text','FileReadError','added\x20','.git','oninitialized','startLine','listRoots','unknown\x20error','Invalid\x20arguments:\x20','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','basename','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','join','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','0.2.0','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','5JPHQvz','2415396LpGVFt','catch','path','Benefits:\x0a','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','Enabled\x20tools:\x20','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','Failed\x20to\x20request\x20roots\x20from\x20client:','lines','Morph\x20Edit\x20Preview','No\x20results\x20found\x20for\x20query:\x20\x22','message','Parent\x20directory\x20does\x20not\x20exist:\x20','morph-warp-grep-v1-1111v0','Error\x20running\x20fast\x20context\x20search:\x20','terminated','Warning:\x20Workspace\x20fallback\x20failed:\x20','array','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','morph-v3-fast','repoId','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.','timed\x20out','toLowerCase','some','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Failed\x20to\x20read\x20file:\x20','isArray','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','map','codebase_search','rerankScore','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','MORPH_WARP_GREP_TIMEOUT',',\x20removed\x20','stats','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','...','filepath','limit','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','realpath','composer.json','every','startsWith','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','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Warning:\x20','sep','code_edit','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','describe','dryRun','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','warpgrep_codebase_search','terminationReason','changes','object','TimeoutError','go.mod','linesRemoved','Unknown\x20error','Search\x20failed:\x20','utf-8','\x20(new\x20file)','results','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','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','length','description','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Error:\x20','WarpGrepError','number','\x20\x20morph-mcp\x20~/repo','readFile','files','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20',',\x20modified\x20','boolean','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','repo_path','version','Applied','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','morph-','instruction','UnknownError','error','Repository\x20identifier','includes','errors','timeout','branch','package.json','content','Morph\x20Edit\x20','2378276ghRVrG','isDirectory','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','\x27\x20in\x20`','source','@morphllm/morphmcp\x20','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','homedir','filter','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','code','has','stat','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','match','commitHash','messages','timings','log','File\x20read\x20error:','\x0aExamples:','setRequestHandler','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','MORPH_API_KEY','toISOString','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','For\x20deletions:\x0a','cwd','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','--help','constructor','Morph\x20FastApply\x20failed\x20without\x20error\x20message','edit_file','Cargo.toml','pyproject.toml','safeParse','mcp-filesystem','1001624ePyRZf','ms:\x0a\x0a','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','role','</file>','<file\x20path=\x22','string','Here\x20is\x20the\x20content\x20of\x20files:\x0a','2160725eltxEo','finish','Specific\x20commit\x20hash\x20to\x20search','\x0a</file>','trim','tsconfig.json','Fatal\x20error\x20running\x20server:','[could\x20not\x20read\x20file:\x20','-\x20Listed\x20directory\x20`','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','.\x20Path:\x20','substring','unknown','stack','stringify','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','targetDirectories','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','getClientCapabilities','\x20as\x20allowed\x20directory','metadata','roots','.\x20Changes:\x20','Created\x20File','https://morphllm.com/api/error-report','completed_with_file_errors','-\x20Grepped\x20\x27'];a0_0xf7cf=function(){return _0x29c016;};return a0_0xf7cf();}function expandHome(_0x31de62){const _0x97240f=a0_0x57c7fb;if(_0x31de62[_0x97240f(0x202)]('~/')||_0x31de62==='~')return a0_0x4fd06a[_0x97240f(0x1cd)](a0_0x4fc1f2[_0x97240f(0x240)](),_0x31de62[_0x97240f(0x1a1)](0x1));return _0x31de62;}let allowedDirectories=await Promise['all'](args[a0_0x57c7fb(0x1ef)](async _0x5473b7=>{const _0x15361b=a0_0x57c7fb,_0x403932=expandHome(_0x5473b7),_0x4b578f=a0_0x4fd06a[_0x15361b(0x1a9)](_0x403932);try{const _0x20b5e3=await a0_0x188d76[_0x15361b(0x1ff)](_0x4b578f);return normalizePath(_0x20b5e3);}catch(_0x26eb77){return normalizePath(_0x4b578f);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x57c7fb(0x21a)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x57c7fb(0x18e)](workspaceDir),console[a0_0x57c7fb(0x230)](a0_0x57c7fb(0x1b2)+workspaceDir+a0_0x57c7fb(0x180)));}catch(a0_0x5db7e8){console['error'](a0_0x57c7fb(0x1aa)+a0_0x5db7e8);}async function detectWorkspaceRoot(_0x230608){const _0x45dc0e=a0_0x57c7fb;let _0x262be4=a0_0x4fd06a[_0x45dc0e(0x1a9)](_0x230608);const _0x18392d=[_0x45dc0e(0x1c4),'.vscode',_0x45dc0e(0x236),_0x45dc0e(0x161),_0x45dc0e(0x162),_0x45dc0e(0x211),'.cursor',_0x45dc0e(0x172),_0x45dc0e(0x200)];while(_0x262be4!==a0_0x4fd06a[_0x45dc0e(0x1ab)](_0x262be4)){for(const _0x167d28 of _0x18392d){const _0x392489=a0_0x4fd06a[_0x45dc0e(0x1cd)](_0x262be4,_0x167d28);try{return await a0_0x188d76[_0x45dc0e(0x19f)](_0x392489),normalizePath(_0x262be4);}catch{}}_0x262be4=a0_0x4fd06a['dirname'](_0x262be4);}return normalizePath(_0x230608);}await Promise[a0_0x57c7fb(0x18c)](args[a0_0x57c7fb(0x1ef)](async _0x13dc45=>{const _0xff370d=a0_0x57c7fb;try{const _0x4fc8ba=await a0_0x188d76[_0xff370d(0x245)](expandHome(_0x13dc45));!_0x4fc8ba[_0xff370d(0x23a)]()&&(console['error'](_0xff370d(0x21e)+_0x13dc45+_0xff370d(0x18a)),process[_0xff370d(0x194)](0x1));}catch(_0x1f594c){console[_0xff370d(0x230)]('Error\x20accessing\x20directory\x20'+_0x13dc45+':',_0x1f594c),process[_0xff370d(0x194)](0x1);}}));async function validatePath(_0x37db17){const _0x235998=a0_0x57c7fb,_0x191fe5=expandHome(_0x37db17),_0x56d643=a0_0x4fd06a[_0x235998(0x1a9)](_0x191fe5);try{const _0x25c722=await a0_0x188d76[_0x235998(0x1ff)](_0x56d643);return _0x25c722;}catch(_0x7efe0b){if(_0x7efe0b[_0x235998(0x243)]===_0x235998(0x1ae)){const _0x3f16d1=a0_0x4fd06a[_0x235998(0x1ab)](_0x56d643);try{const _0x3e0ae4=await a0_0x188d76['realpath'](_0x3f16d1);return a0_0x4fd06a['join'](_0x3e0ae4,a0_0x4fd06a[_0x235998(0x1cb)](_0x56d643));}catch{throw new Error(_0x235998(0x1de)+_0x3f16d1);}}throw _0x7efe0b;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x57c7fb(0x16b)](),'code_edit':z[a0_0x57c7fb(0x16b)]()[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x1b4)),'instruction':z[a0_0x57c7fb(0x16b)]()[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x1a8)),'dryRun':z[a0_0x57c7fb(0x226)]()['default'](![])[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x18b))}),WarpGrepArgsSchema=z[a0_0x57c7fb(0x20f)]({'search_string':z['string']()[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x1e4)),'repo_path':z['string']()['describe'](a0_0x57c7fb(0x19d))}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0x57c7fb(0x16b)]()[a0_0x57c7fb(0x209)]('Natural\x20language\x20query\x20to\x20search\x20for\x20code'),'repoId':z['string']()[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x231)),'branch':z[a0_0x57c7fb(0x16b)]()['optional']()[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x23f)),'commitHash':z[a0_0x57c7fb(0x16b)]()[a0_0x57c7fb(0x193)]()[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x16f)),'targetDirectories':z[a0_0x57c7fb(0x1e3)](z[a0_0x57c7fb(0x16b)]())[a0_0x57c7fb(0x1b0)]([])[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x18d)),'limit':z[a0_0x57c7fb(0x220)]()[a0_0x57c7fb(0x193)]()[a0_0x57c7fb(0x1b0)](0xa)[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x1a4))}),server=new Server({'name':a0_0x57c7fb(0x1a6),'version':'0.2.0'},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0xf10340=a0_0x57c7fb,_0x5ec5f1=[{'name':_0xf10340(0x160),'description':_0xf10340(0x17e)+_0xf10340(0x176)+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+'IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a'+_0xf10340(0x1d5)+_0xf10340(0x1d0)+_0xf10340(0x24f)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+_0xf10340(0x1ca)+_0xf10340(0x1ce)+_0xf10340(0x15a)+_0xf10340(0x1bd)+_0xf10340(0x204)+_0xf10340(0x1a2)+_0xf10340(0x1fc)+_0xf10340(0x228)+_0xf10340(0x1eb)+_0xf10340(0x188)+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+_0xf10340(0x1f2)+_0xf10340(0x219),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0xf10340(0x20c),'description':_0xf10340(0x1ee)+'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'+_0xf10340(0x203)+_0xf10340(0x1fd)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.'+'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'+_0xf10340(0x1d8)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':'codebase_search','description':'**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a'+'⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a'+_0xf10340(0x1f7)+'Benefits:\x0a'+_0xf10340(0x252)+_0xf10340(0x23b)+'-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a'+_0xf10340(0x246)+_0xf10340(0x1a7)+_0xf10340(0x224)+_0xf10340(0x197),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x44105a=_0x5ec5f1['filter'](_0x5a8c4d=>{const _0x2db299=_0xf10340;if(!ENABLED_TOOLS[_0x2db299(0x232)](_0x5a8c4d['name']))return![];if(_0x2db299(0x19c)in _0x5a8c4d&&_0x5a8c4d[_0x2db299(0x19c)]&&!MORPH_API_KEY)return console[_0x2db299(0x230)](_0x2db299(0x205)+_0x5a8c4d[_0x2db299(0x1a5)]+_0x2db299(0x253)),![];return!![];});return{'tools':_0x44105a[_0xf10340(0x1ef)](_0x123482=>({'name':_0x123482[_0xf10340(0x1a5)],'description':_0x123482[_0xf10340(0x21b)],'inputSchema':_0x123482['inputSchema']}))};}),server[a0_0x57c7fb(0x24e)](CallToolRequestSchema,async _0x354e22=>{const _0x166d8a=a0_0x57c7fb;try{const {name:_0x457a0b,arguments:_0x2c280a}=_0x354e22['params'];switch(_0x457a0b){case _0x166d8a(0x160):{const _0x448853=MorphEditFileArgsSchema[_0x166d8a(0x163)](_0x2c280a);if(!_0x448853[_0x166d8a(0x1a0)])throw new Error(_0x166d8a(0x1d6)+_0x448853[_0x166d8a(0x230)]);const _0x24a9d8=await validatePath(_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x1d4)]);let _0xaf34e1=null,_0x5b0b0f=!![],_0x1b771f=null;try{_0xaf34e1=await a0_0x188d76[_0x166d8a(0x222)](_0x24a9d8,_0x166d8a(0x215));}catch(_0x45df29){const _0x58dfa0=_0x45df29[_0x166d8a(0x243)];_0x58dfa0===_0x166d8a(0x1ae)?(_0x5b0b0f=![],_0xaf34e1=''):(_0x1b771f=_0x166d8a(0x1ec)+(_0x58dfa0||_0x166d8a(0x179))+'\x20-\x20'+(_0x45df29 instanceof Error?_0x45df29[_0x166d8a(0x1dd)]:String(_0x45df29)),console[_0x166d8a(0x230)](_0x166d8a(0x205)+_0x1b771f));}try{const _0x3d5dc6=MORPH_API_KEY;if(!_0x3d5dc6)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x4e5a6a=a0_0x4fd06a[_0x166d8a(0x1ab)](_0x24a9d8),_0x34bc80=a0_0x4fd06a[_0x166d8a(0x1cb)](_0x24a9d8),_0x31c3d7=await executeEditFile({'target_filepath':_0x34bc80,'code_edit':_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x207)],'instructions':_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x22e)]},{'morphApiKey':_0x3d5dc6,'morphApiUrl':MORPH_API_URL,'baseDir':_0x4e5a6a,'autoWrite':!_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x20a)],'generateUdiff':![],'debug':![]});if(!_0x31c3d7[_0x166d8a(0x1a0)])throw new Error(_0x31c3d7[_0x166d8a(0x230)]||_0x166d8a(0x15f));const _0x231e9a=_0x31c3d7[_0x166d8a(0x20e)],_0xbf6664=_0x166d8a(0x1c3)+_0x231e9a[_0x166d8a(0x1b9)]+_0x166d8a(0x1f4)+_0x231e9a[_0x166d8a(0x212)]+_0x166d8a(0x225)+_0x231e9a['linesModified'];if(_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x20a)])return{'content':[{'type':_0x166d8a(0x1c1),'text':_0x166d8a(0x1db)+(_0x5b0b0f?'':_0x166d8a(0x216))+':\x20'+_0x448853[_0x166d8a(0x1c0)]['instruction']+_0x166d8a(0x183)+_0xbf6664+_0x166d8a(0x177)+_0x448853['data']['path']+'.'}]};return{'content':[{'type':'text','text':_0x166d8a(0x238)+(_0x5b0b0f?_0x166d8a(0x22b):_0x166d8a(0x184))+':\x20'+_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x22e)]+'.\x20Changes:\x20'+_0xbf6664+_0x166d8a(0x177)+_0x448853[_0x166d8a(0x1c0)]['path']+'.'}]};}catch(_0x413534){const _0x27f663=_0x413534 instanceof Error?_0x413534[_0x166d8a(0x1dd)]:String(_0x413534);return reportMorphError({'error_message':_0x27f663,'error_type':_0x413534 instanceof Error?_0x413534[_0x166d8a(0x15e)][_0x166d8a(0x1a5)]:_0x166d8a(0x22f),'context':{'tool':'edit_file','file_path':_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x1d4)],'validated_path':_0x24a9d8,'instruction':_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x22e)],'model':_0x166d8a(0x1e5),'dry_run':_0x448853['data'][_0x166d8a(0x20a)],'file_exists':_0x5b0b0f,'file_read_error':_0x1b771f,'file_readable':_0xaf34e1!==null,'request_content':{'path':_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x1d4)],'code_edit':_0x448853[_0x166d8a(0x1c0)]['code_edit'],'instruction':_0x448853['data']['instruction'],'original_code':_0xaf34e1!==null?_0xaf34e1[_0x166d8a(0x21a)]>0xc350?_0xaf34e1[_0x166d8a(0x178)](0x0,0xc350)+_0x166d8a(0x196)+_0xaf34e1[_0x166d8a(0x21a)]+'\x20chars)':_0xaf34e1:_0x166d8a(0x174)+(_0x1b771f||_0x166d8a(0x1c8))+']','original_code_length':_0xaf34e1?.[_0x166d8a(0x21a)]??0x0,'model':_0x166d8a(0x1e5),'dry_run':_0x448853['data']['dryRun']}},'stack_trace':_0x413534 instanceof Error?_0x413534[_0x166d8a(0x17a)]:undefined,'source':_0x166d8a(0x164)})['catch'](()=>{}),{'content':[{'type':_0x166d8a(0x1c1),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x27f663}],'isError':!![]};}}case _0x166d8a(0x20c):{const _0x1238ae=WarpGrepArgsSchema[_0x166d8a(0x163)](_0x2c280a);if(!_0x1238ae[_0x166d8a(0x1a0)])return{'content':[{'type':_0x166d8a(0x1c1),'text':'Invalid\x20arguments:\x20'+_0x1238ae[_0x166d8a(0x230)]}],'isError':!![]};const _0x3a96f4=_0x3c5a13=>{const _0x119fad=_0x166d8a,_0x96ba4a=[];for(const _0x35a4c8 of _0x3c5a13||[]){const _0xe7b179=_0x35a4c8[_0x119fad(0x168)],_0x220a7b=_0x35a4c8[_0x119fad(0x237)];if(_0xe7b179===_0x119fad(0x19a)&&_0x220a7b){const _0x30b809=_0x220a7b[_0x119fad(0x19e)]('\x0a')[_0x119fad(0x241)](_0xc7dc3a=>_0xc7dc3a[_0x119fad(0x171)]());for(const _0x3bb397 of _0x30b809){const _0x57e753=_0x3bb397[_0x119fad(0x247)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x57e753){_0x96ba4a['push']('grep\x20\x27'+_0x57e753[0x1]+'\x27\x20'+_0x57e753[0x2]);continue;}const _0x62696a=_0x3bb397[_0x119fad(0x247)](/^read\s+(.+)$/);if(_0x62696a){_0x96ba4a['push']('read\x20'+_0x62696a[0x1]);continue;}const _0x177b13=_0x3bb397[_0x119fad(0x247)](/^list_directory\s+(.+)$/);if(_0x177b13){_0x96ba4a['push']('list_directory\x20'+_0x177b13[0x1]);continue;}}}}return _0x96ba4a;};try{const _0x48f27d=a0_0x4fd06a[_0x166d8a(0x1a9)](_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x229)]),_0x143063=new LocalRipgrepProvider(_0x48f27d),_0x385f9d=await runWarpGrep({'query':_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x1b7)],'repoRoot':_0x48f27d,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x143063});let _0x1759eb='';if(_0x385f9d[_0x166d8a(0x20d)]==='completed'&&_0x385f9d[_0x166d8a(0x16e)]?.[_0x166d8a(0x181)]?.[_0x166d8a(0x223)]){const _0xb47a30=_0x385f9d[_0x166d8a(0x16e)][_0x166d8a(0x181)]['files'],_0x2cd370=[],_0x287eba=[_0x166d8a(0x1b3)];for(const _0x2cd83a of _0x385f9d[_0x166d8a(0x249)]){const _0x423864=_0x2cd83a[_0x166d8a(0x168)],_0x3c28a6=_0x2cd83a[_0x166d8a(0x237)];if(_0x423864===_0x166d8a(0x19a)&&_0x3c28a6){const _0x180f02=_0x3c28a6[_0x166d8a(0x19e)]('\x0a')[_0x166d8a(0x241)](_0xd5de2c=>_0xd5de2c[_0x166d8a(0x171)]());for(const _0x3a3024 of _0x180f02){const _0x3aa367=_0x3a3024[_0x166d8a(0x247)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x3aa367){_0x287eba[_0x166d8a(0x18e)](_0x166d8a(0x187)+_0x3aa367[0x1]+_0x166d8a(0x23c)+_0x3aa367[0x2]+'`');continue;}const _0x56d969=_0x3a3024[_0x166d8a(0x247)](/^read\s+(.+)$/);if(_0x56d969){_0x287eba[_0x166d8a(0x18e)]('-\x20Read\x20file\x20`'+_0x56d969[0x1]+'`');continue;}const _0x2e334d=_0x3a3024['match'](/^list_directory\s+(.+)$/);if(_0x2e334d){_0x287eba[_0x166d8a(0x18e)](_0x166d8a(0x175)+_0x2e334d[0x1]+'`');continue;}}}}_0x2cd370[_0x166d8a(0x18e)](_0x287eba[_0x166d8a(0x1cd)]('\x0a'));const _0xf2473d=['','Relevant\x20context\x20found:'];for(const _0x6b6c3d of _0xb47a30){if(_0x6b6c3d['lines']==='*')_0xf2473d[_0x166d8a(0x18e)]('-\x20'+_0x6b6c3d[_0x166d8a(0x1d4)]+':*');else{if(Array[_0x166d8a(0x1ed)](_0x6b6c3d[_0x166d8a(0x1da)])){const _0x42db02=_0x6b6c3d['lines'][_0x166d8a(0x1ef)](([_0x446032,_0x4c888e])=>{if(_0x446032===_0x4c888e)return''+_0x446032;return _0x446032+'-'+_0x4c888e;});_0xf2473d['push']('-\x20'+_0x6b6c3d[_0x166d8a(0x1d4)]+':'+_0x42db02[_0x166d8a(0x1cd)](','));}else _0xf2473d[_0x166d8a(0x18e)]('-\x20'+_0x6b6c3d['path']+':*');}}_0xf2473d[_0x166d8a(0x18e)](''),_0x2cd370[_0x166d8a(0x18e)](_0xf2473d[_0x166d8a(0x1cd)]('\x0a')),_0x2cd370[_0x166d8a(0x18e)](_0x166d8a(0x16c));const _0x2d6e10=[];for(const _0x34419c of _0xb47a30){let _0x478f64=a0_0x4fd06a['resolve'](_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x229)],_0x34419c[_0x166d8a(0x1d4)]),_0x280aa6=null,_0x380dcb=null;try{_0x280aa6=await a0_0x188d76['readFile'](_0x478f64,{'encoding':_0x166d8a(0x215)});}catch(_0x109a7b){const _0x40516c=fixPathRepetition(_0x478f64);if(_0x40516c)try{_0x280aa6=await a0_0x188d76[_0x166d8a(0x222)](_0x40516c,{'encoding':_0x166d8a(0x215)}),_0x478f64=_0x40516c;}catch{_0x380dcb=_0x109a7b instanceof Error?_0x109a7b:new Error(String(_0x109a7b));}else _0x380dcb=_0x109a7b instanceof Error?_0x109a7b:new Error(String(_0x109a7b));}if(_0x280aa6!==null){const _0x3aabec=_0x280aa6[_0x166d8a(0x19e)](/\r?\n/),_0x424966=['<file\x20path=\x22'+_0x34419c[_0x166d8a(0x1d4)]+'\x22>'];if(_0x34419c['lines']==='*'||!Array['isArray'](_0x34419c[_0x166d8a(0x1da)]))for(let _0x44e08a=0x1;_0x44e08a<=_0x3aabec[_0x166d8a(0x21a)];_0x44e08a++){const _0x4ed95b=_0x3aabec[_0x44e08a-0x1];_0x424966[_0x166d8a(0x18e)](_0x44e08a+'|\x20'+_0x4ed95b);}else for(const [_0x197d59,_0x19685a]of _0x34419c[_0x166d8a(0x1da)]){_0x424966['length']>0x1&&_0x424966['push']('');for(let _0x10f678=_0x197d59;_0x10f678<=_0x19685a&&_0x10f678<=_0x3aabec['length'];_0x10f678++){const _0xbd46c4=_0x3aabec[_0x10f678-0x1];_0x424966[_0x166d8a(0x18e)](_0x10f678+'|\x20'+_0xbd46c4);}}_0x424966['push'](_0x166d8a(0x169)),_0x2d6e10[_0x166d8a(0x18e)](_0x424966['join']('\x0a'));}else _0x2d6e10[_0x166d8a(0x18e)](_0x166d8a(0x16a)+_0x34419c['path']+_0x166d8a(0x192)+(_0x380dcb?.[_0x166d8a(0x1dd)]||_0x166d8a(0x213))+_0x166d8a(0x170));}_0x2cd370[_0x166d8a(0x18e)](_0x2d6e10['join']('\x0a\x0a')),_0x1759eb=_0x2cd370[_0x166d8a(0x1cd)]('\x0a');const _0x53838e=_0x385f9d['errors']?.[_0x166d8a(0x241)](_0x4e3444=>_0x4e3444[_0x166d8a(0x1dd)]?.[_0x166d8a(0x202)](_0x166d8a(0x24c)))||[];if(_0x53838e[_0x166d8a(0x21a)]>0x0){const _0x71f20=_0x53838e['map'](_0x6cd040=>_0x6cd040[_0x166d8a(0x1dd)])[_0x166d8a(0x1cd)](';\x20');reportMorphError({'error_message':_0x71f20,'error_type':_0x166d8a(0x1c2),'context':{'tool':_0x166d8a(0x20c),'repo_path':_0x1238ae['data'][_0x166d8a(0x229)],'query':_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x1b7)],'model':_0x166d8a(0x1df),'termination_reason':_0x166d8a(0x186),'error_count':_0x53838e[_0x166d8a(0x21a)],'is_timeout':![],'timings':_0x385f9d[_0x166d8a(0x24a)],'files_attempted':_0xb47a30[_0x166d8a(0x1ef)](_0x31c3b2=>({'path':_0x31c3b2[_0x166d8a(0x1d4)],'lines':_0x31c3b2[_0x166d8a(0x1da)]})),'tool_calls':_0x3a96f4(_0x385f9d[_0x166d8a(0x249)]),'messages':_0x385f9d['messages']?.['map'](_0x2f452c=>({'role':_0x2f452c[_0x166d8a(0x168)],'content':_0x2f452c[_0x166d8a(0x237)]})),'request_content':{'query':_0x1238ae['data']['search_string'],'repo_path':_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x229)],'repoRoot':a0_0x4fd06a[_0x166d8a(0x1a9)](_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x229)]),'model':_0x166d8a(0x1df)}},'source':_0x166d8a(0x164)})[_0x166d8a(0x1d3)](()=>{});}}else{if(_0x385f9d[_0x166d8a(0x20d)]===_0x166d8a(0x1e1)&&_0x385f9d['errors'][_0x166d8a(0x21a)]>0x0){const _0x1542e2=_0x385f9d[_0x166d8a(0x233)][_0x166d8a(0x1ef)](_0x1c9b56=>_0x1c9b56[_0x166d8a(0x1dd)])[_0x166d8a(0x1cd)](';\x20');_0x1759eb=_0x166d8a(0x21e)+_0x1542e2;const _0x1a0b63=_0x1542e2[_0x166d8a(0x1e9)]()['includes'](_0x166d8a(0x234))||_0x1542e2['toLowerCase']()[_0x166d8a(0x232)](_0x166d8a(0x1e8))||_0x1542e2[_0x166d8a(0x1e9)]()['includes'](_0x166d8a(0x191)),_0x56d861=_0x385f9d[_0x166d8a(0x16e)]?.[_0x166d8a(0x181)]?.[_0x166d8a(0x223)],_0x10c8f1=_0x385f9d[_0x166d8a(0x233)][0x0];reportMorphError({'error_message':_0x1542e2,'error_type':_0x1a0b63?_0x166d8a(0x210):_0x10c8f1?.[_0x166d8a(0x15e)]?.['name']||_0x166d8a(0x21f),'context':{'tool':_0x166d8a(0x20c),'repo_path':_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x229)],'query':_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x1b7)],'model':_0x166d8a(0x1df),'termination_reason':_0x385f9d[_0x166d8a(0x20d)],'error_count':_0x385f9d[_0x166d8a(0x233)][_0x166d8a(0x21a)],'is_timeout':_0x1a0b63,'timings':_0x385f9d[_0x166d8a(0x24a)],'files_attempted':_0x56d861?.['map'](_0x5b2d3c=>({'path':_0x5b2d3c[_0x166d8a(0x1d4)],'lines':_0x5b2d3c[_0x166d8a(0x1da)]})),'tool_calls':_0x3a96f4(_0x385f9d[_0x166d8a(0x249)]),'messages':_0x385f9d[_0x166d8a(0x249)]?.[_0x166d8a(0x1ef)](_0x3c22dc=>({'role':_0x3c22dc[_0x166d8a(0x168)],'content':_0x3c22dc[_0x166d8a(0x237)]})),'request_content':{'query':_0x1238ae[_0x166d8a(0x1c0)]['search_string'],'repo_path':_0x1238ae['data'][_0x166d8a(0x229)],'repoRoot':a0_0x4fd06a[_0x166d8a(0x1a9)](_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x229)]),'model':_0x166d8a(0x1df)}},'stack_trace':_0x10c8f1?.[_0x166d8a(0x17a)]||undefined,'source':_0x166d8a(0x164)})['catch'](()=>{});}else _0x1759eb=_0x166d8a(0x22c);}return{'content':[{'type':'text','text':_0x1759eb}]};}catch(_0x573d83){const _0x380212=_0x573d83 instanceof Error?_0x573d83['message']:String(_0x573d83),_0x95b473=_0x380212[_0x166d8a(0x1e9)]()[_0x166d8a(0x232)]('timeout')||_0x380212[_0x166d8a(0x1e9)]()[_0x166d8a(0x232)](_0x166d8a(0x1e8))||_0x380212[_0x166d8a(0x1e9)]()[_0x166d8a(0x232)](_0x166d8a(0x191))||_0x573d83 instanceof Error&&_0x573d83[_0x166d8a(0x1a5)]===_0x166d8a(0x210);return reportMorphError({'error_message':_0x380212,'error_type':_0x95b473?_0x166d8a(0x210):_0x573d83 instanceof Error?_0x573d83[_0x166d8a(0x15e)][_0x166d8a(0x1a5)]:_0x166d8a(0x22f),'context':{'tool':_0x166d8a(0x20c),'repo_path':_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x229)],'query':_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x1b7)],'model':'morph-warp-grep-v1-1111v0','is_timeout':_0x95b473,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x1b7)],'repo_path':_0x1238ae[_0x166d8a(0x1c0)]['repo_path'],'repoRoot':a0_0x4fd06a['resolve'](_0x1238ae['data'][_0x166d8a(0x229)]),'model':_0x166d8a(0x1df)}},'stack_trace':_0x573d83 instanceof Error?_0x573d83['stack']:undefined,'source':_0x166d8a(0x164)})[_0x166d8a(0x1d3)](()=>{}),{'content':[{'type':_0x166d8a(0x1c1),'text':_0x166d8a(0x1e0)+_0x380212}],'isError':![]};}}case'codebase_search':{const _0x203f3b=CodebaseSearchArgsSchema[_0x166d8a(0x163)](_0x2c280a);if(!_0x203f3b[_0x166d8a(0x1a0)])return{'content':[{'type':_0x166d8a(0x1c1),'text':_0x166d8a(0x1c9)+_0x203f3b['error']}],'isError':!![]};try{const _0xe1599=MORPH_API_KEY;if(!_0xe1599)throw new Error(_0x166d8a(0x167));const _0x768fa6=_0x203f3b[_0x166d8a(0x1c0)][_0x166d8a(0x17d)],_0x4acbdc=await executeCodebaseSearch({'query':_0x203f3b[_0x166d8a(0x1c0)][_0x166d8a(0x1bb)],'target_directories':_0x768fa6,'limit':_0x203f3b[_0x166d8a(0x1c0)][_0x166d8a(0x1fb)]},{'apiKey':_0xe1599,'repoId':_0x203f3b[_0x166d8a(0x1c0)][_0x166d8a(0x1e6)],'branch':_0x203f3b[_0x166d8a(0x1c0)][_0x166d8a(0x235)],'commitHash':_0x203f3b[_0x166d8a(0x1c0)][_0x166d8a(0x248)],'debug':![]});if(!_0x4acbdc['success'])return{'content':[{'type':_0x166d8a(0x1c1),'text':_0x166d8a(0x214)+_0x4acbdc[_0x166d8a(0x230)]}],'isError':!![]};const _0x54a226=_0x4acbdc[_0x166d8a(0x217)][_0x166d8a(0x21a)]===0x0?_0x166d8a(0x1dc)+_0x203f3b[_0x166d8a(0x1c0)]['query']+'\x22':'Found\x20'+_0x4acbdc['results'][_0x166d8a(0x21a)]+_0x166d8a(0x19b)+_0x4acbdc[_0x166d8a(0x1f5)]['searchTimeMs']+_0x166d8a(0x166)+_0x4acbdc[_0x166d8a(0x217)][_0x166d8a(0x1ef)]((_0x36cf26,_0x5694e3)=>_0x5694e3+0x1+'.\x20'+_0x36cf26[_0x166d8a(0x1fa)]+'\x20('+(_0x36cf26[_0x166d8a(0x1f1)]*0x64)[_0x166d8a(0x199)](0x1)+'%\x20match)\x0a'+('\x20\x20\x20Lines\x20'+_0x36cf26[_0x166d8a(0x1c6)]+'-'+_0x36cf26[_0x166d8a(0x1b8)]+'\x0a')+(_0x166d8a(0x1b6)+_0x36cf26['content']['substring'](0x0,0xc8)+(_0x36cf26[_0x166d8a(0x237)][_0x166d8a(0x21a)]>0xc8?_0x166d8a(0x1f9):'')+'\x0a'))[_0x166d8a(0x1cd)]('\x0a');return{'content':[{'type':_0x166d8a(0x1c1),'text':_0x54a226}]};}catch(_0x107e07){const _0x154c20=_0x107e07 instanceof Error?_0x107e07[_0x166d8a(0x1dd)]:String(_0x107e07);return reportMorphError({'error_message':_0x154c20,'error_type':_0x107e07 instanceof Error?_0x107e07[_0x166d8a(0x15e)]['name']:'UnknownError','context':{'tool':_0x166d8a(0x1f0),'query':_0x203f3b[_0x166d8a(0x1c0)]['query'],'repo_id':_0x203f3b['data'][_0x166d8a(0x1e6)],'target_directories':_0x203f3b[_0x166d8a(0x1c0)][_0x166d8a(0x17d)]},'stack_trace':_0x107e07 instanceof Error?_0x107e07[_0x166d8a(0x17a)]:undefined,'source':_0x166d8a(0x164)})[_0x166d8a(0x1d3)](()=>{}),{'content':[{'type':_0x166d8a(0x1c1),'text':_0x166d8a(0x21e)+_0x154c20}],'isError':!![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x457a0b);}}catch(_0x4e77bb){const _0x200398=_0x4e77bb instanceof Error?_0x4e77bb[_0x166d8a(0x1dd)]:String(_0x4e77bb);return reportMorphError({'error_message':_0x200398,'error_type':_0x4e77bb instanceof Error?_0x4e77bb['constructor'][_0x166d8a(0x1a5)]:_0x166d8a(0x22f),'context':{'tool':name,'arguments':args?JSON[_0x166d8a(0x17b)](args)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x166d8a(0x1cf)},'stack_trace':_0x4e77bb instanceof Error?_0x4e77bb['stack']:undefined,'source':_0x166d8a(0x164)})[_0x166d8a(0x1d3)](()=>{}),{'content':[{'type':_0x166d8a(0x1c1),'text':_0x166d8a(0x21e)+_0x200398}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x330c79){const _0x100749=a0_0x57c7fb,_0x3c2353=await getValidRootDirectories(_0x330c79);if(_0x3c2353['length']>0x0)allowedDirectories=[..._0x3c2353],console[_0x100749(0x230)](_0x100749(0x218)+_0x3c2353[_0x100749(0x21a)]+'\x20valid\x20directories');else{console[_0x100749(0x230)](_0x100749(0x1fe));if(ENABLE_WORKSPACE_MODE)try{const _0x440280=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x440280&&(allowedDirectories=[_0x440280],console[_0x100749(0x230)]('Fallback:\x20Using\x20workspace\x20root\x20'+_0x440280));}catch(_0x17da7c){console[_0x100749(0x230)](_0x100749(0x1e2)+_0x17da7c);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x1193e8=a0_0x57c7fb;try{const _0x58444d=await server[_0x1193e8(0x1c7)]();_0x58444d&&_0x1193e8(0x182)in _0x58444d&&await updateAllowedDirectoriesFromRoots(_0x58444d[_0x1193e8(0x182)]);}catch(_0x4b5ff1){console[_0x1193e8(0x230)](_0x1193e8(0x1d9),_0x4b5ff1 instanceof Error?_0x4b5ff1[_0x1193e8(0x1dd)]:String(_0x4b5ff1));}}),server[a0_0x57c7fb(0x1c5)]=async()=>{const _0x1e97a4=a0_0x57c7fb,_0x537fc4=server[_0x1e97a4(0x17f)]();if(_0x537fc4?.[_0x1e97a4(0x182)])try{const _0xedadad=await server[_0x1e97a4(0x1c7)]();_0xedadad&&_0x1e97a4(0x182)in _0xedadad?await updateAllowedDirectoriesFromRoots(_0xedadad[_0x1e97a4(0x182)]):console['error'](_0x1e97a4(0x21c));}catch(_0x404797){console[_0x1e97a4(0x230)]('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x404797 instanceof Error?_0x404797[_0x1e97a4(0x1dd)]:String(_0x404797));}else{if(allowedDirectories[_0x1e97a4(0x21a)]>0x0)console[_0x1e97a4(0x230)](_0x1e97a4(0x1af),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x1e97a4(0x230)](_0x1e97a4(0x21d));else throw new Error(_0x1e97a4(0x1e7));}}};async function runServer(){const _0x269a3f=a0_0x57c7fb,_0x5f474d=new StdioServerTransport();await server['connect'](_0x5f474d),console[_0x269a3f(0x230)](_0x269a3f(0x20b)),allowedDirectories[_0x269a3f(0x21a)]===0x0&&console[_0x269a3f(0x230)]('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x57c7fb(0x1d3)](_0x30eb75=>{const _0x22b8d6=a0_0x57c7fb;console[_0x22b8d6(0x230)](_0x22b8d6(0x173),_0x30eb75),process[_0x22b8d6(0x194)](0x1);});
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x1bed7d,_0x2eb590){const _0x428bb8=a1_0x4491,_0x21f12c=_0x1bed7d();while(!![]){try{const _0x58f3c3=parseInt(_0x428bb8(0x10f))/0x1*(parseInt(_0x428bb8(0x114))/0x2)+parseInt(_0x428bb8(0x11a))/0x3*(-parseInt(_0x428bb8(0x118))/0x4)+-parseInt(_0x428bb8(0x109))/0x5+-parseInt(_0x428bb8(0x10d))/0x6+parseInt(_0x428bb8(0x10b))/0x7+-parseInt(_0x428bb8(0x113))/0x8+parseInt(_0x428bb8(0x108))/0x9;if(_0x58f3c3===_0x2eb590)break;else _0x21f12c['push'](_0x21f12c['shift']());}catch(_0x2d20ec){_0x21f12c['push'](_0x21f12c['shift']());}}}(a1_0x40fe,0x823ca));function a1_0x40fe(){const _0x1e1fd1=['2809494qAlPju','slice','157082zZrvVy','homedir','match','test','3535392LhLYwf','12nGPgno','toUpperCase','charAt','join','1728540dFcCsE','trim','6NLJrUe','/mnt/','substring','7566570mxFRZU','133170QVbDdH','replace','3859135efAFEe','startsWith'];a1_0x40fe=function(){return _0x1e1fd1;};return a1_0x40fe();}function a1_0x4491(_0x21096c,_0x1a5613){_0x21096c=_0x21096c-0x106;const _0x40fe6c=a1_0x40fe();let _0x4491b5=_0x40fe6c[_0x21096c];return _0x4491b5;}import a1_0x13915b from'path';import a1_0x39a8be from'os';export function convertToWindowsPath(_0x2d574e){const _0x4c1455=a1_0x4491;if(_0x2d574e[_0x4c1455(0x10c)](_0x4c1455(0x106))){const _0x192dce=_0x2d574e[_0x4c1455(0x116)](0x5)[_0x4c1455(0x115)](),_0x56a02b=_0x2d574e[_0x4c1455(0x10e)](0x6)[_0x4c1455(0x10a)](/\//g,'\x5c');return _0x192dce+':'+_0x56a02b;}if(_0x2d574e[_0x4c1455(0x111)](/^\/[a-zA-Z]\//)){const _0xc64928=_0x2d574e[_0x4c1455(0x116)](0x1)[_0x4c1455(0x115)](),_0x101e1a=_0x2d574e[_0x4c1455(0x10e)](0x2)['replace'](/\//g,'\x5c');return _0xc64928+':'+_0x101e1a;}if(_0x2d574e['match'](/^[a-zA-Z]:/))return _0x2d574e['replace'](/\//g,'\x5c');return _0x2d574e;}export function normalizePath(_0x2d60f0){const _0x4ee427=a1_0x4491;_0x2d60f0=_0x2d60f0[_0x4ee427(0x119)]()[_0x4ee427(0x10a)](/^["']|["']$/g,'');const _0x323fab=_0x2d60f0['startsWith']('/')&&!_0x2d60f0[_0x4ee427(0x111)](/^\/mnt\/[a-z]\//i)&&!_0x2d60f0['match'](/^\/[a-zA-Z]\//);if(_0x323fab)return _0x2d60f0['replace'](/\/+/g,'/')['replace'](/\/+$/,'');_0x2d60f0=convertToWindowsPath(_0x2d60f0);if(_0x2d60f0['startsWith']('\x5c\x5c')){let _0x886a1d=_0x2d60f0;_0x886a1d=_0x886a1d[_0x4ee427(0x10a)](/^\\{2,}/,'\x5c\x5c');const _0x390b0e=_0x886a1d[_0x4ee427(0x107)](0x2)['replace'](/\\\\/g,'\x5c');_0x2d60f0='\x5c\x5c'+_0x390b0e;}else _0x2d60f0=_0x2d60f0[_0x4ee427(0x10a)](/\\\\/g,'\x5c');let _0x1f7010=a1_0x13915b['normalize'](_0x2d60f0);_0x2d60f0[_0x4ee427(0x10c)]('\x5c\x5c')&&!_0x1f7010[_0x4ee427(0x10c)]('\x5c\x5c')&&(_0x1f7010='\x5c'+_0x1f7010);if(_0x1f7010[_0x4ee427(0x111)](/^[a-zA-Z]:/)){let _0x7f10be=_0x1f7010['replace'](/\//g,'\x5c');return/^[a-z]:/[_0x4ee427(0x112)](_0x7f10be)&&(_0x7f10be=_0x7f10be['charAt'](0x0)[_0x4ee427(0x115)]()+_0x7f10be['slice'](0x1)),_0x7f10be;}return _0x1f7010[_0x4ee427(0x10a)](/\//g,'\x5c');}export function expandHome(_0x480741){const _0x5037b3=a1_0x4491;if(_0x480741[_0x5037b3(0x10c)]('~/')||_0x480741==='~')return a1_0x13915b[_0x5037b3(0x117)](a1_0x39a8be[_0x5037b3(0x110)](),_0x480741[_0x5037b3(0x10e)](0x1));return _0x480741;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a2_0x8140(_0x32af57,_0x29cbb3){_0x32af57=_0x32af57-0x11c;const _0x43606a=a2_0x4360();let _0x814004=_0x43606a[_0x32af57];return _0x814004;}(function(_0x482574,_0x1e2280){const _0x3d0a33=a2_0x8140,_0x3e6d9b=_0x482574();while(!![]){try{const _0x3387d2=parseInt(_0x3d0a33(0x12a))/0x1*(parseInt(_0x3d0a33(0x123))/0x2)+parseInt(_0x3d0a33(0x129))/0x3*(-parseInt(_0x3d0a33(0x11f))/0x4)+-parseInt(_0x3d0a33(0x126))/0x5+parseInt(_0x3d0a33(0x128))/0x6+-parseInt(_0x3d0a33(0x12f))/0x7+parseInt(_0x3d0a33(0x122))/0x8+parseInt(_0x3d0a33(0x11c))/0x9;if(_0x3387d2===_0x1e2280)break;else _0x3e6d9b['push'](_0x3e6d9b['shift']());}catch(_0x15e521){_0x3e6d9b['push'](_0x3e6d9b['shift']());}}}(a2_0x4360,0x2ebd5));function a2_0x4360(){const _0x402a17=['isAbsolute','404464YrKRyb','normalize','Path\x20must\x20be\x20absolute\x20after\x20normalization','156160tnyYfq','10kLmbJq','includes','some','1419505nDEChk','string','1620384JDHebn','6LWgoRo','51871HwdHYB','startsWith','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','sep','isArray','1493779wNUlQp','3078324fIwYcV','resolve'];a2_0x4360=function(){return _0x402a17;};return a2_0x4360();}import a2_0x289d7c from'path';export function isPathWithinAllowedDirectories(_0x42e8f7,_0x29558f){const _0x5504f6=a2_0x8140;if(typeof _0x42e8f7!=='string'||!Array[_0x5504f6(0x12e)](_0x29558f))return![];if(!_0x42e8f7||_0x29558f['length']===0x0)return![];if(_0x42e8f7[_0x5504f6(0x124)]('\x00'))return![];let _0x2d8188;try{_0x2d8188=a2_0x289d7c[_0x5504f6(0x11d)](a2_0x289d7c[_0x5504f6(0x120)](_0x42e8f7));}catch{return![];}if(!a2_0x289d7c[_0x5504f6(0x11e)](_0x2d8188))throw new Error(_0x5504f6(0x121));return _0x29558f[_0x5504f6(0x125)](_0x4c9274=>{const _0x4377bc=_0x5504f6;if(typeof _0x4c9274!==_0x4377bc(0x127)||!_0x4c9274)return![];if(_0x4c9274[_0x4377bc(0x124)]('\x00'))return![];let _0x40814e;try{_0x40814e=a2_0x289d7c[_0x4377bc(0x11d)](a2_0x289d7c[_0x4377bc(0x120)](_0x4c9274));}catch{return![];}if(!a2_0x289d7c['isAbsolute'](_0x40814e))throw new Error(_0x4377bc(0x12c));if(_0x2d8188===_0x40814e)return!![];if(_0x40814e===a2_0x289d7c['sep'])return _0x2d8188[_0x4377bc(0x12b)](a2_0x289d7c[_0x4377bc(0x12d)]);return _0x2d8188[_0x4377bc(0x12b)](_0x40814e+a2_0x289d7c['sep']);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x35c87c,_0x520fee){const _0x1ad283=a3_0x3300,_0x3dae1e=_0x35c87c();while(!![]){try{const _0x13d134=-parseInt(_0x1ad283(0x200))/0x1*(-parseInt(_0x1ad283(0x1ff))/0x2)+parseInt(_0x1ad283(0x201))/0x3+-parseInt(_0x1ad283(0x208))/0x4*(-parseInt(_0x1ad283(0x203))/0x5)+parseInt(_0x1ad283(0x1f3))/0x6*(-parseInt(_0x1ad283(0x1f1))/0x7)+parseInt(_0x1ad283(0x1fc))/0x8*(-parseInt(_0x1ad283(0x205))/0x9)+parseInt(_0x1ad283(0x1fe))/0xa+-parseInt(_0x1ad283(0x207))/0xb;if(_0x13d134===_0x520fee)break;else _0x3dae1e['push'](_0x3dae1e['shift']());}catch(_0x335659){_0x3dae1e['push'](_0x3dae1e['shift']());}}}(a3_0xaaab,0xb6667));import{promises as a3_0x25653f}from'fs';import a3_0x12029f from'path';function a3_0xaaab(){const _0x2bf5c3=['push','isDirectory','file://','join','stat','non-directory\x20root','homedir','57032shewqS','\x20due\x20to\x20error:\x20','7039400SNMMNK','4uAeUGr','436121SmITCo','1835094TCHRJr','invalid\x20path\x20or\x20inaccessible','35870tVTPVd','resolve','1017WQrLYI','error','16378010pTFhun','780WurxZj','3816484ejQhPO','slice','6zVFKJq','Skipping\x20'];a3_0xaaab=function(){return _0x2bf5c3;};return a3_0xaaab();}import a3_0x10631e from'os';function a3_0x3300(_0x367428,_0x329e41){_0x367428=_0x367428-0x1f1;const _0xaaab30=a3_0xaaab();let _0x330031=_0xaaab30[_0x367428];return _0x330031;}import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x1fc93c){const _0x486f57=a3_0x3300;try{const _0x3cd9a3=_0x1fc93c['startsWith'](_0x486f57(0x1f7))?_0x1fc93c[_0x486f57(0x1f2)](0x7):_0x1fc93c,_0x4af55f=_0x3cd9a3['startsWith']('~/')||_0x3cd9a3==='~'?a3_0x12029f[_0x486f57(0x1f8)](a3_0x10631e[_0x486f57(0x1fb)](),_0x3cd9a3['slice'](0x1)):_0x3cd9a3,_0x11aa37=a3_0x12029f[_0x486f57(0x204)](_0x4af55f),_0x5ed42a=await a3_0x25653f['realpath'](_0x11aa37);return normalizePath(_0x5ed42a);}catch{return null;}}function formatDirectoryError(_0x42746f,_0x5b60dc,_0x1f332d){const _0x23b5ca=a3_0x3300;if(_0x1f332d)return _0x23b5ca(0x1f4)+_0x1f332d+':\x20'+_0x42746f;const _0x32cdae=_0x5b60dc instanceof Error?_0x5b60dc['message']:String(_0x5b60dc);return'Skipping\x20invalid\x20directory:\x20'+_0x42746f+_0x23b5ca(0x1fd)+_0x32cdae;}export async function getValidRootDirectories(_0x5e1a64){const _0x119413=a3_0x3300,_0x30820e=[];for(const _0x366281 of _0x5e1a64){const _0x3776b0=await parseRootUri(_0x366281['uri']);if(!_0x3776b0){console['error'](formatDirectoryError(_0x366281['uri'],undefined,_0x119413(0x202)));continue;}try{const _0x4df6db=await a3_0x25653f[_0x119413(0x1f9)](_0x3776b0);_0x4df6db[_0x119413(0x1f6)]()?_0x30820e[_0x119413(0x1f5)](_0x3776b0):console[_0x119413(0x206)](formatDirectoryError(_0x3776b0,undefined,_0x119413(0x1fa)));}catch(_0x2815b1){console[_0x119413(0x206)](formatDirectoryError(_0x3776b0,_0x2815b1));}}return _0x30820e;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.80",
|
|
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.104",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|