@morphllm/morphmcp 0.8.170 → 0.8.172
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_0x5c9100=a0_0x8fc5;(function(_0x580653,_0x310127){const _0x3bb34e=a0_0x8fc5,_0x35e849=_0x580653();while(!![]){try{const _0x43b5b7=-parseInt(_0x3bb34e(0x1c2))/0x1+parseInt(_0x3bb34e(0x176))/0x2+-parseInt(_0x3bb34e(0x1ca))/0x3+-parseInt(_0x3bb34e(0x209))/0x4*(parseInt(_0x3bb34e(0x24e))/0x5)+parseInt(_0x3bb34e(0x1fa))/0x6*(parseInt(_0x3bb34e(0x1d6))/0x7)+-parseInt(_0x3bb34e(0x1e3))/0x8+parseInt(_0x3bb34e(0x183))/0x9;if(_0x43b5b7===_0x310127)break;else _0x35e849['push'](_0x35e849['shift']());}catch(_0x1658d4){_0x35e849['push'](_0x35e849['shift']());}}}(a0_0xfb7a,0x9f4a7));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_0x17617d from'fs/promises';import a0_0x1b597d from'path';import a0_0x5e54ab from'os';import{createRequire}from'module';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_0x559a07 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x51e861){const _0x2225dd=a0_0x8fc5,_0x4e46da=_0x51e861[_0x2225dd(0x132)](a0_0x1b597d[_0x2225dd(0x150)])['filter'](Boolean);if(_0x4e46da[_0x2225dd(0x22a)]<0x2)return null;for(let _0x1bd55a=Math[_0x2225dd(0x20b)](_0x4e46da['length']/0x2);_0x1bd55a>=0x1;_0x1bd55a--){for(let _0x29a589=0x0;_0x29a589<=_0x4e46da[_0x2225dd(0x22a)]-0x2*_0x1bd55a;_0x29a589++){const _0x4cf758=_0x4e46da[_0x2225dd(0x1be)](_0x29a589,_0x29a589+_0x1bd55a),_0xcb71e2=_0x4e46da[_0x2225dd(0x1be)](_0x29a589+_0x1bd55a,_0x29a589+0x2*_0x1bd55a);if(_0x4cf758[_0x2225dd(0x17c)]((_0x699fb0,_0x51fff4)=>_0x699fb0===_0xcb71e2[_0x51fff4])){const _0x2791c1=[..._0x4e46da['slice'](0x0,_0x29a589),..._0x4e46da['slice'](_0x29a589+_0x1bd55a)];return a0_0x1b597d[_0x2225dd(0x150)]+_0x2791c1[_0x2225dd(0x222)](a0_0x1b597d['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x2204ea=a0_0x8fc5;try{const _0x1496b9=require('../package.json');return _0x1496b9[_0x2204ea(0x180)]??_0x2204ea(0x1a0);}catch(_0x4e983f){return logMcpStderr(_0x2204ea(0x157),_0x4e983f),_0x2204ea(0x1a0);}}function printHelp(){const _0x1bd803=a0_0x8fc5;console[_0x1bd803(0x1f5)](_0x1bd803(0x244)+getPackageVersion()),console['log'](_0x1bd803(0x1b4)),console[_0x1bd803(0x1f5)](_0x1bd803(0x1bf)),console[_0x1bd803(0x1f5)](_0x1bd803(0x1ef)),console[_0x1bd803(0x1f5)](_0x1bd803(0x1ad)),console[_0x1bd803(0x1f5)](_0x1bd803(0x174)),console[_0x1bd803(0x1f5)](_0x1bd803(0x12a)),console[_0x1bd803(0x1f5)](_0x1bd803(0x1f6)),console[_0x1bd803(0x1f5)](_0x1bd803(0x224));}const cliArgs=process[a0_0x5c9100(0x1df)][a0_0x5c9100(0x1be)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x5c9100(0x1db),'-h']);cliArgs[a0_0x5c9100(0x21f)](_0x3b31bd=>VERSION_FLAGS[a0_0x5c9100(0x178)](_0x3b31bd))&&(console[a0_0x5c9100(0x1f5)](a0_0x5c9100(0x244)+getPackageVersion()),process[a0_0x5c9100(0x149)](0x0));cliArgs[a0_0x5c9100(0x21f)](_0x1a0955=>HELP_FLAGS[a0_0x5c9100(0x178)](_0x1a0955))&&(printHelp(),process[a0_0x5c9100(0x149)](0x0));function getCliArg(_0x17ec8b){const _0x3c8307=a0_0x5c9100;for(let _0x49e029=0x0;_0x49e029<cliArgs['length'];_0x49e029++){const _0x3d8d6f=cliArgs[_0x49e029];if(_0x3d8d6f[_0x3c8307(0x23a)]('--'+_0x17ec8b+'='))return _0x3d8d6f[_0x3c8307(0x1be)](('--'+_0x17ec8b+'=')[_0x3c8307(0x22a)]);if(_0x3d8d6f==='--'+_0x17ec8b&&_0x49e029+0x1<cliArgs[_0x3c8307(0x22a)])return cliArgs[_0x49e029+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x5c9100(0x22a)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x5c9100(0x178)](arg)||HELP_FLAGS[a0_0x5c9100(0x178)](arg))continue;if(arg['startsWith'](a0_0x5c9100(0x21b)))continue;if(arg===a0_0x5c9100(0x186)){i++;continue;}args[a0_0x5c9100(0x1bb)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x5c9100(0x1e8)]||process['env'][a0_0x5c9100(0x1da)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x5c9100(0x1c7)]['ENABLE_WORKSPACE_MODE']!=='false',MORPH_API_KEY=getCliArg('api-key')??process['env']['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x5c9100(0x1c7)][a0_0x5c9100(0x14a)],MORPH_LARGE_APPLY=process[a0_0x5c9100(0x1c7)][a0_0x5c9100(0x1ee)]!==a0_0x5c9100(0x24a),MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x5c9100(0x1c3)]?parseInt(process['env'][a0_0x5c9100(0x1c3)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x5c9100(0x1c7)][a0_0x5c9100(0x140)]?new Set(process[a0_0x5c9100(0x1c7)][a0_0x5c9100(0x140)]['split'](',')[a0_0x5c9100(0x215)](_0x662758=>_0x662758['trim']())['filter'](_0x40d56c=>_0x40d56c[a0_0x5c9100(0x22a)]>0x0)):DEFAULT_DISABLED_TOOLS;function a0_0xfb7a(){const _0x12082a=['\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','completed_with_file_errors','WarpGrepError','errors','\x20-\x20','metadata','parse','push','grep','Unknown\x20tool:\x20','slice','\x0aOptions:','describe','File\x20read\x20error:','736827EjQPPl','MORPH_WARP_GREP_TIMEOUT','instruction','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','finish','env','files','error','2246532ByHolO','message','debug','Disabled\x20tools:\x20','ReadError','morph-',',\x20removed\x20','Fatal\x20error\x20running\x20server:','lines','safeParse','grep_search','Failed\x20to\x20request\x20roots\x20from\x20client:','35LybPtG','Error\x20accessing\x20directory\x20','\x22.\x20Known\x20tools:\x20','CODEBASE_SEARCH','PWD','--help','0.2.0','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','argv','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','FileNotFound','codebase_search','5851408JWaxJy','response','\x20error(s)','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','ms.\x20Success:\x20','WORKSPACE_ROOT','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','github_url','description','Warning:\x20','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','MORPH_LARGE_APPLY','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','all','\x22>\x0aError\x20reading\x20file:\x20','linesAdded','tool_calls','\x20chars)','log','\x20\x20morph-mcp','content','Morph\x20Edit\x20','setRequestHandler','223206dCYdiM','SubToolError','toLowerCase','UnknownError','Preview\x20changes\x20without\x20applying\x20them.',',\x20modified\x20','path_validation_failed','grep\x20\x27','setNotificationHandler','MCP','realpath','morph-mcp','LocalRipgrepProvider','-\x20Listed\x20directory\x20`','-\x20Grepped\x20\x27','4CgAftd','path_validation_resolved','floor','Error:\x20','post','list_directory\x20','name','file_read_failed','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','<file\x20path=\x22','completed','Max\x20results\x20to\x20return','map','listRoots','search_string','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.','.git','inputSchema','--api-key=','RipgrepError','file_read_complete','messages','some','dirname','payload','join','warn','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','data','sk-','warp_grep_start','default','github_codebase_search','length','EDIT_FILE','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','enum','GITHUB_CODEBASE_SEARCH','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','path','array','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','package.json','turns','node_modules','getClientCapabilities','tool','\x27\x20in\x20`','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','startsWith','isArray','.\x20Changes:\x20','\x20is\x20not\x20a\x20directory','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','stack','morph-v3-large','compaction_failed','resolve','@morphllm/morphmcp\x20','read','warp_grep_complete','Morph\x20FastApply\x20failed\x20without\x20error\x20message','Here\x20is\x20the\x20content\x20of\x20files:\x0a','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','false','Tool\x20','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','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.','1300495QCNLXw','github_search_start','match','toISOString','TimeoutError','indexOf','oninitialized','code','ms:','timeout','Unknown\x20error','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','\x0aExamples:','tool_call_id','requiresApiKey','provider_created','searchGitHub','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','timed\x20out','includes','split','API\x20error\x20(auth/rate-limit)','composer.json','string','Bearer\x20','glob','list_directory','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Warning:\x20Workspace\x20fallback\x20failed:\x20','pattern','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','Failed\x20to\x20read\x20file:\x20','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.','DISABLED_TOOLS','object','Invalid\x20arguments:\x20','morph-v3-fast','dryRun','constructor','morph-warp-grep-v2.1','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','filter','exit','MORPH_API_URL','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','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','Parent\x20directory\x20does\x20not\x20exist:\x20','unknown\x20error','Repository\x20identifier','sep','[could\x20not\x20read\x20file:\x20','substring','.vscode','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','runWarpGrep_call','BinaryFile','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','added\x20','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','path_validation_start','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','tool_call_complete','roots','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','tool_call_error','ENOENT','branch','number','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','PathError','role','now','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Error\x20running\x20fast\x20context\x20search:\x20','Workspace\x20mode\x20enabled:\x20Using\x20','changes','text','context','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.','application/json','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','-\x20Read\x20file\x20`','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','WarpGrep\x20sub-tool\x20errors:\x20','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','-\x20Glob\x20search\x20`','488270ppQZRC','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','has','status','tool_call_received','command','every','success','utf-8','Rules:\x0a','version','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','\x0a</file>','24295599pVXmBE','timings','Morph\x20Edit\x20Preview','--api-key','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','linesModified','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','connect','instructions','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','api_request_start','normalize','Cargo.toml','terminationReason','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','edit_file','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.','function','boolean','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','.\x20Path:\x20','repo_path','catch','linesRemoved','code_edit','Created\x20File','\x20valid\x20directories','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','[github_codebase_search]\x20Failed\x20in\x20','unknown','For\x20deletions:\x0a','❌\x20Morph\x20Edit\x20Failed:\x20','source','optional','ToolException','SymlinkError','\x0a...\x20(truncated,\x20total:\x20','basename','assistant','min','read\x20','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','Relevant\x20context\x20found:','\x22>\x0a','completionId','etimedout','mcp-filesystem','readFile'];a0_0xfb7a=function(){return _0x12082a;};return a0_0xfb7a();}if(DISABLED_TOOLS['size']>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x5c9100(0x178)](tool)&&console[a0_0x5c9100(0x1c9)](a0_0x5c9100(0x147)+tool+a0_0x5c9100(0x1d8)+[...KNOWN_TOOL_NAMES][a0_0x5c9100(0x222)](',\x20'));}console[a0_0x5c9100(0x1c9)](a0_0x5c9100(0x1cd)+[...DISABLED_TOOLS][a0_0x5c9100(0x222)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5c9100(0x23a)]('sk-')&&!MORPH_API_KEY['startsWith']('morph-')&&logMcpStderr(a0_0x5c9100(0x1de));async function reportMorphError(_0x113893){const _0x1d0b41=a0_0x5c9100;try{await a0_0x559a07[_0x1d0b41(0x20d)]('https://morphllm.com/api/error-report',{..._0x113893,'timestamp':new Date()[_0x1d0b41(0x251)](),'source':_0x113893[_0x1d0b41(0x1a3)]||_0x1d0b41(0x1b2),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x113893[_0x1d0b41(0x16d)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x1d0b41(0x16f),'Authorization':_0x1d0b41(0x136)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x13d8b8,_0xffd708){const _0x3c35fb=a0_0x5c9100;if(_0x13d8b8&&typeof _0x13d8b8==='object'&&_0x3c35fb(0x179)in _0x13d8b8)return _0x13d8b8[_0x3c35fb(0x179)];if(_0x13d8b8&&typeof _0x13d8b8===_0x3c35fb(0x141)&&_0x3c35fb(0x1e4)in _0x13d8b8)return _0x13d8b8[_0x3c35fb(0x1e4)]?.[_0x3c35fb(0x179)];const _0x539cce=_0xffd708['match'](/\b(401|429)\b/);return _0x539cce?parseInt(_0x539cce[0x1],0xa):null;}function handleMorphAPIError(_0x411295){const _0x2de534=a0_0x5c9100,_0x50936c=_0x411295 instanceof Error?_0x411295[_0x2de534(0x1cb)]:String(_0x411295),_0xde2236=extractStatusCode(_0x411295,_0x50936c);switch(_0xde2236){case 0x191:return{'content':[{'type':'text','text':_0x2de534(0x13f)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x2de534(0x16c),'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['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x5c9100(0x1e9)),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr(a0_0x5c9100(0x232)),logMcpStderr(a0_0x5c9100(0x164)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x5c9100(0x249)));function a0_0x8fc5(_0x38bc7b,_0x202c6a){_0x38bc7b=_0x38bc7b-0x123;const _0xfb7a4f=a0_0xfb7a();let _0x8fc508=_0xfb7a4f[_0x38bc7b];return _0x8fc508;}function normalizePath(_0x119ba6){const _0x4e6c2c=a0_0x5c9100;return a0_0x1b597d[_0x4e6c2c(0x18e)](_0x119ba6);}function expandHome(_0x3da590){const _0x446b7d=a0_0x5c9100;if(_0x3da590[_0x446b7d(0x23a)]('~/')||_0x3da590==='~')return a0_0x1b597d[_0x446b7d(0x222)](a0_0x5e54ab['homedir'](),_0x3da590['slice'](0x1));return _0x3da590;}let allowedDirectories=await Promise[a0_0x5c9100(0x1f0)](args['map'](async _0x548516=>{const _0x487d2d=a0_0x5c9100,_0x8972d8=expandHome(_0x548516),_0x25877f=a0_0x1b597d[_0x487d2d(0x243)](_0x8972d8);try{const _0x3cb41f=await a0_0x17617d[_0x487d2d(0x204)](_0x25877f);return normalizePath(_0x3cb41f);}catch(_0x4f4c57){return normalizePath(_0x25877f);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5c9100(0x22a)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5c9100(0x1bb)](workspaceDir),logMcpStderr(a0_0x5c9100(0x16a)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x5a5cba){logMcpStderr(a0_0x5c9100(0x23f)+a0_0x5a5cba);}async function detectWorkspaceRoot(_0x42aaba){const _0xf2cfdc=a0_0x5c9100;let _0x751e7c=a0_0x1b597d[_0xf2cfdc(0x243)](_0x42aaba);const _0xdec7d4=[_0xf2cfdc(0x219),_0xf2cfdc(0x153),_0xf2cfdc(0x233),_0xf2cfdc(0x18f),'pyproject.toml','go.mod','.cursor','tsconfig.json',_0xf2cfdc(0x134)];while(_0x751e7c!==a0_0x1b597d[_0xf2cfdc(0x220)](_0x751e7c)){for(const _0x234f7e of _0xdec7d4){const _0x2f1ea1=a0_0x1b597d[_0xf2cfdc(0x222)](_0x751e7c,_0x234f7e);try{return await a0_0x17617d['access'](_0x2f1ea1),normalizePath(_0x751e7c);}catch{}}_0x751e7c=a0_0x1b597d[_0xf2cfdc(0x220)](_0x751e7c);}return normalizePath(_0x42aaba);}await Promise[a0_0x5c9100(0x1f0)](args['map'](async _0x43b716=>{const _0x27e7ff=a0_0x5c9100;try{const _0x1e6ad0=await a0_0x17617d['stat'](expandHome(_0x43b716));!_0x1e6ad0['isDirectory']()&&(logMcpStderr(_0x27e7ff(0x20c)+_0x43b716+_0x27e7ff(0x23d)),process[_0x27e7ff(0x149)](0x1));}catch(_0x566c32){logMcpStderr(_0x27e7ff(0x1d7)+_0x43b716+':',_0x566c32),process['exit'](0x1);}}));async function validatePath(_0x30fa8a){const _0x43baba=a0_0x5c9100,_0x3d6367=expandHome(_0x30fa8a),_0x4d85a1=a0_0x1b597d[_0x43baba(0x243)](_0x3d6367);logger[_0x43baba(0x1cc)](_0x43baba(0x203),_0x43baba(0x15b),{'raw_path':_0x30fa8a,'absolute':_0x4d85a1});try{const _0x59d5e9=await a0_0x17617d[_0x43baba(0x204)](_0x4d85a1);return logger[_0x43baba(0x1cc)]('MCP',_0x43baba(0x20a),{'resolved':_0x59d5e9,'symlink':_0x59d5e9!==_0x4d85a1}),_0x59d5e9;}catch(_0x37ab66){if(_0x37ab66[_0x43baba(0x125)]==='ENOENT'){const _0x2fc71d=a0_0x1b597d['dirname'](_0x4d85a1);try{const _0x3375a9=await a0_0x17617d[_0x43baba(0x204)](_0x2fc71d),_0x3091e8=a0_0x1b597d[_0x43baba(0x222)](_0x3375a9,a0_0x1b597d['basename'](_0x4d85a1));return logger[_0x43baba(0x1cc)](_0x43baba(0x203),'path_validation_resolved',{'resolved':_0x3091e8,'new_file':!![]}),_0x3091e8;}catch{logger['error'](_0x43baba(0x203),_0x43baba(0x200),{'raw_path':_0x30fa8a,'error':_0x43baba(0x14d)+_0x2fc71d});throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x2fc71d);}}logger[_0x43baba(0x1c9)](_0x43baba(0x203),'path_validation_failed',{'raw_path':_0x30fa8a,'error':_0x37ab66['message']});throw _0x37ab66;}}const MorphEditFileArgsSchema=z[a0_0x5c9100(0x141)]({'path':z['string'](),'code_edit':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1c0)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1c0)]('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0x5c9100(0x195)]()['default'](![])[a0_0x5c9100(0x1c0)](a0_0x5c9100(0x1fe))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x5c9100(0x193),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1c0)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1c0)](a0_0x5c9100(0x22c)),'search_type':z[a0_0x5c9100(0x22d)](['default','node_modules'])['optional']()[a0_0x5c9100(0x1c0)](a0_0x5c9100(0x191))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z['string']()[a0_0x5c9100(0x1c0)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1a4)]()[a0_0x5c9100(0x1c0)](a0_0x5c9100(0x24d)),'owner_repo':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1a4)]()[a0_0x5c9100(0x1c0)](a0_0x5c9100(0x196)),'branch':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1a4)]()[a0_0x5c9100(0x1c0)](a0_0x5c9100(0x1ed))}),CodebaseSearchArgsSchema=z[a0_0x5c9100(0x141)]({'query':z[a0_0x5c9100(0x135)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1c0)](a0_0x5c9100(0x14f)),'branch':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1a4)]()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1a4)]()[a0_0x5c9100(0x1c0)]('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x5c9100(0x231)](z['string']())['default']([])['describe'](a0_0x5c9100(0x1dd)),'limit':z[a0_0x5c9100(0x163)]()[a0_0x5c9100(0x1a4)]()[a0_0x5c9100(0x228)](0xa)['describe'](a0_0x5c9100(0x214))}),server=new Server({'name':a0_0x5c9100(0x205),'version':a0_0x5c9100(0x1dc)},{'capabilities':{'tools':{}}});server[a0_0x5c9100(0x1f9)](ListToolsRequestSchema,async()=>{const _0x43c298=a0_0x5c9100,_0x2ef1ac=[{'name':TOOL_NAMES[_0x43c298(0x22b)],'description':_0x43c298(0x1c5)+_0x43c298(0x13d)+_0x43c298(0x19e)+'IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a'+'Benefits:\x0a'+_0x43c298(0x13c)+_0x43c298(0x158)+_0x43c298(0x168)+_0x43c298(0x1e6)+_0x43c298(0x239)+_0x43c298(0x187)+'Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'+_0x43c298(0x1a1)+_0x43c298(0x15c)+_0x43c298(0x18c)+_0x43c298(0x17f)+_0x43c298(0x24c)+_0x43c298(0x189)+_0x43c298(0x14b)+_0x43c298(0x170)+_0x43c298(0x22f)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x43c298(0x181),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x43c298(0x1d9)],'description':_0x43c298(0x14c)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x43c298(0x177)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20'+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0xc815f0=_0x2ef1ac[_0x43c298(0x148)](_0x5389d1=>{const _0x3bce9f=_0x43c298;if(DISABLED_TOOLS[_0x3bce9f(0x178)](_0x5389d1[_0x3bce9f(0x20f)]))return console[_0x3bce9f(0x1c9)](_0x3bce9f(0x24b)+_0x5389d1[_0x3bce9f(0x20f)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x3bce9f(0x12c)in _0x5389d1&&_0x5389d1[_0x3bce9f(0x12c)]&&!MORPH_API_KEY)return logMcpStderr(_0x3bce9f(0x1ec)+_0x5389d1[_0x3bce9f(0x20f)]+_0x3bce9f(0x15a)),![];return!![];});return{'tools':_0xc815f0[_0x43c298(0x215)](_0x357ce9=>({'name':_0x357ce9[_0x43c298(0x20f)],'description':_0x357ce9[_0x43c298(0x1eb)],'inputSchema':_0x357ce9[_0x43c298(0x21a)]}))};}),server[a0_0x5c9100(0x1f9)](CallToolRequestSchema,async _0x1f3433=>{const _0x5dda0c=a0_0x5c9100,{name:_0xde66b7,arguments:_0x51f0de}=_0x1f3433['params'],_0x22e089=Date['now']();logger[_0x5dda0c(0x1cc)](_0x5dda0c(0x203),_0x5dda0c(0x17a),{'tool':_0xde66b7,'args':_0xde66b7==='edit_file'?{'path':_0x51f0de?.[_0x5dda0c(0x230)],'instruction':_0x51f0de?.[_0x5dda0c(0x1c4)]||_0x51f0de?.[_0x5dda0c(0x18b)],'dryRun':_0x51f0de?.[_0x5dda0c(0x144)]}:_0x51f0de});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x5dda0c(0x16c),'text':'No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.'}],'isError':!![]};if(!MORPH_API_KEY[_0x5dda0c(0x23a)](_0x5dda0c(0x226))&&!MORPH_API_KEY['startsWith'](_0x5dda0c(0x1cf)))return{'content':[{'type':'text','text':_0x5dda0c(0x218)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0xde66b7))return{'content':[{'type':_0x5dda0c(0x16c),'text':'Tool\x20\x22'+_0xde66b7+_0x5dda0c(0x1ac)}],'isError':![]};switch(_0xde66b7){case TOOL_NAMES[_0x5dda0c(0x22b)]:{let _0x536a95=_0x51f0de;_0x536a95&&typeof _0x536a95===_0x5dda0c(0x141)&&('target_file'in _0x536a95&&!('path'in _0x536a95)&&(_0x536a95={..._0x536a95,'path':_0x536a95['target_file'],'target_file':undefined}),'instructions'in _0x536a95&&!(_0x5dda0c(0x1c4)in _0x536a95)&&(_0x536a95={..._0x536a95,'instruction':_0x536a95[_0x5dda0c(0x18b)],'instructions':undefined}));const _0x313d99=MorphEditFileArgsSchema[_0x5dda0c(0x1d3)](_0x536a95);if(!_0x313d99['success'])throw new Error(_0x5dda0c(0x15f)+_0x313d99[_0x5dda0c(0x1c9)]);const _0x88513e=await validatePath(_0x313d99[_0x5dda0c(0x225)]['path']);let _0x4404a9=null,_0x4e365c=!![],_0x4740af=null;try{_0x4404a9=await a0_0x17617d['readFile'](_0x88513e,_0x5dda0c(0x17e)),logger[_0x5dda0c(0x1cc)](_0x5dda0c(0x203),_0x5dda0c(0x21d),{'path':_0x88513e,'size_bytes':_0x4404a9['length']});}catch(_0x3884b1){const _0x16f2e6=_0x3884b1['code'];_0x16f2e6===_0x5dda0c(0x161)?(_0x4e365c=![],_0x4404a9='',logger['debug']('MCP','file_read_complete',{'path':_0x88513e,'exists':![]})):(_0x4740af=_0x5dda0c(0x13e)+(_0x16f2e6||'unknown')+_0x5dda0c(0x1b8)+(_0x3884b1 instanceof Error?_0x3884b1[_0x5dda0c(0x1cb)]:String(_0x3884b1)),logger[_0x5dda0c(0x1c9)](_0x5dda0c(0x203),_0x5dda0c(0x210),{'path':_0x88513e,'error':_0x4740af}),logMcpStderr('Warning:\x20'+_0x4740af));}let _0x7d3e6e;try{const _0x3cd08a=MORPH_API_KEY;if(!_0x3cd08a)throw new Error(_0x5dda0c(0x154));const _0x4f71d5=a0_0x1b597d[_0x5dda0c(0x220)](_0x88513e),_0x266a50=a0_0x1b597d[_0x5dda0c(0x1a8)](_0x88513e);logger[_0x5dda0c(0x1cc)]('MCP',_0x5dda0c(0x18d),{'model':_0x5dda0c(0x143),'path':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x230)],'instruction_len':_0x313d99['data']['instruction']['length'],'code_edit_len':_0x313d99[_0x5dda0c(0x225)]['code_edit']['length'],'original_code_len':_0x4404a9?.['length']??0x0,'dry_run':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x144)]});const _0x3aadcd=Date[_0x5dda0c(0x167)](),_0x3d00f7=await executeEditFile({'target_filepath':_0x266a50,'code_edit':_0x313d99['data'][_0x5dda0c(0x19b)],'instruction':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x1c4)]},{'morphApiKey':_0x3cd08a,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x4f71d5,'autoWrite':!_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x144)],'generateUdiff':![],'debug':![]}),_0x3791af=Date[_0x5dda0c(0x167)]()-_0x3aadcd;_0x7d3e6e=_0x3d00f7[_0x5dda0c(0x1b0)];if(!_0x3d00f7[_0x5dda0c(0x17d)])throw new Error(_0x3d00f7[_0x5dda0c(0x1c9)]||_0x5dda0c(0x247));const _0x2cb330=_0x3d00f7[_0x5dda0c(0x16b)],_0x25ce8e=_0x5dda0c(0x159)+_0x2cb330[_0x5dda0c(0x1f2)]+_0x5dda0c(0x1d0)+_0x2cb330[_0x5dda0c(0x19a)]+_0x5dda0c(0x1ff)+_0x2cb330[_0x5dda0c(0x188)];logger['debug'](_0x5dda0c(0x203),_0x5dda0c(0x15d),{'tool':_0x5dda0c(0x192),'success':!![],'latency_ms':Date[_0x5dda0c(0x167)]()-_0x22e089,'edit_latency_ms':_0x3791af,'changes':{'added':_0x2cb330[_0x5dda0c(0x1f2)],'removed':_0x2cb330['linesRemoved'],'modified':_0x2cb330[_0x5dda0c(0x188)]},'completion_id':_0x7d3e6e});if(_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x144)])return{'content':[{'type':_0x5dda0c(0x16c),'text':_0x5dda0c(0x185)+(_0x4e365c?'':'\x20(new\x20file)')+':\x20'+_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x1c4)]+_0x5dda0c(0x23c)+_0x25ce8e+_0x5dda0c(0x197)+_0x313d99[_0x5dda0c(0x225)]['path']+'.'}]};return{'content':[{'type':'text','text':_0x5dda0c(0x1f8)+(_0x4e365c?'Applied':_0x5dda0c(0x19c))+':\x20'+_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x1c4)]+'.\x20Changes:\x20'+_0x25ce8e+_0x5dda0c(0x197)+_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x230)]+'.'}]};}catch(_0x124792){const _0x4f0e86=handleMorphAPIError(_0x124792);if(_0x4f0e86)return logger['error'](_0x5dda0c(0x203),_0x5dda0c(0x160),{'tool':_0x5dda0c(0x192),'error':_0x5dda0c(0x133),'latency_ms':Date[_0x5dda0c(0x167)]()-_0x22e089}),_0x4f0e86;const _0x51d28c=_0x124792 instanceof Error?_0x124792[_0x5dda0c(0x1cb)]:String(_0x124792);return logger[_0x5dda0c(0x1c9)]('MCP',_0x5dda0c(0x160),{'tool':_0x5dda0c(0x192),'error':_0x51d28c,'path':_0x313d99['data'][_0x5dda0c(0x230)],'validated_path':_0x88513e,'latency_ms':Date[_0x5dda0c(0x167)]()-_0x22e089,'stack':_0x124792 instanceof Error?_0x124792[_0x5dda0c(0x240)]:undefined}),reportMorphError({'error_message':_0x51d28c,'error_type':_0x124792 instanceof Error?_0x124792[_0x5dda0c(0x145)][_0x5dda0c(0x20f)]:_0x5dda0c(0x1fd),'context':{'tool':_0x5dda0c(0x192),'completion_id':_0x7d3e6e,'file_path':_0x313d99['data'][_0x5dda0c(0x230)],'validated_path':_0x88513e,'instruction':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x1c4)],'model':MORPH_LARGE_APPLY?_0x5dda0c(0x241):'morph-v3-fast','dry_run':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x144)],'file_exists':_0x4e365c,'file_read_error':_0x4740af,'file_readable':_0x4404a9!==null,'request_content':{'path':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x230)],'code_edit':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x19b)],'instruction':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x1c4)],'original_code':_0x4404a9!==null?_0x4404a9[_0x5dda0c(0x22a)]>0xc350?_0x4404a9[_0x5dda0c(0x152)](0x0,0xc350)+_0x5dda0c(0x1a7)+_0x4404a9[_0x5dda0c(0x22a)]+_0x5dda0c(0x1f4):_0x4404a9:_0x5dda0c(0x151)+(_0x4740af||_0x5dda0c(0x14e))+']','original_code_length':_0x4404a9?.[_0x5dda0c(0x22a)]??0x0,'model':MORPH_LARGE_APPLY?_0x5dda0c(0x241):'morph-v3-fast','dry_run':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x144)]}},'stack_trace':_0x124792 instanceof Error?_0x124792[_0x5dda0c(0x240)]:undefined,'source':_0x5dda0c(0x1b2)})['catch'](()=>{}),{'content':[{'type':_0x5dda0c(0x16c),'text':_0x5dda0c(0x1a2)+_0x51d28c}],'isError':!![]};}}case TOOL_NAMES['CODEBASE_SEARCH']:{const _0x547322=WarpGrepArgsSchema[_0x5dda0c(0x1d3)](_0x51f0de);if(!_0x547322[_0x5dda0c(0x17d)])return{'content':[{'type':_0x5dda0c(0x16c),'text':'Invalid\x20arguments:\x20'+_0x547322[_0x5dda0c(0x1c9)]}],'isError':!![]};const _0x1a7867=_0x5b8b7c=>{const _0x50a8e8=_0x5dda0c,_0x396781=[];for(const _0x574042 of _0x5b8b7c||[]){if(_0x574042[_0x50a8e8(0x166)]===_0x50a8e8(0x1a9)&&Array[_0x50a8e8(0x23b)](_0x574042['tool_calls']))for(const _0x2f5e23 of _0x574042[_0x50a8e8(0x1f3)]){try{const _0x10faf4=_0x2f5e23['function']?.[_0x50a8e8(0x20f)],_0x169f86=JSON[_0x50a8e8(0x1ba)](_0x2f5e23['function']?.['arguments']||'{}');if(_0x10faf4===_0x50a8e8(0x1d4))_0x396781['push'](_0x50a8e8(0x201)+_0x169f86[_0x50a8e8(0x13b)]+'\x27\x20'+(_0x169f86[_0x50a8e8(0x230)]||'.'));else{if(_0x10faf4===_0x50a8e8(0x245))_0x396781[_0x50a8e8(0x1bb)](_0x50a8e8(0x1ab)+_0x169f86['path']);else{if(_0x10faf4===_0x50a8e8(0x138))_0x396781[_0x50a8e8(0x1bb)](_0x50a8e8(0x20e)+(_0x169f86['command']||'.'));else{if(_0x10faf4===_0x50a8e8(0x137))_0x396781[_0x50a8e8(0x1bb)]('glob\x20\x27'+_0x169f86[_0x50a8e8(0x13b)]+'\x27\x20'+(_0x169f86[_0x50a8e8(0x230)]||'.'));else _0x10faf4===_0x50a8e8(0x1c6)&&_0x396781[_0x50a8e8(0x1bb)](_0x50a8e8(0x1c6));}}}}catch{}}}return _0x396781;},_0x42bc16=_0x15e544=>{const _0x2a39e4=_0x5dda0c,_0x41f010=[];if(!_0x15e544||!Array[_0x2a39e4(0x23b)](_0x15e544))return _0x41f010;const _0x30beea=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x2a39e4(0x1e1),'tool':_0x2a39e4(0x245)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x2a39e4(0x165),'tool':_0x2a39e4(0x245)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':_0x2a39e4(0x245)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x2a39e4(0x156),'tool':_0x2a39e4(0x245)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x2a39e4(0x21c),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x2a39e4(0x1bc)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x2a39e4(0x156),'tool':_0x2a39e4(0x245)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':'read'},{'pattern':/not a text file/,'error_type':_0x2a39e4(0x156),'tool':_0x2a39e4(0x245)},{'pattern':/symbolic link/,'error_type':_0x2a39e4(0x1a6),'tool':_0x2a39e4(0x245)},{'pattern':/Error reading file:/,'error_type':_0x2a39e4(0x1ce),'tool':_0x2a39e4(0x245)},{'pattern':/status="error"/,'error_type':_0x2a39e4(0x1a5),'tool':_0x2a39e4(0x1a0)}];let _0x500acf=0x0;for(const _0x2d45b6 of _0x15e544){_0x2d45b6[_0x2a39e4(0x166)]==='assistant'&&Array[_0x2a39e4(0x23b)](_0x2d45b6[_0x2a39e4(0x1f3)])&&_0x500acf++;const _0x413bcc=_0x2d45b6['content'];if((_0x2d45b6[_0x2a39e4(0x166)]===_0x2a39e4(0x237)||_0x2d45b6['role']==='user')&&_0x413bcc&&typeof _0x413bcc===_0x2a39e4(0x135))for(const {pattern:_0x586c67,error_type:_0x24a40d,tool:_0x35effc}of _0x30beea){const _0x7a5653=_0x413bcc[_0x2a39e4(0x250)](new RegExp(_0x586c67[_0x2a39e4(0x1a3)],'g'));if(_0x7a5653)for(const _0xfb113d of _0x7a5653){const _0x5b57ef=_0x413bcc[_0x2a39e4(0x123)](_0xfb113d),_0x161373=_0x413bcc[_0x2a39e4(0x152)](_0x5b57ef,Math[_0x2a39e4(0x1aa)](_0x5b57ef+0xc8,_0x413bcc[_0x2a39e4(0x22a)]));_0x41f010['push']({'tool':_0x35effc,'error_type':_0x24a40d,'error_message':_0x161373[_0x2a39e4(0x132)]('\x0a')[0x0],'turn':_0x500acf});}}}return _0x41f010;};try{const _0x20bba4=a0_0x1b597d[_0x5dda0c(0x243)](_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)]),_0x445fa7=_0x547322[_0x5dda0c(0x225)]['search_type'],_0x8d7f4f=_0x445fa7===_0x5dda0c(0x235)?{'allowNames':[_0x5dda0c(0x235)]}:undefined,_0x1c719b=new LocalRipgrepProvider(_0x20bba4,undefined,_0x8d7f4f);logger[_0x5dda0c(0x1cc)](_0x5dda0c(0x203),_0x5dda0c(0x12d),{'type':_0x5dda0c(0x206),'repo_root':_0x20bba4,'search_type':_0x445fa7||_0x5dda0c(0x228)}),logger[_0x5dda0c(0x1cc)]('MCP',_0x5dda0c(0x227),{'query':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'repo_root':_0x20bba4,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x5ed3c6=Date[_0x5dda0c(0x167)](),_0x17f073=await runWarpGrep({'searchTerm':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'repoRoot':_0x20bba4,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x1c719b,'search_type':_0x445fa7}),_0x3fe47a=Date[_0x5dda0c(0x167)]()-_0x5ed3c6,_0x35cf77=_0x17f073[_0x5dda0c(0x1c6)]?.[_0x5dda0c(0x1b9)]?.[_0x5dda0c(0x1c8)]?.['length']??0x0;logger[_0x5dda0c(0x1cc)]('MCP',_0x5dda0c(0x246),{'termination':_0x17f073['terminationReason'],'turns':_0x17f073[_0x5dda0c(0x184)]?.[_0x5dda0c(0x234)]??0x0,'files_found':_0x35cf77,'latency_ms':_0x3fe47a});const _0x189f34=_0x42bc16(_0x17f073[_0x5dda0c(0x21e)]);_0x189f34[_0x5dda0c(0x22a)]>0x0&&reportMorphError({'error_message':_0x5dda0c(0x173)+_0x189f34['length']+_0x5dda0c(0x1e5),'error_type':_0x5dda0c(0x1fb),'level':_0x5dda0c(0x223),'tool':_0x5dda0c(0x1e2),'context':{'repo_path':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)],'query':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'model':_0x5dda0c(0x146),'termination_reason':_0x17f073['terminationReason'],'sub_tool_errors':_0x189f34,'timings':_0x17f073[_0x5dda0c(0x184)],'tool_calls':_0x1a7867(_0x17f073[_0x5dda0c(0x21e)]),'messages':_0x17f073[_0x5dda0c(0x21e)]?.[_0x5dda0c(0x215)](_0x1d568e=>({'role':_0x1d568e[_0x5dda0c(0x166)],'content':_0x1d568e[_0x5dda0c(0x1f7)],..._0x1d568e[_0x5dda0c(0x1f3)]?{'tool_calls':_0x1d568e[_0x5dda0c(0x1f3)][_0x5dda0c(0x22a)]}:{},..._0x1d568e['tool_call_id']?{'tool_call_id':_0x1d568e['tool_call_id']}:{}}))},'source':'mcp-filesystem'})[_0x5dda0c(0x199)](()=>{});let _0x39d96a='';if(_0x17f073[_0x5dda0c(0x190)]===_0x5dda0c(0x213)&&_0x17f073[_0x5dda0c(0x1c6)]?.['metadata']?.[_0x5dda0c(0x1c8)]){const _0x1d43e4=_0x17f073[_0x5dda0c(0x1c6)][_0x5dda0c(0x1b9)]['files'];if(_0x1d43e4['length']===0x0)return _0x39d96a=_0x17f073[_0x5dda0c(0x1c6)][_0x5dda0c(0x221)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x5dda0c(0x16c),'text':_0x39d96a}]};const _0x5b70b0=[],_0x56775b=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x18838f of _0x17f073[_0x5dda0c(0x21e)]){if(_0x18838f['role']==='assistant'&&Array[_0x5dda0c(0x23b)](_0x18838f['tool_calls']))for(const _0x5aaf3f of _0x18838f[_0x5dda0c(0x1f3)]){try{const _0xdede92=_0x5aaf3f[_0x5dda0c(0x194)]?.['name'],_0x3394f4=JSON[_0x5dda0c(0x1ba)](_0x5aaf3f[_0x5dda0c(0x194)]?.['arguments']||'{}');if(_0xdede92===_0x5dda0c(0x1d4))_0x56775b[_0x5dda0c(0x1bb)](_0x5dda0c(0x208)+_0x3394f4[_0x5dda0c(0x13b)]+_0x5dda0c(0x238)+(_0x3394f4[_0x5dda0c(0x230)]||'.')+'`');else{if(_0xdede92===_0x5dda0c(0x245))_0x56775b[_0x5dda0c(0x1bb)](_0x5dda0c(0x171)+_0x3394f4[_0x5dda0c(0x230)]+'`');else{if(_0xdede92===_0x5dda0c(0x138))_0x56775b[_0x5dda0c(0x1bb)](_0x5dda0c(0x207)+(_0x3394f4[_0x5dda0c(0x17b)]||'.')+'`');else _0xdede92==='glob'&&_0x56775b[_0x5dda0c(0x1bb)](_0x5dda0c(0x175)+_0x3394f4[_0x5dda0c(0x13b)]+'`\x20in\x20`'+(_0x3394f4[_0x5dda0c(0x230)]||'.')+'`');}}}catch{}}}_0x5b70b0[_0x5dda0c(0x1bb)](_0x56775b[_0x5dda0c(0x222)]('\x0a'));const _0x5129fc=['',_0x5dda0c(0x1ae)];for(const _0x19dd37 of _0x1d43e4){if(_0x19dd37[_0x5dda0c(0x1d2)]==='*')_0x5129fc[_0x5dda0c(0x1bb)]('-\x20'+_0x19dd37[_0x5dda0c(0x230)]+':*');else{if(Array[_0x5dda0c(0x23b)](_0x19dd37[_0x5dda0c(0x1d2)])){const _0x22ded0=_0x19dd37[_0x5dda0c(0x1d2)][_0x5dda0c(0x215)](([_0x312b38,_0x506d0d])=>{if(_0x312b38===_0x506d0d)return''+_0x312b38;return _0x312b38+'-'+_0x506d0d;});_0x5129fc[_0x5dda0c(0x1bb)]('-\x20'+_0x19dd37['path']+':'+_0x22ded0[_0x5dda0c(0x222)](','));}else _0x5129fc[_0x5dda0c(0x1bb)]('-\x20'+_0x19dd37['path']+':*');}}_0x5129fc[_0x5dda0c(0x1bb)](''),_0x5b70b0['push'](_0x5129fc[_0x5dda0c(0x222)]('\x0a')),_0x5b70b0[_0x5dda0c(0x1bb)](_0x5dda0c(0x248));const _0x21c854=[],_0x25ca8b=[];for(const _0x43ac63 of _0x1d43e4){let _0x12e25f=a0_0x1b597d['resolve'](_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)],_0x43ac63[_0x5dda0c(0x230)]),_0x269461=null,_0x4a2b7c=null;try{_0x269461=await a0_0x17617d[_0x5dda0c(0x1b3)](_0x12e25f,{'encoding':_0x5dda0c(0x17e)});}catch(_0x4d7dff){const _0x2ce003=fixPathRepetition(_0x12e25f);if(_0x2ce003)try{_0x269461=await a0_0x17617d[_0x5dda0c(0x1b3)](_0x2ce003,{'encoding':'utf-8'}),_0x12e25f=_0x2ce003;}catch{_0x4a2b7c=_0x4d7dff instanceof Error?_0x4d7dff:new Error(String(_0x4d7dff));}else _0x4a2b7c=_0x4d7dff instanceof Error?_0x4d7dff:new Error(String(_0x4d7dff));}if(_0x269461!==null){const _0x381e92=_0x269461[_0x5dda0c(0x132)](/\r?\n/),_0x35d747=[];if(_0x43ac63[_0x5dda0c(0x1d2)]==='*'||!Array[_0x5dda0c(0x23b)](_0x43ac63[_0x5dda0c(0x1d2)]))for(let _0x5d0104=0x1;_0x5d0104<=_0x381e92[_0x5dda0c(0x22a)];_0x5d0104++){const _0x389cc8=_0x381e92[_0x5d0104-0x1];_0x35d747[_0x5dda0c(0x1bb)](_0x5d0104+'|\x20'+_0x389cc8);}else for(const [_0x11df1b,_0x4bc554]of _0x43ac63[_0x5dda0c(0x1d2)]){_0x35d747[_0x5dda0c(0x22a)]>0x0&&_0x35d747[_0x5dda0c(0x1bb)]('');for(let _0x409a72=_0x11df1b;_0x409a72<=_0x4bc554&&_0x409a72<=_0x381e92[_0x5dda0c(0x22a)];_0x409a72++){const _0x4f54ce=_0x381e92[_0x409a72-0x1];_0x35d747['push'](_0x409a72+'|\x20'+_0x4f54ce);}}_0x25ca8b[_0x5dda0c(0x1bb)]({'path':_0x43ac63[_0x5dda0c(0x230)],'content':_0x35d747[_0x5dda0c(0x222)]('\x0a')});}else _0x21c854['push'](_0x5dda0c(0x212)+_0x43ac63[_0x5dda0c(0x230)]+_0x5dda0c(0x1f1)+(_0x4a2b7c?.[_0x5dda0c(0x1cb)]||_0x5dda0c(0x128))+_0x5dda0c(0x182));}try{const _0x112031=await compactFileContexts(_0x25ca8b,_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x217)],MORPH_API_KEY,MORPH_API_URL);for(const _0x36f7a7 of _0x112031){_0x21c854[_0x5dda0c(0x1bb)]('<file\x20path=\x22'+_0x36f7a7['path']+_0x5dda0c(0x1af)+_0x36f7a7[_0x5dda0c(0x1f7)]+_0x5dda0c(0x182));}}catch(_0x214808){logger[_0x5dda0c(0x223)]('MCP',_0x5dda0c(0x242),{'error':_0x214808 instanceof Error?_0x214808[_0x5dda0c(0x1cb)]:String(_0x214808),'files_count':_0x25ca8b[_0x5dda0c(0x22a)]});for(const _0x27f310 of _0x25ca8b){_0x21c854['push'](_0x5dda0c(0x212)+_0x27f310['path']+'\x22>\x0a'+_0x27f310[_0x5dda0c(0x1f7)]+_0x5dda0c(0x182));}}_0x5b70b0[_0x5dda0c(0x1bb)](_0x21c854[_0x5dda0c(0x222)]('\x0a\x0a')),_0x39d96a=_0x5b70b0[_0x5dda0c(0x222)]('\x0a');const _0x172984=_0x17f073['errors']?.[_0x5dda0c(0x148)](_0xbe28c5=>_0xbe28c5[_0x5dda0c(0x1cb)]?.[_0x5dda0c(0x23a)](_0x5dda0c(0x1c1)))||[];if(_0x172984[_0x5dda0c(0x22a)]>0x0){const _0x36f7b1=_0x172984['map'](_0x2da691=>_0x2da691['message'])[_0x5dda0c(0x222)](';\x20');reportMorphError({'error_message':_0x36f7b1,'error_type':'FileReadError','context':{'tool':'codebase_search','repo_path':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)],'query':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'model':'morph-warp-grep-v2.1','termination_reason':_0x5dda0c(0x1b5),'error_count':_0x172984[_0x5dda0c(0x22a)],'is_timeout':![],'timings':_0x17f073['timings'],'files_attempted':_0x1d43e4[_0x5dda0c(0x215)](_0x484432=>({'path':_0x484432[_0x5dda0c(0x230)],'lines':_0x484432[_0x5dda0c(0x1d2)]})),'tool_calls':_0x1a7867(_0x17f073[_0x5dda0c(0x21e)]),'messages':_0x17f073[_0x5dda0c(0x21e)]?.[_0x5dda0c(0x215)](_0x6244db=>({'role':_0x6244db[_0x5dda0c(0x166)],'content':_0x6244db[_0x5dda0c(0x1f7)],..._0x6244db[_0x5dda0c(0x1f3)]?{'tool_calls':_0x6244db['tool_calls']['length']}:{},..._0x6244db[_0x5dda0c(0x12b)]?{'tool_call_id':_0x6244db[_0x5dda0c(0x12b)]}:{}})),'request_content':{'query':_0x547322['data']['search_string'],'repo_path':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)],'repoRoot':a0_0x1b597d['resolve'](_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)]),'model':_0x5dda0c(0x146)}},'source':'mcp-filesystem'})[_0x5dda0c(0x199)](()=>{});}}else{if(_0x17f073[_0x5dda0c(0x190)]==='terminated'&&_0x17f073[_0x5dda0c(0x1b7)][_0x5dda0c(0x22a)]>0x0){const _0x5d4223=_0x17f073[_0x5dda0c(0x1b7)]['map'](_0x35e289=>_0x35e289[_0x5dda0c(0x1cb)])[_0x5dda0c(0x222)](';\x20');_0x39d96a=_0x5dda0c(0x20c)+_0x5d4223;const _0x706b9=_0x5d4223[_0x5dda0c(0x1fc)]()['includes']('timeout')||_0x5d4223['toLowerCase']()['includes'](_0x5dda0c(0x130))||_0x5d4223[_0x5dda0c(0x1fc)]()[_0x5dda0c(0x131)]('etimedout'),_0x1ac23a=_0x17f073[_0x5dda0c(0x1c6)]?.[_0x5dda0c(0x1b9)]?.['files'],_0x64998c=_0x17f073[_0x5dda0c(0x1b7)][0x0];reportMorphError({'error_message':_0x5d4223,'error_type':_0x706b9?_0x5dda0c(0x252):_0x64998c?.[_0x5dda0c(0x145)]?.[_0x5dda0c(0x20f)]||_0x5dda0c(0x1b6),'context':{'tool':'codebase_search','repo_path':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)],'query':_0x547322[_0x5dda0c(0x225)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x17f073[_0x5dda0c(0x190)],'error_count':_0x17f073[_0x5dda0c(0x1b7)][_0x5dda0c(0x22a)],'is_timeout':_0x706b9,'timings':_0x17f073[_0x5dda0c(0x184)],'files_attempted':_0x1ac23a?.[_0x5dda0c(0x215)](_0x15e877=>({'path':_0x15e877[_0x5dda0c(0x230)],'lines':_0x15e877[_0x5dda0c(0x1d2)]})),'tool_calls':_0x1a7867(_0x17f073['messages']),'messages':_0x17f073[_0x5dda0c(0x21e)]?.[_0x5dda0c(0x215)](_0x5e2af0=>({'role':_0x5e2af0[_0x5dda0c(0x166)],'content':_0x5e2af0['content'],..._0x5e2af0[_0x5dda0c(0x1f3)]?{'tool_calls':_0x5e2af0[_0x5dda0c(0x1f3)][_0x5dda0c(0x22a)]}:{},..._0x5e2af0[_0x5dda0c(0x12b)]?{'tool_call_id':_0x5e2af0[_0x5dda0c(0x12b)]}:{}})),'request_content':{'query':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'repo_path':_0x547322['data'][_0x5dda0c(0x198)],'repoRoot':a0_0x1b597d[_0x5dda0c(0x243)](_0x547322[_0x5dda0c(0x225)]['repo_path']),'model':_0x5dda0c(0x146)}},'stack_trace':_0x64998c?.[_0x5dda0c(0x240)]||undefined,'source':_0x5dda0c(0x1b2)})[_0x5dda0c(0x199)](()=>{});}else _0x39d96a=_0x5dda0c(0x1e0);}return{'content':[{'type':'text','text':_0x39d96a}]};}catch(_0x6112bd){const _0x151242=handleMorphAPIError(_0x6112bd);if(_0x151242)return logger[_0x5dda0c(0x1c9)](_0x5dda0c(0x203),_0x5dda0c(0x160),{'tool':_0x5dda0c(0x1e2),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date['now']()-_0x22e089}),_0x151242;const _0x5e7b0b=_0x6112bd instanceof Error?_0x6112bd['message']:String(_0x6112bd);logger[_0x5dda0c(0x1c9)](_0x5dda0c(0x203),'tool_call_error',{'tool':'codebase_search','error':_0x5e7b0b,'repo_path':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)],'query':_0x547322['data'][_0x5dda0c(0x217)],'latency_ms':Date[_0x5dda0c(0x167)]()-_0x22e089});const _0x4ad93b=_0x5e7b0b[_0x5dda0c(0x1fc)]()['includes'](_0x5dda0c(0x127))||_0x5e7b0b[_0x5dda0c(0x1fc)]()[_0x5dda0c(0x131)](_0x5dda0c(0x130))||_0x5e7b0b[_0x5dda0c(0x1fc)]()[_0x5dda0c(0x131)](_0x5dda0c(0x1b1))||_0x6112bd instanceof Error&&_0x6112bd[_0x5dda0c(0x20f)]===_0x5dda0c(0x252);return reportMorphError({'error_message':_0x5e7b0b,'error_type':_0x4ad93b?'TimeoutError':_0x6112bd instanceof Error?_0x6112bd['constructor'][_0x5dda0c(0x20f)]:_0x5dda0c(0x1fd),'context':{'tool':_0x5dda0c(0x1e2),'repo_path':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)],'query':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'model':_0x5dda0c(0x146),'is_timeout':_0x4ad93b,'exception_phase':_0x5dda0c(0x155),'request_content':{'query':_0x547322['data'][_0x5dda0c(0x217)],'repo_path':_0x547322['data'][_0x5dda0c(0x198)],'repoRoot':a0_0x1b597d[_0x5dda0c(0x243)](_0x547322[_0x5dda0c(0x225)]['repo_path']),'model':_0x5dda0c(0x146)}},'stack_trace':_0x6112bd instanceof Error?_0x6112bd['stack']:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':'text','text':_0x5dda0c(0x169)+_0x5e7b0b}],'isError':![]};}}case TOOL_NAMES[_0x5dda0c(0x22e)]:{const _0x1d4481=WarpGrepGitHubArgsSchema[_0x5dda0c(0x1d3)](_0x51f0de);if(!_0x1d4481['success'])return{'content':[{'type':_0x5dda0c(0x16c),'text':_0x5dda0c(0x142)+_0x1d4481['error']}],'isError':!![]};const _0x7c3039=_0x1d4481[_0x5dda0c(0x225)][_0x5dda0c(0x1ea)]||_0x1d4481['data']['owner_repo'];if(!_0x7c3039)return{'content':[{'type':'text','text':_0x5dda0c(0x23e)}],'isError':!![]};const _0xeab9f4=MORPH_API_KEY;if(!_0xeab9f4)throw new Error(_0x5dda0c(0x154));const _0x549ac7=Date[_0x5dda0c(0x167)]();logger[_0x5dda0c(0x1cc)](_0x5dda0c(0x203),_0x5dda0c(0x24f),{'identifier':_0x7c3039,'query':_0x1d4481[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'branch':_0x1d4481[_0x5dda0c(0x225)][_0x5dda0c(0x162)]});try{const _0xdf097c=new WarpGrepClient({'morphApiKey':_0xeab9f4,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x4217e8=await _0xdf097c[_0x5dda0c(0x12e)]({'searchTerm':_0x1d4481[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'github':_0x7c3039,'branch':_0x1d4481[_0x5dda0c(0x225)][_0x5dda0c(0x162)]}),_0x15be92=Date[_0x5dda0c(0x167)]()-_0x549ac7;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x15be92+_0x5dda0c(0x1e7)+_0x4217e8['success']);const _0x666534=formatResult(_0x4217e8);return{'content':[{'type':'text','text':_0x666534}]};}catch(_0x530f35){const _0x198d63=handleMorphAPIError(_0x530f35);if(_0x198d63)return _0x198d63;const _0x3094fa=Date[_0x5dda0c(0x167)]()-_0x549ac7,_0x28b98f=_0x530f35 instanceof Error?_0x530f35[_0x5dda0c(0x1cb)]:String(_0x530f35);return logMcpStderr(_0x5dda0c(0x19f)+_0x3094fa+_0x5dda0c(0x126),_0x28b98f),reportMorphError({'error_message':_0x28b98f,'error_type':_0x530f35 instanceof Error?_0x530f35[_0x5dda0c(0x145)][_0x5dda0c(0x20f)]:'UnknownError','context':{'tool':_0x5dda0c(0x229),'github_url':_0x7c3039,'search_string':_0x1d4481[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'branch':_0x1d4481['data']['branch']},'stack_trace':_0x530f35 instanceof Error?_0x530f35[_0x5dda0c(0x240)]:undefined,'source':'mcp-filesystem','tool':_0x5dda0c(0x229),'latency_ms':_0x3094fa})[_0x5dda0c(0x199)](()=>{}),{'content':[{'type':_0x5dda0c(0x16c),'text':'GitHub\x20search\x20failed:\x20'+_0x28b98f}],'isError':![]};}}default:throw new Error(_0x5dda0c(0x1bd)+_0xde66b7);}}catch(_0x1ec0d5){const _0x3c18fe=_0x1ec0d5 instanceof Error?_0x1ec0d5[_0x5dda0c(0x1cb)]:String(_0x1ec0d5);return reportMorphError({'error_message':_0x3c18fe,'error_type':_0x1ec0d5 instanceof Error?_0x1ec0d5[_0x5dda0c(0x145)]['name']:_0x5dda0c(0x1fd),'context':{'tool':_0xde66b7,'arguments':_0x51f0de?JSON['stringify'](_0x51f0de)[_0x5dda0c(0x152)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x1ec0d5 instanceof Error?_0x1ec0d5[_0x5dda0c(0x240)]:undefined,'source':'mcp-filesystem'})[_0x5dda0c(0x199)](()=>{}),{'content':[{'type':_0x5dda0c(0x16c),'text':_0x5dda0c(0x20c)+_0x3c18fe}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x5bc894){const _0x39326c=a0_0x5c9100,_0x4ff2e5=await getValidRootDirectories(_0x5bc894);if(_0x4ff2e5[_0x39326c(0x22a)]>0x0)allowedDirectories=[..._0x4ff2e5],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x4ff2e5[_0x39326c(0x22a)]+_0x39326c(0x19d));else{logMcpStderr(_0x39326c(0x211));if(ENABLE_WORKSPACE_MODE)try{const _0x23a4fb=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x23a4fb&&(allowedDirectories=[_0x23a4fb],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x23a4fb));}catch(_0x2fa38e){logMcpStderr(_0x39326c(0x13a)+_0x2fa38e);}}}server[a0_0x5c9100(0x202)](RootsListChangedNotificationSchema,async()=>{const _0x4677a9=a0_0x5c9100;try{const _0x5b3d52=await server[_0x4677a9(0x216)]();_0x5b3d52&&_0x4677a9(0x15e)in _0x5b3d52&&await updateAllowedDirectoriesFromRoots(_0x5b3d52['roots']);}catch(_0x5907c4){logMcpStderr(_0x4677a9(0x1d5),_0x5907c4 instanceof Error?_0x5907c4[_0x4677a9(0x1cb)]:String(_0x5907c4));}}),server[a0_0x5c9100(0x124)]=async()=>{const _0x4d0e86=a0_0x5c9100,_0x24f6dc=server[_0x4d0e86(0x236)]();if(_0x24f6dc?.[_0x4d0e86(0x15e)])try{const _0x2b9283=await server[_0x4d0e86(0x216)]();_0x2b9283&&_0x4d0e86(0x15e)in _0x2b9283?await updateAllowedDirectoriesFromRoots(_0x2b9283[_0x4d0e86(0x15e)]):logMcpStderr(_0x4d0e86(0x139));}catch(_0x5dea58){logMcpStderr(_0x4d0e86(0x129),_0x5dea58 instanceof Error?_0x5dea58['message']:String(_0x5dea58));}else{if(allowedDirectories[_0x4d0e86(0x22a)]>0x0)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x4d0e86(0x172));else throw new Error(_0x4d0e86(0x16e));}}};async function runServer(){const _0x4b5d0c=a0_0x5c9100,_0x363140=new StdioServerTransport();await server[_0x4b5d0c(0x18a)](_0x363140),logMcpStderr(_0x4b5d0c(0x12f)),allowedDirectories[_0x4b5d0c(0x22a)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()['catch'](_0x2d9fd4=>{const _0x2b88f2=a0_0x5c9100;logMcpStderr(_0x2b88f2(0x1d1),_0x2d9fd4),process['exit'](0x1);});
|
|
2
|
+
const a0_0x4592e9=a0_0x1bf7;(function(_0x13f9ae,_0x2f5fb9){const _0x38e128=a0_0x1bf7,_0x24d6cc=_0x13f9ae();while(!![]){try{const _0x3f4dfa=-parseInt(_0x38e128(0x189))/0x1+-parseInt(_0x38e128(0x120))/0x2*(-parseInt(_0x38e128(0xe8))/0x3)+parseInt(_0x38e128(0xf8))/0x4+-parseInt(_0x38e128(0x154))/0x5+-parseInt(_0x38e128(0xdf))/0x6+parseInt(_0x38e128(0x127))/0x7+parseInt(_0x38e128(0x16b))/0x8;if(_0x3f4dfa===_0x2f5fb9)break;else _0x24d6cc['push'](_0x24d6cc['shift']());}catch(_0x3ed3d8){_0x24d6cc['push'](_0x24d6cc['shift']());}}}(a0_0x3bb1,0x8fda1));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_0xb48a10 from'fs/promises';import a0_0xe64fd4 from'path';import a0_0xc72497 from'os';import{createRequire}from'module';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_0x32428b from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x428e4c){const _0x549b88=a0_0x1bf7,_0x30d257=_0x428e4c['split'](a0_0xe64fd4[_0x549b88(0xe7)])[_0x549b88(0x102)](Boolean);if(_0x30d257['length']<0x2)return null;for(let _0x3833e9=Math[_0x549b88(0x18e)](_0x30d257[_0x549b88(0xc1)]/0x2);_0x3833e9>=0x1;_0x3833e9--){for(let _0x6b0518=0x0;_0x6b0518<=_0x30d257['length']-0x2*_0x3833e9;_0x6b0518++){const _0x403c46=_0x30d257[_0x549b88(0x92)](_0x6b0518,_0x6b0518+_0x3833e9),_0x4d1134=_0x30d257[_0x549b88(0x92)](_0x6b0518+_0x3833e9,_0x6b0518+0x2*_0x3833e9);if(_0x403c46[_0x549b88(0xa5)]((_0x21ae8c,_0x2d9b36)=>_0x21ae8c===_0x4d1134[_0x2d9b36])){const _0x26de66=[..._0x30d257[_0x549b88(0x92)](0x0,_0x6b0518),..._0x30d257['slice'](_0x6b0518+_0x3833e9)];return a0_0xe64fd4[_0x549b88(0xe7)]+_0x26de66[_0x549b88(0xd4)](a0_0xe64fd4[_0x549b88(0xe7)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x12c7f7=a0_0x1bf7;try{const _0x67cbee=require(_0x12c7f7(0x137));return _0x67cbee[_0x12c7f7(0x7a)]??_0x12c7f7(0x156);}catch(_0x5d2c5e){return logMcpStderr(_0x12c7f7(0x124),_0x5d2c5e),_0x12c7f7(0x156);}}function printHelp(){const _0x562f26=a0_0x1bf7;console[_0x562f26(0x15b)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x562f26(0x15b)](_0x562f26(0xa0)),console['log'](_0x562f26(0x17f)),console[_0x562f26(0x15b)](_0x562f26(0x119)),console['log']('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0x562f26(0x15b)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x562f26(0x15b)]('\x0aExamples:'),console[_0x562f26(0x15b)]('\x20\x20morph-mcp'),console[_0x562f26(0x15b)](_0x562f26(0xe9));}const cliArgs=process[a0_0x4592e9(0x110)][a0_0x4592e9(0x92)](0x2),VERSION_FLAGS=new Set([a0_0x4592e9(0x130),'-v','-V']),HELP_FLAGS=new Set([a0_0x4592e9(0x11c),'-h']);cliArgs[a0_0x4592e9(0x70)](_0xd9183c=>VERSION_FLAGS[a0_0x4592e9(0x18d)](_0xd9183c))&&(console['log'](a0_0x4592e9(0x9f)+getPackageVersion()),process[a0_0x4592e9(0x196)](0x0));function a0_0x1bf7(_0x57af19,_0x936580){_0x57af19=_0x57af19-0x70;const _0x3bb186=a0_0x3bb1();let _0x1bf740=_0x3bb186[_0x57af19];return _0x1bf740;}cliArgs[a0_0x4592e9(0x70)](_0x5c36ff=>HELP_FLAGS[a0_0x4592e9(0x18d)](_0x5c36ff))&&(printHelp(),process[a0_0x4592e9(0x196)](0x0));function getCliArg(_0x27743c){const _0x1089a1=a0_0x4592e9;for(let _0x3e9548=0x0;_0x3e9548<cliArgs[_0x1089a1(0xc1)];_0x3e9548++){const _0x4d81e0=cliArgs[_0x3e9548];if(_0x4d81e0[_0x1089a1(0x19a)]('--'+_0x27743c+'='))return _0x4d81e0[_0x1089a1(0x92)](('--'+_0x27743c+'=')[_0x1089a1(0xc1)]);if(_0x4d81e0==='--'+_0x27743c&&_0x3e9548+0x1<cliArgs['length'])return cliArgs[_0x3e9548+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x4592e9(0x18d)](arg)||HELP_FLAGS[a0_0x4592e9(0x18d)](arg))continue;if(arg[a0_0x4592e9(0x19a)](a0_0x4592e9(0xb2)))continue;if(arg===a0_0x4592e9(0xf0)){i++;continue;}args[a0_0x4592e9(0x19f)](arg);}const WORKSPACE_ROOT=process[a0_0x4592e9(0x183)][a0_0x4592e9(0x171)]||process[a0_0x4592e9(0x183)][a0_0x4592e9(0x19d)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x4592e9(0x183)][a0_0x4592e9(0x17d)]!=='false',MORPH_API_KEY=getCliArg(a0_0x4592e9(0x114))??process[a0_0x4592e9(0x183)][a0_0x4592e9(0x15f)],MORPH_API_URL=process[a0_0x4592e9(0x183)]['MORPH_API_URL'],MORPH_LARGE_APPLY=process[a0_0x4592e9(0x183)][a0_0x4592e9(0xe5)]!=='false',MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x4592e9(0xa9)]?parseInt(process[a0_0x4592e9(0x183)][a0_0x4592e9(0xa9)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x4592e9(0x183)][a0_0x4592e9(0x105)]?new Set(process[a0_0x4592e9(0x183)][a0_0x4592e9(0x105)][a0_0x4592e9(0x16e)](',')[a0_0x4592e9(0xfe)](_0x35351f=>_0x35351f[a0_0x4592e9(0x182)]())[a0_0x4592e9(0x102)](_0x24143f=>_0x24143f[a0_0x4592e9(0xc1)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x4592e9(0x174)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x4592e9(0x18d)](tool)&&console['error'](a0_0x4592e9(0x162)+tool+a0_0x4592e9(0x99)+[...KNOWN_TOOL_NAMES][a0_0x4592e9(0xd4)](',\x20'));}console[a0_0x4592e9(0xd3)](a0_0x4592e9(0xe1)+[...DISABLED_TOOLS][a0_0x4592e9(0xd4)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x4592e9(0x13f))&&!MORPH_API_KEY[a0_0x4592e9(0x19a)](a0_0x4592e9(0x76))&&logMcpStderr(a0_0x4592e9(0x104));async function reportMorphError(_0x307a5f){const _0x52d0ff=a0_0x4592e9;try{await a0_0x32428b[_0x52d0ff(0x12e)](_0x52d0ff(0x9d),{..._0x307a5f,'timestamp':new Date()[_0x52d0ff(0x172)](),'source':_0x307a5f[_0x52d0ff(0x11b)]||_0x52d0ff(0xc2),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x307a5f[_0x52d0ff(0xb7)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x52d0ff(0x10f)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x51f117,_0x44f19d){const _0x43b695=a0_0x4592e9;if(_0x51f117&&typeof _0x51f117==='object'&&_0x43b695(0xf9)in _0x51f117)return _0x51f117[_0x43b695(0xf9)];if(_0x51f117&&typeof _0x51f117===_0x43b695(0x103)&&_0x43b695(0x132)in _0x51f117)return _0x51f117[_0x43b695(0x132)]?.[_0x43b695(0xf9)];const _0x437235=_0x44f19d[_0x43b695(0x10c)](/\b(401|429)\b/);return _0x437235?parseInt(_0x437235[0x1],0xa):null;}function handleMorphAPIError(_0x53d11c){const _0x4a4480=a0_0x4592e9,_0x423262=_0x53d11c instanceof Error?_0x53d11c['message']:String(_0x53d11c),_0x4c4b18=extractStatusCode(_0x53d11c,_0x423262);switch(_0x4c4b18){case 0x191:return{'content':[{'type':_0x4a4480(0x169),'text':_0x4a4480(0xa8)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x4a4480(0x169),'text':_0x4a4480(0x19c)}],'isError':!![]};default:return null;}}args[a0_0x4592e9(0xc1)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr(a0_0x4592e9(0xba)),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr(a0_0x4592e9(0x11e)),logMcpStderr(a0_0x4592e9(0xd6)),logMcpStderr(a0_0x4592e9(0x10b)));function normalizePath(_0xd43f01){return a0_0xe64fd4['normalize'](_0xd43f01);}function expandHome(_0x50b4d6){const _0x6b1bbb=a0_0x4592e9;if(_0x50b4d6[_0x6b1bbb(0x19a)]('~/')||_0x50b4d6==='~')return a0_0xe64fd4[_0x6b1bbb(0xd4)](a0_0xc72497[_0x6b1bbb(0x170)](),_0x50b4d6['slice'](0x1));return _0x50b4d6;}let allowedDirectories=await Promise[a0_0x4592e9(0x141)](args[a0_0x4592e9(0xfe)](async _0x43f59e=>{const _0x14ae7f=a0_0x4592e9,_0x1a552f=expandHome(_0x43f59e),_0x18e477=a0_0xe64fd4['resolve'](_0x1a552f);try{const _0x1b0d41=await a0_0xb48a10[_0x14ae7f(0x8e)](_0x18e477);return normalizePath(_0x1b0d41);}catch(_0x27a6ef){return normalizePath(_0x18e477);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x4592e9(0xc1)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x4592e9(0x19f)](workspaceDir),logMcpStderr(a0_0x4592e9(0x16a)+workspaceDir+a0_0x4592e9(0x167)));}catch(a0_0x34b92c){logMcpStderr(a0_0x4592e9(0xfd)+a0_0x34b92c);}async function detectWorkspaceRoot(_0xdd5804){const _0x3e4a44=a0_0x4592e9;let _0x114810=a0_0xe64fd4[_0x3e4a44(0x133)](_0xdd5804);const _0x3ad93c=[_0x3e4a44(0x150),'.vscode',_0x3e4a44(0xd9),_0x3e4a44(0x178),_0x3e4a44(0x180),'go.mod',_0x3e4a44(0x186),_0x3e4a44(0xd5),'composer.json'];while(_0x114810!==a0_0xe64fd4[_0x3e4a44(0x152)](_0x114810)){for(const _0x44f5bd of _0x3ad93c){const _0x5d108c=a0_0xe64fd4[_0x3e4a44(0xd4)](_0x114810,_0x44f5bd);try{return await a0_0xb48a10['access'](_0x5d108c),normalizePath(_0x114810);}catch{}}_0x114810=a0_0xe64fd4[_0x3e4a44(0x152)](_0x114810);}return normalizePath(_0xdd5804);}await Promise[a0_0x4592e9(0x141)](args['map'](async _0xf8c14=>{const _0x5de62e=a0_0x4592e9;try{const _0x251d0e=await a0_0xb48a10['stat'](expandHome(_0xf8c14));!_0x251d0e[_0x5de62e(0x164)]()&&(logMcpStderr(_0x5de62e(0xd1)+_0xf8c14+_0x5de62e(0x131)),process['exit'](0x1));}catch(_0x1050fe){logMcpStderr(_0x5de62e(0xac)+_0xf8c14+':',_0x1050fe),process[_0x5de62e(0x196)](0x1);}}));async function validatePath(_0x454598){const _0xe89a7e=a0_0x4592e9,_0x3eb7ff=expandHome(_0x454598),_0x24b11a=a0_0xe64fd4['resolve'](_0x3eb7ff);logger['debug'](_0xe89a7e(0xff),_0xe89a7e(0x9e),{'raw_path':_0x454598,'absolute':_0x24b11a});try{const _0x25ba00=await a0_0xb48a10[_0xe89a7e(0x8e)](_0x24b11a);return logger[_0xe89a7e(0x79)]('MCP','path_validation_resolved',{'resolved':_0x25ba00,'symlink':_0x25ba00!==_0x24b11a}),_0x25ba00;}catch(_0x594bdd){if(_0x594bdd[_0xe89a7e(0x113)]===_0xe89a7e(0xcc)){const _0x368524=a0_0xe64fd4['dirname'](_0x24b11a);try{const _0xb4775a=await a0_0xb48a10[_0xe89a7e(0x8e)](_0x368524),_0x21be79=a0_0xe64fd4[_0xe89a7e(0xd4)](_0xb4775a,a0_0xe64fd4['basename'](_0x24b11a));return logger['debug'](_0xe89a7e(0xff),'path_validation_resolved',{'resolved':_0x21be79,'new_file':!![]}),_0x21be79;}catch{logger[_0xe89a7e(0xd3)](_0xe89a7e(0xff),_0xe89a7e(0x74),{'raw_path':_0x454598,'error':_0xe89a7e(0x175)+_0x368524});throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x368524);}}logger['error']('MCP',_0xe89a7e(0x74),{'raw_path':_0x454598,'error':_0x594bdd['message']});throw _0x594bdd;}}const MorphEditFileArgsSchema=z[a0_0x4592e9(0x103)]({'path':z[a0_0x4592e9(0x135)](),'code_edit':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0x8b)),'instruction':z[a0_0x4592e9(0x135)]()['describe'](a0_0x4592e9(0x190)),'dryRun':z[a0_0x4592e9(0xfa)]()[a0_0x4592e9(0xed)](![])[a0_0x4592e9(0x14c)](a0_0x4592e9(0x12b))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x4592e9(0x166),WarpGrepArgsSchema=z[a0_0x4592e9(0x103)]({'search_string':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0x14c)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0xdb)),'search_type':z[a0_0x4592e9(0x18f)]([a0_0x4592e9(0xed),'node_modules'])[a0_0x4592e9(0xeb)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0x14f))}),WarpGrepGitHubArgsSchema=z[a0_0x4592e9(0x103)]({'search_string':z['string']()[a0_0x4592e9(0x14c)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0xeb)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0x188)),'owner_repo':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0xeb)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0x98)),'branch':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0xeb)]()['describe'](a0_0x4592e9(0x13d))}),CodebaseSearchArgsSchema=z[a0_0x4592e9(0x103)]({'query':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0x14c)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0x138)),'branch':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0xeb)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0xae)),'commitHash':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0xeb)]()['describe']('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x4592e9(0x1a4)](z[a0_0x4592e9(0x135)]())[a0_0x4592e9(0xed)]([])[a0_0x4592e9(0x14c)](a0_0x4592e9(0x9c)),'limit':z['number']()['optional']()[a0_0x4592e9(0xed)](0xa)[a0_0x4592e9(0x14c)](a0_0x4592e9(0xcf))}),server=new Server({'name':a0_0x4592e9(0x187),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x4592e9(0x121)](ListToolsRequestSchema,async()=>{const _0x51daf8=a0_0x4592e9,_0x16dba7=[{'name':TOOL_NAMES[_0x51daf8(0x14b)],'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+_0x51daf8(0x108)+_0x51daf8(0x1a2)+'IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a'+'Benefits:\x0a'+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x51daf8(0x142)+_0x51daf8(0x123)+_0x51daf8(0x82)+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+_0x51daf8(0x12d)+_0x51daf8(0x118)+_0x51daf8(0xd2)+_0x51daf8(0xfc)+_0x51daf8(0x9a)+_0x51daf8(0x13c)+_0x51daf8(0x88)+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0x51daf8(0xb6)+_0x51daf8(0x197)+_0x51daf8(0xb9)+_0x51daf8(0x163)+_0x51daf8(0x9b),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x51daf8(0x199)],'description':_0x51daf8(0x19e)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20'+_0x51daf8(0x91)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x3c0ae6=_0x16dba7['filter'](_0x249934=>{const _0x20847=_0x51daf8;if(DISABLED_TOOLS['has'](_0x249934[_0x20847(0xaa)]))return console['error'](_0x20847(0x13e)+_0x249934[_0x20847(0xaa)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if('requiresApiKey'in _0x249934&&_0x249934[_0x20847(0x90)]&&!MORPH_API_KEY)return logMcpStderr(_0x20847(0xc6)+_0x249934[_0x20847(0xaa)]+_0x20847(0x17c)),![];return!![];});return{'tools':_0x3c0ae6[_0x51daf8(0xfe)](_0x295d2d=>({'name':_0x295d2d[_0x51daf8(0xaa)],'description':_0x295d2d['description'],'inputSchema':_0x295d2d[_0x51daf8(0xb4)]}))};}),server[a0_0x4592e9(0x121)](CallToolRequestSchema,async _0x2b29de=>{const _0x2e9d5d=a0_0x4592e9,{name:_0x9e8515,arguments:_0x5998fc}=_0x2b29de[_0x2e9d5d(0x7c)],_0xfa9457=Date[_0x2e9d5d(0x19b)]();logger['debug'](_0x2e9d5d(0xff),_0x2e9d5d(0x15e),{'tool':_0x9e8515,'args':_0x9e8515==='edit_file'?{'path':_0x5998fc?.[_0x2e9d5d(0x146)],'instruction':_0x5998fc?.[_0x2e9d5d(0x12a)]||_0x5998fc?.[_0x2e9d5d(0x143)],'dryRun':_0x5998fc?.['dryRun']}:_0x5998fc});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x2e9d5d(0x169),'text':'No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.'}],'isError':!![]};if(!MORPH_API_KEY[_0x2e9d5d(0x19a)](_0x2e9d5d(0x13f))&&!MORPH_API_KEY[_0x2e9d5d(0x19a)]('morph-'))return{'content':[{'type':'text','text':_0x2e9d5d(0x134)}],'isError':!![]};if(DISABLED_TOOLS[_0x2e9d5d(0x18d)](_0x9e8515))return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0xca)+_0x9e8515+_0x2e9d5d(0x193)}],'isError':![]};switch(_0x9e8515){case TOOL_NAMES[_0x2e9d5d(0x14b)]:{let _0x473179=_0x5998fc;_0x473179&&typeof _0x473179===_0x2e9d5d(0x103)&&(_0x2e9d5d(0x128)in _0x473179&&!(_0x2e9d5d(0x146)in _0x473179)&&(_0x473179={..._0x473179,'path':_0x473179[_0x2e9d5d(0x128)],'target_file':undefined}),_0x2e9d5d(0x143)in _0x473179&&!(_0x2e9d5d(0x12a)in _0x473179)&&(_0x473179={..._0x473179,'instruction':_0x473179[_0x2e9d5d(0x143)],'instructions':undefined}),_0x2e9d5d(0x113)in _0x473179&&!(_0x2e9d5d(0xe0)in _0x473179)&&(_0x473179={..._0x473179,'code_edit':_0x473179[_0x2e9d5d(0x113)],'code':undefined}));const _0x21579a=MorphEditFileArgsSchema[_0x2e9d5d(0x15c)](_0x473179);if(!_0x21579a[_0x2e9d5d(0x158)])throw new Error(_0x2e9d5d(0xbd)+_0x21579a[_0x2e9d5d(0xd3)]);const _0x38ea19=await validatePath(_0x21579a[_0x2e9d5d(0x115)]['path']);let _0x4a67e4=null,_0x3faaeb=!![],_0x1598f9=null;try{_0x4a67e4=await a0_0xb48a10[_0x2e9d5d(0xc3)](_0x38ea19,_0x2e9d5d(0xc0)),logger['debug']('MCP',_0x2e9d5d(0xa1),{'path':_0x38ea19,'size_bytes':_0x4a67e4[_0x2e9d5d(0xc1)]});}catch(_0x701ea9){const _0x5d4bcd=_0x701ea9['code'];_0x5d4bcd===_0x2e9d5d(0xcc)?(_0x3faaeb=![],_0x4a67e4='',logger['debug'](_0x2e9d5d(0xff),_0x2e9d5d(0xa1),{'path':_0x38ea19,'exists':![]})):(_0x1598f9=_0x2e9d5d(0xf5)+(_0x5d4bcd||_0x2e9d5d(0x156))+_0x2e9d5d(0x139)+(_0x701ea9 instanceof Error?_0x701ea9['message']:String(_0x701ea9)),logger['error'](_0x2e9d5d(0xff),_0x2e9d5d(0x8c),{'path':_0x38ea19,'error':_0x1598f9}),logMcpStderr(_0x2e9d5d(0xc6)+_0x1598f9));}let _0x5dee11;try{const _0x553fc4=MORPH_API_KEY;if(!_0x553fc4)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x45d0f5=a0_0xe64fd4[_0x2e9d5d(0x152)](_0x38ea19),_0x2af774=a0_0xe64fd4[_0x2e9d5d(0xc8)](_0x38ea19);logger[_0x2e9d5d(0x79)](_0x2e9d5d(0xff),_0x2e9d5d(0x17a),{'model':_0x2e9d5d(0x73),'path':_0x21579a[_0x2e9d5d(0x115)]['path'],'instruction_len':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0x12a)][_0x2e9d5d(0xc1)],'code_edit_len':_0x21579a['data'][_0x2e9d5d(0xe0)]['length'],'original_code_len':_0x4a67e4?.['length']??0x0,'dry_run':_0x21579a['data'][_0x2e9d5d(0xc4)]});const _0x2ca5e6=Date[_0x2e9d5d(0x19b)](),_0x5aeb1a=await executeEditFile({'target_filepath':_0x2af774,'code_edit':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0xe0)],'instruction':_0x21579a['data'][_0x2e9d5d(0x12a)]},{'morphApiKey':_0x553fc4,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x45d0f5,'autoWrite':!_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0xc4)],'generateUdiff':![],'debug':![]}),_0x32a4ca=Date[_0x2e9d5d(0x19b)]()-_0x2ca5e6;_0x5dee11=_0x5aeb1a['completionId'];if(!_0x5aeb1a[_0x2e9d5d(0x158)])throw new Error(_0x5aeb1a[_0x2e9d5d(0xd3)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x4da240=_0x5aeb1a[_0x2e9d5d(0x7e)],_0x559269=_0x2e9d5d(0x185)+_0x4da240['linesAdded']+_0x2e9d5d(0x184)+_0x4da240[_0x2e9d5d(0x191)]+',\x20modified\x20'+_0x4da240['linesModified'];logger[_0x2e9d5d(0x79)](_0x2e9d5d(0xff),'tool_call_complete',{'tool':_0x2e9d5d(0x14a),'success':!![],'latency_ms':Date[_0x2e9d5d(0x19b)]()-_0xfa9457,'edit_latency_ms':_0x32a4ca,'changes':{'added':_0x4da240[_0x2e9d5d(0xa4)],'removed':_0x4da240['linesRemoved'],'modified':_0x4da240[_0x2e9d5d(0x1a0)]},'completion_id':_0x5dee11});if(_0x21579a['data'][_0x2e9d5d(0xc4)])return{'content':[{'type':'text','text':_0x2e9d5d(0x129)+(_0x3faaeb?'':_0x2e9d5d(0x7f))+':\x20'+_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0x12a)]+_0x2e9d5d(0xbe)+_0x559269+_0x2e9d5d(0x84)+_0x21579a[_0x2e9d5d(0x115)]['path']+'.'}]};return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0x14e)+(_0x3faaeb?_0x2e9d5d(0xef):_0x2e9d5d(0xf3))+':\x20'+_0x21579a['data'][_0x2e9d5d(0x12a)]+_0x2e9d5d(0xbe)+_0x559269+_0x2e9d5d(0x84)+_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0x146)]+'.'}]};}catch(_0x350d98){const _0x359fdf=handleMorphAPIError(_0x350d98);if(_0x359fdf)return logger[_0x2e9d5d(0xd3)](_0x2e9d5d(0xff),_0x2e9d5d(0x89),{'tool':'edit_file','error':_0x2e9d5d(0x1a3),'latency_ms':Date[_0x2e9d5d(0x19b)]()-_0xfa9457}),_0x359fdf;const _0x2da0c7=_0x350d98 instanceof Error?_0x350d98['message']:String(_0x350d98);return logger[_0x2e9d5d(0xd3)](_0x2e9d5d(0xff),_0x2e9d5d(0x89),{'tool':_0x2e9d5d(0x14a),'error':_0x2da0c7,'path':_0x21579a['data'][_0x2e9d5d(0x146)],'validated_path':_0x38ea19,'latency_ms':Date[_0x2e9d5d(0x19b)]()-_0xfa9457,'stack':_0x350d98 instanceof Error?_0x350d98[_0x2e9d5d(0x15a)]:undefined}),reportMorphError({'error_message':_0x2da0c7,'error_type':_0x350d98 instanceof Error?_0x350d98['constructor']['name']:_0x2e9d5d(0xf7),'context':{'tool':_0x2e9d5d(0x14a),'completion_id':_0x5dee11,'file_path':_0x21579a[_0x2e9d5d(0x115)]['path'],'validated_path':_0x38ea19,'instruction':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0x12a)],'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x2e9d5d(0x73),'dry_run':_0x21579a['data'][_0x2e9d5d(0xc4)],'file_exists':_0x3faaeb,'file_read_error':_0x1598f9,'file_readable':_0x4a67e4!==null,'request_content':{'path':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0x146)],'code_edit':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0xe0)],'instruction':_0x21579a[_0x2e9d5d(0x115)]['instruction'],'original_code':_0x4a67e4!==null?_0x4a67e4['length']>0xc350?_0x4a67e4['substring'](0x0,0xc350)+_0x2e9d5d(0xf2)+_0x4a67e4[_0x2e9d5d(0xc1)]+_0x2e9d5d(0x77):_0x4a67e4:'[could\x20not\x20read\x20file:\x20'+(_0x1598f9||'unknown\x20error')+']','original_code_length':_0x4a67e4?.[_0x2e9d5d(0xc1)]??0x0,'model':MORPH_LARGE_APPLY?_0x2e9d5d(0x8a):_0x2e9d5d(0x73),'dry_run':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0xc4)]}},'stack_trace':_0x350d98 instanceof Error?_0x350d98[_0x2e9d5d(0x15a)]:undefined,'source':_0x2e9d5d(0xc2)})[_0x2e9d5d(0xc9)](()=>{}),{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0x161)+_0x2da0c7}],'isError':!![]};}}case TOOL_NAMES[_0x2e9d5d(0x199)]:{const _0x3970da=WarpGrepArgsSchema[_0x2e9d5d(0x15c)](_0x5998fc);if(!_0x3970da[_0x2e9d5d(0x158)])return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0xc5)+_0x3970da[_0x2e9d5d(0xd3)]}],'isError':!![]};const _0x370c44=_0x46cc63=>{const _0x2e3896=_0x2e9d5d,_0x400199=[];for(const _0x91eaef of _0x46cc63||[]){if(_0x91eaef[_0x2e3896(0x18b)]===_0x2e3896(0x18c)&&Array[_0x2e3896(0xa7)](_0x91eaef[_0x2e3896(0x153)]))for(const _0x47dfb6 of _0x91eaef[_0x2e3896(0x153)]){try{const _0x284f4c=_0x47dfb6[_0x2e3896(0xe6)]?.[_0x2e3896(0xaa)],_0xc7ddf2=JSON[_0x2e3896(0xcb)](_0x47dfb6['function']?.[_0x2e3896(0x7b)]||'{}');if(_0x284f4c===_0x2e3896(0xe2))_0x400199[_0x2e3896(0x19f)](_0x2e3896(0x16d)+_0xc7ddf2[_0x2e3896(0xb0)]+'\x27\x20'+(_0xc7ddf2[_0x2e3896(0x146)]||'.'));else{if(_0x284f4c===_0x2e3896(0x75))_0x400199['push'](_0x2e3896(0x107)+_0xc7ddf2[_0x2e3896(0x146)]);else{if(_0x284f4c==='list_directory')_0x400199['push'](_0x2e3896(0x17b)+(_0xc7ddf2[_0x2e3896(0x17e)]||'.'));else{if(_0x284f4c===_0x2e3896(0x78))_0x400199[_0x2e3896(0x19f)]('glob\x20\x27'+_0xc7ddf2[_0x2e3896(0xb0)]+'\x27\x20'+(_0xc7ddf2['path']||'.'));else _0x284f4c===_0x2e3896(0x181)&&_0x400199['push']('finish');}}}}catch{}}}return _0x400199;},_0x32be53=_0x4c21da=>{const _0x542423=_0x2e9d5d,_0x4ed19d=[];if(!_0x4c21da||!Array[_0x542423(0xa7)](_0x4c21da))return _0x4ed19d;const _0x304cf7=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x542423(0x12c),'tool':_0x542423(0x75)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x542423(0x75)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x542423(0x8f),'tool':_0x542423(0xbf)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x542423(0x168),'tool':_0x542423(0xbf)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x542423(0xdc),'tool':_0x542423(0x75)},{'pattern':/\[SYMLINK\]/,'error_type':_0x542423(0x173),'tool':_0x542423(0x75)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':_0x542423(0x75)},{'pattern':/symbolic link/,'error_type':_0x542423(0x173),'tool':_0x542423(0x75)},{'pattern':/Error reading file:/,'error_type':_0x542423(0x101),'tool':_0x542423(0x75)},{'pattern':/status="error"/,'error_type':_0x542423(0x96),'tool':_0x542423(0x156)}];let _0xdd88c8=0x0;for(const _0xe16ba6 of _0x4c21da){_0xe16ba6['role']===_0x542423(0x18c)&&Array['isArray'](_0xe16ba6['tool_calls'])&&_0xdd88c8++;const _0x54d0b8=_0xe16ba6[_0x542423(0x87)];if((_0xe16ba6[_0x542423(0x18b)]===_0x542423(0xc7)||_0xe16ba6['role']===_0x542423(0x11f))&&_0x54d0b8&&typeof _0x54d0b8===_0x542423(0x135))for(const {pattern:_0x367b3f,error_type:_0x261595,tool:_0x42040a}of _0x304cf7){const _0x36f6e1=_0x54d0b8[_0x542423(0x10c)](new RegExp(_0x367b3f[_0x542423(0x11b)],'g'));if(_0x36f6e1)for(const _0x2b8b56 of _0x36f6e1){const _0x14dab7=_0x54d0b8['indexOf'](_0x2b8b56),_0x279d36=_0x54d0b8[_0x542423(0xbb)](_0x14dab7,Math['min'](_0x14dab7+0xc8,_0x54d0b8[_0x542423(0xc1)]));_0x4ed19d[_0x542423(0x19f)]({'tool':_0x42040a,'error_type':_0x261595,'error_message':_0x279d36[_0x542423(0x16e)]('\x0a')[0x0],'turn':_0xdd88c8});}}}return _0x4ed19d;};try{const _0x34161c=a0_0xe64fd4[_0x2e9d5d(0x133)](_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)]),_0x4fbcfe=_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x177)],_0x2c62a8=_0x4fbcfe==='node_modules'?{'allowNames':[_0x2e9d5d(0x10d)]}:undefined,_0x1fbb17=new LocalRipgrepProvider(_0x34161c,undefined,_0x2c62a8);logger[_0x2e9d5d(0x79)]('MCP',_0x2e9d5d(0x12f),{'type':_0x2e9d5d(0xf6),'repo_root':_0x34161c,'search_type':_0x4fbcfe||_0x2e9d5d(0xed)}),logger['debug'](_0x2e9d5d(0xff),_0x2e9d5d(0x111),{'query':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'repo_root':_0x34161c,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0xbc9c1=Date[_0x2e9d5d(0x19b)](),_0xfbbb2=await runWarpGrep({'searchTerm':_0x3970da[_0x2e9d5d(0x115)]['search_string'],'repoRoot':_0x34161c,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x1fbb17,'search_type':_0x4fbcfe}),_0x134c62=Date['now']()-_0xbc9c1,_0x43d0d4=_0xfbbb2['finish']?.[_0x2e9d5d(0x72)]?.[_0x2e9d5d(0xce)]?.[_0x2e9d5d(0xc1)]??0x0;logger['debug'](_0x2e9d5d(0xff),_0x2e9d5d(0x140),{'termination':_0xfbbb2['terminationReason'],'turns':_0xfbbb2[_0x2e9d5d(0x149)]?.[_0x2e9d5d(0x116)]??0x0,'files_found':_0x43d0d4,'latency_ms':_0x134c62});const _0xc3d9cb=_0x32be53(_0xfbbb2[_0x2e9d5d(0x100)]);_0xc3d9cb[_0x2e9d5d(0xc1)]>0x0&&reportMorphError({'error_message':_0x2e9d5d(0x71)+_0xc3d9cb[_0x2e9d5d(0xc1)]+'\x20error(s)','error_type':_0x2e9d5d(0x94),'level':_0x2e9d5d(0x11d),'tool':_0x2e9d5d(0x151),'context':{'repo_path':_0x3970da['data'][_0x2e9d5d(0xd8)],'query':_0x3970da[_0x2e9d5d(0x115)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0xfbbb2['terminationReason'],'sub_tool_errors':_0xc3d9cb,'timings':_0xfbbb2[_0x2e9d5d(0x149)],'tool_calls':_0x370c44(_0xfbbb2[_0x2e9d5d(0x100)]),'messages':_0xfbbb2['messages']?.['map'](_0xb210fa=>({'role':_0xb210fa[_0x2e9d5d(0x18b)],'content':_0xb210fa[_0x2e9d5d(0x87)],..._0xb210fa[_0x2e9d5d(0x153)]?{'tool_calls':_0xb210fa[_0x2e9d5d(0x153)][_0x2e9d5d(0xc1)]}:{},..._0xb210fa[_0x2e9d5d(0xab)]?{'tool_call_id':_0xb210fa[_0x2e9d5d(0xab)]}:{}}))},'source':_0x2e9d5d(0xc2)})[_0x2e9d5d(0xc9)](()=>{});let _0x251a2e='';if(_0xfbbb2['terminationReason']===_0x2e9d5d(0x122)&&_0xfbbb2[_0x2e9d5d(0x181)]?.[_0x2e9d5d(0x72)]?.[_0x2e9d5d(0xce)]){const _0x36dbba=_0xfbbb2['finish'][_0x2e9d5d(0x72)][_0x2e9d5d(0xce)];if(_0x36dbba['length']===0x0)return _0x251a2e=_0xfbbb2[_0x2e9d5d(0x181)][_0x2e9d5d(0x14d)]||_0x2e9d5d(0x109),{'content':[{'type':'text','text':_0x251a2e}]};const _0x2249fb=[],_0x51166b=[_0x2e9d5d(0x97)];for(const _0x25a109 of _0xfbbb2[_0x2e9d5d(0x100)]){if(_0x25a109['role']===_0x2e9d5d(0x18c)&&Array[_0x2e9d5d(0xa7)](_0x25a109[_0x2e9d5d(0x153)]))for(const _0x22f49f of _0x25a109[_0x2e9d5d(0x153)]){try{const _0x22e63d=_0x22f49f['function']?.[_0x2e9d5d(0xaa)],_0x76a51f=JSON['parse'](_0x22f49f[_0x2e9d5d(0xe6)]?.[_0x2e9d5d(0x7b)]||'{}');if(_0x22e63d===_0x2e9d5d(0xe2))_0x51166b[_0x2e9d5d(0x19f)](_0x2e9d5d(0x195)+_0x76a51f[_0x2e9d5d(0xb0)]+_0x2e9d5d(0x147)+(_0x76a51f[_0x2e9d5d(0x146)]||'.')+'`');else{if(_0x22e63d===_0x2e9d5d(0x75))_0x51166b[_0x2e9d5d(0x19f)](_0x2e9d5d(0x179)+_0x76a51f['path']+'`');else{if(_0x22e63d==='list_directory')_0x51166b[_0x2e9d5d(0x19f)](_0x2e9d5d(0x15d)+(_0x76a51f[_0x2e9d5d(0x17e)]||'.')+'`');else _0x22e63d==='glob'&&_0x51166b['push'](_0x2e9d5d(0x165)+_0x76a51f['pattern']+_0x2e9d5d(0xa6)+(_0x76a51f['path']||'.')+'`');}}}catch{}}}_0x2249fb[_0x2e9d5d(0x19f)](_0x51166b[_0x2e9d5d(0xd4)]('\x0a'));const _0x299b50=['',_0x2e9d5d(0x13a)];for(const _0x285a13 of _0x36dbba){if(_0x285a13[_0x2e9d5d(0x95)]==='*')_0x299b50[_0x2e9d5d(0x19f)]('-\x20'+_0x285a13[_0x2e9d5d(0x146)]+':*');else{if(Array[_0x2e9d5d(0xa7)](_0x285a13[_0x2e9d5d(0x95)])){const _0x41b789=_0x285a13[_0x2e9d5d(0x95)][_0x2e9d5d(0xfe)](([_0x1b6cb7,_0x2d9860])=>{if(_0x1b6cb7===_0x2d9860)return''+_0x1b6cb7;return _0x1b6cb7+'-'+_0x2d9860;});_0x299b50[_0x2e9d5d(0x19f)]('-\x20'+_0x285a13[_0x2e9d5d(0x146)]+':'+_0x41b789[_0x2e9d5d(0xd4)](','));}else _0x299b50[_0x2e9d5d(0x19f)]('-\x20'+_0x285a13[_0x2e9d5d(0x146)]+':*');}}_0x299b50['push'](''),_0x2249fb[_0x2e9d5d(0x19f)](_0x299b50[_0x2e9d5d(0xd4)]('\x0a')),_0x2249fb[_0x2e9d5d(0x19f)](_0x2e9d5d(0xea));const _0x3ef800=[],_0x4712e7=[];for(const _0x4327ca of _0x36dbba){let _0x4e68e5=a0_0xe64fd4[_0x2e9d5d(0x133)](_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)],_0x4327ca['path']),_0x16b3c0=null,_0x25e988=null;try{_0x16b3c0=await a0_0xb48a10['readFile'](_0x4e68e5,{'encoding':_0x2e9d5d(0xc0)});}catch(_0x219d84){const _0x7f8da7=fixPathRepetition(_0x4e68e5);if(_0x7f8da7)try{_0x16b3c0=await a0_0xb48a10[_0x2e9d5d(0xc3)](_0x7f8da7,{'encoding':'utf-8'}),_0x4e68e5=_0x7f8da7;}catch{_0x25e988=_0x219d84 instanceof Error?_0x219d84:new Error(String(_0x219d84));}else _0x25e988=_0x219d84 instanceof Error?_0x219d84:new Error(String(_0x219d84));}if(_0x16b3c0!==null){const _0x1c26de=_0x16b3c0['split'](/\r?\n/),_0x5671c7=[];if(_0x4327ca['lines']==='*'||!Array[_0x2e9d5d(0xa7)](_0x4327ca[_0x2e9d5d(0x95)]))for(let _0x34f7e5=0x1;_0x34f7e5<=_0x1c26de['length'];_0x34f7e5++){const _0x575a67=_0x1c26de[_0x34f7e5-0x1];_0x5671c7['push'](_0x34f7e5+'|\x20'+_0x575a67);}else for(const [_0x5e6f2f,_0x4cebf0]of _0x4327ca[_0x2e9d5d(0x95)]){_0x5671c7[_0x2e9d5d(0xc1)]>0x0&&_0x5671c7[_0x2e9d5d(0x19f)]('');for(let _0x304444=_0x5e6f2f;_0x304444<=_0x4cebf0&&_0x304444<=_0x1c26de[_0x2e9d5d(0xc1)];_0x304444++){const _0x4340b2=_0x1c26de[_0x304444-0x1];_0x5671c7[_0x2e9d5d(0x19f)](_0x304444+'|\x20'+_0x4340b2);}}_0x4712e7['push']({'path':_0x4327ca[_0x2e9d5d(0x146)],'content':_0x5671c7[_0x2e9d5d(0xd4)]('\x0a')});}else _0x3ef800[_0x2e9d5d(0x19f)]('<file\x20path=\x22'+_0x4327ca[_0x2e9d5d(0x146)]+_0x2e9d5d(0x148)+(_0x25e988?.[_0x2e9d5d(0x8d)]||_0x2e9d5d(0x80))+_0x2e9d5d(0x1a1));}try{const _0x53336a=await compactFileContexts(_0x4712e7,_0x3970da['data']['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x38c88f of _0x53336a){_0x3ef800[_0x2e9d5d(0x19f)]('<file\x20path=\x22'+_0x38c88f[_0x2e9d5d(0x146)]+_0x2e9d5d(0x7d)+_0x38c88f[_0x2e9d5d(0x87)]+_0x2e9d5d(0x1a1));}}catch(_0x123124){logger[_0x2e9d5d(0x11d)](_0x2e9d5d(0xff),'compaction_failed',{'error':_0x123124 instanceof Error?_0x123124[_0x2e9d5d(0x8d)]:String(_0x123124),'files_count':_0x4712e7['length']});for(const _0x2eab8d of _0x4712e7){_0x3ef800[_0x2e9d5d(0x19f)](_0x2e9d5d(0x157)+_0x2eab8d[_0x2e9d5d(0x146)]+'\x22>\x0a'+_0x2eab8d['content']+_0x2e9d5d(0x1a1));}}_0x2249fb[_0x2e9d5d(0x19f)](_0x3ef800[_0x2e9d5d(0xd4)]('\x0a\x0a')),_0x251a2e=_0x2249fb[_0x2e9d5d(0xd4)]('\x0a');const _0x18cb63=_0xfbbb2['errors']?.[_0x2e9d5d(0x102)](_0x4d6323=>_0x4d6323[_0x2e9d5d(0x8d)]?.[_0x2e9d5d(0x19a)](_0x2e9d5d(0xfb)))||[];if(_0x18cb63[_0x2e9d5d(0xc1)]>0x0){const _0x3de793=_0x18cb63[_0x2e9d5d(0xfe)](_0x2b333a=>_0x2b333a[_0x2e9d5d(0x8d)])['join'](';\x20');reportMorphError({'error_message':_0x3de793,'error_type':_0x2e9d5d(0x117),'context':{'tool':_0x2e9d5d(0x151),'repo_path':_0x3970da[_0x2e9d5d(0x115)]['repo_path'],'query':_0x3970da['data'][_0x2e9d5d(0x192)],'model':'morph-warp-grep-v2.1','termination_reason':_0x2e9d5d(0x145),'error_count':_0x18cb63[_0x2e9d5d(0xc1)],'is_timeout':![],'timings':_0xfbbb2['timings'],'files_attempted':_0x36dbba[_0x2e9d5d(0xfe)](_0x3e33f8=>({'path':_0x3e33f8[_0x2e9d5d(0x146)],'lines':_0x3e33f8[_0x2e9d5d(0x95)]})),'tool_calls':_0x370c44(_0xfbbb2['messages']),'messages':_0xfbbb2[_0x2e9d5d(0x100)]?.[_0x2e9d5d(0xfe)](_0x32ffd7=>({'role':_0x32ffd7[_0x2e9d5d(0x18b)],'content':_0x32ffd7[_0x2e9d5d(0x87)],..._0x32ffd7[_0x2e9d5d(0x153)]?{'tool_calls':_0x32ffd7[_0x2e9d5d(0x153)][_0x2e9d5d(0xc1)]}:{},..._0x32ffd7[_0x2e9d5d(0xab)]?{'tool_call_id':_0x32ffd7[_0x2e9d5d(0xab)]}:{}})),'request_content':{'query':_0x3970da['data'][_0x2e9d5d(0x192)],'repo_path':_0x3970da[_0x2e9d5d(0x115)]['repo_path'],'repoRoot':a0_0xe64fd4[_0x2e9d5d(0x133)](_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)]),'model':_0x2e9d5d(0x112)}},'source':_0x2e9d5d(0xc2)})['catch'](()=>{});}}else{if(_0xfbbb2[_0x2e9d5d(0xe3)]===_0x2e9d5d(0xad)&&_0xfbbb2[_0x2e9d5d(0x136)][_0x2e9d5d(0xc1)]>0x0){const _0x2cf38b=_0xfbbb2['errors'][_0x2e9d5d(0xfe)](_0x5f081b=>_0x5f081b[_0x2e9d5d(0x8d)])[_0x2e9d5d(0xd4)](';\x20');_0x251a2e=_0x2e9d5d(0xd1)+_0x2cf38b;const _0x45131b=_0x2cf38b[_0x2e9d5d(0x176)]()[_0x2e9d5d(0x13b)](_0x2e9d5d(0xf4))||_0x2cf38b[_0x2e9d5d(0x176)]()['includes'](_0x2e9d5d(0x160))||_0x2cf38b['toLowerCase']()[_0x2e9d5d(0x13b)](_0x2e9d5d(0xa3)),_0x5aad2c=_0xfbbb2[_0x2e9d5d(0x181)]?.[_0x2e9d5d(0x72)]?.[_0x2e9d5d(0xce)],_0x86674d=_0xfbbb2['errors'][0x0];reportMorphError({'error_message':_0x2cf38b,'error_type':_0x45131b?'TimeoutError':_0x86674d?.[_0x2e9d5d(0x18a)]?.['name']||_0x2e9d5d(0xbc),'context':{'tool':_0x2e9d5d(0x151),'repo_path':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)],'query':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'model':_0x2e9d5d(0x112),'termination_reason':_0xfbbb2[_0x2e9d5d(0xe3)],'error_count':_0xfbbb2['errors']['length'],'is_timeout':_0x45131b,'timings':_0xfbbb2[_0x2e9d5d(0x149)],'files_attempted':_0x5aad2c?.['map'](_0x1b668e=>({'path':_0x1b668e['path'],'lines':_0x1b668e[_0x2e9d5d(0x95)]})),'tool_calls':_0x370c44(_0xfbbb2[_0x2e9d5d(0x100)]),'messages':_0xfbbb2['messages']?.[_0x2e9d5d(0xfe)](_0xccecfe=>({'role':_0xccecfe[_0x2e9d5d(0x18b)],'content':_0xccecfe[_0x2e9d5d(0x87)],..._0xccecfe[_0x2e9d5d(0x153)]?{'tool_calls':_0xccecfe[_0x2e9d5d(0x153)]['length']}:{},..._0xccecfe[_0x2e9d5d(0xab)]?{'tool_call_id':_0xccecfe['tool_call_id']}:{}})),'request_content':{'query':_0x3970da[_0x2e9d5d(0x115)]['search_string'],'repo_path':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)],'repoRoot':a0_0xe64fd4['resolve'](_0x3970da[_0x2e9d5d(0x115)]['repo_path']),'model':_0x2e9d5d(0x112)}},'stack_trace':_0x86674d?.[_0x2e9d5d(0x15a)]||undefined,'source':_0x2e9d5d(0xc2)})[_0x2e9d5d(0xc9)](()=>{});}else _0x251a2e=_0x2e9d5d(0x194);}return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x251a2e}]};}catch(_0x1094de){const _0x153120=handleMorphAPIError(_0x1094de);if(_0x153120)return logger[_0x2e9d5d(0xd3)](_0x2e9d5d(0xff),'tool_call_error',{'tool':_0x2e9d5d(0x151),'error':_0x2e9d5d(0x1a3),'latency_ms':Date[_0x2e9d5d(0x19b)]()-_0xfa9457}),_0x153120;const _0x2f7eae=_0x1094de instanceof Error?_0x1094de['message']:String(_0x1094de);logger[_0x2e9d5d(0xd3)](_0x2e9d5d(0xff),_0x2e9d5d(0x89),{'tool':'codebase_search','error':_0x2f7eae,'repo_path':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)],'query':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'latency_ms':Date[_0x2e9d5d(0x19b)]()-_0xfa9457});const _0x3736e7=_0x2f7eae[_0x2e9d5d(0x176)]()[_0x2e9d5d(0x13b)]('timeout')||_0x2f7eae[_0x2e9d5d(0x176)]()[_0x2e9d5d(0x13b)]('timed\x20out')||_0x2f7eae[_0x2e9d5d(0x176)]()[_0x2e9d5d(0x13b)]('etimedout')||_0x1094de instanceof Error&&_0x1094de[_0x2e9d5d(0xaa)]===_0x2e9d5d(0xb1);return reportMorphError({'error_message':_0x2f7eae,'error_type':_0x3736e7?_0x2e9d5d(0xb1):_0x1094de instanceof Error?_0x1094de[_0x2e9d5d(0x18a)][_0x2e9d5d(0xaa)]:_0x2e9d5d(0xf7),'context':{'tool':_0x2e9d5d(0x151),'repo_path':_0x3970da['data'][_0x2e9d5d(0xd8)],'query':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'model':'morph-warp-grep-v2.1','is_timeout':_0x3736e7,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'repo_path':_0x3970da['data'][_0x2e9d5d(0xd8)],'repoRoot':a0_0xe64fd4[_0x2e9d5d(0x133)](_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)]),'model':_0x2e9d5d(0x112)}},'stack_trace':_0x1094de instanceof Error?_0x1094de[_0x2e9d5d(0x15a)]:undefined,'source':_0x2e9d5d(0xc2)})['catch'](()=>{}),{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0x159)+_0x2f7eae}],'isError':![]};}}case TOOL_NAMES[_0x2e9d5d(0xee)]:{const _0x4f3ab1=WarpGrepGitHubArgsSchema[_0x2e9d5d(0x15c)](_0x5998fc);if(!_0x4f3ab1['success'])return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0xc5)+_0x4f3ab1['error']}],'isError':!![]};const _0x1d84d9=_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x155)]||_0x4f3ab1['data']['owner_repo'];if(!_0x1d84d9)return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0x10e)}],'isError':!![]};const _0x3e91be=MORPH_API_KEY;if(!_0x3e91be)throw new Error(_0x2e9d5d(0xe4));const _0x3d0e89=Date['now']();logger[_0x2e9d5d(0x79)](_0x2e9d5d(0xff),_0x2e9d5d(0xec),{'identifier':_0x1d84d9,'query':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'branch':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x16c)]});try{const _0x17b766=new WarpGrepClient({'morphApiKey':_0x3e91be,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x357437=await _0x17b766[_0x2e9d5d(0xb8)]({'searchTerm':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'github':_0x1d84d9,'branch':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x16c)]}),_0x1eabc7=Date[_0x2e9d5d(0x19b)]()-_0x3d0e89;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x1eabc7+'ms.\x20Success:\x20'+_0x357437[_0x2e9d5d(0x158)]);const _0x3bbc58=formatResult(_0x357437);return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x3bbc58}]};}catch(_0x2a18d1){const _0xcfe532=handleMorphAPIError(_0x2a18d1);if(_0xcfe532)return _0xcfe532;const _0x50c8ba=Date['now']()-_0x3d0e89,_0x4bfbf=_0x2a18d1 instanceof Error?_0x2a18d1['message']:String(_0x2a18d1);return logMcpStderr(_0x2e9d5d(0x144)+_0x50c8ba+_0x2e9d5d(0xb3),_0x4bfbf),reportMorphError({'error_message':_0x4bfbf,'error_type':_0x2a18d1 instanceof Error?_0x2a18d1['constructor'][_0x2e9d5d(0xaa)]:'UnknownError','context':{'tool':_0x2e9d5d(0x81),'github_url':_0x1d84d9,'search_string':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'branch':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x16c)]},'stack_trace':_0x2a18d1 instanceof Error?_0x2a18d1[_0x2e9d5d(0x15a)]:undefined,'source':_0x2e9d5d(0xc2),'tool':'github_codebase_search','latency_ms':_0x50c8ba})['catch'](()=>{}),{'content':[{'type':'text','text':_0x2e9d5d(0xa2)+_0x4bfbf}],'isError':![]};}}default:throw new Error(_0x2e9d5d(0xda)+_0x9e8515);}}catch(_0x58a80d){const _0x429036=_0x58a80d instanceof Error?_0x58a80d['message']:String(_0x58a80d);return reportMorphError({'error_message':_0x429036,'error_type':_0x58a80d instanceof Error?_0x58a80d[_0x2e9d5d(0x18a)][_0x2e9d5d(0xaa)]:_0x2e9d5d(0xf7),'context':{'tool':_0x9e8515,'arguments':_0x5998fc?JSON[_0x2e9d5d(0xde)](_0x5998fc)['substring'](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x58a80d instanceof Error?_0x58a80d[_0x2e9d5d(0x15a)]:undefined,'source':_0x2e9d5d(0xc2)})[_0x2e9d5d(0xc9)](()=>{}),{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0xd1)+_0x429036}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x33b8d0){const _0x52af14=a0_0x4592e9,_0x2a9325=await getValidRootDirectories(_0x33b8d0);if(_0x2a9325[_0x52af14(0xc1)]>0x0)allowedDirectories=[..._0x2a9325],logMcpStderr(_0x52af14(0x16f)+_0x2a9325[_0x52af14(0xc1)]+_0x52af14(0xdd));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x1f33e2=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x1f33e2&&(allowedDirectories=[_0x1f33e2],logMcpStderr(_0x52af14(0x93)+_0x1f33e2));}catch(_0x445765){logMcpStderr(_0x52af14(0x198)+_0x445765);}}}server[a0_0x4592e9(0xaf)](RootsListChangedNotificationSchema,async()=>{const _0x24bd49=a0_0x4592e9;try{const _0x3b42ba=await server[_0x24bd49(0xf1)]();_0x3b42ba&&'roots'in _0x3b42ba&&await updateAllowedDirectoriesFromRoots(_0x3b42ba[_0x24bd49(0x11a)]);}catch(_0x574574){logMcpStderr(_0x24bd49(0x125),_0x574574 instanceof Error?_0x574574[_0x24bd49(0x8d)]:String(_0x574574));}}),server[a0_0x4592e9(0x85)]=async()=>{const _0x5f4395=a0_0x4592e9,_0x16393c=server['getClientCapabilities']();if(_0x16393c?.[_0x5f4395(0x11a)])try{const _0x3c9995=await server[_0x5f4395(0xf1)]();_0x3c9995&&_0x5f4395(0x11a)in _0x3c9995?await updateAllowedDirectoriesFromRoots(_0x3c9995['roots']):logMcpStderr(_0x5f4395(0xb5));}catch(_0x314ef9){logMcpStderr(_0x5f4395(0x106),_0x314ef9 instanceof Error?_0x314ef9[_0x5f4395(0x8d)]:String(_0x314ef9));}else{if(allowedDirectories[_0x5f4395(0xc1)]>0x0)logMcpStderr(_0x5f4395(0xcd),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x5f4395(0xd0));else throw new Error(_0x5f4395(0x83));}}};function a0_0x3bb1(){const _0x4f0665=['MORPH_API_KEY','timed\x20out','❌\x20Morph\x20Edit\x20Failed:\x20','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','isDirectory','-\x20Glob\x20search\x20`','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.','\x20as\x20allowed\x20directory','RipgrepNotAvailable','text','Workspace\x20mode\x20enabled:\x20Using\x20','2422688MHjtfN','branch','grep\x20\x27','split','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','homedir','WORKSPACE_ROOT','toISOString','SymlinkError','size','Parent\x20directory\x20does\x20not\x20exist:\x20','toLowerCase','search_type','Cargo.toml','-\x20Read\x20file\x20`','api_request_start','list_directory\x20','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','ENABLE_WORKSPACE_MODE','command','\x0aOptions:','pyproject.toml','finish','trim','env',',\x20removed\x20','added\x20','.cursor','morph-mcp','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.','954419aWIrOD','constructor','role','assistant','has','floor','enum','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','linesRemoved','search_string','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','-\x20Grepped\x20\x27','exit','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Warning:\x20Workspace\x20fallback\x20failed:\x20','CODEBASE_SEARCH','startsWith','now','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','PWD','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','push','linesModified','\x0a</file>','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','API\x20error\x20(auth/rate-limit)','array','some','WarpGrep\x20sub-tool\x20errors:\x20','metadata','morph-v3-fast','path_validation_failed','read','morph-','\x20chars)','glob','debug','version','arguments','params','\x22>\x0a','changes','\x20(new\x20file)','Unknown\x20error','github_codebase_search','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','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.','.\x20Path:\x20','oninitialized','Fatal\x20error\x20running\x20server:','content','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','tool_call_error','morph-v3-large','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','file_read_failed','message','realpath','RipgrepError','requiresApiKey','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','slice','Fallback:\x20Using\x20workspace\x20root\x20','SubToolError','lines','ToolException','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','\x22.\x20Known\x20tools:\x20','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','https://morphllm.com/api/error-report','path_validation_start','@morphllm/morphmcp\x20','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','file_read_complete','GitHub\x20search\x20failed:\x20','etimedout','linesAdded','every','`\x20in\x20`','isArray','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.','MORPH_WARP_GREP_TIMEOUT','name','tool_call_id','Error\x20accessing\x20directory\x20','terminated','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','setNotificationHandler','pattern','TimeoutError','--api-key=','ms:','inputSchema','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','context','searchGitHub','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','substring','WarpGrepError','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','.\x20Changes:\x20','grep','utf-8','length','mcp-filesystem','readFile','dryRun','Invalid\x20arguments:\x20','Warning:\x20','tool','basename','catch','Tool\x20\x22','parse','ENOENT','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','files','Max\x20results\x20to\x20return','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Error:\x20','For\x20deletions:\x0a','error','join','tsconfig.json','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','repo_path','package.json','Unknown\x20tool:\x20','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','BinaryFile','\x20valid\x20directories','stringify','2263926osvboG','code_edit','Disabled\x20tools:\x20','grep_search','terminationReason','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','MORPH_LARGE_APPLY','function','sep','37773YFUOWH','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Here\x20is\x20the\x20content\x20of\x20files:\x0a','optional','github_search_start','default','GITHUB_CODEBASE_SEARCH','Applied','--api-key','listRoots','\x0a...\x20(truncated,\x20total:\x20','Created\x20File','timeout','Failed\x20to\x20read\x20file:\x20','LocalRipgrepProvider','UnknownError','389992ayQvKu','status','boolean','File\x20read\x20error:','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','map','MCP','messages','ReadError','filter','object','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','DISABLED_TOOLS','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','read\x20','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','connect','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','match','node_modules','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','Bearer\x20','argv','warp_grep_start','morph-warp-grep-v2.1','code','api-key','data','turns','FileReadError','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','roots','source','--help','warn','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','user','108zPCjZz','setRequestHandler','completed','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','Failed\x20to\x20request\x20roots\x20from\x20client:','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','8225623ddzzSR','target_file','Morph\x20Edit\x20Preview','instruction','Preview\x20changes\x20without\x20applying\x20them.','FileNotFound','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','post','provider_created','--version','\x20is\x20not\x20a\x20directory','response','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.','string','errors','../package.json','Repository\x20identifier','\x20-\x20','Relevant\x20context\x20found:','includes','Rules:\x0a','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Tool\x20','sk-','warp_grep_complete','all','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','instructions','[github_codebase_search]\x20Failed\x20in\x20','completed_with_file_errors','path','\x27\x20in\x20`','\x22>\x0aError\x20reading\x20file:\x20','timings','edit_file','EDIT_FILE','describe','payload','Morph\x20Edit\x20','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','.git','codebase_search','dirname','tool_calls','1671900tAiZwb','github_url','unknown','<file\x20path=\x22','success','Error\x20running\x20fast\x20context\x20search:\x20','stack','log','safeParse','-\x20Listed\x20directory\x20`','tool_call_received'];a0_0x3bb1=function(){return _0x4f0665;};return a0_0x3bb1();}async function runServer(){const _0x5ce72e=a0_0x4592e9,_0x507217=new StdioServerTransport();await server[_0x5ce72e(0x10a)](_0x507217),logMcpStderr(_0x5ce72e(0xd7)),allowedDirectories['length']===0x0&&logMcpStderr(_0x5ce72e(0x126));}runServer()[a0_0x4592e9(0xc9)](_0x20cd4e=>{const _0xd49a7f=a0_0x4592e9;logMcpStderr(_0xd49a7f(0x86),_0x20cd4e),process['exit'](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var a1_0x200d05=a1_0x5337;(function(_0xe4d882,_0x48cbe0){var _0x1458db=a1_0x5337,_0x262525=_0xe4d882();while(!![]){try{var _0x28c09b=-parseInt(_0x1458db(0x8d))/0x1*(-parseInt(_0x1458db(0x88))/0x2)+-parseInt(_0x1458db(0x8c))/0x3+-parseInt(_0x1458db(0x8e))/0x4*(-parseInt(_0x1458db(0x99))/0x5)+parseInt(_0x1458db(0x91))/0x6*(parseInt(_0x1458db(0x93))/0x7)+parseInt(_0x1458db(0x92))/0x8*(parseInt(_0x1458db(0x8b))/0x9)+-parseInt(_0x1458db(0x96))/0xa+parseInt(_0x1458db(0x95))/0xb;if(_0x28c09b===_0x48cbe0)break;else _0x262525['push'](_0x262525['shift']());}catch(_0x2a6463){_0x262525['push'](_0x262525['shift']());}}}(a1_0x5757,0xe2ff1));import a1_0x10e341 from'os';import{logger}from'./logger.js';function a1_0x5757(){var _0x39d2ed=['2TpvqzK','20rsWWnH','Windows','error','9567438aMkWca','334816crPDAG','7BtUtso','win32','322729HLTsEN','12051740nsHZkW','info','map','424465KJTAFU','21006srbSXK','platform','darwin','342hfaZmC','4574424cCQAHM'];a1_0x5757=function(){return _0x39d2ed;};return a1_0x5757();}export function getOperatingSystemType(_0x37fb7b=a1_0x10e341[a1_0x200d05(0x89)]()){var _0x3b085a=a1_0x200d05;switch(_0x37fb7b){case _0x3b085a(0x8a):return'macOS';case _0x3b085a(0x94):return _0x3b085a(0x8f);case'linux':return'Linux';default:return'Unknown';}}export function formatMcpLogMessage(_0x287f54,_0x146ce9=a1_0x10e341[a1_0x200d05(0x89)]()){return'[os='+getOperatingSystemType(_0x146ce9)+']\x20'+_0x287f54;}function a1_0x5337(_0x57840d,_0x2d5485){_0x57840d=_0x57840d-0x88;var _0x5757a1=a1_0x5757();var _0x533718=_0x5757a1[_0x57840d];return _0x533718;}export function logMcpStderr(_0x1188fd,..._0x604ba6){var _0x3aeba9=a1_0x200d05;console[_0x3aeba9(0x90)](formatMcpLogMessage(_0x1188fd),..._0x604ba6),logger[_0x3aeba9(0x97)]('MCP',_0x1188fd,_0x604ba6['length']?{'args':_0x604ba6[_0x3aeba9(0x98)](_0x1e7111=>String(_0x1e7111))}:undefined);}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a2_0x5eb223=a2_0x1c83;function a2_0x1c83(_0x21bba4,_0x4c5079){_0x21bba4=_0x21bba4-0x13a;const _0x55d9cc=a2_0x55d9();let _0x1c8366=_0x55d9cc[_0x21bba4];return _0x1c8366;}(function(_0x5e4df3,_0xd9ca69){const _0x3d13fb=a2_0x1c83,_0x284ff4=_0x5e4df3();while(!![]){try{const _0x13221a=-parseInt(_0x3d13fb(0x147))/0x1*(parseInt(_0x3d13fb(0x150))/0x2)+parseInt(_0x3d13fb(0x146))/0x3+parseInt(_0x3d13fb(0x149))/0x4*(parseInt(_0x3d13fb(0x143))/0x5)+parseInt(_0x3d13fb(0x13e))/0x6*(parseInt(_0x3d13fb(0x141))/0x7)+-parseInt(_0x3d13fb(0x14a))/0x8+parseInt(_0x3d13fb(0x153))/0x9*(parseInt(_0x3d13fb(0x142))/0xa)+-parseInt(_0x3d13fb(0x140))/0xb;if(_0x13221a===_0xd9ca69)break;else _0x284ff4['push'](_0x284ff4['shift']());}catch(_0x3b4f50){_0x284ff4['push'](_0x284ff4['shift']());}}}(a2_0x55d9,0xa19ba));import{createWriteStream}from'fs';class MorphLogger{[a2_0x5eb223(0x14b)];['fileStream'];constructor(){const _0x2f81b8=a2_0x5eb223;this[_0x2f81b8(0x14b)]=process[_0x2f81b8(0x13c)][_0x2f81b8(0x154)]==='1'||!!process[_0x2f81b8(0x13c)][_0x2f81b8(0x13a)];const _0x12c7fe=process[_0x2f81b8(0x13c)][_0x2f81b8(0x13a)];this[_0x2f81b8(0x14c)]=_0x12c7fe?createWriteStream(_0x12c7fe,{'flags':'a'}):null;}[a2_0x5eb223(0x14f)](_0x5a0cc6,_0x124958,_0x341d1e){const _0x3f89ee=a2_0x5eb223;this[_0x3f89ee(0x152)](_0x3f89ee(0x14f),_0x5a0cc6,_0x124958,_0x341d1e);}[a2_0x5eb223(0x148)](_0x12d86f,_0x229f6c,_0x300602){const _0x3e1deb=a2_0x5eb223;this[_0x3e1deb(0x152)](_0x3e1deb(0x148),_0x12d86f,_0x229f6c,_0x300602);}[a2_0x5eb223(0x13d)](_0x2f3ae8,_0x22f1ca,_0x41ff3c){const _0xd349c=a2_0x5eb223;this[_0xd349c(0x152)](_0xd349c(0x13d),_0x2f3ae8,_0x22f1ca,_0x41ff3c);}[a2_0x5eb223(0x151)](_0x4c9638,_0xd6a138,_0x15098f){const _0x1b61c6=a2_0x5eb223;this['_log'](_0x1b61c6(0x151),_0x4c9638,_0xd6a138,_0x15098f);}[a2_0x5eb223(0x13f)](){const _0x3b271d=a2_0x5eb223;this[_0x3b271d(0x14b)]=!![];}get[a2_0x5eb223(0x14e)](){const _0x39241c=a2_0x5eb223;return this[_0x39241c(0x14b)];}['_log'](_0x2a7b41,_0xeb364a,_0x3a3c4b,_0x13c9ed){const _0xfc757a=a2_0x5eb223;if(_0x2a7b41!==_0xfc757a(0x151)&&!this['enabled'])return;const _0x56aced=new Date()[_0xfc757a(0x145)](),_0x540b54='['+_0x56aced+_0xfc757a(0x144)+_0x2a7b41[_0xfc757a(0x13b)]()+_0xfc757a(0x144)+_0xeb364a+']';console[_0xfc757a(0x151)](_0x13c9ed?_0x540b54+'\x20'+_0x3a3c4b+'\x20'+JSON['stringify'](_0x13c9ed):_0x540b54+'\x20'+_0x3a3c4b),this[_0xfc757a(0x14c)]?.['write'](JSON[_0xfc757a(0x14d)]({'ts':_0x56aced,'level':_0x2a7b41,'component':_0xeb364a,'msg':_0x3a3c4b,..._0x13c9ed&&{'data':_0x13c9ed}})+'\x0a');}}export const logger=new MorphLogger();function a2_0x55d9(){const _0x251fa2=['toUpperCase','env','warn','12414ichnuc','enable','12362691AcWlXr','4319gLfxmd','2368150qwOGcT','70KfmGfM',']\x20[','toISOString','1480551SamCcX','19560KnxMjd','info','166636EFxvaY','4310752xDuIgq','enabled','fileStream','stringify','isEnabled','debug','124gieDiR','error','_log','45ckSGzR','MORPH_DEBUG','MORPH_LOG_FILE'];a2_0x55d9=function(){return _0x251fa2;};return a2_0x55d9();}
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x25d367,_0x371644){const _0xa762cb=a3_0x434d,_0x46de20=_0x25d367();while(!![]){try{const _0x8478f2=-parseInt(_0xa762cb(0x1a1))/0x1+parseInt(_0xa762cb(0x1b1))/0x2+parseInt(_0xa762cb(0x1b2))/0x3+-parseInt(_0xa762cb(0x1ac))/0x4*(-parseInt(_0xa762cb(0x1b0))/0x5)+parseInt(_0xa762cb(0x1ad))/0x6*(parseInt(_0xa762cb(0x1af))/0x7)+-parseInt(_0xa762cb(0x1a3))/0x8+parseInt(_0xa762cb(0x1a7))/0x9;if(_0x8478f2===_0x371644)break;else _0x46de20['push'](_0x46de20['shift']());}catch(_0x41f09d){_0x46de20['push'](_0x46de20['shift']());}}}(a3_0x396e,0x424e0));import a3_0x45f54f from'path';function a3_0x396e(){const _0x1f1510=['1023280fVHAvJ','187682WQtwIz','210525iiOIsT','trim','charAt','105865UYBHIT','replace','4256808LDIuhv','slice','toUpperCase','test','323334SJefCl','match','startsWith','/mnt/','substring','8ICvBpx','48iqNVwa','homedir','262759LGVuEU'];a3_0x396e=function(){return _0x1f1510;};return a3_0x396e();}import a3_0xc4cd2f from'os';export function convertToWindowsPath(_0x2edad7){const _0x3987d7=a3_0x434d;if(_0x2edad7[_0x3987d7(0x1a9)](_0x3987d7(0x1aa))){const _0x58fc4a=_0x2edad7[_0x3987d7(0x1a0)](0x5)[_0x3987d7(0x1a5)](),_0x28987a=_0x2edad7[_0x3987d7(0x1a4)](0x6)[_0x3987d7(0x1a2)](/\//g,'\x5c');return _0x58fc4a+':'+_0x28987a;}if(_0x2edad7['match'](/^\/[a-zA-Z]\//)){const _0xaeb04=_0x2edad7[_0x3987d7(0x1a0)](0x1)[_0x3987d7(0x1a5)](),_0x14815f=_0x2edad7['slice'](0x2)[_0x3987d7(0x1a2)](/\//g,'\x5c');return _0xaeb04+':'+_0x14815f;}if(_0x2edad7[_0x3987d7(0x1a8)](/^[a-zA-Z]:/))return _0x2edad7[_0x3987d7(0x1a2)](/\//g,'\x5c');return _0x2edad7;}function a3_0x434d(_0x3550bc,_0x4a9f47){_0x3550bc=_0x3550bc-0x1a0;const _0x396e35=a3_0x396e();let _0x434d54=_0x396e35[_0x3550bc];return _0x434d54;}export function normalizePath(_0x365b37){const _0x10ab4d=a3_0x434d;_0x365b37=_0x365b37[_0x10ab4d(0x1b3)]()[_0x10ab4d(0x1a2)](/^["']|["']$/g,'');const _0x401da1=_0x365b37[_0x10ab4d(0x1a9)]('/')&&!_0x365b37['match'](/^\/mnt\/[a-z]\//i)&&!_0x365b37['match'](/^\/[a-zA-Z]\//);if(_0x401da1)return _0x365b37[_0x10ab4d(0x1a2)](/\/+/g,'/')[_0x10ab4d(0x1a2)](/\/+$/,'');_0x365b37=convertToWindowsPath(_0x365b37);if(_0x365b37[_0x10ab4d(0x1a9)]('\x5c\x5c')){let _0x31574b=_0x365b37;_0x31574b=_0x31574b[_0x10ab4d(0x1a2)](/^\\{2,}/,'\x5c\x5c');const _0x5d64e9=_0x31574b[_0x10ab4d(0x1ab)](0x2)[_0x10ab4d(0x1a2)](/\\\\/g,'\x5c');_0x365b37='\x5c\x5c'+_0x5d64e9;}else _0x365b37=_0x365b37[_0x10ab4d(0x1a2)](/\\\\/g,'\x5c');let _0x2ffb5a=a3_0x45f54f['normalize'](_0x365b37);_0x365b37['startsWith']('\x5c\x5c')&&!_0x2ffb5a[_0x10ab4d(0x1a9)]('\x5c\x5c')&&(_0x2ffb5a='\x5c'+_0x2ffb5a);if(_0x2ffb5a[_0x10ab4d(0x1a8)](/^[a-zA-Z]:/)){let _0x3ca0b7=_0x2ffb5a['replace'](/\//g,'\x5c');return/^[a-z]:/[_0x10ab4d(0x1a6)](_0x3ca0b7)&&(_0x3ca0b7=_0x3ca0b7[_0x10ab4d(0x1a0)](0x0)[_0x10ab4d(0x1a5)]()+_0x3ca0b7[_0x10ab4d(0x1a4)](0x1)),_0x3ca0b7;}return _0x2ffb5a[_0x10ab4d(0x1a2)](/\//g,'\x5c');}export function expandHome(_0x284a7d){const _0x1342e5=a3_0x434d;if(_0x284a7d[_0x1342e5(0x1a9)]('~/')||_0x284a7d==='~')return a3_0x45f54f['join'](a3_0xc4cd2f[_0x1342e5(0x1ae)](),_0x284a7d[_0x1342e5(0x1a4)](0x1));return _0x284a7d;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x49fac2,_0x4a2e6f){const _0x3fd6fc=a4_0x4e33,_0x938799=_0x49fac2();while(!![]){try{const _0x1902ea=-parseInt(_0x3fd6fc(0xd6))/0x1+-parseInt(_0x3fd6fc(0xd7))/0x2*(parseInt(_0x3fd6fc(0xd2))/0x3)+parseInt(_0x3fd6fc(0xc8))/0x4+-parseInt(_0x3fd6fc(0xcc))/0x5+parseInt(_0x3fd6fc(0xc7))/0x6+-parseInt(_0x3fd6fc(0xd4))/0x7*(-parseInt(_0x3fd6fc(0xcf))/0x8)+parseInt(_0x3fd6fc(0xca))/0x9*(parseInt(_0x3fd6fc(0xc6))/0xa);if(_0x1902ea===_0x4a2e6f)break;else _0x938799['push'](_0x938799['shift']());}catch(_0x26c7e3){_0x938799['push'](_0x938799['shift']());}}}(a4_0x2eba,0xb9ae2));function a4_0x4e33(_0xb87464,_0xe8a0c1){_0xb87464=_0xb87464-0xc4;const _0x2eba48=a4_0x2eba();let _0x4e33fa=_0x2eba48[_0xb87464];return _0x4e33fa;}import a4_0xc07f1b from'path';export function isPathWithinAllowedDirectories(_0x529982,_0x1156ae){const _0x6182e4=a4_0x4e33;if(typeof _0x529982!==_0x6182e4(0xd3)||!Array[_0x6182e4(0xc9)](_0x1156ae))return![];if(!_0x529982||_0x1156ae[_0x6182e4(0xcb)]===0x0)return![];if(_0x529982[_0x6182e4(0xd1)]('\x00'))return![];let _0x2984f2;try{_0x2984f2=a4_0xc07f1b[_0x6182e4(0xd0)](a4_0xc07f1b[_0x6182e4(0xc4)](_0x529982));}catch{return![];}if(!a4_0xc07f1b['isAbsolute'](_0x2984f2))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x1156ae[_0x6182e4(0xcd)](_0x340f05=>{const _0x37fe56=_0x6182e4;if(typeof _0x340f05!==_0x37fe56(0xd3)||!_0x340f05)return![];if(_0x340f05[_0x37fe56(0xd1)]('\x00'))return![];let _0x213913;try{_0x213913=a4_0xc07f1b[_0x37fe56(0xd0)](a4_0xc07f1b[_0x37fe56(0xc4)](_0x340f05));}catch{return![];}if(!a4_0xc07f1b[_0x37fe56(0xce)](_0x213913))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0x2984f2===_0x213913)return!![];if(_0x213913===a4_0xc07f1b[_0x37fe56(0xd5)])return _0x2984f2[_0x37fe56(0xc5)](a4_0xc07f1b[_0x37fe56(0xd5)]);return _0x2984f2[_0x37fe56(0xc5)](_0x213913+a4_0xc07f1b[_0x37fe56(0xd5)]);});}function a4_0x2eba(){const _0x112328=['1656QLUsyj','resolve','includes','822uiLPzh','string','17556RAtucM','sep','349037HUVstr','284eeRsMj','normalize','startsWith','40rLaRQY','7279692KSMOqt','1869384oKHVka','isArray','673011CJISmr','length','6752045EfcYgm','some','isAbsolute'];a4_0x2eba=function(){return _0x112328;};return a4_0x2eba();}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x23cc86,_0x3fa931){const _0x5c97ec=a5_0x50e3,_0xb4c085=_0x23cc86();while(!![]){try{const _0x527495=-parseInt(_0x5c97ec(0x92))/0x1+-parseInt(_0x5c97ec(0x90))/0x2*(parseInt(_0x5c97ec(0x84))/0x3)+-parseInt(_0x5c97ec(0x7a))/0x4+-parseInt(_0x5c97ec(0x81))/0x5*(-parseInt(_0x5c97ec(0x8c))/0x6)+-parseInt(_0x5c97ec(0x93))/0x7*(-parseInt(_0x5c97ec(0x83))/0x8)+parseInt(_0x5c97ec(0x8e))/0x9*(-parseInt(_0x5c97ec(0x7f))/0xa)+parseInt(_0x5c97ec(0x8d))/0xb;if(_0x527495===_0x3fa931)break;else _0xb4c085['push'](_0xb4c085['shift']());}catch(_0x45aa33){_0xb4c085['push'](_0xb4c085['shift']());}}}(a5_0x5a85,0x24b73));function a5_0x50e3(_0x574dab,_0x324db1){_0x574dab=_0x574dab-0x7a;const _0x5a85e1=a5_0x5a85();let _0x50e375=_0x5a85e1[_0x574dab];return _0x50e375;}function a5_0x5a85(){const _0x617ff4=['Skipping\x20invalid\x20directory:\x20','Skipping\x20','10eNqYFH','isDirectory','5rRWVRM','\x20due\x20to\x20error:\x20','56NemjdM','44907lscUDm','stat','file://','message','join','uri','startsWith','resolve','366186ZNxwYx','5965828awYsfH','224730GNGzTP','realpath','38EtQSjW','push','172240QyDzXV','250901tKjQQj','889088kjNcSf','slice','invalid\x20path\x20or\x20inaccessible'];a5_0x5a85=function(){return _0x617ff4;};return a5_0x5a85();}import{promises as a5_0x140cc3}from'fs';import a5_0x9965a9 from'path';import a5_0x4e8f41 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x6e9b3f){const _0x4e5ed1=a5_0x50e3;try{const _0x39f785=_0x6e9b3f['startsWith'](_0x4e5ed1(0x86))?_0x6e9b3f[_0x4e5ed1(0x7b)](0x7):_0x6e9b3f,_0x549d2b=_0x39f785[_0x4e5ed1(0x8a)]('~/')||_0x39f785==='~'?a5_0x9965a9[_0x4e5ed1(0x88)](a5_0x4e8f41['homedir'](),_0x39f785['slice'](0x1)):_0x39f785,_0x500522=a5_0x9965a9[_0x4e5ed1(0x8b)](_0x549d2b),_0x3bfa9d=await a5_0x140cc3[_0x4e5ed1(0x8f)](_0x500522);return normalizePath(_0x3bfa9d);}catch{return null;}}function formatDirectoryError(_0xba22c3,_0x1ed548,_0x475b58){const _0x19a1e3=a5_0x50e3;if(_0x475b58)return _0x19a1e3(0x7e)+_0x475b58+':\x20'+_0xba22c3;const _0x2c8382=_0x1ed548 instanceof Error?_0x1ed548[_0x19a1e3(0x87)]:String(_0x1ed548);return _0x19a1e3(0x7d)+_0xba22c3+_0x19a1e3(0x82)+_0x2c8382;}export async function getValidRootDirectories(_0xffcd0f){const _0x29686b=a5_0x50e3,_0x31ef8b=[];for(const _0x148e9d of _0xffcd0f){const _0x2f9a63=await parseRootUri(_0x148e9d[_0x29686b(0x89)]);if(!_0x2f9a63){logMcpStderr(formatDirectoryError(_0x148e9d[_0x29686b(0x89)],undefined,_0x29686b(0x7c)));continue;}try{const _0x4b67e4=await a5_0x140cc3[_0x29686b(0x85)](_0x2f9a63);_0x4b67e4[_0x29686b(0x80)]()?_0x31ef8b[_0x29686b(0x91)](_0x2f9a63):logMcpStderr(formatDirectoryError(_0x2f9a63,undefined,'non-directory\x20root'));}catch(_0x299896){logMcpStderr(formatDirectoryError(_0x2f9a63,_0x299896));}}return _0x31ef8b;}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a6_0x491d(_0x22492d,_0x3a48bf){_0x22492d=_0x22492d-0x15f;const _0x25160c=a6_0x2516();let _0x491d21=_0x25160c[_0x22492d];return _0x491d21;}const a6_0xa656f2=a6_0x491d;(function(_0x32daba,_0x1e75cc){const _0x452e1c=a6_0x491d,_0x281f1d=_0x32daba();while(!![]){try{const _0x5697b3=parseInt(_0x452e1c(0x16c))/0x1*(parseInt(_0x452e1c(0x160))/0x2)+-parseInt(_0x452e1c(0x165))/0x3+-parseInt(_0x452e1c(0x167))/0x4*(-parseInt(_0x452e1c(0x16b))/0x5)+-parseInt(_0x452e1c(0x168))/0x6*(parseInt(_0x452e1c(0x15f))/0x7)+parseInt(_0x452e1c(0x161))/0x8+-parseInt(_0x452e1c(0x169))/0x9+-parseInt(_0x452e1c(0x166))/0xa*(-parseInt(_0x452e1c(0x16a))/0xb);if(_0x5697b3===_0x1e75cc)break;else _0x281f1d['push'](_0x281f1d['shift']());}catch(_0x991790){_0x281f1d['push'](_0x281f1d['shift']());}}}(a6_0x2516,0x36339));export const TOOL_NAMES={'EDIT_FILE':a6_0xa656f2(0x164),'CODEBASE_SEARCH':a6_0xa656f2(0x162),'GITHUB_CODEBASE_SEARCH':'github_codebase_search'};export const ALL_TOOL_NAMES=Object[a6_0xa656f2(0x163)](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);function a6_0x2516(){const _0x3cba40=['7ZsJIrD','4awZXFm','3051504fdmgfo','codebase_search','values','edit_file','439776WWekZm','60VeZoqF','4KqFKtI','2310234LImiyC','2360133XHgDVw','610874hRibur','477475RevfsC','102870leoTwO'];a6_0x2516=function(){return _0x3cba40;};return a6_0x2516();}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.172",
|
|
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.168",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|