@morphllm/morphmcp 0.8.218 → 0.8.219
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/log-utils.js +1 -1
- package/dist/logger.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/dist/tool-definitions.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_0x1d9c46=a0_0x2c14;function a0_0x2c14(_0x475594,_0x16a119){_0x475594=_0x475594-0xb8;const _0x507c0f=a0_0x507c();let _0x2c1470=_0x507c0f[_0x475594];return _0x2c1470;}(function(_0xc4348a,_0x586cc2){const _0x56d49f=a0_0x2c14,_0x5f0e58=_0xc4348a();while(!![]){try{const _0x3c4638=parseInt(_0x56d49f(0xe7))/0x1+parseInt(_0x56d49f(0x151))/0x2*(parseInt(_0x56d49f(0x180))/0x3)+parseInt(_0x56d49f(0xd0))/0x4*(-parseInt(_0x56d49f(0x119))/0x5)+-parseInt(_0x56d49f(0x197))/0x6+-parseInt(_0x56d49f(0xf4))/0x7+-parseInt(_0x56d49f(0x1c2))/0x8+-parseInt(_0x56d49f(0x163))/0x9*(-parseInt(_0x56d49f(0x1d7))/0xa);if(_0x3c4638===_0x586cc2)break;else _0x5f0e58['push'](_0x5f0e58['shift']());}catch(_0x3c21ef){_0x5f0e58['push'](_0x5f0e58['shift']());}}}(a0_0x507c,0x70166));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_0x28e2dc from'fs/promises';import a0_0x35f3fc from'path';import a0_0x32368f from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';function a0_0x507c(){const _0x438011=['MCP','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','Tool\x20','command','Parameters:\x0a','utf-8','-\x20Read\x20file\x20`','TimeoutError','Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.','isArray','ENABLE_WORKSPACE_MODE','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','owner_repo','EDIT_FILE','read',',\x20modified\x20','read\x20','list_directory','.cursor','path_validation_resolved','match','requiresApiKey','MORPH_API_KEY','slice','`\x20in\x20`','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','cwd','WarpGrepError','map','timed\x20out','false','compaction_failed','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','dirname','status','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','MORPH_API_URL','4472448grEkvW','warn','[could\x20not\x20read\x20file:\x20','WORKSPACE_ROOT','floor','\x0aOptions:','Warning:\x20ENABLED_TOOLS/DISABLED_TOOLS\x20names\x20unknown\x20tool\x20\x22','messages','assistant','Rules:\x0a','Created\x20File','parse','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','catch','WarpGrep\x20sub-tool\x20errors:\x20','instructions','\x22.\x20Known\x20tools:\x20','morph-mcp','join','PWD','@morphllm/morphmcp\x20','9530gKEhYz','Tool\x20\x22','env','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','file_read_complete','describe','stack','startsWith','github_search_start','min','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','path_validation_failed','glob\x20\x27','file_path','WHEN\x20TO\x20USE\x20vs\x20native\x20edit/patch\x20tools:\x20prefer\x20this\x20tool\x20for\x20large\x20files,\x20multiple\x20or\x20scattered\x20edits,\x20refactors,\x20and\x20whitespace-sensitive\x20changes.\x20A\x20single\x20tiny\x20exact-string\x20replacement\x20can\x20use\x20the\x20native\x20edit/patch\x20tool.\x20If\x20this\x20tool\x20errors\x20or\x20times\x20out,\x20fall\x20back\x20to\x20native\x20edit\x20with\x20exact\x20string\x20matching.\x0a\x0a','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','has','some','indexOf','RipgrepNotAvailable','role','constructor','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','isDirectory','Workspace\x20mode\x20enabled:\x20Using\x20','turns','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','\x27\x20in\x20`','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','enum','--api-key=','morph-v3-large','linesModified','lines','5716XfbTyy','context','unknown\x20error','edit_file','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','.\x20Path:\x20','listRoots','all','boolean','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','grep','function','linesRemoved','\x20valid\x20directories','linesAdded','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','timeout','github_url','Morph\x20Edit\x20','path_validation_start','MORPH_LARGE_APPLY','morph-warp-grep-v2.1','163999xBlTkL','object','basename','SymlinkError','Error\x20accessing\x20directory\x20','codebase_search','setNotificationHandler','glob','stat','instruction','ENOENT','ms.\x20Success:\x20','0.2.0','6204401JRkHUT','Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a','FileReadError','--api-key','-\x20Glob\x20search\x20`','split','message','normalize','Fatal\x20error\x20running\x20server:','now','pattern','[github_codebase_search]\x20Failed\x20in\x20','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','access','[github_codebase_search]\x20Done\x20in\x20','grep_search','filePath','repo_path','Parent\x20directory\x20does\x20not\x20exist:\x20','warp_grep_complete','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','files','\x0a</file>','safeParse','ReadError','package.json','Example\x20format:\x0a','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','tool_call_id','added\x20','Fallback:\x20Using\x20workspace\x20root\x20','toLowerCase','tool_calls','Cargo.toml','annotations','readFile','post','1670JLGbuq','provider_created','A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20','roots','-\x20Preserve\x20exact\x20indentation\x0a','target_filepath','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','code_edit','--help','homedir','response','mcp-filesystem','Failed\x20to\x20request\x20roots\x20from\x20client:','\x20-\x20','sep','Disabled\x20tools:\x20','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','\x20(new\x20file)','oninitialized','RipgrepError','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','api-key','description','sk-','text','list_directory\x20','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','metadata','log','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','edit','arguments','exit','file_read_failed','length','Morph\x20Edit\x20Preview','tool','resolve','code','unknown','errors','\x0a...\x20(truncated,\x20total:\x20','completed_with_file_errors','morph-v3-fast','-\x20Listed\x20directory\x20`','Warning:\x20Workspace\x20fallback\x20failed:\x20','GitHub\x20search\x20failed:\x20','\x20disabled\x20via\x20ENABLED_TOOLS/DISABLED_TOOLS','GITHUB_CODEBASE_SEARCH','searchGitHub','search_string','path','Applied','success','https://morphllm.com/api/error-report','target_file','2OMxXCv','title','ToolException','.\x20Changes:\x20','content','debug','data','source','UnknownError','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','Preview\x20changes\x20without\x20applying\x20them.','default','user','runWarpGrep_call','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','BinaryFile','includes','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','27414sCBgOE','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','tsconfig.json','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','every','Bearer\x20','optional','PathError','\x22>\x0a','branch','node_modules','name','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','MORPH_WARP_GREP_TIMEOUT','morph-','\x20error(s)','timings','CODEBASE_SEARCH','new_string','Relevant\x20context\x20found:','Error\x20running\x20fast\x20context\x20search:\x20','FileNotFound','finish','\x22>\x0aError\x20reading\x20file:\x20','\x20\x20morph-mcp','substring','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','.git','53589vUMaiB','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','error','Warning:\x20','Error:\x20','<file\x20path=\x22','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','api_request_start','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','search_type','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','string','tool_call_error','etimedout','filter','API\x20error\x20(auth/rate-limit)','completed','realpath','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','terminationReason','push','stringify','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','4217430RMWdqj','.vscode','dryRun','SubToolError','\x20is\x20not\x20a\x20directory'];a0_0x507c=function(){return _0x438011;};return a0_0x507c();}import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{logger}from'./logger.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0xe5763e from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES,resolveToolFilter}from'./tool-definitions.js';function fixPathRepetition(_0x564eeb){const _0x546cdf=a0_0x2c14,_0x3d8461=_0x564eeb[_0x546cdf(0xf9)](a0_0x35f3fc[_0x546cdf(0x127)])[_0x546cdf(0x18e)](Boolean);if(_0x3d8461[_0x546cdf(0x13b)]<0x2)return null;for(let _0x1988d0=Math[_0x546cdf(0x1c6)](_0x3d8461[_0x546cdf(0x13b)]/0x2);_0x1988d0>=0x1;_0x1988d0--){for(let _0x4063f8=0x0;_0x4063f8<=_0x3d8461['length']-0x2*_0x1988d0;_0x4063f8++){const _0x25d437=_0x3d8461[_0x546cdf(0x1b4)](_0x4063f8,_0x4063f8+_0x1988d0),_0x530029=_0x3d8461[_0x546cdf(0x1b4)](_0x4063f8+_0x1988d0,_0x4063f8+0x2*_0x1988d0);if(_0x25d437[_0x546cdf(0x167)]((_0x7b3e5d,_0x3adaa3)=>_0x7b3e5d===_0x530029[_0x3adaa3])){const _0x614de8=[..._0x3d8461['slice'](0x0,_0x4063f8),..._0x3d8461[_0x546cdf(0x1b4)](_0x4063f8+_0x1988d0)];return a0_0x35f3fc[_0x546cdf(0x127)]+_0x614de8[_0x546cdf(0x1d4)](a0_0x35f3fc['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x22bb29=a0_0x2c14;try{const _0x543439=require('../package.json');return _0x543439['version']??_0x22bb29(0x140);}catch(_0x235c68){return logMcpStderr(_0x22bb29(0x1db),_0x235c68),_0x22bb29(0x140);}}function printHelp(){const _0x1edc3e=a0_0x2c14;console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x1edc3e(0x135)](_0x1edc3e(0x133)),console[_0x1edc3e(0x135)](_0x1edc3e(0x1c7)),console[_0x1edc3e(0x135)](_0x1edc3e(0x1da)),console[_0x1edc3e(0x135)](_0x1edc3e(0x1ce)),console[_0x1edc3e(0x135)](_0x1edc3e(0x188)),console['log']('\x0aExamples:'),console['log'](_0x1edc3e(0x17b)),console[_0x1edc3e(0x135)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process['argv'][a0_0x1d9c46(0x1b4)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x1d9c46(0x121),'-h']);cliArgs[a0_0x1d9c46(0xbf)](_0xab262b=>VERSION_FLAGS[a0_0x1d9c46(0xbe)](_0xab262b))&&(console['log'](a0_0x1d9c46(0x1d6)+getPackageVersion()),process[a0_0x1d9c46(0x139)](0x0));cliArgs['some'](_0x2e4510=>HELP_FLAGS[a0_0x1d9c46(0xbe)](_0x2e4510))&&(printHelp(),process[a0_0x1d9c46(0x139)](0x0));function getCliArg(_0x73f175){const _0x1408be=a0_0x1d9c46;for(let _0x566662=0x0;_0x566662<cliArgs[_0x1408be(0x13b)];_0x566662++){const _0x5ab7b5=cliArgs[_0x566662];if(_0x5ab7b5[_0x1408be(0x1df)]('--'+_0x73f175+'='))return _0x5ab7b5[_0x1408be(0x1b4)](('--'+_0x73f175+'=')[_0x1408be(0x13b)]);if(_0x5ab7b5==='--'+_0x73f175&&_0x566662+0x1<cliArgs[_0x1408be(0x13b)])return cliArgs[_0x566662+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x1d9c46(0x13b)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x1d9c46(0xbe)](arg)||HELP_FLAGS[a0_0x1d9c46(0xbe)](arg))continue;if(arg['startsWith'](a0_0x1d9c46(0xcc)))continue;if(arg===a0_0x1d9c46(0xf7)){i++;continue;}args[a0_0x1d9c46(0x194)](arg);}const WORKSPACE_ROOT=process[a0_0x1d9c46(0x1d9)][a0_0x1d9c46(0x1c5)]||process['env'][a0_0x1d9c46(0x1d5)]||process[a0_0x1d9c46(0x1b7)](),ENABLE_WORKSPACE_MODE=process[a0_0x1d9c46(0x1d9)][a0_0x1d9c46(0x1a7)]!=='false',MORPH_API_KEY=getCliArg(a0_0x1d9c46(0x12e))??process[a0_0x1d9c46(0x1d9)][a0_0x1d9c46(0x1b3)],MORPH_API_URL=process['env'][a0_0x1d9c46(0x1c1)],MORPH_LARGE_APPLY=process[a0_0x1d9c46(0x1d9)][a0_0x1d9c46(0xe5)]!==a0_0x1d9c46(0x1bb),MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x1d9c46(0x170)]?parseInt(process[a0_0x1d9c46(0x1d9)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),TOOL_FILTER=resolveToolFilter(process[a0_0x1d9c46(0x1d9)]),DISABLED_TOOLS=TOOL_FILTER['disabled'];for(const tool of TOOL_FILTER[a0_0x1d9c46(0x140)]){console['error'](a0_0x1d9c46(0x1c8)+tool+a0_0x1d9c46(0x1d2)+[...KNOWN_TOOL_NAMES][a0_0x1d9c46(0x1d4)](',\x20'));}DISABLED_TOOLS['size']>0x0&&console['error'](a0_0x1d9c46(0x128)+[...DISABLED_TOOLS][a0_0x1d9c46(0x1d4)](',\x20'));MORPH_API_KEY&&!MORPH_API_KEY[a0_0x1d9c46(0x1df)](a0_0x1d9c46(0x130))&&!MORPH_API_KEY[a0_0x1d9c46(0x1df)](a0_0x1d9c46(0x171))&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x8af8c1){const _0x434e02=a0_0x1d9c46;try{await a0_0xe5763e[_0x434e02(0x118)](_0x434e02(0x14f),{..._0x8af8c1,'timestamp':new Date()['toISOString'](),'source':_0x8af8c1[_0x434e02(0x158)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x8af8c1[_0x434e02(0xd1)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x434e02(0x168)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x27cb31,_0x5b47ce){const _0x49395b=a0_0x1d9c46;if(_0x27cb31&&typeof _0x27cb31===_0x49395b(0xe8)&&_0x49395b(0x1bf)in _0x27cb31)return _0x27cb31[_0x49395b(0x1bf)];if(_0x27cb31&&typeof _0x27cb31==='object'&&'response'in _0x27cb31)return _0x27cb31[_0x49395b(0x123)]?.[_0x49395b(0x1bf)];const _0x4db37f=_0x5b47ce[_0x49395b(0x1b1)](/\b(401|429)\b/);return _0x4db37f?parseInt(_0x4db37f[0x1],0xa):null;}function handleMorphAPIError(_0x967dd){const _0x2f7550=a0_0x1d9c46,_0x3fed5c=_0x967dd instanceof Error?_0x967dd['message']:String(_0x967dd),_0x117125=extractStatusCode(_0x967dd,_0x3fed5c);switch(_0x117125){case 0x191:return{'content':[{'type':_0x2f7550(0x131),'text':'Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.'}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x2f7550(0x131),'text':'Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.'}],'isError':!![]};default:return null;}}args[a0_0x1d9c46(0x13b)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x1d9c46(0xc8)),logMcpStderr(a0_0x1d9c46(0x166)),logMcpStderr(a0_0x1d9c46(0x186)),logMcpStderr(a0_0x1d9c46(0x17e)),logMcpStderr(a0_0x1d9c46(0xdf)),logMcpStderr(a0_0x1d9c46(0x18a)));function normalizePath(_0xaf3c2f){const _0x1caa55=a0_0x1d9c46;return a0_0x35f3fc[_0x1caa55(0xfb)](_0xaf3c2f);}function expandHome(_0xfa8da9){const _0x282313=a0_0x1d9c46;if(_0xfa8da9[_0x282313(0x1df)]('~/')||_0xfa8da9==='~')return a0_0x35f3fc[_0x282313(0x1d4)](a0_0x32368f[_0x282313(0x122)](),_0xfa8da9[_0x282313(0x1b4)](0x1));return _0xfa8da9;}let allowedDirectories=await Promise[a0_0x1d9c46(0xd7)](args[a0_0x1d9c46(0x1b9)](async _0x48f752=>{const _0x414e3a=a0_0x1d9c46,_0x43adc5=expandHome(_0x48f752),_0x5adc86=a0_0x35f3fc[_0x414e3a(0x13e)](_0x43adc5);try{const _0x480879=await a0_0x28e2dc['realpath'](_0x5adc86);return normalizePath(_0x480879);}catch(_0x272ff6){return normalizePath(_0x5adc86);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x1d9c46(0x194)](workspaceDir),logMcpStderr(a0_0x1d9c46(0xc6)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x49516a){logMcpStderr(a0_0x1d9c46(0x10f)+a0_0x49516a);}async function detectWorkspaceRoot(_0x2f1900){const _0x3a4419=a0_0x1d9c46;let _0x436f6c=a0_0x35f3fc[_0x3a4419(0x13e)](_0x2f1900);const _0x3e4e82=[_0x3a4419(0x17f),_0x3a4419(0x198),_0x3a4419(0x10d),_0x3a4419(0x115),'pyproject.toml','go.mod',_0x3a4419(0x1af),_0x3a4419(0x165),'composer.json'];while(_0x436f6c!==a0_0x35f3fc['dirname'](_0x436f6c)){for(const _0x4feb1f of _0x3e4e82){const _0xe90149=a0_0x35f3fc[_0x3a4419(0x1d4)](_0x436f6c,_0x4feb1f);try{return await a0_0x28e2dc[_0x3a4419(0x101)](_0xe90149),normalizePath(_0x436f6c);}catch{}}_0x436f6c=a0_0x35f3fc[_0x3a4419(0x1be)](_0x436f6c);}return normalizePath(_0x2f1900);}await Promise[a0_0x1d9c46(0xd7)](args[a0_0x1d9c46(0x1b9)](async _0x2bb716=>{const _0x320310=a0_0x1d9c46;try{const _0x4a69fe=await a0_0x28e2dc[_0x320310(0xef)](expandHome(_0x2bb716));!_0x4a69fe[_0x320310(0xc5)]()&&(logMcpStderr(_0x320310(0x184)+_0x2bb716+_0x320310(0x19b)),process[_0x320310(0x139)](0x1));}catch(_0x476232){logMcpStderr(_0x320310(0xeb)+_0x2bb716+':',_0x476232),process[_0x320310(0x139)](0x1);}}));async function validatePath(_0x224140){const _0x499e5e=a0_0x1d9c46,_0x699999=expandHome(_0x224140),_0x10917d=a0_0x35f3fc[_0x499e5e(0x13e)](_0x699999);logger[_0x499e5e(0x156)]('MCP',_0x499e5e(0xe4),{'raw_path':_0x224140,'absolute':_0x10917d});try{const _0x11c061=await a0_0x28e2dc['realpath'](_0x10917d);return logger[_0x499e5e(0x156)](_0x499e5e(0x19c),_0x499e5e(0x1b0),{'resolved':_0x11c061,'symlink':_0x11c061!==_0x10917d}),_0x11c061;}catch(_0x2152c2){if(_0x2152c2[_0x499e5e(0x13f)]===_0x499e5e(0xf1)){const _0x5e78b0=a0_0x35f3fc[_0x499e5e(0x1be)](_0x10917d);try{const _0x3d5aaf=await a0_0x28e2dc[_0x499e5e(0x191)](_0x5e78b0),_0x324c84=a0_0x35f3fc['join'](_0x3d5aaf,a0_0x35f3fc[_0x499e5e(0xe9)](_0x10917d));return logger[_0x499e5e(0x156)](_0x499e5e(0x19c),_0x499e5e(0x1b0),{'resolved':_0x324c84,'new_file':!![]}),_0x324c84;}catch{logger[_0x499e5e(0x182)]('MCP',_0x499e5e(0xb9),{'raw_path':_0x224140,'error':_0x499e5e(0x106)+_0x5e78b0});throw new Error(_0x499e5e(0x106)+_0x5e78b0);}}logger[_0x499e5e(0x182)](_0x499e5e(0x19c),_0x499e5e(0xb9),{'raw_path':_0x224140,'error':_0x2152c2[_0x499e5e(0xfa)]});throw _0x2152c2;}}const MorphEditFileArgsSchema=z[a0_0x1d9c46(0xe8)]({'path':z[a0_0x1d9c46(0x18b)](),'code_edit':z[a0_0x1d9c46(0x18b)]()[a0_0x1d9c46(0x1dd)](a0_0x1d9c46(0x1b6)),'instruction':z['string']()[a0_0x1d9c46(0x1dd)](a0_0x1d9c46(0x108)),'dryRun':z[a0_0x1d9c46(0xd8)]()[a0_0x1d9c46(0x15c)](![])[a0_0x1d9c46(0x1dd)](a0_0x1d9c46(0x15b))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x1d9c46(0xc4),WarpGrepArgsSchema=z[a0_0x1d9c46(0xe8)]({'search_string':z[a0_0x1d9c46(0x18b)]()[a0_0x1d9c46(0x1dd)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x1d9c46(0x18b)]()[a0_0x1d9c46(0x1dd)](a0_0x1d9c46(0x164)),'search_type':z[a0_0x1d9c46(0xcb)]([a0_0x1d9c46(0x15c),'node_modules'])[a0_0x1d9c46(0x169)]()[a0_0x1d9c46(0x1dd)](a0_0x1d9c46(0xe0))}),WarpGrepGitHubArgsSchema=z[a0_0x1d9c46(0xe8)]({'search_string':z['string']()[a0_0x1d9c46(0x1dd)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()['optional']()[a0_0x1d9c46(0x1dd)](a0_0x1d9c46(0x19e)),'owner_repo':z[a0_0x1d9c46(0x18b)]()[a0_0x1d9c46(0x169)]()['describe'](a0_0x1d9c46(0xb8)),'branch':z['string']()[a0_0x1d9c46(0x169)]()['describe'](a0_0x1d9c46(0x17d))}),server=new Server({'name':a0_0x1d9c46(0x1d3),'version':'0.2.0'},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0xfcdf9a=a0_0x1d9c46,_0x204f4f=[{'name':TOOL_NAMES['EDIT_FILE'],'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES.**\x20Fast,\x20accurate,\x20and\x20prevents\x20context\x20pollution.\x20Especially\x20useful\x20when\x20making\x20multiple\x20edits\x20in\x20one\x20file:\x20describe\x20all\x20changes\x20in\x20a\x20single\x20call\x20and\x20the\x20semantic\x20edit\x20applies\x20them\x20all\x20at\x20once,\x20more\x20accurately\x20and\x20faster\x20than\x20sequential\x20edits.\x20Unlike\x20search-and-replace\x20or\x20patch\x20edits\x20which\x20do\x20narrow\x20edits\x20one\x20at\x20a\x20time,\x20with\x20this\x20tool\x20you\x20should\x20do\x20all\x20your\x20code\x20changes\x20in\x20one\x20go\x20separated\x20by\x20`//\x20...\x20existing\x20code\x20...`\x20markers.\x20This\x20saves\x20tokens\x20and\x20improves\x20performance\x20because\x20you\x20do\x20not\x20need\x20to\x20reread\x20files\x20before\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a'+_0xfcdf9a(0xbc)+_0xfcdf9a(0x1a1)+_0xfcdf9a(0xca)+'-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a'+_0xfcdf9a(0x162)+_0xfcdf9a(0xf5)+_0xfcdf9a(0x10e)+_0xfcdf9a(0xbd)+_0xfcdf9a(0x1cb)+_0xfcdf9a(0x11f)+_0xfcdf9a(0x11d)+_0xfcdf9a(0x15a)+_0xfcdf9a(0x136),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'annotations':{'readOnlyHint':![],'destructiveHint':!![],'idempotentHint':![],'openWorldHint':![]},'requiresApiKey':!![]},{'name':TOOL_NAMES['CODEBASE_SEARCH'],'description':_0xfcdf9a(0x11b)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0xfcdf9a(0x15f)+_0xfcdf9a(0xd9)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':!![]},'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':!![]},'requiresApiKey':!![]}],_0x5b3d8f=_0x204f4f[_0xfcdf9a(0x18e)](_0x117950=>{const _0x416d13=_0xfcdf9a;if(DISABLED_TOOLS[_0x416d13(0xbe)](_0x117950[_0x416d13(0x16e)]))return console['error'](_0x416d13(0x19f)+_0x117950[_0x416d13(0x16e)]+_0x416d13(0x148)),![];if(_0x416d13(0x1b2)in _0x117950&&_0x117950[_0x416d13(0x1b2)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x117950[_0x416d13(0x16e)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x5b3d8f[_0xfcdf9a(0x1b9)](_0x396687=>({'name':_0x396687['name'],..._0xfcdf9a(0x152)in _0x396687&&_0x396687[_0xfcdf9a(0x152)]?{'title':_0x396687[_0xfcdf9a(0x152)]}:{},'description':_0x396687[_0xfcdf9a(0x12f)],'inputSchema':_0x396687['inputSchema'],..._0xfcdf9a(0x116)in _0x396687&&_0x396687[_0xfcdf9a(0x116)]?{'annotations':_0x396687['annotations']}:{}}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x442046=>{const _0x5c21bd=a0_0x1d9c46,{name:_0x4fd9fb,arguments:_0xdcd00e}=_0x442046['params'],_0x2227e5=Date[_0x5c21bd(0xfd)]();logger[_0x5c21bd(0x156)](_0x5c21bd(0x19c),'tool_call_received',{'tool':_0x4fd9fb,'args':_0x4fd9fb===_0x5c21bd(0xd3)?{'path':_0xdcd00e?.[_0x5c21bd(0x14c)],'instruction':_0xdcd00e?.[_0x5c21bd(0xf0)]||_0xdcd00e?.[_0x5c21bd(0x1d1)],'dryRun':_0xdcd00e?.['dryRun']}:_0xdcd00e});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x5c21bd(0x131),'text':_0x5c21bd(0x192)}],'isError':!![]};if(!MORPH_API_KEY[_0x5c21bd(0x1df)]('sk-')&&!MORPH_API_KEY[_0x5c21bd(0x1df)](_0x5c21bd(0x171)))return{'content':[{'type':_0x5c21bd(0x131),'text':_0x5c21bd(0x1a5)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0x4fd9fb))return{'content':[{'type':_0x5c21bd(0x131),'text':_0x5c21bd(0x1d8)+_0x4fd9fb+'\x22\x20is\x20disabled\x20via\x20ENABLED_TOOLS/DISABLED_TOOLS\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.'}],'isError':![]};switch(_0x4fd9fb){case TOOL_NAMES[_0x5c21bd(0x1aa)]:{let _0x32d9f1=_0xdcd00e;if(_0x32d9f1&&typeof _0x32d9f1===_0x5c21bd(0xe8)){if(!(_0x5c21bd(0x14c)in _0x32d9f1)){const _0x14cea7=_0x32d9f1[_0x5c21bd(0x150)]??_0x32d9f1[_0x5c21bd(0x104)]??_0x32d9f1[_0x5c21bd(0x11e)]??_0x32d9f1[_0x5c21bd(0xbb)]??_0x32d9f1['file'];if(_0x14cea7)_0x32d9f1={..._0x32d9f1,'path':_0x14cea7};}_0x5c21bd(0x1d1)in _0x32d9f1&&!('instruction'in _0x32d9f1)&&(_0x32d9f1={..._0x32d9f1,'instruction':_0x32d9f1[_0x5c21bd(0x1d1)]});if(!(_0x5c21bd(0x120)in _0x32d9f1)){const _0xb612d7=_0x32d9f1[_0x5c21bd(0x13f)]??_0x32d9f1[_0x5c21bd(0x175)]??_0x32d9f1[_0x5c21bd(0x155)]??_0x32d9f1[_0x5c21bd(0x137)];if(_0xb612d7)_0x32d9f1={..._0x32d9f1,'code_edit':_0xb612d7};}}const _0x4cbd86=MorphEditFileArgsSchema[_0x5c21bd(0x10b)](_0x32d9f1);if(!_0x4cbd86[_0x5c21bd(0x14e)])throw new Error(_0x5c21bd(0x181)+_0x4cbd86[_0x5c21bd(0x182)]);const _0x50c989=await validatePath(_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x14c)]);let _0x27b8ff=null,_0x3d9011=!![],_0x5321d2=null;try{_0x27b8ff=await a0_0x28e2dc['readFile'](_0x50c989,'utf-8'),logger[_0x5c21bd(0x156)](_0x5c21bd(0x19c),'file_read_complete',{'path':_0x50c989,'size_bytes':_0x27b8ff[_0x5c21bd(0x13b)]});}catch(_0x3b16cb){const _0x3a6110=_0x3b16cb[_0x5c21bd(0x13f)];_0x3a6110===_0x5c21bd(0xf1)?(_0x3d9011=![],_0x27b8ff='',logger[_0x5c21bd(0x156)](_0x5c21bd(0x19c),_0x5c21bd(0x1dc),{'path':_0x50c989,'exists':![]})):(_0x5321d2='Failed\x20to\x20read\x20file:\x20'+(_0x3a6110||_0x5c21bd(0x140))+_0x5c21bd(0x126)+(_0x3b16cb instanceof Error?_0x3b16cb[_0x5c21bd(0xfa)]:String(_0x3b16cb)),logger[_0x5c21bd(0x182)](_0x5c21bd(0x19c),_0x5c21bd(0x13a),{'path':_0x50c989,'error':_0x5321d2}),logMcpStderr(_0x5c21bd(0x183)+_0x5321d2));}let _0x3cd2d5;try{const _0x1bf31e=MORPH_API_KEY;if(!_0x1bf31e)throw new Error(_0x5c21bd(0x1bd));const _0x1e2f19=a0_0x35f3fc[_0x5c21bd(0x1be)](_0x50c989),_0x5c8fcd=a0_0x35f3fc[_0x5c21bd(0xe9)](_0x50c989);logger[_0x5c21bd(0x156)]('MCP',_0x5c21bd(0x187),{'model':_0x5c21bd(0x144),'path':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x14c)],'instruction_len':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0xf0)][_0x5c21bd(0x13b)],'code_edit_len':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x120)]['length'],'original_code_len':_0x27b8ff?.[_0x5c21bd(0x13b)]??0x0,'dry_run':_0x4cbd86['data']['dryRun']});const _0x125f82=Date[_0x5c21bd(0xfd)](),_0x4a402f=await executeEditFile({'target_filepath':_0x5c8fcd,'code_edit':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x120)],'instruction':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0xf0)]},{'morphApiKey':_0x1bf31e,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x1e2f19,'autoWrite':!_0x4cbd86[_0x5c21bd(0x157)]['dryRun'],'generateUdiff':![],'debug':![]}),_0x221354=Date[_0x5c21bd(0xfd)]()-_0x125f82;_0x3cd2d5=_0x4a402f['completionId'];if(!_0x4a402f['success'])throw new Error(_0x4a402f[_0x5c21bd(0x182)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x479403=_0x4a402f['changes'],_0x30f9e4=_0x5c21bd(0x111)+_0x479403['linesAdded']+',\x20removed\x20'+_0x479403[_0x5c21bd(0xdc)]+_0x5c21bd(0x1ac)+_0x479403[_0x5c21bd(0xce)];logger[_0x5c21bd(0x156)](_0x5c21bd(0x19c),'tool_call_complete',{'tool':_0x5c21bd(0xd3),'success':!![],'latency_ms':Date[_0x5c21bd(0xfd)]()-_0x2227e5,'edit_latency_ms':_0x221354,'changes':{'added':_0x479403[_0x5c21bd(0xde)],'removed':_0x479403[_0x5c21bd(0xdc)],'modified':_0x479403['linesModified']},'completion_id':_0x3cd2d5});if(_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x199)])return{'content':[{'type':_0x5c21bd(0x131),'text':_0x5c21bd(0x13c)+(_0x3d9011?'':_0x5c21bd(0x12a))+':\x20'+_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0xf0)]+_0x5c21bd(0x154)+_0x30f9e4+'.\x20Path:\x20'+_0x4cbd86['data'][_0x5c21bd(0x14c)]+'.'}]};return{'content':[{'type':_0x5c21bd(0x131),'text':_0x5c21bd(0xe3)+(_0x3d9011?_0x5c21bd(0x14d):_0x5c21bd(0x1cc))+':\x20'+_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0xf0)]+_0x5c21bd(0x154)+_0x30f9e4+_0x5c21bd(0xd5)+_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x14c)]+'.'}]};}catch(_0x1ba89e){const _0x214685=handleMorphAPIError(_0x1ba89e);if(_0x214685)return logger['error'](_0x5c21bd(0x19c),_0x5c21bd(0x18c),{'tool':_0x5c21bd(0xd3),'error':_0x5c21bd(0x18f),'latency_ms':Date[_0x5c21bd(0xfd)]()-_0x2227e5}),_0x214685;const _0x2e09ed=_0x1ba89e instanceof Error?_0x1ba89e[_0x5c21bd(0xfa)]:String(_0x1ba89e);return logger[_0x5c21bd(0x182)]('MCP',_0x5c21bd(0x18c),{'tool':'edit_file','error':_0x2e09ed,'path':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x14c)],'validated_path':_0x50c989,'latency_ms':Date[_0x5c21bd(0xfd)]()-_0x2227e5,'stack':_0x1ba89e instanceof Error?_0x1ba89e[_0x5c21bd(0x1de)]:undefined}),reportMorphError({'error_message':_0x2e09ed,'error_type':_0x1ba89e instanceof Error?_0x1ba89e[_0x5c21bd(0xc3)][_0x5c21bd(0x16e)]:'UnknownError','context':{'tool':_0x5c21bd(0xd3),'completion_id':_0x3cd2d5,'file_path':_0x4cbd86['data'][_0x5c21bd(0x14c)],'validated_path':_0x50c989,'instruction':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0xf0)],'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x5c21bd(0x144),'dry_run':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x199)],'file_exists':_0x3d9011,'file_read_error':_0x5321d2,'file_readable':_0x27b8ff!==null,'request_content':{'path':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x14c)],'code_edit':_0x4cbd86['data'][_0x5c21bd(0x120)],'instruction':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0xf0)],'original_code':_0x27b8ff!==null?_0x27b8ff[_0x5c21bd(0x13b)]>0xc350?_0x27b8ff['substring'](0x0,0xc350)+_0x5c21bd(0x142)+_0x27b8ff['length']+'\x20chars)':_0x27b8ff:_0x5c21bd(0x1c4)+(_0x5321d2||_0x5c21bd(0xd2))+']','original_code_length':_0x27b8ff?.['length']??0x0,'model':MORPH_LARGE_APPLY?_0x5c21bd(0xcd):_0x5c21bd(0x144),'dry_run':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x199)]}},'stack_trace':_0x1ba89e instanceof Error?_0x1ba89e[_0x5c21bd(0x1de)]:undefined,'source':'mcp-filesystem'})[_0x5c21bd(0x1cf)](()=>{}),{'content':[{'type':'text','text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x2e09ed}],'isError':!![]};}}case TOOL_NAMES[_0x5c21bd(0x174)]:{const _0x269ab1=WarpGrepArgsSchema[_0x5c21bd(0x10b)](_0xdcd00e);if(!_0x269ab1[_0x5c21bd(0x14e)])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x269ab1[_0x5c21bd(0x182)]}],'isError':!![]};const _0x1108a2=_0x2d6861=>{const _0x590b0b=_0x5c21bd,_0x49822a=[];for(const _0x2cd8ea of _0x2d6861||[]){if(_0x2cd8ea[_0x590b0b(0xc2)]===_0x590b0b(0x1ca)&&Array[_0x590b0b(0x1a6)](_0x2cd8ea[_0x590b0b(0x114)]))for(const _0x27ffcb of _0x2cd8ea[_0x590b0b(0x114)]){try{const _0x5d00d6=_0x27ffcb['function']?.[_0x590b0b(0x16e)],_0x1dc051=JSON[_0x590b0b(0x1cd)](_0x27ffcb[_0x590b0b(0xdb)]?.[_0x590b0b(0x138)]||'{}');if(_0x5d00d6===_0x590b0b(0x103))_0x49822a[_0x590b0b(0x194)]('grep\x20\x27'+_0x1dc051[_0x590b0b(0xfe)]+'\x27\x20'+(_0x1dc051['path']||'.'));else{if(_0x5d00d6===_0x590b0b(0x1ab))_0x49822a[_0x590b0b(0x194)](_0x590b0b(0x1ad)+_0x1dc051[_0x590b0b(0x14c)]);else{if(_0x5d00d6===_0x590b0b(0x1ae))_0x49822a[_0x590b0b(0x194)](_0x590b0b(0x132)+(_0x1dc051[_0x590b0b(0x1a0)]||'.'));else{if(_0x5d00d6===_0x590b0b(0xee))_0x49822a['push'](_0x590b0b(0xba)+_0x1dc051[_0x590b0b(0xfe)]+'\x27\x20'+(_0x1dc051[_0x590b0b(0x14c)]||'.'));else _0x5d00d6===_0x590b0b(0x179)&&_0x49822a['push'](_0x590b0b(0x179));}}}}catch{}}}return _0x49822a;},_0xa4fc92=_0x79a9f4=>{const _0x1a4d9c=_0x5c21bd,_0x379470=[];if(!_0x79a9f4||!Array[_0x1a4d9c(0x1a6)](_0x79a9f4))return _0x379470;const _0xd3598e=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x1a4d9c(0x178),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x1a4d9c(0x16a),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x1a4d9c(0x10c),'tool':_0x1a4d9c(0x1ab)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x1a4d9c(0x160),'tool':_0x1a4d9c(0x1ab)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x1a4d9c(0x12c),'tool':_0x1a4d9c(0xda)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x1a4d9c(0xc1),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':_0x1a4d9c(0x160),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x1a4d9c(0xea),'tool':_0x1a4d9c(0x1ab)},{'pattern':/not a text file/,'error_type':_0x1a4d9c(0x160),'tool':_0x1a4d9c(0x1ab)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x1a4d9c(0x1ab)},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x1a4d9c(0x1ab)},{'pattern':/status="error"/,'error_type':_0x1a4d9c(0x153),'tool':_0x1a4d9c(0x140)}];let _0x44935f=0x0;for(const _0x140830 of _0x79a9f4){_0x140830[_0x1a4d9c(0xc2)]===_0x1a4d9c(0x1ca)&&Array[_0x1a4d9c(0x1a6)](_0x140830['tool_calls'])&&_0x44935f++;const _0x165915=_0x140830[_0x1a4d9c(0x155)];if((_0x140830[_0x1a4d9c(0xc2)]===_0x1a4d9c(0x13d)||_0x140830[_0x1a4d9c(0xc2)]===_0x1a4d9c(0x15d))&&_0x165915&&typeof _0x165915==='string')for(const {pattern:_0x563669,error_type:_0x26e0b5,tool:_0x36857a}of _0xd3598e){const _0x404730=_0x165915[_0x1a4d9c(0x1b1)](new RegExp(_0x563669['source'],'g'));if(_0x404730)for(const _0x19f62c of _0x404730){const _0x155ba9=_0x165915[_0x1a4d9c(0xc0)](_0x19f62c),_0x11e133=_0x165915['substring'](_0x155ba9,Math[_0x1a4d9c(0x1e1)](_0x155ba9+0xc8,_0x165915[_0x1a4d9c(0x13b)]));_0x379470[_0x1a4d9c(0x194)]({'tool':_0x36857a,'error_type':_0x26e0b5,'error_message':_0x11e133['split']('\x0a')[0x0],'turn':_0x44935f});}}}return _0x379470;};try{const _0x3eba0a=a0_0x35f3fc['resolve'](_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)]),_0x4dac1c=_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x189)],_0x173f63=_0x4dac1c===_0x5c21bd(0x16d)?{'allowNames':['node_modules']}:undefined,_0x259691=new LocalRipgrepProvider(_0x3eba0a,undefined,_0x173f63);logger[_0x5c21bd(0x156)](_0x5c21bd(0x19c),_0x5c21bd(0x11a),{'type':'LocalRipgrepProvider','repo_root':_0x3eba0a,'search_type':_0x4dac1c||_0x5c21bd(0x15c)}),logger[_0x5c21bd(0x156)]('MCP','warp_grep_start',{'query':_0x269ab1['data'][_0x5c21bd(0x14b)],'repo_root':_0x3eba0a,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x24b6fb=Date['now'](),_0x29d4f3=await runWarpGrep({'searchTerm':_0x269ab1['data'][_0x5c21bd(0x14b)],'repoRoot':_0x3eba0a,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x259691,'search_type':_0x4dac1c}),_0x2db43f=Date[_0x5c21bd(0xfd)]()-_0x24b6fb,_0x12d58a=_0x29d4f3[_0x5c21bd(0x179)]?.['metadata']?.['files']?.[_0x5c21bd(0x13b)]??0x0;logger[_0x5c21bd(0x156)](_0x5c21bd(0x19c),_0x5c21bd(0x107),{'termination':_0x29d4f3[_0x5c21bd(0x193)],'turns':_0x29d4f3['timings']?.[_0x5c21bd(0xc7)]??0x0,'files_found':_0x12d58a,'latency_ms':_0x2db43f});const _0x3fc8e4=_0xa4fc92(_0x29d4f3[_0x5c21bd(0x1c9)]);_0x3fc8e4[_0x5c21bd(0x13b)]>0x0&&reportMorphError({'error_message':_0x5c21bd(0x1d0)+_0x3fc8e4[_0x5c21bd(0x13b)]+_0x5c21bd(0x172),'error_type':_0x5c21bd(0x19a),'level':'warn','tool':_0x5c21bd(0xec),'context':{'repo_path':_0x269ab1['data'][_0x5c21bd(0x105)],'query':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x14b)],'model':_0x5c21bd(0xe6),'termination_reason':_0x29d4f3[_0x5c21bd(0x193)],'sub_tool_errors':_0x3fc8e4,'timings':_0x29d4f3[_0x5c21bd(0x173)],'tool_calls':_0x1108a2(_0x29d4f3[_0x5c21bd(0x1c9)]),'messages':_0x29d4f3[_0x5c21bd(0x1c9)]?.['map'](_0x26d619=>({'role':_0x26d619[_0x5c21bd(0xc2)],'content':_0x26d619[_0x5c21bd(0x155)],..._0x26d619[_0x5c21bd(0x114)]?{'tool_calls':_0x26d619[_0x5c21bd(0x114)][_0x5c21bd(0x13b)]}:{},..._0x26d619[_0x5c21bd(0x110)]?{'tool_call_id':_0x26d619[_0x5c21bd(0x110)]}:{}}))},'source':_0x5c21bd(0x124)})[_0x5c21bd(0x1cf)](()=>{});let _0x2aac23='';if(_0x29d4f3[_0x5c21bd(0x193)]===_0x5c21bd(0x190)&&_0x29d4f3[_0x5c21bd(0x179)]?.[_0x5c21bd(0x134)]?.[_0x5c21bd(0x109)]){const _0xb31a5f=_0x29d4f3['finish'][_0x5c21bd(0x134)][_0x5c21bd(0x109)];if(_0xb31a5f['length']===0x0)return _0x2aac23=_0x29d4f3['finish']['payload']||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x5c21bd(0x131),'text':_0x2aac23}]};const _0x3dcb63=[],_0x1ca1a3=[_0x5c21bd(0x19d)];for(const _0x3e74fb of _0x29d4f3[_0x5c21bd(0x1c9)]){if(_0x3e74fb['role']===_0x5c21bd(0x1ca)&&Array[_0x5c21bd(0x1a6)](_0x3e74fb[_0x5c21bd(0x114)]))for(const _0x1addb5 of _0x3e74fb[_0x5c21bd(0x114)]){try{const _0x17e11b=_0x1addb5[_0x5c21bd(0xdb)]?.['name'],_0x58ea62=JSON[_0x5c21bd(0x1cd)](_0x1addb5['function']?.[_0x5c21bd(0x138)]||'{}');if(_0x17e11b==='grep_search')_0x1ca1a3['push']('-\x20Grepped\x20\x27'+_0x58ea62['pattern']+_0x5c21bd(0xc9)+(_0x58ea62['path']||'.')+'`');else{if(_0x17e11b===_0x5c21bd(0x1ab))_0x1ca1a3[_0x5c21bd(0x194)](_0x5c21bd(0x1a3)+_0x58ea62['path']+'`');else{if(_0x17e11b==='list_directory')_0x1ca1a3[_0x5c21bd(0x194)](_0x5c21bd(0x145)+(_0x58ea62[_0x5c21bd(0x1a0)]||'.')+'`');else _0x17e11b===_0x5c21bd(0xee)&&_0x1ca1a3['push'](_0x5c21bd(0xf8)+_0x58ea62['pattern']+_0x5c21bd(0x1b5)+(_0x58ea62['path']||'.')+'`');}}}catch{}}}_0x3dcb63['push'](_0x1ca1a3['join']('\x0a'));const _0x4e9889=['',_0x5c21bd(0x176)];for(const _0x26b545 of _0xb31a5f){if(_0x26b545[_0x5c21bd(0xcf)]==='*')_0x4e9889[_0x5c21bd(0x194)]('-\x20'+_0x26b545[_0x5c21bd(0x14c)]+':*');else{if(Array[_0x5c21bd(0x1a6)](_0x26b545[_0x5c21bd(0xcf)])){const _0x2e10db=_0x26b545[_0x5c21bd(0xcf)][_0x5c21bd(0x1b9)](([_0x5c5971,_0xe2f4e0])=>{if(_0x5c5971===_0xe2f4e0)return''+_0x5c5971;return _0x5c5971+'-'+_0xe2f4e0;});_0x4e9889[_0x5c21bd(0x194)]('-\x20'+_0x26b545['path']+':'+_0x2e10db[_0x5c21bd(0x1d4)](','));}else _0x4e9889[_0x5c21bd(0x194)]('-\x20'+_0x26b545['path']+':*');}}_0x4e9889[_0x5c21bd(0x194)](''),_0x3dcb63['push'](_0x4e9889[_0x5c21bd(0x1d4)]('\x0a')),_0x3dcb63[_0x5c21bd(0x194)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x4be5bd=[],_0x381bb5=[];for(const _0x2a6e95 of _0xb31a5f){let _0x4cbc93=a0_0x35f3fc['resolve'](_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)],_0x2a6e95['path']),_0x4c31c7=null,_0x11a0b0=null;try{_0x4c31c7=await a0_0x28e2dc[_0x5c21bd(0x117)](_0x4cbc93,{'encoding':'utf-8'});}catch(_0x23292c){const _0x48c821=fixPathRepetition(_0x4cbc93);if(_0x48c821)try{_0x4c31c7=await a0_0x28e2dc['readFile'](_0x48c821,{'encoding':_0x5c21bd(0x1a2)}),_0x4cbc93=_0x48c821;}catch{_0x11a0b0=_0x23292c instanceof Error?_0x23292c:new Error(String(_0x23292c));}else _0x11a0b0=_0x23292c instanceof Error?_0x23292c:new Error(String(_0x23292c));}if(_0x4c31c7!==null){const _0x206f10=_0x4c31c7['split'](/\r?\n/),_0x1ee75f=[];if(_0x2a6e95[_0x5c21bd(0xcf)]==='*'||!Array[_0x5c21bd(0x1a6)](_0x2a6e95[_0x5c21bd(0xcf)]))for(let _0x16e936=0x1;_0x16e936<=_0x206f10[_0x5c21bd(0x13b)];_0x16e936++){const _0x1abbbe=_0x206f10[_0x16e936-0x1];_0x1ee75f[_0x5c21bd(0x194)](_0x16e936+'|\x20'+_0x1abbbe);}else for(const [_0x556410,_0x4b9df0]of _0x2a6e95[_0x5c21bd(0xcf)]){_0x1ee75f[_0x5c21bd(0x13b)]>0x0&&_0x1ee75f['push']('');for(let _0x50826e=_0x556410;_0x50826e<=_0x4b9df0&&_0x50826e<=_0x206f10[_0x5c21bd(0x13b)];_0x50826e++){const _0x5215e2=_0x206f10[_0x50826e-0x1];_0x1ee75f[_0x5c21bd(0x194)](_0x50826e+'|\x20'+_0x5215e2);}}_0x381bb5[_0x5c21bd(0x194)]({'path':_0x2a6e95[_0x5c21bd(0x14c)],'content':_0x1ee75f[_0x5c21bd(0x1d4)]('\x0a')});}else _0x4be5bd['push'](_0x5c21bd(0x185)+_0x2a6e95[_0x5c21bd(0x14c)]+_0x5c21bd(0x17a)+(_0x11a0b0?.[_0x5c21bd(0xfa)]||'Unknown\x20error')+_0x5c21bd(0x10a));}try{const _0x425a93=await compactFileContexts(_0x381bb5,_0x269ab1['data'][_0x5c21bd(0x14b)],MORPH_API_KEY,MORPH_API_URL);for(const _0x3d918a of _0x425a93){_0x4be5bd[_0x5c21bd(0x194)]('<file\x20path=\x22'+_0x3d918a[_0x5c21bd(0x14c)]+_0x5c21bd(0x16b)+_0x3d918a[_0x5c21bd(0x155)]+'\x0a</file>');}}catch(_0x1aec49){logger[_0x5c21bd(0x1c3)](_0x5c21bd(0x19c),_0x5c21bd(0x1bc),{'error':_0x1aec49 instanceof Error?_0x1aec49[_0x5c21bd(0xfa)]:String(_0x1aec49),'files_count':_0x381bb5[_0x5c21bd(0x13b)]});for(const _0x42acd5 of _0x381bb5){_0x4be5bd['push']('<file\x20path=\x22'+_0x42acd5[_0x5c21bd(0x14c)]+_0x5c21bd(0x16b)+_0x42acd5[_0x5c21bd(0x155)]+_0x5c21bd(0x10a));}}_0x3dcb63[_0x5c21bd(0x194)](_0x4be5bd['join']('\x0a\x0a')),_0x2aac23=_0x3dcb63[_0x5c21bd(0x1d4)]('\x0a');const _0x1626dc=_0x29d4f3['errors']?.[_0x5c21bd(0x18e)](_0x21d05d=>_0x21d05d[_0x5c21bd(0xfa)]?.['startsWith']('File\x20read\x20error:'))||[];if(_0x1626dc[_0x5c21bd(0x13b)]>0x0){const _0x151409=_0x1626dc[_0x5c21bd(0x1b9)](_0x1c27a9=>_0x1c27a9[_0x5c21bd(0xfa)])[_0x5c21bd(0x1d4)](';\x20');reportMorphError({'error_message':_0x151409,'error_type':_0x5c21bd(0xf6),'context':{'tool':_0x5c21bd(0xec),'repo_path':_0x269ab1[_0x5c21bd(0x157)]['repo_path'],'query':_0x269ab1['data']['search_string'],'model':_0x5c21bd(0xe6),'termination_reason':_0x5c21bd(0x143),'error_count':_0x1626dc['length'],'is_timeout':![],'timings':_0x29d4f3[_0x5c21bd(0x173)],'files_attempted':_0xb31a5f[_0x5c21bd(0x1b9)](_0x311f62=>({'path':_0x311f62[_0x5c21bd(0x14c)],'lines':_0x311f62[_0x5c21bd(0xcf)]})),'tool_calls':_0x1108a2(_0x29d4f3['messages']),'messages':_0x29d4f3[_0x5c21bd(0x1c9)]?.[_0x5c21bd(0x1b9)](_0x5d0975=>({'role':_0x5d0975['role'],'content':_0x5d0975[_0x5c21bd(0x155)],..._0x5d0975[_0x5c21bd(0x114)]?{'tool_calls':_0x5d0975['tool_calls'][_0x5c21bd(0x13b)]}:{},..._0x5d0975['tool_call_id']?{'tool_call_id':_0x5d0975[_0x5c21bd(0x110)]}:{}})),'request_content':{'query':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x14b)],'repo_path':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)],'repoRoot':a0_0x35f3fc['resolve'](_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)]),'model':'morph-warp-grep-v2.1'}},'source':_0x5c21bd(0x124)})['catch'](()=>{});}}else{if(_0x29d4f3['terminationReason']==='terminated'&&_0x29d4f3[_0x5c21bd(0x141)][_0x5c21bd(0x13b)]>0x0){const _0x3426f7=_0x29d4f3['errors'][_0x5c21bd(0x1b9)](_0x610917=>_0x610917[_0x5c21bd(0xfa)])[_0x5c21bd(0x1d4)](';\x20');_0x2aac23=_0x5c21bd(0x184)+_0x3426f7;const _0x12f701=_0x3426f7[_0x5c21bd(0x113)]()[_0x5c21bd(0x161)](_0x5c21bd(0xe1))||_0x3426f7[_0x5c21bd(0x113)]()[_0x5c21bd(0x161)]('timed\x20out')||_0x3426f7[_0x5c21bd(0x113)]()[_0x5c21bd(0x161)](_0x5c21bd(0x18d)),_0x1b370e=_0x29d4f3['finish']?.[_0x5c21bd(0x134)]?.[_0x5c21bd(0x109)],_0x897778=_0x29d4f3[_0x5c21bd(0x141)][0x0];reportMorphError({'error_message':_0x3426f7,'error_type':_0x12f701?_0x5c21bd(0x1a4):_0x897778?.[_0x5c21bd(0xc3)]?.[_0x5c21bd(0x16e)]||_0x5c21bd(0x1b8),'context':{'tool':_0x5c21bd(0xec),'repo_path':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)],'query':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x14b)],'model':_0x5c21bd(0xe6),'termination_reason':_0x29d4f3['terminationReason'],'error_count':_0x29d4f3[_0x5c21bd(0x141)][_0x5c21bd(0x13b)],'is_timeout':_0x12f701,'timings':_0x29d4f3[_0x5c21bd(0x173)],'files_attempted':_0x1b370e?.[_0x5c21bd(0x1b9)](_0x572919=>({'path':_0x572919[_0x5c21bd(0x14c)],'lines':_0x572919[_0x5c21bd(0xcf)]})),'tool_calls':_0x1108a2(_0x29d4f3['messages']),'messages':_0x29d4f3[_0x5c21bd(0x1c9)]?.[_0x5c21bd(0x1b9)](_0x3d74b9=>({'role':_0x3d74b9[_0x5c21bd(0xc2)],'content':_0x3d74b9[_0x5c21bd(0x155)],..._0x3d74b9[_0x5c21bd(0x114)]?{'tool_calls':_0x3d74b9[_0x5c21bd(0x114)][_0x5c21bd(0x13b)]}:{},..._0x3d74b9[_0x5c21bd(0x110)]?{'tool_call_id':_0x3d74b9[_0x5c21bd(0x110)]}:{}})),'request_content':{'query':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x14b)],'repo_path':_0x269ab1['data'][_0x5c21bd(0x105)],'repoRoot':a0_0x35f3fc['resolve'](_0x269ab1[_0x5c21bd(0x157)]['repo_path']),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x897778?.[_0x5c21bd(0x1de)]||undefined,'source':_0x5c21bd(0x124)})[_0x5c21bd(0x1cf)](()=>{});}else _0x2aac23=_0x5c21bd(0x16f);}return{'content':[{'type':_0x5c21bd(0x131),'text':_0x2aac23}]};}catch(_0x3ee3ba){const _0x2758c6=handleMorphAPIError(_0x3ee3ba);if(_0x2758c6)return logger[_0x5c21bd(0x182)](_0x5c21bd(0x19c),_0x5c21bd(0x18c),{'tool':_0x5c21bd(0xec),'error':_0x5c21bd(0x18f),'latency_ms':Date[_0x5c21bd(0xfd)]()-_0x2227e5}),_0x2758c6;const _0x133192=_0x3ee3ba instanceof Error?_0x3ee3ba['message']:String(_0x3ee3ba);logger[_0x5c21bd(0x182)]('MCP',_0x5c21bd(0x18c),{'tool':_0x5c21bd(0xec),'error':_0x133192,'repo_path':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)],'query':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x14b)],'latency_ms':Date[_0x5c21bd(0xfd)]()-_0x2227e5});const _0x5b98b3=_0x133192[_0x5c21bd(0x113)]()[_0x5c21bd(0x161)](_0x5c21bd(0xe1))||_0x133192[_0x5c21bd(0x113)]()[_0x5c21bd(0x161)](_0x5c21bd(0x1ba))||_0x133192[_0x5c21bd(0x113)]()[_0x5c21bd(0x161)](_0x5c21bd(0x18d))||_0x3ee3ba instanceof Error&&_0x3ee3ba[_0x5c21bd(0x16e)]===_0x5c21bd(0x1a4);return reportMorphError({'error_message':_0x133192,'error_type':_0x5b98b3?'TimeoutError':_0x3ee3ba instanceof Error?_0x3ee3ba[_0x5c21bd(0xc3)]['name']:_0x5c21bd(0x159),'context':{'tool':_0x5c21bd(0xec),'repo_path':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)],'query':_0x269ab1[_0x5c21bd(0x157)]['search_string'],'model':_0x5c21bd(0xe6),'is_timeout':_0x5b98b3,'exception_phase':_0x5c21bd(0x15e),'request_content':{'query':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x14b)],'repo_path':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)],'repoRoot':a0_0x35f3fc[_0x5c21bd(0x13e)](_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)]),'model':_0x5c21bd(0xe6)}},'stack_trace':_0x3ee3ba instanceof Error?_0x3ee3ba['stack']:undefined,'source':_0x5c21bd(0x124)})[_0x5c21bd(0x1cf)](()=>{}),{'content':[{'type':'text','text':_0x5c21bd(0x177)+_0x133192}],'isError':![]};}}case TOOL_NAMES[_0x5c21bd(0x149)]:{const _0x1b2bec=WarpGrepGitHubArgsSchema[_0x5c21bd(0x10b)](_0xdcd00e);if(!_0x1b2bec['success'])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x1b2bec['error']}],'isError':!![]};const _0x2a3d0f=_0x1b2bec[_0x5c21bd(0x157)][_0x5c21bd(0xe2)]||_0x1b2bec['data'][_0x5c21bd(0x1a9)];if(!_0x2a3d0f)return{'content':[{'type':_0x5c21bd(0x131),'text':_0x5c21bd(0x129)}],'isError':!![]};const _0x5ac0d5=MORPH_API_KEY;if(!_0x5ac0d5)throw new Error(_0x5c21bd(0x1bd));const _0x271cd4=Date[_0x5c21bd(0xfd)]();logger[_0x5c21bd(0x156)](_0x5c21bd(0x19c),_0x5c21bd(0x1e0),{'identifier':_0x2a3d0f,'query':_0x1b2bec['data']['search_string'],'branch':_0x1b2bec[_0x5c21bd(0x157)][_0x5c21bd(0x16c)]});try{const _0x123002=new WarpGrepClient({'morphApiKey':_0x5ac0d5,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x1ba6de=await _0x123002[_0x5c21bd(0x14a)]({'searchTerm':_0x1b2bec['data'][_0x5c21bd(0x14b)],'github':_0x2a3d0f,'branch':_0x1b2bec['data'][_0x5c21bd(0x16c)]}),_0x4effd3=Date[_0x5c21bd(0xfd)]()-_0x271cd4;logMcpStderr(_0x5c21bd(0x102)+_0x4effd3+_0x5c21bd(0xf2)+_0x1ba6de[_0x5c21bd(0x14e)]);const _0xb81194=formatResult(_0x1ba6de);return{'content':[{'type':_0x5c21bd(0x131),'text':_0xb81194}]};}catch(_0x1b6684){const _0x23369c=handleMorphAPIError(_0x1b6684);if(_0x23369c)return _0x23369c;const _0x3c98d3=Date[_0x5c21bd(0xfd)]()-_0x271cd4,_0x16fe20=_0x1b6684 instanceof Error?_0x1b6684[_0x5c21bd(0xfa)]:String(_0x1b6684);return logMcpStderr(_0x5c21bd(0xff)+_0x3c98d3+'ms:',_0x16fe20),reportMorphError({'error_message':_0x16fe20,'error_type':_0x1b6684 instanceof Error?_0x1b6684[_0x5c21bd(0xc3)][_0x5c21bd(0x16e)]:_0x5c21bd(0x159),'context':{'tool':'github_codebase_search','github_url':_0x2a3d0f,'search_string':_0x1b2bec[_0x5c21bd(0x157)][_0x5c21bd(0x14b)],'branch':_0x1b2bec[_0x5c21bd(0x157)][_0x5c21bd(0x16c)]},'stack_trace':_0x1b6684 instanceof Error?_0x1b6684[_0x5c21bd(0x1de)]:undefined,'source':_0x5c21bd(0x124),'tool':'github_codebase_search','latency_ms':_0x3c98d3})[_0x5c21bd(0x1cf)](()=>{}),{'content':[{'type':_0x5c21bd(0x131),'text':_0x5c21bd(0x147)+_0x16fe20}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x4fd9fb);}}catch(_0x492738){const _0x549b1d=_0x492738 instanceof Error?_0x492738[_0x5c21bd(0xfa)]:String(_0x492738);return reportMorphError({'error_message':_0x549b1d,'error_type':_0x492738 instanceof Error?_0x492738[_0x5c21bd(0xc3)][_0x5c21bd(0x16e)]:_0x5c21bd(0x159),'context':{'tool':_0x4fd9fb,'arguments':_0xdcd00e?JSON[_0x5c21bd(0x195)](_0xdcd00e)[_0x5c21bd(0x17c)](0x0,0x1f4):undefined,'mcp_server_version':_0x5c21bd(0xf3)},'stack_trace':_0x492738 instanceof Error?_0x492738['stack']:undefined,'source':_0x5c21bd(0x124)})[_0x5c21bd(0x1cf)](()=>{}),{'content':[{'type':_0x5c21bd(0x131),'text':_0x5c21bd(0x184)+_0x549b1d}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x2b347c){const _0x28c2a7=a0_0x1d9c46,_0x270ff2=await getValidRootDirectories(_0x2b347c);if(_0x270ff2[_0x28c2a7(0x13b)]>0x0)allowedDirectories=[..._0x270ff2],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x270ff2['length']+_0x28c2a7(0xdd));else{logMcpStderr(_0x28c2a7(0x1a8));if(ENABLE_WORKSPACE_MODE)try{const _0x477284=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x477284&&(allowedDirectories=[_0x477284],logMcpStderr(_0x28c2a7(0x112)+_0x477284));}catch(_0x1017f1){logMcpStderr(_0x28c2a7(0x146)+_0x1017f1);}}}server[a0_0x1d9c46(0xed)](RootsListChangedNotificationSchema,async()=>{const _0x595177=a0_0x1d9c46;try{const _0x15554e=await server[_0x595177(0xd6)]();_0x15554e&&_0x595177(0x11c)in _0x15554e&&await updateAllowedDirectoriesFromRoots(_0x15554e[_0x595177(0x11c)]);}catch(_0x1349f0){logMcpStderr(_0x595177(0x125),_0x1349f0 instanceof Error?_0x1349f0[_0x595177(0xfa)]:String(_0x1349f0));}}),server[a0_0x1d9c46(0x12b)]=async()=>{const _0x341aeb=a0_0x1d9c46,_0x46864=server['getClientCapabilities']();if(_0x46864?.[_0x341aeb(0x11c)])try{const _0x262891=await server[_0x341aeb(0xd6)]();_0x262891&&_0x341aeb(0x11c)in _0x262891?await updateAllowedDirectoriesFromRoots(_0x262891['roots']):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x465858){logMcpStderr(_0x341aeb(0x100),_0x465858 instanceof Error?_0x465858[_0x341aeb(0xfa)]:String(_0x465858));}else{if(allowedDirectories[_0x341aeb(0x13b)]>0x0)logMcpStderr(_0x341aeb(0xd4),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x341aeb(0x196));else throw new Error('Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.');}}};async function runServer(){const _0x3d92dc=a0_0x1d9c46,_0x24ee36=new StdioServerTransport();await server['connect'](_0x24ee36),logMcpStderr(_0x3d92dc(0x12d)),allowedDirectories[_0x3d92dc(0x13b)]===0x0&&logMcpStderr(_0x3d92dc(0x1c0));}runServer()[a0_0x1d9c46(0x1cf)](_0x4e0a39=>{const _0x40e2ea=a0_0x1d9c46;logMcpStderr(_0x40e2ea(0xfc),_0x4e0a39),process[_0x40e2ea(0x139)](0x1);});
|
|
2
|
+
const a0_0x5e6917=a0_0x51b7;(function(_0x4bde6e,_0x42c89d){const _0x1edea4=a0_0x51b7,_0x47e182=_0x4bde6e();while(!![]){try{const _0x5d4279=parseInt(_0x1edea4(0x19c))/0x1*(parseInt(_0x1edea4(0x130))/0x2)+-parseInt(_0x1edea4(0x18d))/0x3+parseInt(_0x1edea4(0x12a))/0x4*(parseInt(_0x1edea4(0x1b1))/0x5)+-parseInt(_0x1edea4(0x11f))/0x6+-parseInt(_0x1edea4(0x1d8))/0x7*(-parseInt(_0x1edea4(0x120))/0x8)+-parseInt(_0x1edea4(0x13d))/0x9*(-parseInt(_0x1edea4(0x127))/0xa)+parseInt(_0x1edea4(0xd3))/0xb;if(_0x5d4279===_0x42c89d)break;else _0x47e182['push'](_0x47e182['shift']());}catch(_0x9e7c9){_0x47e182['push'](_0x47e182['shift']());}}}(a0_0x5a0d,0x50a81));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_0x55e678 from'fs/promises';import a0_0x3df761 from'path';import a0_0x42d180 from'os';import{createRequire}from'module';function a0_0x51b7(_0x4c62de,_0xd6d5c7){_0x4c62de=_0x4c62de-0xc5;const _0x5a0dc3=a0_0x5a0d();let _0x51b7dd=_0x5a0dc3[_0x4c62de];return _0x51b7dd;}import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{logger}from'./logger.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x174bef from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES,resolveToolFilter}from'./tool-definitions.js';function fixPathRepetition(_0x5dd65d){const _0x364168=a0_0x51b7,_0x4f9e6f=_0x5dd65d[_0x364168(0x10a)](a0_0x3df761[_0x364168(0xf6)])[_0x364168(0x177)](Boolean);if(_0x4f9e6f[_0x364168(0x1be)]<0x2)return null;for(let _0x406384=Math['floor'](_0x4f9e6f[_0x364168(0x1be)]/0x2);_0x406384>=0x1;_0x406384--){for(let _0xb51ae2=0x0;_0xb51ae2<=_0x4f9e6f[_0x364168(0x1be)]-0x2*_0x406384;_0xb51ae2++){const _0x4056dd=_0x4f9e6f[_0x364168(0x192)](_0xb51ae2,_0xb51ae2+_0x406384),_0x2143c5=_0x4f9e6f[_0x364168(0x192)](_0xb51ae2+_0x406384,_0xb51ae2+0x2*_0x406384);if(_0x4056dd[_0x364168(0x198)]((_0x245e80,_0x12cc82)=>_0x245e80===_0x2143c5[_0x12cc82])){const _0x31ee4a=[..._0x4f9e6f[_0x364168(0x192)](0x0,_0xb51ae2),..._0x4f9e6f[_0x364168(0x192)](_0xb51ae2+_0x406384)];return a0_0x3df761[_0x364168(0xf6)]+_0x31ee4a['join'](a0_0x3df761['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0xc06c8f=a0_0x51b7;try{const _0x34c2ba=require(_0xc06c8f(0x12e));return _0x34c2ba['version']??_0xc06c8f(0x176);}catch(_0x5f08f7){return logMcpStderr(_0xc06c8f(0x1d9),_0x5f08f7),_0xc06c8f(0x176);}}function printHelp(){const _0x2d529d=a0_0x51b7;console[_0x2d529d(0x111)](_0x2d529d(0x11b)+getPackageVersion()),console[_0x2d529d(0x111)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x2d529d(0x111)](_0x2d529d(0xd0)),console[_0x2d529d(0x111)](_0x2d529d(0x1f1)),console[_0x2d529d(0x111)](_0x2d529d(0x1af)),console[_0x2d529d(0x111)](_0x2d529d(0x15f)),console['log'](_0x2d529d(0x169)),console[_0x2d529d(0x111)]('\x20\x20morph-mcp'),console[_0x2d529d(0x111)](_0x2d529d(0x142));}const cliArgs=process[a0_0x5e6917(0x147)][a0_0x5e6917(0x192)](0x2),VERSION_FLAGS=new Set([a0_0x5e6917(0x12d),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0x5e6917(0x191)](_0x9f17d3=>VERSION_FLAGS[a0_0x5e6917(0x13a)](_0x9f17d3))&&(console[a0_0x5e6917(0x111)](a0_0x5e6917(0x11b)+getPackageVersion()),process[a0_0x5e6917(0x15a)](0x0));cliArgs[a0_0x5e6917(0x191)](_0x3fe20e=>HELP_FLAGS['has'](_0x3fe20e))&&(printHelp(),process[a0_0x5e6917(0x15a)](0x0));function getCliArg(_0x17bf20){const _0x4acb9c=a0_0x5e6917;for(let _0x209ea7=0x0;_0x209ea7<cliArgs[_0x4acb9c(0x1be)];_0x209ea7++){const _0x30c065=cliArgs[_0x209ea7];if(_0x30c065[_0x4acb9c(0x124)]('--'+_0x17bf20+'='))return _0x30c065[_0x4acb9c(0x192)](('--'+_0x17bf20+'=')[_0x4acb9c(0x1be)]);if(_0x30c065==='--'+_0x17bf20&&_0x209ea7+0x1<cliArgs[_0x4acb9c(0x1be)])return cliArgs[_0x209ea7+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x5e6917(0x1be)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0x5e6917(0x13a)](arg))continue;if(arg[a0_0x5e6917(0x124)]('--api-key='))continue;if(arg===a0_0x5e6917(0x131)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x5e6917(0x1cb)][a0_0x5e6917(0x17e)]||process['env'][a0_0x5e6917(0x10d)]||process[a0_0x5e6917(0xd8)](),ENABLE_WORKSPACE_MODE=process[a0_0x5e6917(0x1cb)][a0_0x5e6917(0x1a4)]!=='false',MORPH_API_KEY=getCliArg(a0_0x5e6917(0x1db))??process[a0_0x5e6917(0x1cb)][a0_0x5e6917(0xfd)],MORPH_API_URL=process[a0_0x5e6917(0x1cb)][a0_0x5e6917(0x1d1)],MORPH_LARGE_APPLY=process[a0_0x5e6917(0x1cb)][a0_0x5e6917(0x196)]!==a0_0x5e6917(0x132),MORPH_WARP_GREP_TIMEOUT=process[a0_0x5e6917(0x1cb)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x5e6917(0x1cb)][a0_0x5e6917(0x18f)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),TOOL_FILTER=resolveToolFilter(process['env']),DISABLED_TOOLS=TOOL_FILTER['disabled'];for(const tool of TOOL_FILTER['unknown']){console[a0_0x5e6917(0xcf)](a0_0x5e6917(0x14d)+tool+a0_0x5e6917(0x1f0)+[...KNOWN_TOOL_NAMES][a0_0x5e6917(0x18e)](',\x20'));}DISABLED_TOOLS[a0_0x5e6917(0x19f)]>0x0&&console[a0_0x5e6917(0xcf)](a0_0x5e6917(0x1c1)+[...DISABLED_TOOLS][a0_0x5e6917(0x18e)](',\x20'));MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5e6917(0x124)](a0_0x5e6917(0x1ac))&&!MORPH_API_KEY[a0_0x5e6917(0x124)](a0_0x5e6917(0x193))&&logMcpStderr(a0_0x5e6917(0x1c4));async function reportMorphError(_0x32ca7c){const _0x1194b4=a0_0x5e6917;try{await a0_0x174bef[_0x1194b4(0xdd)](_0x1194b4(0x119),{..._0x32ca7c,'timestamp':new Date()[_0x1194b4(0x1a0)](),'source':_0x32ca7c[_0x1194b4(0xcd)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x32ca7c['context']}},{'timeout':0x1388,'headers':{'Content-Type':_0x1194b4(0x178),'Authorization':_0x1194b4(0x162)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x120be2,_0x261e71){const _0x4774bf=a0_0x5e6917;if(_0x120be2&&typeof _0x120be2==='object'&&_0x4774bf(0x1aa)in _0x120be2)return _0x120be2[_0x4774bf(0x1aa)];if(_0x120be2&&typeof _0x120be2===_0x4774bf(0x1a3)&&_0x4774bf(0xf4)in _0x120be2)return _0x120be2[_0x4774bf(0xf4)]?.[_0x4774bf(0x1aa)];const _0x48db9e=_0x261e71[_0x4774bf(0x183)](/\b(401|429)\b/);return _0x48db9e?parseInt(_0x48db9e[0x1],0xa):null;}function handleMorphAPIError(_0x38380a){const _0x49ddf6=a0_0x5e6917,_0x68e38e=_0x38380a instanceof Error?_0x38380a['message']:String(_0x38380a),_0x4e2962=extractStatusCode(_0x38380a,_0x68e38e);switch(_0x4e2962){case 0x191:return{'content':[{'type':_0x49ddf6(0xf8),'text':_0x49ddf6(0xed)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x49ddf6(0xf8),'text':_0x49ddf6(0x1cf)}],'isError':!![]};default:return null;}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x5e6917(0xd4)),logMcpStderr(a0_0x5e6917(0x1ae)),logMcpStderr(a0_0x5e6917(0x152)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x5e6917(0x1c3)));function normalizePath(_0x2e18ca){const _0xf928d9=a0_0x5e6917;return a0_0x3df761[_0xf928d9(0x16b)](_0x2e18ca);}function expandHome(_0xe26b3e){const _0x24a9c5=a0_0x5e6917;if(_0xe26b3e[_0x24a9c5(0x124)]('~/')||_0xe26b3e==='~')return a0_0x3df761[_0x24a9c5(0x18e)](a0_0x42d180[_0x24a9c5(0x1eb)](),_0xe26b3e[_0x24a9c5(0x192)](0x1));return _0xe26b3e;}let allowedDirectories=await Promise[a0_0x5e6917(0x164)](args[a0_0x5e6917(0x1ad)](async _0x28d8c3=>{const _0x2d3f4a=a0_0x5e6917,_0x37e031=expandHome(_0x28d8c3),_0x1138bb=a0_0x3df761[_0x2d3f4a(0x117)](_0x37e031);try{const _0x30cc9c=await a0_0x55e678['realpath'](_0x1138bb);return normalizePath(_0x30cc9c);}catch(_0x7c602b){return normalizePath(_0x1138bb);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5e6917(0x1be)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5e6917(0x143)](workspaceDir),logMcpStderr(a0_0x5e6917(0x10f)+workspaceDir+a0_0x5e6917(0x112)));}catch(a0_0x30ed4b){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x30ed4b);}async function detectWorkspaceRoot(_0x2ec8dd){const _0x4bbf1f=a0_0x5e6917;let _0x3e3b83=a0_0x3df761[_0x4bbf1f(0x117)](_0x2ec8dd);const _0x2c3887=[_0x4bbf1f(0xc7),'.vscode',_0x4bbf1f(0x126),_0x4bbf1f(0x115),_0x4bbf1f(0x116),_0x4bbf1f(0x182),'.cursor','tsconfig.json',_0x4bbf1f(0x1b9)];while(_0x3e3b83!==a0_0x3df761['dirname'](_0x3e3b83)){for(const _0x35b935 of _0x2c3887){const _0x1346d2=a0_0x3df761[_0x4bbf1f(0x18e)](_0x3e3b83,_0x35b935);try{return await a0_0x55e678[_0x4bbf1f(0xee)](_0x1346d2),normalizePath(_0x3e3b83);}catch{}}_0x3e3b83=a0_0x3df761[_0x4bbf1f(0x1c8)](_0x3e3b83);}return normalizePath(_0x2ec8dd);}await Promise[a0_0x5e6917(0x164)](args['map'](async _0x5c0c80=>{const _0x57b7f0=a0_0x5e6917;try{const _0x1ea38f=await a0_0x55e678[_0x57b7f0(0x1c5)](expandHome(_0x5c0c80));!_0x1ea38f['isDirectory']()&&(logMcpStderr('Error:\x20'+_0x5c0c80+_0x57b7f0(0xef)),process[_0x57b7f0(0x15a)](0x1));}catch(_0x2d8a42){logMcpStderr(_0x57b7f0(0x1e8)+_0x5c0c80+':',_0x2d8a42),process['exit'](0x1);}}));async function validatePath(_0x4508b5){const _0x36f56f=a0_0x5e6917,_0x1f9711=expandHome(_0x4508b5),_0x43a54c=a0_0x3df761[_0x36f56f(0x117)](_0x1f9711);logger[_0x36f56f(0x136)]('MCP',_0x36f56f(0x128),{'raw_path':_0x4508b5,'absolute':_0x43a54c});try{const _0x4666c7=await a0_0x55e678[_0x36f56f(0x1b7)](_0x43a54c);return logger[_0x36f56f(0x136)]('MCP',_0x36f56f(0xe3),{'resolved':_0x4666c7,'symlink':_0x4666c7!==_0x43a54c}),_0x4666c7;}catch(_0x208b61){if(_0x208b61[_0x36f56f(0xe7)]===_0x36f56f(0xe9)){const _0x53921b=a0_0x3df761[_0x36f56f(0x1c8)](_0x43a54c);try{const _0x5cbe85=await a0_0x55e678['realpath'](_0x53921b),_0x34cd17=a0_0x3df761[_0x36f56f(0x18e)](_0x5cbe85,a0_0x3df761[_0x36f56f(0x1ed)](_0x43a54c));return logger['debug'](_0x36f56f(0x185),'path_validation_resolved',{'resolved':_0x34cd17,'new_file':!![]}),_0x34cd17;}catch{logger['error']('MCP',_0x36f56f(0x1e5),{'raw_path':_0x4508b5,'error':_0x36f56f(0x17d)+_0x53921b});throw new Error(_0x36f56f(0x17d)+_0x53921b);}}logger[_0x36f56f(0xcf)](_0x36f56f(0x185),_0x36f56f(0x1e5),{'raw_path':_0x4508b5,'error':_0x208b61['message']});throw _0x208b61;}}const MorphEditFileArgsSchema=z[a0_0x5e6917(0x1a3)]({'path':z[a0_0x5e6917(0xe1)](),'code_edit':z[a0_0x5e6917(0xe1)]()[a0_0x5e6917(0x14a)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0x5e6917(0xe1)]()[a0_0x5e6917(0x14a)](a0_0x5e6917(0x1e2)),'dryRun':z[a0_0x5e6917(0xd2)]()[a0_0x5e6917(0x1f2)](![])[a0_0x5e6917(0x14a)]('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x5e6917(0x1d3),WarpGrepArgsSchema=z[a0_0x5e6917(0x1a3)]({'search_string':z[a0_0x5e6917(0xe1)]()[a0_0x5e6917(0x14a)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x5e6917(0xe1)]()['describe'](a0_0x5e6917(0x190)),'search_type':z[a0_0x5e6917(0x19b)](['default','node_modules'])[a0_0x5e6917(0x146)]()[a0_0x5e6917(0x14a)]('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z[a0_0x5e6917(0x1a3)]({'search_string':z[a0_0x5e6917(0xe1)]()[a0_0x5e6917(0x14a)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x5e6917(0xe1)]()[a0_0x5e6917(0x146)]()[a0_0x5e6917(0x14a)](a0_0x5e6917(0x175)),'owner_repo':z[a0_0x5e6917(0xe1)]()[a0_0x5e6917(0x146)]()[a0_0x5e6917(0x14a)](a0_0x5e6917(0xc6)),'branch':z['string']()['optional']()[a0_0x5e6917(0x14a)](a0_0x5e6917(0x180))}),server=new Server({'name':a0_0x5e6917(0xdb),'version':'0.2.0'},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x19f578=a0_0x5e6917,_0xd6a895=[{'name':TOOL_NAMES[_0x19f578(0x1c0)],'description':_0x19f578(0x1d2)+_0x19f578(0xff)+'Parameters:\x0a'+_0x19f578(0x17b)+'-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a'+_0x19f578(0x14b)+_0x19f578(0x1ab)+_0x19f578(0x17f)+_0x19f578(0x1b4)+_0x19f578(0x18a)+'-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a'+'-\x20Preserve\x20exact\x20indentation\x0a'+_0x19f578(0x197)+_0x19f578(0xd6),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'annotations':{'readOnlyHint':![],'destructiveHint':!![],'idempotentHint':![],'openWorldHint':![]},'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x19f578(0x145)],'description':_0x19f578(0x135)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x19f578(0x186)+_0x19f578(0xe2)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':!![]},'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':!![]},'requiresApiKey':!![]}],_0x7e196c=_0xd6a895[_0x19f578(0x177)](_0x488109=>{const _0x7cc2d8=_0x19f578;if(DISABLED_TOOLS[_0x7cc2d8(0x13a)](_0x488109['name']))return console['error'](_0x7cc2d8(0x102)+_0x488109[_0x7cc2d8(0x140)]+_0x7cc2d8(0x13c)),![];if(_0x7cc2d8(0xcc)in _0x488109&&_0x488109['requiresApiKey']&&!MORPH_API_KEY)return logMcpStderr(_0x7cc2d8(0x1bf)+_0x488109['name']+_0x7cc2d8(0x1ee)),![];return!![];});return{'tools':_0x7e196c[_0x19f578(0x1ad)](_0x242ad1=>({'name':_0x242ad1[_0x19f578(0x140)],...'title'in _0x242ad1&&_0x242ad1[_0x19f578(0x1bd)]?{'title':_0x242ad1[_0x19f578(0x1bd)]}:{},'description':_0x242ad1[_0x19f578(0x161)],'inputSchema':_0x242ad1['inputSchema'],..._0x19f578(0x1d5)in _0x242ad1&&_0x242ad1[_0x19f578(0x1d5)]?{'annotations':_0x242ad1['annotations']}:{}}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x6c6690=>{const _0x450bfd=a0_0x5e6917,{name:_0x10d8c0,arguments:_0x4c1243}=_0x6c6690[_0x450bfd(0x1f3)],_0xfeb46f=Date[_0x450bfd(0x1b6)]();logger[_0x450bfd(0x136)]('MCP',_0x450bfd(0x1c9),{'tool':_0x10d8c0,'args':_0x10d8c0===_0x450bfd(0x12c)?{'path':_0x4c1243?.[_0x450bfd(0x12f)],'instruction':_0x4c1243?.['instruction']||_0x4c1243?.[_0x450bfd(0x171)],'dryRun':_0x4c1243?.[_0x450bfd(0x16d)]}:_0x4c1243});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x450bfd(0xf8),'text':_0x450bfd(0x1e1)}],'isError':!![]};if(!MORPH_API_KEY['startsWith'](_0x450bfd(0x1ac))&&!MORPH_API_KEY[_0x450bfd(0x124)](_0x450bfd(0x193)))return{'content':[{'type':'text','text':_0x450bfd(0x118)}],'isError':!![]};if(DISABLED_TOOLS[_0x450bfd(0x13a)](_0x10d8c0))return{'content':[{'type':'text','text':_0x450bfd(0x158)+_0x10d8c0+_0x450bfd(0x1b3)}],'isError':![]};switch(_0x10d8c0){case TOOL_NAMES['EDIT_FILE']:{let _0x1a5bd3=_0x4c1243;if(_0x1a5bd3&&typeof _0x1a5bd3===_0x450bfd(0x1a3)){if(!(_0x450bfd(0x12f)in _0x1a5bd3)){const _0x1bfbba=_0x1a5bd3[_0x450bfd(0x18c)]??_0x1a5bd3[_0x450bfd(0xe5)]??_0x1a5bd3[_0x450bfd(0x125)]??_0x1a5bd3[_0x450bfd(0x19a)]??_0x1a5bd3[_0x450bfd(0x153)];if(_0x1bfbba)_0x1a5bd3={..._0x1a5bd3,'path':_0x1bfbba};}'instructions'in _0x1a5bd3&&!(_0x450bfd(0x179)in _0x1a5bd3)&&(_0x1a5bd3={..._0x1a5bd3,'instruction':_0x1a5bd3[_0x450bfd(0x171)]});if(!(_0x450bfd(0x12b)in _0x1a5bd3)){const _0x602f50=_0x1a5bd3['code']??_0x1a5bd3[_0x450bfd(0xf2)]??_0x1a5bd3[_0x450bfd(0xe8)]??_0x1a5bd3[_0x450bfd(0x1ba)];if(_0x602f50)_0x1a5bd3={..._0x1a5bd3,'code_edit':_0x602f50};}}const _0x1087ca=MorphEditFileArgsSchema['safeParse'](_0x1a5bd3);if(!_0x1087ca['success'])throw new Error(_0x450bfd(0x16c)+_0x1087ca[_0x450bfd(0xcf)]);const _0x427515=await validatePath(_0x1087ca[_0x450bfd(0x1a7)]['path']);let _0x4f3f23=null,_0x394a72=!![],_0xd1a4a7=null;try{_0x4f3f23=await a0_0x55e678['readFile'](_0x427515,_0x450bfd(0x101)),logger['debug'](_0x450bfd(0x185),_0x450bfd(0x195),{'path':_0x427515,'size_bytes':_0x4f3f23[_0x450bfd(0x1be)]});}catch(_0x576c1d){const _0x568d7e=_0x576c1d[_0x450bfd(0xe7)];_0x568d7e===_0x450bfd(0xe9)?(_0x394a72=![],_0x4f3f23='',logger[_0x450bfd(0x136)](_0x450bfd(0x185),_0x450bfd(0x195),{'path':_0x427515,'exists':![]})):(_0xd1a4a7=_0x450bfd(0x1cd)+(_0x568d7e||'unknown')+'\x20-\x20'+(_0x576c1d instanceof Error?_0x576c1d[_0x450bfd(0x159)]:String(_0x576c1d)),logger['error']('MCP',_0x450bfd(0x1e0),{'path':_0x427515,'error':_0xd1a4a7}),logMcpStderr('Warning:\x20'+_0xd1a4a7));}let _0x4ae900;try{const _0x2ac62f=MORPH_API_KEY;if(!_0x2ac62f)throw new Error(_0x450bfd(0x10b));const _0x5dd789=a0_0x3df761[_0x450bfd(0x1c8)](_0x427515),_0x1cc9fc=a0_0x3df761[_0x450bfd(0x1ed)](_0x427515);logger[_0x450bfd(0x136)](_0x450bfd(0x185),'api_request_start',{'model':_0x450bfd(0x1b8),'path':_0x1087ca[_0x450bfd(0x1a7)]['path'],'instruction_len':_0x1087ca[_0x450bfd(0x1a7)]['instruction'][_0x450bfd(0x1be)],'code_edit_len':_0x1087ca[_0x450bfd(0x1a7)]['code_edit'][_0x450bfd(0x1be)],'original_code_len':_0x4f3f23?.['length']??0x0,'dry_run':_0x1087ca[_0x450bfd(0x1a7)][_0x450bfd(0x16d)]});const _0x3dffb2=Date['now'](),_0x38b6a8=await executeEditFile({'target_filepath':_0x1cc9fc,'code_edit':_0x1087ca[_0x450bfd(0x1a7)][_0x450bfd(0x12b)],'instruction':_0x1087ca[_0x450bfd(0x1a7)][_0x450bfd(0x179)]},{'morphApiKey':_0x2ac62f,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x5dd789,'autoWrite':!_0x1087ca[_0x450bfd(0x1a7)][_0x450bfd(0x16d)],'generateUdiff':![],'debug':![]}),_0x4473a9=Date[_0x450bfd(0x1b6)]()-_0x3dffb2;_0x4ae900=_0x38b6a8[_0x450bfd(0x1a2)];if(!_0x38b6a8[_0x450bfd(0x14f)])throw new Error(_0x38b6a8[_0x450bfd(0xcf)]||_0x450bfd(0x154));const _0x24f7f4=_0x38b6a8[_0x450bfd(0x107)],_0x9ecbdf=_0x450bfd(0x1a6)+_0x24f7f4['linesAdded']+',\x20removed\x20'+_0x24f7f4[_0x450bfd(0x106)]+_0x450bfd(0x16e)+_0x24f7f4[_0x450bfd(0x137)];logger['debug']('MCP',_0x450bfd(0x1ec),{'tool':_0x450bfd(0x12c),'success':!![],'latency_ms':Date[_0x450bfd(0x1b6)]()-_0xfeb46f,'edit_latency_ms':_0x4473a9,'changes':{'added':_0x24f7f4[_0x450bfd(0x138)],'removed':_0x24f7f4[_0x450bfd(0x106)],'modified':_0x24f7f4[_0x450bfd(0x137)]},'completion_id':_0x4ae900});if(_0x1087ca['data'][_0x450bfd(0x16d)])return{'content':[{'type':_0x450bfd(0xf8),'text':_0x450bfd(0xf9)+(_0x394a72?'':_0x450bfd(0x1df))+':\x20'+_0x1087ca[_0x450bfd(0x1a7)][_0x450bfd(0x179)]+'.\x20Changes:\x20'+_0x9ecbdf+_0x450bfd(0xe4)+_0x1087ca[_0x450bfd(0x1a7)][_0x450bfd(0x12f)]+'.'}]};return{'content':[{'type':_0x450bfd(0xf8),'text':_0x450bfd(0x166)+(_0x394a72?'Applied':_0x450bfd(0x188))+':\x20'+_0x1087ca['data'][_0x450bfd(0x179)]+_0x450bfd(0x17c)+_0x9ecbdf+'.\x20Path:\x20'+_0x1087ca['data'][_0x450bfd(0x12f)]+'.'}]};}catch(_0x24e264){const _0x34fbc5=handleMorphAPIError(_0x24e264);if(_0x34fbc5)return logger[_0x450bfd(0xcf)](_0x450bfd(0x185),_0x450bfd(0x165),{'tool':_0x450bfd(0x12c),'error':_0x450bfd(0xc9),'latency_ms':Date[_0x450bfd(0x1b6)]()-_0xfeb46f}),_0x34fbc5;const _0x4a80f0=_0x24e264 instanceof Error?_0x24e264['message']:String(_0x24e264);return logger[_0x450bfd(0xcf)](_0x450bfd(0x185),_0x450bfd(0x165),{'tool':_0x450bfd(0x12c),'error':_0x4a80f0,'path':_0x1087ca[_0x450bfd(0x1a7)][_0x450bfd(0x12f)],'validated_path':_0x427515,'latency_ms':Date[_0x450bfd(0x1b6)]()-_0xfeb46f,'stack':_0x24e264 instanceof Error?_0x24e264[_0x450bfd(0x199)]:undefined}),reportMorphError({'error_message':_0x4a80f0,'error_type':_0x24e264 instanceof Error?_0x24e264['constructor'][_0x450bfd(0x140)]:_0x450bfd(0xd9),'context':{'tool':_0x450bfd(0x12c),'completion_id':_0x4ae900,'file_path':_0x1087ca[_0x450bfd(0x1a7)][_0x450bfd(0x12f)],'validated_path':_0x427515,'instruction':_0x1087ca[_0x450bfd(0x1a7)][_0x450bfd(0x179)],'model':MORPH_LARGE_APPLY?_0x450bfd(0x150):_0x450bfd(0x1b8),'dry_run':_0x1087ca[_0x450bfd(0x1a7)]['dryRun'],'file_exists':_0x394a72,'file_read_error':_0xd1a4a7,'file_readable':_0x4f3f23!==null,'request_content':{'path':_0x1087ca['data'][_0x450bfd(0x12f)],'code_edit':_0x1087ca['data'][_0x450bfd(0x12b)],'instruction':_0x1087ca[_0x450bfd(0x1a7)]['instruction'],'original_code':_0x4f3f23!==null?_0x4f3f23[_0x450bfd(0x1be)]>0xc350?_0x4f3f23[_0x450bfd(0x13f)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x4f3f23[_0x450bfd(0x1be)]+_0x450bfd(0x187):_0x4f3f23:_0x450bfd(0xdf)+(_0xd1a4a7||_0x450bfd(0x1ef))+']','original_code_length':_0x4f3f23?.[_0x450bfd(0x1be)]??0x0,'model':MORPH_LARGE_APPLY?_0x450bfd(0x150):_0x450bfd(0x1b8),'dry_run':_0x1087ca[_0x450bfd(0x1a7)][_0x450bfd(0x16d)]}},'stack_trace':_0x24e264 instanceof Error?_0x24e264[_0x450bfd(0x199)]:undefined,'source':_0x450bfd(0x11d)})[_0x450bfd(0x1c6)](()=>{}),{'content':[{'type':'text','text':_0x450bfd(0x114)+_0x4a80f0}],'isError':!![]};}}case TOOL_NAMES[_0x450bfd(0x145)]:{const _0x332015=WarpGrepArgsSchema[_0x450bfd(0x156)](_0x4c1243);if(!_0x332015[_0x450bfd(0x14f)])return{'content':[{'type':'text','text':_0x450bfd(0x1bb)+_0x332015[_0x450bfd(0xcf)]}],'isError':!![]};const _0x5e74ea=_0x28fb39=>{const _0x13f6a2=_0x450bfd,_0x5e1353=[];for(const _0x13cc28 of _0x28fb39||[]){if(_0x13cc28['role']===_0x13f6a2(0x148)&&Array[_0x13f6a2(0x1a5)](_0x13cc28['tool_calls']))for(const _0x429698 of _0x13cc28['tool_calls']){try{const _0x29d6f3=_0x429698[_0x13f6a2(0x194)]?.[_0x13f6a2(0x140)],_0x241898=JSON[_0x13f6a2(0xf3)](_0x429698[_0x13f6a2(0x194)]?.[_0x13f6a2(0x160)]||'{}');if(_0x29d6f3===_0x13f6a2(0x11c))_0x5e1353[_0x13f6a2(0x143)](_0x13f6a2(0x123)+_0x241898[_0x13f6a2(0x1cc)]+'\x27\x20'+(_0x241898[_0x13f6a2(0x12f)]||'.'));else{if(_0x29d6f3===_0x13f6a2(0x122))_0x5e1353['push'](_0x13f6a2(0x141)+_0x241898[_0x13f6a2(0x12f)]);else{if(_0x29d6f3===_0x13f6a2(0x113))_0x5e1353['push'](_0x13f6a2(0x155)+(_0x241898[_0x13f6a2(0x15b)]||'.'));else{if(_0x29d6f3===_0x13f6a2(0xf5))_0x5e1353['push'](_0x13f6a2(0x1d6)+_0x241898[_0x13f6a2(0x1cc)]+'\x27\x20'+(_0x241898[_0x13f6a2(0x12f)]||'.'));else _0x29d6f3===_0x13f6a2(0x14e)&&_0x5e1353['push']('finish');}}}}catch{}}}return _0x5e1353;},_0x1a2541=_0x33be12=>{const _0x1b1bd5=_0x450bfd,_0x5a3895=[];if(!_0x33be12||!Array[_0x1b1bd5(0x1a5)](_0x33be12))return _0x5a3895;const _0x361828=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x1b1bd5(0x110),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x1b1bd5(0x1ea),'tool':_0x1b1bd5(0x122)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':_0x1b1bd5(0x122)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x1b1bd5(0xfc),'tool':_0x1b1bd5(0x1e9)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x1b1bd5(0x1e9)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x1b1bd5(0x16a),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x1b1bd5(0x1dc),'tool':_0x1b1bd5(0x122)},{'pattern':/not a text file/,'error_type':_0x1b1bd5(0x16a),'tool':'read'},{'pattern':/symbolic link/,'error_type':_0x1b1bd5(0x1dc),'tool':'read'},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x1b1bd5(0x122)},{'pattern':/status="error"/,'error_type':_0x1b1bd5(0x168),'tool':_0x1b1bd5(0x176)}];let _0x5c2e19=0x0;for(const _0x571d0b of _0x33be12){_0x571d0b[_0x1b1bd5(0xc8)]==='assistant'&&Array[_0x1b1bd5(0x1a5)](_0x571d0b['tool_calls'])&&_0x5c2e19++;const _0x499bf5=_0x571d0b[_0x1b1bd5(0xe8)];if((_0x571d0b['role']===_0x1b1bd5(0xeb)||_0x571d0b[_0x1b1bd5(0xc8)]===_0x1b1bd5(0x144))&&_0x499bf5&&typeof _0x499bf5===_0x1b1bd5(0xe1))for(const {pattern:_0xe412c9,error_type:_0x126c0f,tool:_0x5e327c}of _0x361828){const _0xe31515=_0x499bf5[_0x1b1bd5(0x183)](new RegExp(_0xe412c9[_0x1b1bd5(0xcd)],'g'));if(_0xe31515)for(const _0x4db241 of _0xe31515){const _0x12eea6=_0x499bf5[_0x1b1bd5(0xfa)](_0x4db241),_0x55412c=_0x499bf5['substring'](_0x12eea6,Math[_0x1b1bd5(0x170)](_0x12eea6+0xc8,_0x499bf5[_0x1b1bd5(0x1be)]));_0x5a3895[_0x1b1bd5(0x143)]({'tool':_0x5e327c,'error_type':_0x126c0f,'error_message':_0x55412c[_0x1b1bd5(0x10a)]('\x0a')[0x0],'turn':_0x5c2e19});}}}return _0x5a3895;};try{const _0x357b9a=a0_0x3df761['resolve'](_0x332015[_0x450bfd(0x1a7)]['repo_path']),_0x2b1b42=_0x332015[_0x450bfd(0x1a7)][_0x450bfd(0x103)],_0x2de7f5=_0x2b1b42===_0x450bfd(0x18b)?{'allowNames':[_0x450bfd(0x18b)]}:undefined,_0x15206c=new LocalRipgrepProvider(_0x357b9a,undefined,_0x2de7f5);logger[_0x450bfd(0x136)](_0x450bfd(0x185),_0x450bfd(0xda),{'type':'LocalRipgrepProvider','repo_root':_0x357b9a,'search_type':_0x2b1b42||'default'}),logger['debug'](_0x450bfd(0x185),'warp_grep_start',{'query':_0x332015[_0x450bfd(0x1a7)]['search_string'],'repo_root':_0x357b9a,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x400501=Date['now'](),_0x2fc2ae=await runWarpGrep({'searchTerm':_0x332015['data'][_0x450bfd(0x1c7)],'repoRoot':_0x357b9a,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x15206c,'search_type':_0x2b1b42}),_0x276a9d=Date[_0x450bfd(0x1b6)]()-_0x400501,_0x5710ce=_0x2fc2ae[_0x450bfd(0x14e)]?.[_0x450bfd(0xfe)]?.['files']?.[_0x450bfd(0x1be)]??0x0;logger['debug'](_0x450bfd(0x185),_0x450bfd(0x1e6),{'termination':_0x2fc2ae[_0x450bfd(0x1e3)],'turns':_0x2fc2ae['timings']?.[_0x450bfd(0x13b)]??0x0,'files_found':_0x5710ce,'latency_ms':_0x276a9d});const _0x4674ee=_0x1a2541(_0x2fc2ae[_0x450bfd(0xfb)]);_0x4674ee[_0x450bfd(0x1be)]>0x0&&reportMorphError({'error_message':_0x450bfd(0x173)+_0x4674ee['length']+_0x450bfd(0x181),'error_type':_0x450bfd(0x1d7),'level':_0x450bfd(0x1de),'tool':_0x450bfd(0xd5),'context':{'repo_path':_0x332015[_0x450bfd(0x1a7)][_0x450bfd(0x100)],'query':_0x332015[_0x450bfd(0x1a7)]['search_string'],'model':_0x450bfd(0x10e),'termination_reason':_0x2fc2ae[_0x450bfd(0x1e3)],'sub_tool_errors':_0x4674ee,'timings':_0x2fc2ae['timings'],'tool_calls':_0x5e74ea(_0x2fc2ae[_0x450bfd(0xfb)]),'messages':_0x2fc2ae['messages']?.[_0x450bfd(0x1ad)](_0x59ea73=>({'role':_0x59ea73[_0x450bfd(0xc8)],'content':_0x59ea73[_0x450bfd(0xe8)],..._0x59ea73[_0x450bfd(0x11e)]?{'tool_calls':_0x59ea73['tool_calls'][_0x450bfd(0x1be)]}:{},..._0x59ea73[_0x450bfd(0xde)]?{'tool_call_id':_0x59ea73[_0x450bfd(0xde)]}:{}}))},'source':'mcp-filesystem'})['catch'](()=>{});let _0x2c396b='';if(_0x2fc2ae['terminationReason']===_0x450bfd(0x15d)&&_0x2fc2ae[_0x450bfd(0x14e)]?.[_0x450bfd(0xfe)]?.['files']){const _0x581f2f=_0x2fc2ae[_0x450bfd(0x14e)]['metadata'][_0x450bfd(0x149)];if(_0x581f2f[_0x450bfd(0x1be)]===0x0)return _0x2c396b=_0x2fc2ae['finish'][_0x450bfd(0x15e)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':'text','text':_0x2c396b}]};const _0x191f48=[],_0x2b7554=[_0x450bfd(0x1ca)];for(const _0x50e9de of _0x2fc2ae[_0x450bfd(0xfb)]){if(_0x50e9de[_0x450bfd(0xc8)]===_0x450bfd(0x148)&&Array['isArray'](_0x50e9de[_0x450bfd(0x11e)]))for(const _0x2d8efe of _0x50e9de[_0x450bfd(0x11e)]){try{const _0x32a430=_0x2d8efe['function']?.[_0x450bfd(0x140)],_0x6fc04b=JSON[_0x450bfd(0xf3)](_0x2d8efe[_0x450bfd(0x194)]?.[_0x450bfd(0x160)]||'{}');if(_0x32a430==='grep_search')_0x2b7554['push'](_0x450bfd(0x10c)+_0x6fc04b[_0x450bfd(0x1cc)]+'\x27\x20in\x20`'+(_0x6fc04b[_0x450bfd(0x12f)]||'.')+'`');else{if(_0x32a430===_0x450bfd(0x122))_0x2b7554[_0x450bfd(0x143)](_0x450bfd(0x104)+_0x6fc04b['path']+'`');else{if(_0x32a430===_0x450bfd(0x113))_0x2b7554[_0x450bfd(0x143)]('-\x20Listed\x20directory\x20`'+(_0x6fc04b[_0x450bfd(0x15b)]||'.')+'`');else _0x32a430===_0x450bfd(0xf5)&&_0x2b7554['push'](_0x450bfd(0x1e7)+_0x6fc04b[_0x450bfd(0x1cc)]+'`\x20in\x20`'+(_0x6fc04b['path']||'.')+'`');}}}catch{}}}_0x191f48[_0x450bfd(0x143)](_0x2b7554['join']('\x0a'));const _0x1a0f5d=['',_0x450bfd(0x189)];for(const _0x18f126 of _0x581f2f){if(_0x18f126[_0x450bfd(0xce)]==='*')_0x1a0f5d[_0x450bfd(0x143)]('-\x20'+_0x18f126[_0x450bfd(0x12f)]+':*');else{if(Array['isArray'](_0x18f126[_0x450bfd(0xce)])){const _0x1d0020=_0x18f126[_0x450bfd(0xce)][_0x450bfd(0x1ad)](([_0x2e6e5a,_0x4e7394])=>{if(_0x2e6e5a===_0x4e7394)return''+_0x2e6e5a;return _0x2e6e5a+'-'+_0x4e7394;});_0x1a0f5d[_0x450bfd(0x143)]('-\x20'+_0x18f126[_0x450bfd(0x12f)]+':'+_0x1d0020[_0x450bfd(0x18e)](','));}else _0x1a0f5d[_0x450bfd(0x143)]('-\x20'+_0x18f126[_0x450bfd(0x12f)]+':*');}}_0x1a0f5d[_0x450bfd(0x143)](''),_0x191f48[_0x450bfd(0x143)](_0x1a0f5d['join']('\x0a')),_0x191f48[_0x450bfd(0x143)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x3b4c36=[],_0x18309e=[];for(const _0x57c082 of _0x581f2f){let _0x1a5b93=a0_0x3df761['resolve'](_0x332015[_0x450bfd(0x1a7)][_0x450bfd(0x100)],_0x57c082[_0x450bfd(0x12f)]),_0x233aa8=null,_0x5e0fd1=null;try{_0x233aa8=await a0_0x55e678[_0x450bfd(0xca)](_0x1a5b93,{'encoding':_0x450bfd(0x101)});}catch(_0x2651b0){const _0x3ef54c=fixPathRepetition(_0x1a5b93);if(_0x3ef54c)try{_0x233aa8=await a0_0x55e678[_0x450bfd(0xca)](_0x3ef54c,{'encoding':_0x450bfd(0x101)}),_0x1a5b93=_0x3ef54c;}catch{_0x5e0fd1=_0x2651b0 instanceof Error?_0x2651b0:new Error(String(_0x2651b0));}else _0x5e0fd1=_0x2651b0 instanceof Error?_0x2651b0:new Error(String(_0x2651b0));}if(_0x233aa8!==null){const _0x1063cf=_0x233aa8[_0x450bfd(0x10a)](/\r?\n/),_0x5045e7=[];if(_0x57c082[_0x450bfd(0xce)]==='*'||!Array['isArray'](_0x57c082[_0x450bfd(0xce)]))for(let _0x1ea553=0x1;_0x1ea553<=_0x1063cf[_0x450bfd(0x1be)];_0x1ea553++){const _0x3186c1=_0x1063cf[_0x1ea553-0x1];_0x5045e7[_0x450bfd(0x143)](_0x1ea553+'|\x20'+_0x3186c1);}else for(const [_0x252545,_0x5e02e0]of _0x57c082[_0x450bfd(0xce)]){_0x5045e7[_0x450bfd(0x1be)]>0x0&&_0x5045e7[_0x450bfd(0x143)]('');for(let _0x41611d=_0x252545;_0x41611d<=_0x5e02e0&&_0x41611d<=_0x1063cf[_0x450bfd(0x1be)];_0x41611d++){const _0xfe2ad7=_0x1063cf[_0x41611d-0x1];_0x5045e7[_0x450bfd(0x143)](_0x41611d+'|\x20'+_0xfe2ad7);}}_0x18309e[_0x450bfd(0x143)]({'path':_0x57c082[_0x450bfd(0x12f)],'content':_0x5045e7[_0x450bfd(0x18e)]('\x0a')});}else _0x3b4c36[_0x450bfd(0x143)](_0x450bfd(0x19d)+_0x57c082[_0x450bfd(0x12f)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x5e0fd1?.[_0x450bfd(0x159)]||_0x450bfd(0x1da))+_0x450bfd(0xdc));}try{const _0x52be42=await compactFileContexts(_0x18309e,_0x332015['data']['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x2b332d of _0x52be42){_0x3b4c36[_0x450bfd(0x143)](_0x450bfd(0x19d)+_0x2b332d[_0x450bfd(0x12f)]+'\x22>\x0a'+_0x2b332d['content']+_0x450bfd(0xdc));}}catch(_0x5032f8){logger[_0x450bfd(0x1de)](_0x450bfd(0x185),_0x450bfd(0xe6),{'error':_0x5032f8 instanceof Error?_0x5032f8['message']:String(_0x5032f8),'files_count':_0x18309e[_0x450bfd(0x1be)]});for(const _0x2664e8 of _0x18309e){_0x3b4c36[_0x450bfd(0x143)](_0x450bfd(0x19d)+_0x2664e8[_0x450bfd(0x12f)]+_0x450bfd(0x1c2)+_0x2664e8[_0x450bfd(0xe8)]+_0x450bfd(0xdc));}}_0x191f48[_0x450bfd(0x143)](_0x3b4c36[_0x450bfd(0x18e)]('\x0a\x0a')),_0x2c396b=_0x191f48[_0x450bfd(0x18e)]('\x0a');const _0x11d67b=_0x2fc2ae[_0x450bfd(0x1a9)]?.['filter'](_0x3e4978=>_0x3e4978[_0x450bfd(0x159)]?.[_0x450bfd(0x124)](_0x450bfd(0x1b5)))||[];if(_0x11d67b['length']>0x0){const _0x175392=_0x11d67b['map'](_0x37fb53=>_0x37fb53[_0x450bfd(0x159)])[_0x450bfd(0x18e)](';\x20');reportMorphError({'error_message':_0x175392,'error_type':_0x450bfd(0x13e),'context':{'tool':_0x450bfd(0xd5),'repo_path':_0x332015[_0x450bfd(0x1a7)]['repo_path'],'query':_0x332015[_0x450bfd(0x1a7)][_0x450bfd(0x1c7)],'model':_0x450bfd(0x10e),'termination_reason':_0x450bfd(0x1dd),'error_count':_0x11d67b[_0x450bfd(0x1be)],'is_timeout':![],'timings':_0x2fc2ae[_0x450bfd(0x184)],'files_attempted':_0x581f2f['map'](_0x3bbd29=>({'path':_0x3bbd29[_0x450bfd(0x12f)],'lines':_0x3bbd29['lines']})),'tool_calls':_0x5e74ea(_0x2fc2ae['messages']),'messages':_0x2fc2ae[_0x450bfd(0xfb)]?.[_0x450bfd(0x1ad)](_0x468762=>({'role':_0x468762[_0x450bfd(0xc8)],'content':_0x468762[_0x450bfd(0xe8)],..._0x468762[_0x450bfd(0x11e)]?{'tool_calls':_0x468762[_0x450bfd(0x11e)][_0x450bfd(0x1be)]}:{},..._0x468762[_0x450bfd(0xde)]?{'tool_call_id':_0x468762[_0x450bfd(0xde)]}:{}})),'request_content':{'query':_0x332015[_0x450bfd(0x1a7)]['search_string'],'repo_path':_0x332015[_0x450bfd(0x1a7)][_0x450bfd(0x100)],'repoRoot':a0_0x3df761[_0x450bfd(0x117)](_0x332015[_0x450bfd(0x1a7)][_0x450bfd(0x100)]),'model':_0x450bfd(0x10e)}},'source':_0x450bfd(0x11d)})[_0x450bfd(0x1c6)](()=>{});}}else{if(_0x2fc2ae[_0x450bfd(0x1e3)]===_0x450bfd(0x109)&&_0x2fc2ae['errors'][_0x450bfd(0x1be)]>0x0){const _0x182865=_0x2fc2ae[_0x450bfd(0x1a9)][_0x450bfd(0x1ad)](_0x38aa6a=>_0x38aa6a['message'])[_0x450bfd(0x18e)](';\x20');_0x2c396b=_0x450bfd(0x11a)+_0x182865;const _0xf2159f=_0x182865[_0x450bfd(0x15c)]()[_0x450bfd(0x134)](_0x450bfd(0x108))||_0x182865[_0x450bfd(0x15c)]()['includes']('timed\x20out')||_0x182865[_0x450bfd(0x15c)]()[_0x450bfd(0x134)](_0x450bfd(0x172)),_0x3312a2=_0x2fc2ae[_0x450bfd(0x14e)]?.[_0x450bfd(0xfe)]?.[_0x450bfd(0x149)],_0x4fcd3b=_0x2fc2ae[_0x450bfd(0x1a9)][0x0];reportMorphError({'error_message':_0x182865,'error_type':_0xf2159f?'TimeoutError':_0x4fcd3b?.[_0x450bfd(0x151)]?.[_0x450bfd(0x140)]||'WarpGrepError','context':{'tool':_0x450bfd(0xd5),'repo_path':_0x332015[_0x450bfd(0x1a7)][_0x450bfd(0x100)],'query':_0x332015['data'][_0x450bfd(0x1c7)],'model':_0x450bfd(0x10e),'termination_reason':_0x2fc2ae[_0x450bfd(0x1e3)],'error_count':_0x2fc2ae[_0x450bfd(0x1a9)][_0x450bfd(0x1be)],'is_timeout':_0xf2159f,'timings':_0x2fc2ae[_0x450bfd(0x184)],'files_attempted':_0x3312a2?.['map'](_0x3e9cde=>({'path':_0x3e9cde[_0x450bfd(0x12f)],'lines':_0x3e9cde['lines']})),'tool_calls':_0x5e74ea(_0x2fc2ae[_0x450bfd(0xfb)]),'messages':_0x2fc2ae['messages']?.['map'](_0x963656=>({'role':_0x963656[_0x450bfd(0xc8)],'content':_0x963656['content'],..._0x963656[_0x450bfd(0x11e)]?{'tool_calls':_0x963656[_0x450bfd(0x11e)][_0x450bfd(0x1be)]}:{},..._0x963656[_0x450bfd(0xde)]?{'tool_call_id':_0x963656[_0x450bfd(0xde)]}:{}})),'request_content':{'query':_0x332015[_0x450bfd(0x1a7)][_0x450bfd(0x1c7)],'repo_path':_0x332015[_0x450bfd(0x1a7)][_0x450bfd(0x100)],'repoRoot':a0_0x3df761[_0x450bfd(0x117)](_0x332015[_0x450bfd(0x1a7)][_0x450bfd(0x100)]),'model':_0x450bfd(0x10e)}},'stack_trace':_0x4fcd3b?.['stack']||undefined,'source':'mcp-filesystem'})[_0x450bfd(0x1c6)](()=>{});}else _0x2c396b=_0x450bfd(0xd7);}return{'content':[{'type':_0x450bfd(0xf8),'text':_0x2c396b}]};}catch(_0x3156b4){const _0x2f0edb=handleMorphAPIError(_0x3156b4);if(_0x2f0edb)return logger[_0x450bfd(0xcf)](_0x450bfd(0x185),_0x450bfd(0x165),{'tool':_0x450bfd(0xd5),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date['now']()-_0xfeb46f}),_0x2f0edb;const _0x3f6f80=_0x3156b4 instanceof Error?_0x3156b4[_0x450bfd(0x159)]:String(_0x3156b4);logger[_0x450bfd(0xcf)](_0x450bfd(0x185),_0x450bfd(0x165),{'tool':'codebase_search','error':_0x3f6f80,'repo_path':_0x332015['data'][_0x450bfd(0x100)],'query':_0x332015[_0x450bfd(0x1a7)][_0x450bfd(0x1c7)],'latency_ms':Date['now']()-_0xfeb46f});const _0x16570e=_0x3f6f80[_0x450bfd(0x15c)]()[_0x450bfd(0x134)](_0x450bfd(0x108))||_0x3f6f80[_0x450bfd(0x15c)]()['includes'](_0x450bfd(0x1b2))||_0x3f6f80[_0x450bfd(0x15c)]()[_0x450bfd(0x134)]('etimedout')||_0x3156b4 instanceof Error&&_0x3156b4[_0x450bfd(0x140)]==='TimeoutError';return reportMorphError({'error_message':_0x3f6f80,'error_type':_0x16570e?_0x450bfd(0x121):_0x3156b4 instanceof Error?_0x3156b4['constructor'][_0x450bfd(0x140)]:'UnknownError','context':{'tool':_0x450bfd(0xd5),'repo_path':_0x332015[_0x450bfd(0x1a7)][_0x450bfd(0x100)],'query':_0x332015['data'][_0x450bfd(0x1c7)],'model':_0x450bfd(0x10e),'is_timeout':_0x16570e,'exception_phase':_0x450bfd(0x1d4),'request_content':{'query':_0x332015[_0x450bfd(0x1a7)][_0x450bfd(0x1c7)],'repo_path':_0x332015[_0x450bfd(0x1a7)][_0x450bfd(0x100)],'repoRoot':a0_0x3df761[_0x450bfd(0x117)](_0x332015['data']['repo_path']),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x3156b4 instanceof Error?_0x3156b4[_0x450bfd(0x199)]:undefined,'source':_0x450bfd(0x11d)})[_0x450bfd(0x1c6)](()=>{}),{'content':[{'type':_0x450bfd(0xf8),'text':_0x450bfd(0x1e4)+_0x3f6f80}],'isError':![]};}}case TOOL_NAMES[_0x450bfd(0x163)]:{const _0x5509f9=WarpGrepGitHubArgsSchema['safeParse'](_0x4c1243);if(!_0x5509f9[_0x450bfd(0x14f)])return{'content':[{'type':_0x450bfd(0xf8),'text':_0x450bfd(0x1bb)+_0x5509f9[_0x450bfd(0xcf)]}],'isError':!![]};const _0x4db02b=_0x5509f9[_0x450bfd(0x1a7)][_0x450bfd(0x1d0)]||_0x5509f9['data'][_0x450bfd(0x133)];if(!_0x4db02b)return{'content':[{'type':'text','text':_0x450bfd(0x1a1)}],'isError':!![]};const _0x33557c=MORPH_API_KEY;if(!_0x33557c)throw new Error(_0x450bfd(0x10b));const _0x5ae81b=Date[_0x450bfd(0x1b6)]();logger[_0x450bfd(0x136)](_0x450bfd(0x185),_0x450bfd(0x16f),{'identifier':_0x4db02b,'query':_0x5509f9['data'][_0x450bfd(0x1c7)],'branch':_0x5509f9[_0x450bfd(0x1a7)][_0x450bfd(0xec)]});try{const _0x472403=new WarpGrepClient({'morphApiKey':_0x33557c,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x48d347=await _0x472403['searchGitHub']({'searchTerm':_0x5509f9[_0x450bfd(0x1a7)][_0x450bfd(0x1c7)],'github':_0x4db02b,'branch':_0x5509f9['data'][_0x450bfd(0xec)]}),_0x3fde9e=Date[_0x450bfd(0x1b6)]()-_0x5ae81b;logMcpStderr(_0x450bfd(0x1ce)+_0x3fde9e+_0x450bfd(0xf1)+_0x48d347[_0x450bfd(0x14f)]);const _0x1b3d9a=formatResult(_0x48d347);return{'content':[{'type':_0x450bfd(0xf8),'text':_0x1b3d9a}]};}catch(_0x2c78aa){const _0x221015=handleMorphAPIError(_0x2c78aa);if(_0x221015)return _0x221015;const _0x24c850=Date['now']()-_0x5ae81b,_0xf49626=_0x2c78aa instanceof Error?_0x2c78aa[_0x450bfd(0x159)]:String(_0x2c78aa);return logMcpStderr(_0x450bfd(0xc5)+_0x24c850+_0x450bfd(0x1bc),_0xf49626),reportMorphError({'error_message':_0xf49626,'error_type':_0x2c78aa instanceof Error?_0x2c78aa[_0x450bfd(0x151)][_0x450bfd(0x140)]:_0x450bfd(0xd9),'context':{'tool':'github_codebase_search','github_url':_0x4db02b,'search_string':_0x5509f9[_0x450bfd(0x1a7)][_0x450bfd(0x1c7)],'branch':_0x5509f9['data'][_0x450bfd(0xec)]},'stack_trace':_0x2c78aa instanceof Error?_0x2c78aa[_0x450bfd(0x199)]:undefined,'source':_0x450bfd(0x11d),'tool':_0x450bfd(0x167),'latency_ms':_0x24c850})['catch'](()=>{}),{'content':[{'type':_0x450bfd(0xf8),'text':_0x450bfd(0xe0)+_0xf49626}],'isError':![]};}}default:throw new Error(_0x450bfd(0xf7)+_0x10d8c0);}}catch(_0x261228){const _0x10de43=_0x261228 instanceof Error?_0x261228[_0x450bfd(0x159)]:String(_0x261228);return reportMorphError({'error_message':_0x10de43,'error_type':_0x261228 instanceof Error?_0x261228[_0x450bfd(0x151)][_0x450bfd(0x140)]:_0x450bfd(0xd9),'context':{'tool':_0x10d8c0,'arguments':_0x4c1243?JSON[_0x450bfd(0x129)](_0x4c1243)[_0x450bfd(0x13f)](0x0,0x1f4):undefined,'mcp_server_version':_0x450bfd(0x174)},'stack_trace':_0x261228 instanceof Error?_0x261228[_0x450bfd(0x199)]:undefined,'source':_0x450bfd(0x11d)})['catch'](()=>{}),{'content':[{'type':'text','text':_0x450bfd(0x11a)+_0x10de43}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0xe5214e){const _0x39ae37=a0_0x5e6917,_0x497da8=await getValidRootDirectories(_0xe5214e);if(_0x497da8['length']>0x0)allowedDirectories=[..._0x497da8],logMcpStderr(_0x39ae37(0x1a8)+_0x497da8['length']+_0x39ae37(0x17a));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x52f3fa=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x52f3fa&&(allowedDirectories=[_0x52f3fa],logMcpStderr(_0x39ae37(0x1b0)+_0x52f3fa));}catch(_0x51a7a6){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x51a7a6);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0xd3aa20=a0_0x5e6917;try{const _0x23091b=await server[_0xd3aa20(0xea)]();_0x23091b&&_0xd3aa20(0x14c)in _0x23091b&&await updateAllowedDirectoriesFromRoots(_0x23091b['roots']);}catch(_0x131991){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x131991 instanceof Error?_0x131991['message']:String(_0x131991));}}),server['oninitialized']=async()=>{const _0x3c3d27=a0_0x5e6917,_0x464cfe=server[_0x3c3d27(0x19e)]();if(_0x464cfe?.[_0x3c3d27(0x14c)])try{const _0x23d596=await server[_0x3c3d27(0xea)]();_0x23d596&&'roots'in _0x23d596?await updateAllowedDirectoriesFromRoots(_0x23d596[_0x3c3d27(0x14c)]):logMcpStderr(_0x3c3d27(0xd1));}catch(_0x10a549){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x10a549 instanceof Error?_0x10a549[_0x3c3d27(0x159)]:String(_0x10a549));}else{if(allowedDirectories[_0x3c3d27(0x1be)]>0x0)logMcpStderr(_0x3c3d27(0xcb),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x3c3d27(0x139));}}};function a0_0x5a0d(){const _0x4b0b74=['all','tool_call_error','Morph\x20Edit\x20','github_codebase_search','ToolException','\x0aExamples:','BinaryFile','normalize','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','dryRun',',\x20modified\x20','github_search_start','min','instructions','etimedout','WarpGrep\x20sub-tool\x20errors:\x20','0.2.0','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','unknown','filter','application/json','instruction','\x20valid\x20directories','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','.\x20Changes:\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','WORKSPACE_ROOT','Example\x20format:\x0a','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','\x20error(s)','go.mod','match','timings','MCP','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','\x20chars)','Created\x20File','Relevant\x20context\x20found:','Rules:\x0a','node_modules','target_file','1178871NSVjBr','join','MORPH_WARP_GREP_TIMEOUT','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','some','slice','morph-','function','file_read_complete','MORPH_LARGE_APPLY','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','every','stack','file_path','enum','1IHNXSH','<file\x20path=\x22','getClientCapabilities','size','toISOString','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','completionId','object','ENABLE_WORKSPACE_MODE','isArray','added\x20','data','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','errors','status','Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a','sk-','map','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','Fallback:\x20Using\x20workspace\x20root\x20','1524430UsNQyo','timed\x20out','\x22\x20is\x20disabled\x20via\x20ENABLED_TOOLS/DISABLED_TOOLS\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','File\x20read\x20error:','now','realpath','morph-v3-fast','composer.json','edit','Invalid\x20arguments:\x20','ms:','title','length','Warning:\x20','EDIT_FILE','Disabled\x20tools:\x20','\x22>\x0a','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','stat','catch','search_string','dirname','tool_call_received','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','env','pattern','Failed\x20to\x20read\x20file:\x20','[github_codebase_search]\x20Done\x20in\x20','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','github_url','MORPH_API_URL','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES.**\x20Fast,\x20accurate,\x20and\x20prevents\x20context\x20pollution.\x20Especially\x20useful\x20when\x20making\x20multiple\x20edits\x20in\x20one\x20file:\x20describe\x20all\x20changes\x20in\x20a\x20single\x20call\x20and\x20the\x20semantic\x20edit\x20applies\x20them\x20all\x20at\x20once,\x20more\x20accurately\x20and\x20faster\x20than\x20sequential\x20edits.\x20Unlike\x20search-and-replace\x20or\x20patch\x20edits\x20which\x20do\x20narrow\x20edits\x20one\x20at\x20a\x20time,\x20with\x20this\x20tool\x20you\x20should\x20do\x20all\x20your\x20code\x20changes\x20in\x20one\x20go\x20separated\x20by\x20`//\x20...\x20existing\x20code\x20...`\x20markers.\x20This\x20saves\x20tokens\x20and\x20improves\x20performance\x20because\x20you\x20do\x20not\x20need\x20to\x20reread\x20files\x20before\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','runWarpGrep_call','annotations','glob\x20\x27','SubToolError','63gEpyUQ','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','Unknown\x20error','api-key','SymlinkError','completed_with_file_errors','warn','\x20(new\x20file)','file_read_failed','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','terminationReason','Error\x20running\x20fast\x20context\x20search:\x20','path_validation_failed','warp_grep_complete','-\x20Glob\x20search\x20`','Error\x20accessing\x20directory\x20','grep','PathError','homedir','tool_call_complete','basename','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','unknown\x20error','\x22.\x20Known\x20tools:\x20','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','default','params','[github_codebase_search]\x20Failed\x20in\x20','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','.git','role','API\x20error\x20(auth/rate-limit)','readFile','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','requiresApiKey','source','lines','error','\x0aOptions:','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','boolean','3502950bLuSVP','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','codebase_search','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','cwd','UnknownError','provider_created','morph-mcp','\x0a</file>','post','tool_call_id','[could\x20not\x20read\x20file:\x20','GitHub\x20search\x20failed:\x20','string','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','path_validation_resolved','.\x20Path:\x20','filePath','compaction_failed','code','content','ENOENT','listRoots','tool','branch','Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.','access','\x20is\x20not\x20a\x20directory','connect','ms.\x20Success:\x20','new_string','parse','response','glob','sep','Unknown\x20tool:\x20','text','Morph\x20Edit\x20Preview','indexOf','messages','RipgrepError','MORPH_API_KEY','metadata','WHEN\x20TO\x20USE\x20vs\x20native\x20edit/patch\x20tools:\x20prefer\x20this\x20tool\x20for\x20large\x20files,\x20multiple\x20or\x20scattered\x20edits,\x20refactors,\x20and\x20whitespace-sensitive\x20changes.\x20A\x20single\x20tiny\x20exact-string\x20replacement\x20can\x20use\x20the\x20native\x20edit/patch\x20tool.\x20If\x20this\x20tool\x20errors\x20or\x20times\x20out,\x20fall\x20back\x20to\x20native\x20edit\x20with\x20exact\x20string\x20matching.\x0a\x0a','repo_path','utf-8','Tool\x20','search_type','-\x20Read\x20file\x20`','Fatal\x20error\x20running\x20server:','linesRemoved','changes','timeout','terminated','split','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','-\x20Grepped\x20\x27','PWD','morph-warp-grep-v2.1','Workspace\x20mode\x20enabled:\x20Using\x20','FileNotFound','log','\x20as\x20allowed\x20directory','list_directory','❌\x20Morph\x20Edit\x20Failed:\x20','Cargo.toml','pyproject.toml','resolve','Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.','https://morphllm.com/api/error-report','Error:\x20','@morphllm/morphmcp\x20','grep_search','mcp-filesystem','tool_calls','2985354uzZVvC','152088dpoehL','TimeoutError','read','grep\x20\x27','startsWith','target_filepath','package.json','766970wVWdxf','path_validation_start','stringify','4fVhFpa','code_edit','edit_file','--version','../package.json','path','699506RnZNWD','--api-key','false','owner_repo','includes','A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20','debug','linesModified','linesAdded','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.','has','turns','\x20disabled\x20via\x20ENABLED_TOOLS/DISABLED_TOOLS','9ENKPMY','FileReadError','substring','name','read\x20','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','push','user','CODEBASE_SEARCH','optional','argv','assistant','files','describe','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','roots','Warning:\x20ENABLED_TOOLS/DISABLED_TOOLS\x20names\x20unknown\x20tool\x20\x22','finish','success','morph-v3-large','constructor','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','file','Morph\x20FastApply\x20failed\x20without\x20error\x20message','list_directory\x20','safeParse','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','Tool\x20\x22','message','exit','command','toLowerCase','completed','payload','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','arguments','description','Bearer\x20','GITHUB_CODEBASE_SEARCH'];a0_0x5a0d=function(){return _0x4b0b74;};return a0_0x5a0d();}async function runServer(){const _0x112f1f=a0_0x5e6917,_0x56d175=new StdioServerTransport();await server[_0x112f1f(0xf0)](_0x56d175),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories['length']===0x0&&logMcpStderr(_0x112f1f(0x157));}runServer()[a0_0x5e6917(0x1c6)](_0x511a15=>{const _0x31502b=a0_0x5e6917;logMcpStderr(_0x31502b(0x105),_0x511a15),process[_0x31502b(0x15a)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
function a1_0x4f6d(_0x1da72d,_0xda9cd0){_0x1da72d=_0x1da72d-0x191;var _0x5ab73c=a1_0x5ab7();var _0x4f6df4=_0x5ab73c[_0x1da72d];return _0x4f6df4;}var a1_0x1e52d5=a1_0x4f6d;(function(_0x5e6eaf,_0x573cff){var _0x3b9e88=a1_0x4f6d,_0x25e7c0=_0x5e6eaf();while(!![]){try{var _0x101769=-parseInt(_0x3b9e88(0x195))/0x1*(parseInt(_0x3b9e88(0x1a5))/0x2)+parseInt(_0x3b9e88(0x19a))/0x3*(-parseInt(_0x3b9e88(0x19f))/0x4)+parseInt(_0x3b9e88(0x199))/0x5*(parseInt(_0x3b9e88(0x193))/0x6)+-parseInt(_0x3b9e88(0x1a1))/0x7+parseInt(_0x3b9e88(0x191))/0x8*(-parseInt(_0x3b9e88(0x192))/0x9)+parseInt(_0x3b9e88(0x1a3))/0xa+-parseInt(_0x3b9e88(0x196))/0xb*(-parseInt(_0x3b9e88(0x1a2))/0xc);if(_0x101769===_0x573cff)break;else _0x25e7c0['push'](_0x25e7c0['shift']());}catch(_0x748a03){_0x25e7c0['push'](_0x25e7c0['shift']());}}}(a1_0x5ab7,0x647cf));import a1_0x5b08c4 from'os';import{logger}from'./logger.js';function a1_0x5ab7(){var _0x6b39de=['macOS','18861dSIzqX','77AEPVIx','Unknown','[os=','15uYWSDh','1875921uLPMLY','map','platform','error','linux','4AFwPAq','Windows','3957303anYafs','2662512iCdOFg','390200cKbCZF','MCP','66ujDDmh','104136vSPtvT','27hituDK','1343094frVdAg'];a1_0x5ab7=function(){return _0x6b39de;};return a1_0x5ab7();}export function getOperatingSystemType(_0x30428d=a1_0x5b08c4[a1_0x1e52d5(0x19c)]()){var _0x4d2fc7=a1_0x1e52d5;switch(_0x30428d){case'darwin':return _0x4d2fc7(0x194);case'win32':return _0x4d2fc7(0x1a0);case _0x4d2fc7(0x19e):return'Linux';default:return _0x4d2fc7(0x197);}}export function formatMcpLogMessage(_0x132783,_0x1fd053=a1_0x5b08c4['platform']()){var _0x525636=a1_0x1e52d5;return _0x525636(0x198)+getOperatingSystemType(_0x1fd053)+']\x20'+_0x132783;}export function logMcpStderr(_0x40f066,..._0x129d3f){var _0x2566e3=a1_0x1e52d5;console[_0x2566e3(0x19d)](formatMcpLogMessage(_0x40f066),..._0x129d3f),logger['info'](_0x2566e3(0x1a4),_0x40f066,_0x129d3f['length']?{'args':_0x129d3f[_0x2566e3(0x19b)](_0x39bcd6=>String(_0x39bcd6))}:undefined);}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a2_0x5886(_0x4d0af1,_0x258ad4){_0x4d0af1=_0x4d0af1-0x136;const _0x5a45cd=a2_0x5a45();let _0x588679=_0x5a45cd[_0x4d0af1];return _0x588679;}const a2_0xd3f70d=a2_0x5886;(function(_0x532d4c,_0x136009){const _0x4e62ea=a2_0x5886,_0x6a1510=_0x532d4c();while(!![]){try{const _0x1db9ba=-parseInt(_0x4e62ea(0x136))/0x1+parseInt(_0x4e62ea(0x140))/0x2+-parseInt(_0x4e62ea(0x14a))/0x3+parseInt(_0x4e62ea(0x144))/0x4+-parseInt(_0x4e62ea(0x149))/0x5+-parseInt(_0x4e62ea(0x13d))/0x6+-parseInt(_0x4e62ea(0x13a))/0x7*(-parseInt(_0x4e62ea(0x13e))/0x8);if(_0x1db9ba===_0x136009)break;else _0x6a1510['push'](_0x6a1510['shift']());}catch(_0x3767c8){_0x6a1510['push'](_0x6a1510['shift']());}}}(a2_0x5a45,0x708b5));import{createWriteStream}from'fs';class MorphLogger{[a2_0xd3f70d(0x143)];['fileStream'];constructor(){const _0x128c8e=a2_0xd3f70d;this[_0x128c8e(0x143)]=process[_0x128c8e(0x137)][_0x128c8e(0x13b)]==='1'||!!process['env']['MORPH_LOG_FILE'];const _0x23cfe1=process[_0x128c8e(0x137)]['MORPH_LOG_FILE'];this['fileStream']=_0x23cfe1?createWriteStream(_0x23cfe1,{'flags':'a'}):null;}[a2_0xd3f70d(0x13f)](_0x49ff19,_0x41c0d9,_0x2b0741){const _0x3c3daa=a2_0xd3f70d;this['_log'](_0x3c3daa(0x13f),_0x49ff19,_0x41c0d9,_0x2b0741);}['info'](_0x234d02,_0x1c2339,_0x2cb584){const _0x742ca9=a2_0xd3f70d;this['_log'](_0x742ca9(0x146),_0x234d02,_0x1c2339,_0x2cb584);}['warn'](_0x69d047,_0x29bb41,_0x36f2f2){const _0x3e19c3=a2_0xd3f70d;this[_0x3e19c3(0x141)](_0x3e19c3(0x142),_0x69d047,_0x29bb41,_0x36f2f2);}[a2_0xd3f70d(0x147)](_0x4f4621,_0x3ae906,_0x29b640){const _0x25bcf9=a2_0xd3f70d;this[_0x25bcf9(0x141)](_0x25bcf9(0x147),_0x4f4621,_0x3ae906,_0x29b640);}['enable'](){const _0x27b7dd=a2_0xd3f70d;this[_0x27b7dd(0x143)]=!![];}get[a2_0xd3f70d(0x138)](){const _0x4ac9eb=a2_0xd3f70d;return this[_0x4ac9eb(0x143)];}['_log'](_0x13e761,_0x212fda,_0x14e0a0,_0x391ed7){const _0x533668=a2_0xd3f70d;if(_0x13e761!=='error'&&!this['enabled'])return;const _0x23db37=new Date()[_0x533668(0x145)](),_0x1b9d75='['+_0x23db37+_0x533668(0x148)+_0x13e761[_0x533668(0x139)]()+']\x20['+_0x212fda+']';console[_0x533668(0x147)](_0x391ed7?_0x1b9d75+'\x20'+_0x14e0a0+'\x20'+JSON[_0x533668(0x13c)](_0x391ed7):_0x1b9d75+'\x20'+_0x14e0a0),this[_0x533668(0x14b)]?.['write'](JSON['stringify']({'ts':_0x23db37,'level':_0x13e761,'component':_0x212fda,'msg':_0x14e0a0,..._0x391ed7&&{'data':_0x391ed7}})+'\x0a');}}function a2_0x5a45(){const _0x23b68e=[']\x20[','2124190eVVWIw','2194398eKSPlY','fileStream','449341dLLcTF','env','isEnabled','toUpperCase','49CxUaFJ','MORPH_DEBUG','stringify','2050824FYMFFv','1663912qViyeQ','debug','985428srrAkJ','_log','warn','enabled','1839172hYvheL','toISOString','info','error'];a2_0x5a45=function(){return _0x23b68e;};return a2_0x5a45();}export const logger=new MorphLogger();
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x3ebfda,_0x39f7c2){const _0x344bf7=a3_0x5eab,_0x52dd5e=_0x3ebfda();while(!![]){try{const _0x3fe4fd=parseInt(_0x344bf7(0xc3))/0x1*(parseInt(_0x344bf7(0xb3))/0x2)+-parseInt(_0x344bf7(0xbf))/0x3*(parseInt(_0x344bf7(0xc6))/0x4)+parseInt(_0x344bf7(0xb6))/0x5*(-parseInt(_0x344bf7(0xbb))/0x6)+parseInt(_0x344bf7(0xc1))/0x7+parseInt(_0x344bf7(0xb5))/0x8+parseInt(_0x344bf7(0xc0))/0x9*(-parseInt(_0x344bf7(0xbe))/0xa)+parseInt(_0x344bf7(0xb7))/0xb*(parseInt(_0x344bf7(0xbc))/0xc);if(_0x3fe4fd===_0x39f7c2)break;else _0x52dd5e['push'](_0x52dd5e['shift']());}catch(_0x54a9a2){_0x52dd5e['push'](_0x52dd5e['shift']());}}}(a3_0x1944,0x622b6));import a3_0x12c5ae from'path';import a3_0x4b4dac from'os';function a3_0x5eab(_0x3dedaa,_0x46548e){_0x3dedaa=_0x3dedaa-0xb3;const _0x1944ca=a3_0x1944();let _0x5eabe7=_0x1944ca[_0x3dedaa];return _0x5eabe7;}function a3_0x1944(){const _0x2de62e=['1698PDCTLt','charAt','3144064deEchZ','2431535KgvInd','1548327JkzqTH','startsWith','normalize','substring','6VyFOoL','36tlrljY','test','8830lADrNw','33CJmmZM','3681wZOkBq','3333288JlXmfT','match','843GrFzKj','toUpperCase','replace','275496SLbslh','slice'];a3_0x1944=function(){return _0x2de62e;};return a3_0x1944();}export function convertToWindowsPath(_0x52d394){const _0x531888=a3_0x5eab;if(_0x52d394['startsWith']('/mnt/')){const _0x39a754=_0x52d394[_0x531888(0xb4)](0x5)[_0x531888(0xc4)](),_0x5de549=_0x52d394[_0x531888(0xc7)](0x6)[_0x531888(0xc5)](/\//g,'\x5c');return _0x39a754+':'+_0x5de549;}if(_0x52d394[_0x531888(0xc2)](/^\/[a-zA-Z]\//)){const _0x479856=_0x52d394[_0x531888(0xb4)](0x1)[_0x531888(0xc4)](),_0x124541=_0x52d394[_0x531888(0xc7)](0x2)[_0x531888(0xc5)](/\//g,'\x5c');return _0x479856+':'+_0x124541;}if(_0x52d394[_0x531888(0xc2)](/^[a-zA-Z]:/))return _0x52d394[_0x531888(0xc5)](/\//g,'\x5c');return _0x52d394;}export function normalizePath(_0x1b69d4){const _0x295c15=a3_0x5eab;_0x1b69d4=_0x1b69d4['trim']()[_0x295c15(0xc5)](/^["']|["']$/g,'');const _0x19a4de=_0x1b69d4[_0x295c15(0xb8)]('/')&&!_0x1b69d4[_0x295c15(0xc2)](/^\/mnt\/[a-z]\//i)&&!_0x1b69d4[_0x295c15(0xc2)](/^\/[a-zA-Z]\//);if(_0x19a4de)return _0x1b69d4[_0x295c15(0xc5)](/\/+/g,'/')[_0x295c15(0xc5)](/\/+$/,'');_0x1b69d4=convertToWindowsPath(_0x1b69d4);if(_0x1b69d4['startsWith']('\x5c\x5c')){let _0x18a9f2=_0x1b69d4;_0x18a9f2=_0x18a9f2['replace'](/^\\{2,}/,'\x5c\x5c');const _0x111ec0=_0x18a9f2[_0x295c15(0xba)](0x2)[_0x295c15(0xc5)](/\\\\/g,'\x5c');_0x1b69d4='\x5c\x5c'+_0x111ec0;}else _0x1b69d4=_0x1b69d4[_0x295c15(0xc5)](/\\\\/g,'\x5c');let _0xbf03c2=a3_0x12c5ae[_0x295c15(0xb9)](_0x1b69d4);_0x1b69d4[_0x295c15(0xb8)]('\x5c\x5c')&&!_0xbf03c2[_0x295c15(0xb8)]('\x5c\x5c')&&(_0xbf03c2='\x5c'+_0xbf03c2);if(_0xbf03c2[_0x295c15(0xc2)](/^[a-zA-Z]:/)){let _0x5648e8=_0xbf03c2[_0x295c15(0xc5)](/\//g,'\x5c');return/^[a-z]:/[_0x295c15(0xbd)](_0x5648e8)&&(_0x5648e8=_0x5648e8[_0x295c15(0xb4)](0x0)[_0x295c15(0xc4)]()+_0x5648e8['slice'](0x1)),_0x5648e8;}return _0xbf03c2[_0x295c15(0xc5)](/\//g,'\x5c');}export function expandHome(_0x22de7e){const _0x4cdc05=a3_0x5eab;if(_0x22de7e['startsWith']('~/')||_0x22de7e==='~')return a3_0x12c5ae['join'](a3_0x4b4dac['homedir'](),_0x22de7e[_0x4cdc05(0xc7)](0x1));return _0x22de7e;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a4_0x5052(_0x11ce1b,_0x78ab79){_0x11ce1b=_0x11ce1b-0x183;const _0x2ca1fa=a4_0x2ca1();let _0x5052c7=_0x2ca1fa[_0x11ce1b];return _0x5052c7;}(function(_0x3cc984,_0xa824a5){const _0x4018a1=a4_0x5052,_0x2cf672=_0x3cc984();while(!![]){try{const _0x14fe0e=-parseInt(_0x4018a1(0x196))/0x1+parseInt(_0x4018a1(0x193))/0x2+-parseInt(_0x4018a1(0x198))/0x3*(parseInt(_0x4018a1(0x18c))/0x4)+-parseInt(_0x4018a1(0x188))/0x5*(parseInt(_0x4018a1(0x18e))/0x6)+parseInt(_0x4018a1(0x195))/0x7*(-parseInt(_0x4018a1(0x191))/0x8)+-parseInt(_0x4018a1(0x183))/0x9*(parseInt(_0x4018a1(0x189))/0xa)+parseInt(_0x4018a1(0x199))/0xb*(parseInt(_0x4018a1(0x187))/0xc);if(_0x14fe0e===_0xa824a5)break;else _0x2cf672['push'](_0x2cf672['shift']());}catch(_0xabb3cd){_0x2cf672['push'](_0x2cf672['shift']());}}}(a4_0x2ca1,0xf3cc6));import a4_0x236b5d from'path';function a4_0x2ca1(){const _0x51b109=['87094ZCUGdF','1512377xGDRYj','length','1695EhZFxW','3960836kCdElu','945JhUYeA','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','sep','includes','204iLatTL','2010185PDnayq','10100JZWUdK','isAbsolute','string','2660mwyySD','some','24qTneMp','startsWith','normalize','1104NsKURo','isArray','393204gOTIOr','resolve'];a4_0x2ca1=function(){return _0x51b109;};return a4_0x2ca1();}export function isPathWithinAllowedDirectories(_0x2793c1,_0x4e83a9){const _0x31ff58=a4_0x5052;if(typeof _0x2793c1!==_0x31ff58(0x18b)||!Array[_0x31ff58(0x192)](_0x4e83a9))return![];if(!_0x2793c1||_0x4e83a9[_0x31ff58(0x197)]===0x0)return![];if(_0x2793c1[_0x31ff58(0x186)]('\x00'))return![];let _0x1fac2e;try{_0x1fac2e=a4_0x236b5d[_0x31ff58(0x194)](a4_0x236b5d['normalize'](_0x2793c1));}catch{return![];}if(!a4_0x236b5d[_0x31ff58(0x18a)](_0x1fac2e))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x4e83a9[_0x31ff58(0x18d)](_0x16e70a=>{const _0x56b492=_0x31ff58;if(typeof _0x16e70a!==_0x56b492(0x18b)||!_0x16e70a)return![];if(_0x16e70a[_0x56b492(0x186)]('\x00'))return![];let _0x5cb105;try{_0x5cb105=a4_0x236b5d['resolve'](a4_0x236b5d[_0x56b492(0x190)](_0x16e70a));}catch{return![];}if(!a4_0x236b5d[_0x56b492(0x18a)](_0x5cb105))throw new Error(_0x56b492(0x184));if(_0x1fac2e===_0x5cb105)return!![];if(_0x5cb105===a4_0x236b5d[_0x56b492(0x185)])return _0x1fac2e[_0x56b492(0x18f)](a4_0x236b5d[_0x56b492(0x185)]);return _0x1fac2e[_0x56b492(0x18f)](_0x5cb105+a4_0x236b5d[_0x56b492(0x185)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x281f24,_0x4de25a){const _0x5ac154=a5_0x23d3,_0x23460d=_0x281f24();while(!![]){try{const _0x56e449=-parseInt(_0x5ac154(0x79))/0x1*(-parseInt(_0x5ac154(0x75))/0x2)+parseInt(_0x5ac154(0x71))/0x3+-parseInt(_0x5ac154(0x77))/0x4*(parseInt(_0x5ac154(0x70))/0x5)+parseInt(_0x5ac154(0x6a))/0x6+parseInt(_0x5ac154(0x74))/0x7+-parseInt(_0x5ac154(0x6c))/0x8+-parseInt(_0x5ac154(0x73))/0x9*(-parseInt(_0x5ac154(0x7b))/0xa);if(_0x56e449===_0x4de25a)break;else _0x23460d['push'](_0x23460d['shift']());}catch(_0x3d52e5){_0x23460d['push'](_0x23460d['shift']());}}}(a5_0x5697,0xc147a));import{promises as a5_0x48aec5}from'fs';import a5_0x35db07 from'path';import a5_0x53e61a from'os';import{normalizePath}from'./path-utils.js';function a5_0x23d3(_0x5d2d3d,_0x391056){_0x5d2d3d=_0x5d2d3d-0x65;const _0x569766=a5_0x5697();let _0x23d33d=_0x569766[_0x5d2d3d];return _0x23d33d;}import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x2ea0ef){const _0x562c20=a5_0x23d3;try{const _0x216362=_0x2ea0ef[_0x562c20(0x6f)]('file://')?_0x2ea0ef[_0x562c20(0x66)](0x7):_0x2ea0ef,_0x159334=_0x216362[_0x562c20(0x6f)]('~/')||_0x216362==='~'?a5_0x35db07[_0x562c20(0x6e)](a5_0x53e61a['homedir'](),_0x216362[_0x562c20(0x66)](0x1)):_0x216362,_0x52535c=a5_0x35db07[_0x562c20(0x6b)](_0x159334),_0x4dba90=await a5_0x48aec5[_0x562c20(0x67)](_0x52535c);return normalizePath(_0x4dba90);}catch{return null;}}function a5_0x5697(){const _0x51804e=['\x20due\x20to\x20error:\x20','27130ElvCJJ','Skipping\x20','slice','realpath','Skipping\x20invalid\x20directory:\x20','message','899604cCgOlo','resolve','1152304aMbRcF','isDirectory','join','startsWith','5CJqabX','3001413GHTSch','invalid\x20path\x20or\x20inaccessible','45GAzace','7511602MVHBwr','162xROghZ','uri','5783068DuEWvx','push','1783LRWXri'];a5_0x5697=function(){return _0x51804e;};return a5_0x5697();}function formatDirectoryError(_0x1672e9,_0x3b700d,_0x25eb8a){const _0x3acc4b=a5_0x23d3;if(_0x25eb8a)return _0x3acc4b(0x65)+_0x25eb8a+':\x20'+_0x1672e9;const _0x55b3d4=_0x3b700d instanceof Error?_0x3b700d[_0x3acc4b(0x69)]:String(_0x3b700d);return _0x3acc4b(0x68)+_0x1672e9+_0x3acc4b(0x7a)+_0x55b3d4;}export async function getValidRootDirectories(_0x39a00a){const _0x4d448a=a5_0x23d3,_0x377b44=[];for(const _0x4749ee of _0x39a00a){const _0x4bcdb2=await parseRootUri(_0x4749ee[_0x4d448a(0x76)]);if(!_0x4bcdb2){logMcpStderr(formatDirectoryError(_0x4749ee[_0x4d448a(0x76)],undefined,_0x4d448a(0x72)));continue;}try{const _0x3ce586=await a5_0x48aec5['stat'](_0x4bcdb2);_0x3ce586[_0x4d448a(0x6d)]()?_0x377b44[_0x4d448a(0x78)](_0x4bcdb2):logMcpStderr(formatDirectoryError(_0x4bcdb2,undefined,'non-directory\x20root'));}catch(_0x4d533d){logMcpStderr(formatDirectoryError(_0x4bcdb2,_0x4d533d));}}return _0x377b44;}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a6_0x1233fc=a6_0x26cc;(function(_0x3aa628,_0xc54212){const _0x312e9c=a6_0x26cc,_0x5f23dc=_0x3aa628();while(!![]){try{const _0x302358=parseInt(_0x312e9c(0x143))/0x1*(parseInt(_0x312e9c(0x135))/0x2)+parseInt(_0x312e9c(0x13f))/0x3*(parseInt(_0x312e9c(0x141))/0x4)+-parseInt(_0x312e9c(0x139))/0x5+-parseInt(_0x312e9c(0x142))/0x6*(-parseInt(_0x312e9c(0x145))/0x7)+-parseInt(_0x312e9c(0x13e))/0x8+-parseInt(_0x312e9c(0x140))/0x9+-parseInt(_0x312e9c(0x13a))/0xa*(-parseInt(_0x312e9c(0x133))/0xb);if(_0x302358===_0xc54212)break;else _0x5f23dc['push'](_0x5f23dc['shift']());}catch(_0x31278b){_0x5f23dc['push'](_0x5f23dc['shift']());}}}(a6_0x5e8b,0xae3f0));export const TOOL_NAMES={'EDIT_FILE':'edit_file','CODEBASE_SEARCH':'codebase_search','GITHUB_CODEBASE_SEARCH':a6_0x1233fc(0x134)};function a6_0x5e8b(){const _0xc3f7d9=['values','has','671pSHTBy','github_codebase_search','2ZjedqL','trim','GITHUB_CODEBASE_SEARCH','map','5350290ZimcDv','181030wCsQsW','ENABLED_TOOLS','filter','length','2725584KBoiPr','6xRzCxe','2946060hPoSvr','31780DTbpfZ','7279176gsGdvo','118439GRdzdK','toLowerCase','7IEXEBw'];a6_0x5e8b=function(){return _0xc3f7d9;};return a6_0x5e8b();}export const ALL_TOOL_NAMES=Object[a6_0x1233fc(0x131)](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);export const LEGACY_TOOL_ALIASES={'warpgrep_codebase_search':TOOL_NAMES['CODEBASE_SEARCH'],'warpgrep_github_search':TOOL_NAMES[a6_0x1233fc(0x137)]};function parseToolList(_0x575e2c){const _0x39d9f2=a6_0x1233fc;if(!_0x575e2c)return[];return _0x575e2c['split'](',')['map'](_0x18dd44=>_0x18dd44[_0x39d9f2(0x136)]())[_0x39d9f2(0x13c)](_0x19ea1c=>_0x19ea1c[_0x39d9f2(0x13d)]>0x0)[_0x39d9f2(0x138)](_0x4d2a7c=>LEGACY_TOOL_ALIASES[_0x4d2a7c]??_0x4d2a7c);}function a6_0x26cc(_0x3b88a9,_0x28594e){_0x3b88a9=_0x3b88a9-0x131;const _0x5e8bab=a6_0x5e8b();let _0x26cc29=_0x5e8bab[_0x3b88a9];return _0x26cc29;}export function resolveToolFilter(_0x549a45){const _0x37b035=a6_0x1233fc,_0xe7dcdd=_0x549a45[_0x37b035(0x13b)]?.[_0x37b035(0x136)](),_0x1ddffc=_0xe7dcdd&&_0xe7dcdd[_0x37b035(0x144)]()!=='all'?parseToolList(_0xe7dcdd):undefined,_0x29252a=parseToolList(_0x549a45['DISABLED_TOOLS']),_0x3100e3=[..._0x1ddffc??[],..._0x29252a]['filter'](_0xf54a8b=>!KNOWN_TOOL_NAMES[_0x37b035(0x132)](_0xf54a8b)),_0x30286f=new Set(_0x29252a);if(_0x1ddffc){const _0x3083a8=new Set(_0x1ddffc);for(const _0x51d2d9 of ALL_TOOL_NAMES)if(!_0x3083a8[_0x37b035(0x132)](_0x51d2d9))_0x30286f['add'](_0x51d2d9);}return{'disabled':_0x30286f,'unknown':_0x3100e3};}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.219",
|
|
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.200",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|