@morphllm/morphmcp 0.8.191 → 0.8.193
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_0x20de6a=a0_0x2c97;(function(_0x1d7fbd,_0x10f63e){const _0x11bfa5=a0_0x2c97,_0x56aba2=_0x1d7fbd();while(!![]){try{const _0x90c3eb=parseInt(_0x11bfa5(0x226))/0x1*(-parseInt(_0x11bfa5(0x259))/0x2)+-parseInt(_0x11bfa5(0x290))/0x3+-parseInt(_0x11bfa5(0x210))/0x4*(-parseInt(_0x11bfa5(0x274))/0x5)+parseInt(_0x11bfa5(0x2a3))/0x6*(parseInt(_0x11bfa5(0x2da))/0x7)+parseInt(_0x11bfa5(0x238))/0x8+-parseInt(_0x11bfa5(0x223))/0x9+parseInt(_0x11bfa5(0x239))/0xa*(-parseInt(_0x11bfa5(0x250))/0xb);if(_0x90c3eb===_0x10f63e)break;else _0x56aba2['push'](_0x56aba2['shift']());}catch(_0x23f2c3){_0x56aba2['push'](_0x56aba2['shift']());}}}(a0_0x3cd6,0xe60ce));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_0x8299f from'fs/promises';function a0_0x3cd6(){const _0x2ba3ed=['No\x20relevant\x20code\x20found\x20for\x20the\x20query.','toLowerCase','MORPH_WARP_GREP_TIMEOUT','warn','\x0aExamples:','node_modules','stat','Fatal\x20error\x20running\x20server:','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','WORKSPACE_ROOT','startsWith','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','connect','Error\x20accessing\x20directory\x20','tool','glob','SymlinkError','WarpGrepError','Failed\x20to\x20read\x20file:\x20','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.','linesRemoved','4745442eDrJYL','source','has','sep','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','tool_call_error','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','match','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','function','--api-key=','application/json','list_directory','exit','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','listRoots','default','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','edit','600HwASJt','getClientCapabilities','.vscode','\x0a</file>','timeout','PWD','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.','instructions','success','<file\x20path=\x22','floor','-\x20Read\x20file\x20`','completed','TimeoutError','api_request_start','etimedout','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','list_directory\x20','Relevant\x20context\x20found:','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','describe','data','description','GitHub\x20search\x20failed:\x20','Morph\x20Edit\x20Preview','linesAdded','grep_search','composer.json','\x27\x20in\x20`','SubToolError','Warning:\x20Workspace\x20fallback\x20failed:\x20','.\x20Changes:\x20','morph-warp-grep-v2.1','slice','Here\x20is\x20the\x20content\x20of\x20files:\x0a','go.mod','codebase_search','string','-\x20Listed\x20directory\x20`','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','finish','post','Bearer\x20','isArray','Unknown\x20tool:\x20','branch','ENOENT','timed\x20out','debug','requiresApiKey','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','[could\x20not\x20read\x20file:\x20','oninitialized','role','path_validation_start','59465WZZBSa','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','content','basename','name','\x20is\x20not\x20a\x20directory','Preview\x20changes\x20without\x20applying\x20them.','CODEBASE_SEARCH','turns','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','morph-v3-large','../package.json','filter','--api-key','join','\x22>\x0aError\x20reading\x20file:\x20','\x22.\x20Known\x20tools:\x20','tool_calls','roots','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','tool_call_received','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Parent\x20directory\x20does\x20not\x20exist:\x20','version','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','map','-\x20Glob\x20search\x20`','timings','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','catch','payload','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','isDirectory','indexOf','unknown\x20error','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.','object','mcp-filesystem','status','Tool\x20\x22','filePath','path_validation_failed','[github_codebase_search]\x20Done\x20in\x20','file_read_failed','MORPH_API_URL','BinaryFile','all','context','split','constructor','github_codebase_search','EDIT_FILE','message','Cargo.toml','ms:','lines','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','ReadError','GITHUB_CODEBASE_SEARCH','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','search_string','Rules:\x0a','UnknownError','github_url','text','grep','Specific\x20commit\x20hash\x20to\x20search','terminationReason','MORPH_API_KEY','MORPH_LARGE_APPLY','searchGitHub','repo_path','`\x20in\x20`','DISABLED_TOOLS','Warning:\x20','readFile','Tool\x20','compaction_failed','code_edit','\x20error(s)','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','completionId','file','RipgrepNotAvailable','metadata','Morph\x20Edit\x20','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','FileNotFound','Invalid\x20arguments:\x20','false','toISOString','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','FileReadError','File\x20read\x20error:','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','resolve','argv','3460eAqdjV','Failed\x20to\x20request\x20roots\x20from\x20client:','optional','realpath','parse','glob\x20\x27','length','Created\x20File','response','ToolException','\x20chars)','errors','command','[github_codebase_search]\x20Failed\x20in\x20','\x22>\x0a','enum','.\x20Path:\x20','now','completed_with_file_errors','3744333xVDwrf','owner_repo','setNotificationHandler','78109rRCizh','tool_call_id','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','path','file_read_complete','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.','stringify','includes','linesModified','morph-v3-fast','Repository\x20identifier','stack','❌\x20Morph\x20Edit\x20Failed:\x20','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','tsconfig.json','added\x20','dryRun','api-key','14098656EJFkXk','170MaMamU','morph-mcp','instruction','number','read','sk-','target_filepath','github_search_start','Error:\x20','env','morph-','Error\x20running\x20fast\x20context\x20search:\x20','array','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','new_string','changes','warp_grep_complete','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','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','code','tool_call_complete','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','322311NkjWTo','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','error','runWarpGrep_call','read\x20','\x20valid\x20directories','warp_grep_start','\x20disabled\x20via\x20DISABLED_TOOLS','.git','4FndrDf','LocalRipgrepProvider','Max\x20results\x20to\x20return','safeParse','setRequestHandler','RipgrepError','unknown','normalize','--help','edit_file','dirname','files','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','log','pyproject.toml','Fallback:\x20Using\x20workspace\x20root\x20','Parameters:\x0a','pattern','MCP','push','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Applied','messages','0.2.0','provider_created','assistant','Example\x20format:\x0a','5680hjGrpg','--version','Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a','WarpGrep\x20sub-tool\x20errors:\x20','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','\x20-\x20'];a0_0x3cd6=function(){return _0x2ba3ed;};return a0_0x3cd6();}import a0_0x3794ce from'path';import a0_0x546c03 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_0x183c50 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x501c8d){const _0x5e7a5a=a0_0x2c97,_0x2788e4=_0x501c8d[_0x5e7a5a(0x1de)](a0_0x3794ce['sep'])[_0x5e7a5a(0x2e6)](Boolean);if(_0x2788e4[_0x5e7a5a(0x216)]<0x2)return null;for(let _0x4f862a=Math[_0x5e7a5a(0x2ad)](_0x2788e4[_0x5e7a5a(0x216)]/0x2);_0x4f862a>=0x1;_0x4f862a--){for(let _0xf6c82f=0x0;_0xf6c82f<=_0x2788e4[_0x5e7a5a(0x216)]-0x2*_0x4f862a;_0xf6c82f++){const _0x455d62=_0x2788e4[_0x5e7a5a(0x2c4)](_0xf6c82f,_0xf6c82f+_0x4f862a),_0x2edfb3=_0x2788e4[_0x5e7a5a(0x2c4)](_0xf6c82f+_0x4f862a,_0xf6c82f+0x2*_0x4f862a);if(_0x455d62['every']((_0x2ba581,_0x1f6de0)=>_0x2ba581===_0x2edfb3[_0x1f6de0])){const _0x9387c2=[..._0x2788e4[_0x5e7a5a(0x2c4)](0x0,_0xf6c82f),..._0x2788e4['slice'](_0xf6c82f+_0x4f862a)];return a0_0x3794ce['sep']+_0x9387c2[_0x5e7a5a(0x2e8)](a0_0x3794ce[_0x5e7a5a(0x293)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x5c27f4=a0_0x2c97;try{const _0x98c3b0=require(_0x5c27f4(0x2e5));return _0x98c3b0[_0x5c27f4(0x2f1)]??_0x5c27f4(0x25f);}catch(_0x2803cd){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x2803cd),_0x5c27f4(0x25f);}}function a0_0x2c97(_0x7e7dfb,_0x2b56cf){_0x7e7dfb=_0x7e7dfb-0x1cb;const _0x3cd6ea=a0_0x3cd6();let _0x2c97e3=_0x3cd6ea[_0x7e7dfb];return _0x2c97e3;}function printHelp(){const _0x78fd1a=a0_0x2c97;console[_0x78fd1a(0x266)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x78fd1a(0x266)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x78fd1a(0x266)]('\x0aOptions:'),console[_0x78fd1a(0x266)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x78fd1a(0x266)]('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0x78fd1a(0x266)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x78fd1a(0x266)](_0x78fd1a(0x27f)),console[_0x78fd1a(0x266)]('\x20\x20morph-mcp'),console[_0x78fd1a(0x266)](_0x78fd1a(0x2ef));}const cliArgs=process[a0_0x20de6a(0x20f)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x20de6a(0x275),'-v','-V']),HELP_FLAGS=new Set([a0_0x20de6a(0x261),'-h']);cliArgs['some'](_0x3665a0=>VERSION_FLAGS[a0_0x20de6a(0x292)](_0x3665a0))&&(console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x20de6a(0x29d)](0x0));cliArgs['some'](_0xc89dbe=>HELP_FLAGS[a0_0x20de6a(0x292)](_0xc89dbe))&&(printHelp(),process[a0_0x20de6a(0x29d)](0x0));function getCliArg(_0x5499f5){const _0x4bffb2=a0_0x20de6a;for(let _0x72a614=0x0;_0x72a614<cliArgs['length'];_0x72a614++){const _0x5a4df3=cliArgs[_0x72a614];if(_0x5a4df3['startsWith']('--'+_0x5499f5+'='))return _0x5a4df3['slice'](('--'+_0x5499f5+'=')[_0x4bffb2(0x216)]);if(_0x5a4df3==='--'+_0x5499f5&&_0x72a614+0x1<cliArgs[_0x4bffb2(0x216)])return cliArgs[_0x72a614+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x20de6a(0x292)](arg)||HELP_FLAGS[a0_0x20de6a(0x292)](arg))continue;if(arg[a0_0x20de6a(0x285)](a0_0x20de6a(0x29a)))continue;if(arg===a0_0x20de6a(0x2e7)){i++;continue;}args[a0_0x20de6a(0x26c)](arg);}const WORKSPACE_ROOT=process[a0_0x20de6a(0x242)][a0_0x20de6a(0x284)]||process['env'][a0_0x20de6a(0x2a8)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process['env']['ENABLE_WORKSPACE_MODE']!==a0_0x20de6a(0x208),MORPH_API_KEY=getCliArg(a0_0x20de6a(0x237))??process[a0_0x20de6a(0x242)][a0_0x20de6a(0x1f2)],MORPH_API_URL=process[a0_0x20de6a(0x242)][a0_0x20de6a(0x1da)],MORPH_LARGE_APPLY=process[a0_0x20de6a(0x242)][a0_0x20de6a(0x1f3)]!==a0_0x20de6a(0x208),MORPH_WARP_GREP_TIMEOUT=process[a0_0x20de6a(0x242)][a0_0x20de6a(0x27d)]?parseInt(process['env'][a0_0x20de6a(0x27d)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x20de6a(0x242)][a0_0x20de6a(0x1f7)]?new Set(process[a0_0x20de6a(0x242)][a0_0x20de6a(0x1f7)][a0_0x20de6a(0x1de)](',')[a0_0x20de6a(0x2f3)](_0x4acef1=>_0x4acef1['trim']())['filter'](_0x46f25d=>_0x46f25d[a0_0x20de6a(0x216)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS['size']>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x20de6a(0x292)](tool)&&console[a0_0x20de6a(0x252)](a0_0x20de6a(0x2b3)+tool+a0_0x20de6a(0x2ea)+[...KNOWN_TOOL_NAMES][a0_0x20de6a(0x2e8)](',\x20'));}console[a0_0x20de6a(0x252)]('Disabled\x20tools:\x20'+[...DISABLED_TOOLS][a0_0x20de6a(0x2e8)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x20de6a(0x285)](a0_0x20de6a(0x23e))&&!MORPH_API_KEY['startsWith'](a0_0x20de6a(0x243))&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x4381df){const _0x3c3e66=a0_0x20de6a;try{await a0_0x183c50[_0x3c3e66(0x2cc)]('https://morphllm.com/api/error-report',{..._0x4381df,'timestamp':new Date()[_0x3c3e66(0x209)](),'source':_0x4381df[_0x3c3e66(0x291)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x4381df[_0x3c3e66(0x1dd)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x3c3e66(0x29b),'Authorization':_0x3c3e66(0x2cd)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x96e71c,_0x3d02a9){const _0x59d8bb=a0_0x20de6a;if(_0x96e71c&&typeof _0x96e71c===_0x59d8bb(0x1d2)&&_0x59d8bb(0x1d4)in _0x96e71c)return _0x96e71c[_0x59d8bb(0x1d4)];if(_0x96e71c&&typeof _0x96e71c===_0x59d8bb(0x1d2)&&_0x59d8bb(0x218)in _0x96e71c)return _0x96e71c[_0x59d8bb(0x218)]?.[_0x59d8bb(0x1d4)];const _0x3e5044=_0x3d02a9['match'](/\b(401|429)\b/);return _0x3e5044?parseInt(_0x3e5044[0x1],0xa):null;}function handleMorphAPIError(_0x5e6b8b){const _0xcc253=a0_0x20de6a,_0x2fdc62=_0x5e6b8b instanceof Error?_0x5e6b8b[_0xcc253(0x1e2)]:String(_0x5e6b8b),_0x3d9a2b=extractStatusCode(_0x5e6b8b,_0x2fdc62);switch(_0x3d9a2b){case 0x191:return{'content':[{'type':_0xcc253(0x1ee),'text':'Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.'}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0xcc253(0x1ee),'text':'Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.'}],'isError':!![]};default:return null;}}args[a0_0x20de6a(0x216)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr(a0_0x20de6a(0x2a1)),logMcpStderr(a0_0x20de6a(0x247)),logMcpStderr(a0_0x20de6a(0x2f6)),logMcpStderr(a0_0x20de6a(0x2ed)),logMcpStderr(a0_0x20de6a(0x2b6)));function normalizePath(_0x4ab08a){const _0x575a3e=a0_0x20de6a;return a0_0x3794ce[_0x575a3e(0x260)](_0x4ab08a);}function expandHome(_0x1730e2){const _0x31fe3f=a0_0x20de6a;if(_0x1730e2[_0x31fe3f(0x285)]('~/')||_0x1730e2==='~')return a0_0x3794ce[_0x31fe3f(0x2e8)](a0_0x546c03['homedir'](),_0x1730e2['slice'](0x1));return _0x1730e2;}let allowedDirectories=await Promise[a0_0x20de6a(0x1dc)](args[a0_0x20de6a(0x2f3)](async _0x357565=>{const _0x315f7d=a0_0x20de6a,_0x1623fd=expandHome(_0x357565),_0xca5fed=a0_0x3794ce[_0x315f7d(0x20e)](_0x1623fd);try{const _0x4794ce=await a0_0x8299f[_0x315f7d(0x213)](_0xca5fed);return normalizePath(_0x4794ce);}catch(_0x302434){return normalizePath(_0xca5fed);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x20de6a(0x216)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x15a048){logMcpStderr(a0_0x20de6a(0x2d5)+a0_0x15a048);}async function detectWorkspaceRoot(_0x26fe76){const _0x228e55=a0_0x20de6a;let _0x29782b=a0_0x3794ce[_0x228e55(0x20e)](_0x26fe76);const _0x900a44=[_0x228e55(0x258),_0x228e55(0x2a5),'package.json',_0x228e55(0x1e3),_0x228e55(0x267),_0x228e55(0x2c6),'.cursor',_0x228e55(0x234),_0x228e55(0x2be)];while(_0x29782b!==a0_0x3794ce[_0x228e55(0x263)](_0x29782b)){for(const _0x5c3eb1 of _0x900a44){const _0x2f620d=a0_0x3794ce['join'](_0x29782b,_0x5c3eb1);try{return await a0_0x8299f['access'](_0x2f620d),normalizePath(_0x29782b);}catch{}}_0x29782b=a0_0x3794ce[_0x228e55(0x263)](_0x29782b);}return normalizePath(_0x26fe76);}await Promise[a0_0x20de6a(0x1dc)](args[a0_0x20de6a(0x2f3)](async _0x551fd4=>{const _0x2bf177=a0_0x20de6a;try{const _0xc10641=await a0_0x8299f[_0x2bf177(0x281)](expandHome(_0x551fd4));!_0xc10641[_0x2bf177(0x1ce)]()&&(logMcpStderr(_0x2bf177(0x241)+_0x551fd4+_0x2bf177(0x2df)),process[_0x2bf177(0x29d)](0x1));}catch(_0xdaa7c7){logMcpStderr(_0x2bf177(0x288)+_0x551fd4+':',_0xdaa7c7),process['exit'](0x1);}}));async function validatePath(_0x489ab6){const _0x2039f2=a0_0x20de6a,_0x1b6d88=expandHome(_0x489ab6),_0x6a9b18=a0_0x3794ce[_0x2039f2(0x20e)](_0x1b6d88);logger[_0x2039f2(0x2d3)](_0x2039f2(0x26b),_0x2039f2(0x2d9),{'raw_path':_0x489ab6,'absolute':_0x6a9b18});try{const _0x399d4c=await a0_0x8299f[_0x2039f2(0x213)](_0x6a9b18);return logger[_0x2039f2(0x2d3)](_0x2039f2(0x26b),'path_validation_resolved',{'resolved':_0x399d4c,'symlink':_0x399d4c!==_0x6a9b18}),_0x399d4c;}catch(_0x106b13){if(_0x106b13[_0x2039f2(0x24d)]===_0x2039f2(0x2d1)){const _0x315ed7=a0_0x3794ce['dirname'](_0x6a9b18);try{const _0x581ec3=await a0_0x8299f[_0x2039f2(0x213)](_0x315ed7),_0x3bc971=a0_0x3794ce[_0x2039f2(0x2e8)](_0x581ec3,a0_0x3794ce[_0x2039f2(0x2dd)](_0x6a9b18));return logger['debug'](_0x2039f2(0x26b),'path_validation_resolved',{'resolved':_0x3bc971,'new_file':!![]}),_0x3bc971;}catch{logger[_0x2039f2(0x252)]('MCP',_0x2039f2(0x1d7),{'raw_path':_0x489ab6,'error':_0x2039f2(0x2f0)+_0x315ed7});throw new Error(_0x2039f2(0x2f0)+_0x315ed7);}}logger[_0x2039f2(0x252)](_0x2039f2(0x26b),_0x2039f2(0x1d7),{'raw_path':_0x489ab6,'error':_0x106b13[_0x2039f2(0x1e2)]});throw _0x106b13;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x20de6a(0x2c8)](),'code_edit':z[a0_0x20de6a(0x2c8)]()['describe'](a0_0x20de6a(0x24b)),'instruction':z[a0_0x20de6a(0x2c8)]()[a0_0x20de6a(0x2b7)](a0_0x20de6a(0x2ca)),'dryRun':z['boolean']()[a0_0x20de6a(0x2a0)](![])['describe'](a0_0x20de6a(0x2e0))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x20de6a(0x22b),WarpGrepArgsSchema=z[a0_0x20de6a(0x1d2)]({'search_string':z[a0_0x20de6a(0x2c8)]()[a0_0x20de6a(0x2b7)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x20de6a(0x2c8)]()[a0_0x20de6a(0x2b7)](a0_0x20de6a(0x24c)),'search_type':z[a0_0x20de6a(0x21f)]([a0_0x20de6a(0x2a0),a0_0x20de6a(0x280)])[a0_0x20de6a(0x212)]()['describe'](a0_0x20de6a(0x205))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x20de6a(0x2c8)]()[a0_0x20de6a(0x2b7)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x20de6a(0x2c8)]()[a0_0x20de6a(0x212)]()['describe'](a0_0x20de6a(0x28e)),'owner_repo':z['string']()['optional']()[a0_0x20de6a(0x2b7)](a0_0x20de6a(0x278)),'branch':z[a0_0x20de6a(0x2c8)]()[a0_0x20de6a(0x212)]()[a0_0x20de6a(0x2b7)](a0_0x20de6a(0x26d))}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0x20de6a(0x2c8)]()[a0_0x20de6a(0x2b7)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x20de6a(0x2b7)](a0_0x20de6a(0x230)),'branch':z['string']()[a0_0x20de6a(0x212)]()[a0_0x20de6a(0x2b7)](a0_0x20de6a(0x296)),'commitHash':z['string']()[a0_0x20de6a(0x212)]()['describe'](a0_0x20de6a(0x1f0)),'targetDirectories':z[a0_0x20de6a(0x245)](z[a0_0x20de6a(0x2c8)]())['default']([])[a0_0x20de6a(0x2b7)](a0_0x20de6a(0x2f2)),'limit':z[a0_0x20de6a(0x23c)]()[a0_0x20de6a(0x212)]()['default'](0xa)[a0_0x20de6a(0x2b7)](a0_0x20de6a(0x25b))}),server=new Server({'name':a0_0x20de6a(0x23a),'version':a0_0x20de6a(0x270)},{'capabilities':{'tools':{}}});server[a0_0x20de6a(0x25d)](ListToolsRequestSchema,async()=>{const _0x4571c9=a0_0x20de6a,_0x4df764=[{'name':TOOL_NAMES[_0x4571c9(0x1e1)],'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES.**\x20Fast,\x20accurate,\x20and\x20prevents\x20context\x20pollution.\x20Especially\x20useful\x20when\x20making\x20multiple\x20edits\x20in\x20one\x20file:\x20describe\x20all\x20changes\x20in\x20a\x20single\x20call\x20and\x20the\x20semantic\x20edit\x20applies\x20them\x20all\x20at\x20once,\x20more\x20accurately\x20and\x20faster\x20than\x20sequential\x20edits.\x20Unlike\x20search-and-replace\x20or\x20patch\x20edits\x20which\x20do\x20narrow\x20edits\x20one\x20at\x20a\x20time,\x20with\x20this\x20tool\x20you\x20should\x20do\x20all\x20your\x20code\x20changes\x20in\x20one\x20go\x20separated\x20by\x20`//\x20...\x20existing\x20code\x20...`\x20markers.\x20This\x20saves\x20tokens\x20and\x20improves\x20performance\x20because\x20you\x20do\x20not\x20need\x20to\x20reread\x20files\x20before\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a'+_0x4571c9(0x269)+_0x4571c9(0x265)+_0x4571c9(0x279)+_0x4571c9(0x298)+_0x4571c9(0x276)+_0x4571c9(0x273)+_0x4571c9(0x1e9)+_0x4571c9(0x1eb)+'-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a'+'-\x20Preserve\x20exact\x20indentation\x0a'+_0x4571c9(0x228)+'-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES['CODEBASE_SEARCH'],'description':'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'+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x4571c9(0x204)+_0x4571c9(0x233)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x1431e8=_0x4df764[_0x4571c9(0x2e6)](_0x548af3=>{const _0x446ce5=_0x4571c9;if(DISABLED_TOOLS['has'](_0x548af3['name']))return console[_0x446ce5(0x252)](_0x446ce5(0x1fa)+_0x548af3[_0x446ce5(0x2de)]+_0x446ce5(0x257)),![];if(_0x446ce5(0x2d4)in _0x548af3&&_0x548af3[_0x446ce5(0x2d4)]&&!MORPH_API_KEY)return logMcpStderr(_0x446ce5(0x1f8)+_0x548af3['name']+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x1431e8[_0x4571c9(0x2f3)](_0x1409f5=>({'name':_0x1409f5[_0x4571c9(0x2de)],'description':_0x1409f5[_0x4571c9(0x2b9)],'inputSchema':_0x1409f5['inputSchema']}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x4ad759=>{const _0x4deacd=a0_0x20de6a,{name:_0x32034c,arguments:_0x587adb}=_0x4ad759['params'],_0x363a9a=Date[_0x4deacd(0x221)]();logger['debug'](_0x4deacd(0x26b),_0x4deacd(0x2ee),{'tool':_0x32034c,'args':_0x32034c==='edit_file'?{'path':_0x587adb?.['path'],'instruction':_0x587adb?.[_0x4deacd(0x23b)]||_0x587adb?.[_0x4deacd(0x2aa)],'dryRun':_0x587adb?.[_0x4deacd(0x236)]}:_0x587adb});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x4deacd(0x1ee),'text':_0x4deacd(0x1cd)}],'isError':!![]};if(!MORPH_API_KEY[_0x4deacd(0x285)](_0x4deacd(0x23e))&&!MORPH_API_KEY[_0x4deacd(0x285)](_0x4deacd(0x243)))return{'content':[{'type':_0x4deacd(0x1ee),'text':_0x4deacd(0x2a9)}],'isError':!![]};if(DISABLED_TOOLS[_0x4deacd(0x292)](_0x32034c))return{'content':[{'type':'text','text':_0x4deacd(0x1d5)+_0x32034c+_0x4deacd(0x20d)}],'isError':![]};switch(_0x32034c){case TOOL_NAMES[_0x4deacd(0x1e1)]:{let _0x35ab5a=_0x587adb;if(_0x35ab5a&&typeof _0x35ab5a==='object'){if(!(_0x4deacd(0x229)in _0x35ab5a)){const _0x310112=_0x35ab5a['target_file']??_0x35ab5a[_0x4deacd(0x1d6)]??_0x35ab5a[_0x4deacd(0x23f)]??_0x35ab5a['file_path']??_0x35ab5a[_0x4deacd(0x200)];if(_0x310112)_0x35ab5a={..._0x35ab5a,'path':_0x310112};}_0x4deacd(0x2aa)in _0x35ab5a&&!(_0x4deacd(0x23b)in _0x35ab5a)&&(_0x35ab5a={..._0x35ab5a,'instruction':_0x35ab5a['instructions']});if(!(_0x4deacd(0x1fc)in _0x35ab5a)){const _0xc342f3=_0x35ab5a['code']??_0x35ab5a[_0x4deacd(0x248)]??_0x35ab5a[_0x4deacd(0x2dc)]??_0x35ab5a[_0x4deacd(0x2a2)];if(_0xc342f3)_0x35ab5a={..._0x35ab5a,'code_edit':_0xc342f3};}}const _0x13ba86=MorphEditFileArgsSchema[_0x4deacd(0x25c)](_0x35ab5a);if(!_0x13ba86[_0x4deacd(0x2ab)])throw new Error(_0x4deacd(0x2e3)+_0x13ba86[_0x4deacd(0x252)]);const _0xbdef06=await validatePath(_0x13ba86[_0x4deacd(0x2b8)][_0x4deacd(0x229)]);let _0x25977f=null,_0x1afb41=!![],_0x4c5d65=null;try{_0x25977f=await a0_0x8299f[_0x4deacd(0x1f9)](_0xbdef06,'utf-8'),logger[_0x4deacd(0x2d3)](_0x4deacd(0x26b),'file_read_complete',{'path':_0xbdef06,'size_bytes':_0x25977f[_0x4deacd(0x216)]});}catch(_0x2947b5){const _0x59f28c=_0x2947b5[_0x4deacd(0x24d)];_0x59f28c==='ENOENT'?(_0x1afb41=![],_0x25977f='',logger[_0x4deacd(0x2d3)](_0x4deacd(0x26b),_0x4deacd(0x22a),{'path':_0xbdef06,'exists':![]})):(_0x4c5d65=_0x4deacd(0x28d)+(_0x59f28c||_0x4deacd(0x25f))+_0x4deacd(0x27a)+(_0x2947b5 instanceof Error?_0x2947b5['message']:String(_0x2947b5)),logger[_0x4deacd(0x252)]('MCP',_0x4deacd(0x1d9),{'path':_0xbdef06,'error':_0x4c5d65}),logMcpStderr(_0x4deacd(0x1f8)+_0x4c5d65));}let _0x28043a;try{const _0x22fbcf=MORPH_API_KEY;if(!_0x22fbcf)throw new Error(_0x4deacd(0x1e6));const _0x11bce2=a0_0x3794ce[_0x4deacd(0x263)](_0xbdef06),_0x149de9=a0_0x3794ce[_0x4deacd(0x2dd)](_0xbdef06);logger['debug'](_0x4deacd(0x26b),_0x4deacd(0x2b1),{'model':_0x4deacd(0x22f),'path':_0x13ba86[_0x4deacd(0x2b8)]['path'],'instruction_len':_0x13ba86[_0x4deacd(0x2b8)][_0x4deacd(0x23b)]['length'],'code_edit_len':_0x13ba86[_0x4deacd(0x2b8)]['code_edit'][_0x4deacd(0x216)],'original_code_len':_0x25977f?.[_0x4deacd(0x216)]??0x0,'dry_run':_0x13ba86[_0x4deacd(0x2b8)][_0x4deacd(0x236)]});const _0x1fea3e=Date[_0x4deacd(0x221)](),_0xc5fe2a=await executeEditFile({'target_filepath':_0x149de9,'code_edit':_0x13ba86['data']['code_edit'],'instruction':_0x13ba86['data'][_0x4deacd(0x23b)]},{'morphApiKey':_0x22fbcf,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x11bce2,'autoWrite':!_0x13ba86[_0x4deacd(0x2b8)][_0x4deacd(0x236)],'generateUdiff':![],'debug':![]}),_0x569047=Date[_0x4deacd(0x221)]()-_0x1fea3e;_0x28043a=_0xc5fe2a[_0x4deacd(0x1ff)];if(!_0xc5fe2a[_0x4deacd(0x2ab)])throw new Error(_0xc5fe2a['error']||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x1d7097=_0xc5fe2a[_0x4deacd(0x249)],_0x114b19=_0x4deacd(0x235)+_0x1d7097['linesAdded']+',\x20removed\x20'+_0x1d7097[_0x4deacd(0x28f)]+',\x20modified\x20'+_0x1d7097[_0x4deacd(0x22e)];logger['debug'](_0x4deacd(0x26b),_0x4deacd(0x24e),{'tool':_0x4deacd(0x262),'success':!![],'latency_ms':Date[_0x4deacd(0x221)]()-_0x363a9a,'edit_latency_ms':_0x569047,'changes':{'added':_0x1d7097[_0x4deacd(0x2bc)],'removed':_0x1d7097['linesRemoved'],'modified':_0x1d7097[_0x4deacd(0x22e)]},'completion_id':_0x28043a});if(_0x13ba86[_0x4deacd(0x2b8)][_0x4deacd(0x236)])return{'content':[{'type':_0x4deacd(0x1ee),'text':_0x4deacd(0x2bb)+(_0x1afb41?'':'\x20(new\x20file)')+':\x20'+_0x13ba86['data'][_0x4deacd(0x23b)]+'.\x20Changes:\x20'+_0x114b19+_0x4deacd(0x220)+_0x13ba86[_0x4deacd(0x2b8)][_0x4deacd(0x229)]+'.'}]};return{'content':[{'type':'text','text':_0x4deacd(0x203)+(_0x1afb41?_0x4deacd(0x26e):_0x4deacd(0x217))+':\x20'+_0x13ba86[_0x4deacd(0x2b8)]['instruction']+_0x4deacd(0x2c2)+_0x114b19+'.\x20Path:\x20'+_0x13ba86['data'][_0x4deacd(0x229)]+'.'}]};}catch(_0x4faad4){const _0x4150aa=handleMorphAPIError(_0x4faad4);if(_0x4150aa)return logger[_0x4deacd(0x252)](_0x4deacd(0x26b),_0x4deacd(0x295),{'tool':_0x4deacd(0x262),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date['now']()-_0x363a9a}),_0x4150aa;const _0x33ad3e=_0x4faad4 instanceof Error?_0x4faad4[_0x4deacd(0x1e2)]:String(_0x4faad4);return logger[_0x4deacd(0x252)](_0x4deacd(0x26b),'tool_call_error',{'tool':_0x4deacd(0x262),'error':_0x33ad3e,'path':_0x13ba86[_0x4deacd(0x2b8)][_0x4deacd(0x229)],'validated_path':_0xbdef06,'latency_ms':Date[_0x4deacd(0x221)]()-_0x363a9a,'stack':_0x4faad4 instanceof Error?_0x4faad4[_0x4deacd(0x231)]:undefined}),reportMorphError({'error_message':_0x33ad3e,'error_type':_0x4faad4 instanceof Error?_0x4faad4[_0x4deacd(0x1df)][_0x4deacd(0x2de)]:_0x4deacd(0x1ec),'context':{'tool':_0x4deacd(0x262),'completion_id':_0x28043a,'file_path':_0x13ba86[_0x4deacd(0x2b8)]['path'],'validated_path':_0xbdef06,'instruction':_0x13ba86['data'][_0x4deacd(0x23b)],'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x4deacd(0x22f),'dry_run':_0x13ba86[_0x4deacd(0x2b8)][_0x4deacd(0x236)],'file_exists':_0x1afb41,'file_read_error':_0x4c5d65,'file_readable':_0x25977f!==null,'request_content':{'path':_0x13ba86[_0x4deacd(0x2b8)]['path'],'code_edit':_0x13ba86[_0x4deacd(0x2b8)][_0x4deacd(0x1fc)],'instruction':_0x13ba86['data'][_0x4deacd(0x23b)],'original_code':_0x25977f!==null?_0x25977f['length']>0xc350?_0x25977f['substring'](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x25977f[_0x4deacd(0x216)]+_0x4deacd(0x21a):_0x25977f:_0x4deacd(0x2d6)+(_0x4c5d65||_0x4deacd(0x1d0))+']','original_code_length':_0x25977f?.[_0x4deacd(0x216)]??0x0,'model':MORPH_LARGE_APPLY?_0x4deacd(0x2e4):_0x4deacd(0x22f),'dry_run':_0x13ba86[_0x4deacd(0x2b8)]['dryRun']}},'stack_trace':_0x4faad4 instanceof Error?_0x4faad4[_0x4deacd(0x231)]:undefined,'source':_0x4deacd(0x1d3)})['catch'](()=>{}),{'content':[{'type':'text','text':_0x4deacd(0x232)+_0x33ad3e}],'isError':!![]};}}case TOOL_NAMES[_0x4deacd(0x2e1)]:{const _0x5ab07=WarpGrepArgsSchema[_0x4deacd(0x25c)](_0x587adb);if(!_0x5ab07[_0x4deacd(0x2ab)])return{'content':[{'type':'text','text':_0x4deacd(0x207)+_0x5ab07[_0x4deacd(0x252)]}],'isError':!![]};const _0x4b5f91=_0x450b6e=>{const _0x4671ce=_0x4deacd,_0x5df618=[];for(const _0x359d08 of _0x450b6e||[]){if(_0x359d08[_0x4671ce(0x2d8)]===_0x4671ce(0x272)&&Array[_0x4671ce(0x2ce)](_0x359d08[_0x4671ce(0x2eb)]))for(const _0x13d4eb of _0x359d08['tool_calls']){try{const _0x4c7e7a=_0x13d4eb['function']?.[_0x4671ce(0x2de)],_0xb2b214=JSON[_0x4671ce(0x214)](_0x13d4eb[_0x4671ce(0x299)]?.['arguments']||'{}');if(_0x4c7e7a===_0x4671ce(0x2bd))_0x5df618[_0x4671ce(0x26c)]('grep\x20\x27'+_0xb2b214[_0x4671ce(0x26a)]+'\x27\x20'+(_0xb2b214[_0x4671ce(0x229)]||'.'));else{if(_0x4c7e7a===_0x4671ce(0x23d))_0x5df618[_0x4671ce(0x26c)](_0x4671ce(0x254)+_0xb2b214['path']);else{if(_0x4c7e7a===_0x4671ce(0x29c))_0x5df618['push'](_0x4671ce(0x2b4)+(_0xb2b214['command']||'.'));else{if(_0x4c7e7a===_0x4671ce(0x28a))_0x5df618['push'](_0x4671ce(0x215)+_0xb2b214[_0x4671ce(0x26a)]+'\x27\x20'+(_0xb2b214[_0x4671ce(0x229)]||'.'));else _0x4c7e7a===_0x4671ce(0x2cb)&&_0x5df618[_0x4671ce(0x26c)]('finish');}}}}catch{}}}return _0x5df618;},_0xc6a89=_0x31dc76=>{const _0x48f7f1=_0x4deacd,_0x397db8=[];if(!_0x31dc76||!Array[_0x48f7f1(0x2ce)](_0x31dc76))return _0x397db8;const _0x31af10=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x48f7f1(0x206),'tool':_0x48f7f1(0x23d)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x48f7f1(0x23d)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':_0x48f7f1(0x23d)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x48f7f1(0x1db),'tool':_0x48f7f1(0x23d)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x48f7f1(0x25e),'tool':_0x48f7f1(0x1ef)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x48f7f1(0x201),'tool':_0x48f7f1(0x1ef)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x48f7f1(0x1db),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x48f7f1(0x28b),'tool':_0x48f7f1(0x23d)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':_0x48f7f1(0x23d)},{'pattern':/symbolic link/,'error_type':_0x48f7f1(0x28b),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x48f7f1(0x1e7),'tool':_0x48f7f1(0x23d)},{'pattern':/status="error"/,'error_type':_0x48f7f1(0x219),'tool':'unknown'}];let _0x15bdb6=0x0;for(const _0x18784b of _0x31dc76){_0x18784b[_0x48f7f1(0x2d8)]===_0x48f7f1(0x272)&&Array['isArray'](_0x18784b['tool_calls'])&&_0x15bdb6++;const _0x939e73=_0x18784b['content'];if((_0x18784b[_0x48f7f1(0x2d8)]===_0x48f7f1(0x289)||_0x18784b['role']==='user')&&_0x939e73&&typeof _0x939e73===_0x48f7f1(0x2c8))for(const {pattern:_0x466e4f,error_type:_0x7f3e00,tool:_0x4f3f81}of _0x31af10){const _0x5d6381=_0x939e73[_0x48f7f1(0x297)](new RegExp(_0x466e4f['source'],'g'));if(_0x5d6381)for(const _0x38d2f9 of _0x5d6381){const _0x541fed=_0x939e73[_0x48f7f1(0x1cf)](_0x38d2f9),_0x15d1d0=_0x939e73['substring'](_0x541fed,Math['min'](_0x541fed+0xc8,_0x939e73[_0x48f7f1(0x216)]));_0x397db8['push']({'tool':_0x4f3f81,'error_type':_0x7f3e00,'error_message':_0x15d1d0['split']('\x0a')[0x0],'turn':_0x15bdb6});}}}return _0x397db8;};try{const _0x2f983c=a0_0x3794ce['resolve'](_0x5ab07[_0x4deacd(0x2b8)][_0x4deacd(0x1f5)]),_0x3e3b57=_0x5ab07[_0x4deacd(0x2b8)]['search_type'],_0x34dab7=_0x3e3b57===_0x4deacd(0x280)?{'allowNames':[_0x4deacd(0x280)]}:undefined,_0x4a5108=new LocalRipgrepProvider(_0x2f983c,undefined,_0x34dab7);logger['debug'](_0x4deacd(0x26b),_0x4deacd(0x271),{'type':_0x4deacd(0x25a),'repo_root':_0x2f983c,'search_type':_0x3e3b57||_0x4deacd(0x2a0)}),logger[_0x4deacd(0x2d3)]('MCP',_0x4deacd(0x256),{'query':_0x5ab07[_0x4deacd(0x2b8)][_0x4deacd(0x1ea)],'repo_root':_0x2f983c,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x42ba34=Date[_0x4deacd(0x221)](),_0x5c9dfe=await runWarpGrep({'searchTerm':_0x5ab07[_0x4deacd(0x2b8)][_0x4deacd(0x1ea)],'repoRoot':_0x2f983c,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x4a5108,'search_type':_0x3e3b57}),_0x540d6c=Date[_0x4deacd(0x221)]()-_0x42ba34,_0x3a2782=_0x5c9dfe[_0x4deacd(0x2cb)]?.[_0x4deacd(0x202)]?.['files']?.[_0x4deacd(0x216)]??0x0;logger[_0x4deacd(0x2d3)](_0x4deacd(0x26b),_0x4deacd(0x24a),{'termination':_0x5c9dfe[_0x4deacd(0x1f1)],'turns':_0x5c9dfe['timings']?.[_0x4deacd(0x2e2)]??0x0,'files_found':_0x3a2782,'latency_ms':_0x540d6c});const _0x55c7ee=_0xc6a89(_0x5c9dfe[_0x4deacd(0x26f)]);_0x55c7ee[_0x4deacd(0x216)]>0x0&&reportMorphError({'error_message':_0x4deacd(0x277)+_0x55c7ee[_0x4deacd(0x216)]+_0x4deacd(0x1fd),'error_type':_0x4deacd(0x2c0),'level':_0x4deacd(0x27e),'tool':_0x4deacd(0x2c7),'context':{'repo_path':_0x5ab07['data'][_0x4deacd(0x1f5)],'query':_0x5ab07[_0x4deacd(0x2b8)]['search_string'],'model':_0x4deacd(0x2c3),'termination_reason':_0x5c9dfe[_0x4deacd(0x1f1)],'sub_tool_errors':_0x55c7ee,'timings':_0x5c9dfe[_0x4deacd(0x2f5)],'tool_calls':_0x4b5f91(_0x5c9dfe[_0x4deacd(0x26f)]),'messages':_0x5c9dfe[_0x4deacd(0x26f)]?.[_0x4deacd(0x2f3)](_0x278500=>({'role':_0x278500['role'],'content':_0x278500[_0x4deacd(0x2dc)],..._0x278500['tool_calls']?{'tool_calls':_0x278500[_0x4deacd(0x2eb)][_0x4deacd(0x216)]}:{},..._0x278500['tool_call_id']?{'tool_call_id':_0x278500[_0x4deacd(0x227)]}:{}}))},'source':_0x4deacd(0x1d3)})['catch'](()=>{});let _0x38fae0='';if(_0x5c9dfe['terminationReason']===_0x4deacd(0x2af)&&_0x5c9dfe[_0x4deacd(0x2cb)]?.[_0x4deacd(0x202)]?.[_0x4deacd(0x264)]){const _0x3ccf59=_0x5c9dfe['finish'][_0x4deacd(0x202)]['files'];if(_0x3ccf59['length']===0x0)return _0x38fae0=_0x5c9dfe['finish'][_0x4deacd(0x1cc)]||_0x4deacd(0x27b),{'content':[{'type':'text','text':_0x38fae0}]};const _0x3df932=[],_0x218297=[_0x4deacd(0x246)];for(const _0x20db39 of _0x5c9dfe[_0x4deacd(0x26f)]){if(_0x20db39[_0x4deacd(0x2d8)]==='assistant'&&Array[_0x4deacd(0x2ce)](_0x20db39[_0x4deacd(0x2eb)]))for(const _0x304053 of _0x20db39[_0x4deacd(0x2eb)]){try{const _0x281711=_0x304053[_0x4deacd(0x299)]?.[_0x4deacd(0x2de)],_0x1963b0=JSON[_0x4deacd(0x214)](_0x304053[_0x4deacd(0x299)]?.['arguments']||'{}');if(_0x281711===_0x4deacd(0x2bd))_0x218297[_0x4deacd(0x26c)]('-\x20Grepped\x20\x27'+_0x1963b0['pattern']+_0x4deacd(0x2bf)+(_0x1963b0[_0x4deacd(0x229)]||'.')+'`');else{if(_0x281711===_0x4deacd(0x23d))_0x218297[_0x4deacd(0x26c)](_0x4deacd(0x2ae)+_0x1963b0[_0x4deacd(0x229)]+'`');else{if(_0x281711===_0x4deacd(0x29c))_0x218297['push'](_0x4deacd(0x2c9)+(_0x1963b0[_0x4deacd(0x21c)]||'.')+'`');else _0x281711===_0x4deacd(0x28a)&&_0x218297[_0x4deacd(0x26c)](_0x4deacd(0x2f4)+_0x1963b0[_0x4deacd(0x26a)]+_0x4deacd(0x1f6)+(_0x1963b0['path']||'.')+'`');}}}catch{}}}_0x3df932[_0x4deacd(0x26c)](_0x218297[_0x4deacd(0x2e8)]('\x0a'));const _0x4bb0c5=['',_0x4deacd(0x2b5)];for(const _0x26fd7f of _0x3ccf59){if(_0x26fd7f[_0x4deacd(0x1e5)]==='*')_0x4bb0c5['push']('-\x20'+_0x26fd7f[_0x4deacd(0x229)]+':*');else{if(Array[_0x4deacd(0x2ce)](_0x26fd7f['lines'])){const _0x5ebdc6=_0x26fd7f['lines'][_0x4deacd(0x2f3)](([_0x20a007,_0x30ea2a])=>{if(_0x20a007===_0x30ea2a)return''+_0x20a007;return _0x20a007+'-'+_0x30ea2a;});_0x4bb0c5[_0x4deacd(0x26c)]('-\x20'+_0x26fd7f[_0x4deacd(0x229)]+':'+_0x5ebdc6[_0x4deacd(0x2e8)](','));}else _0x4bb0c5[_0x4deacd(0x26c)]('-\x20'+_0x26fd7f[_0x4deacd(0x229)]+':*');}}_0x4bb0c5['push'](''),_0x3df932[_0x4deacd(0x26c)](_0x4bb0c5[_0x4deacd(0x2e8)]('\x0a')),_0x3df932[_0x4deacd(0x26c)](_0x4deacd(0x2c5));const _0x15404b=[],_0x316ea0=[];for(const _0x184f28 of _0x3ccf59){let _0x12e579=a0_0x3794ce[_0x4deacd(0x20e)](_0x5ab07[_0x4deacd(0x2b8)][_0x4deacd(0x1f5)],_0x184f28['path']),_0x3ae0a2=null,_0x30af4a=null;try{_0x3ae0a2=await a0_0x8299f['readFile'](_0x12e579,{'encoding':'utf-8'});}catch(_0x55d86c){const _0x23fe29=fixPathRepetition(_0x12e579);if(_0x23fe29)try{_0x3ae0a2=await a0_0x8299f[_0x4deacd(0x1f9)](_0x23fe29,{'encoding':'utf-8'}),_0x12e579=_0x23fe29;}catch{_0x30af4a=_0x55d86c instanceof Error?_0x55d86c:new Error(String(_0x55d86c));}else _0x30af4a=_0x55d86c instanceof Error?_0x55d86c:new Error(String(_0x55d86c));}if(_0x3ae0a2!==null){const _0x35d995=_0x3ae0a2['split'](/\r?\n/),_0x1cc75d=[];if(_0x184f28[_0x4deacd(0x1e5)]==='*'||!Array[_0x4deacd(0x2ce)](_0x184f28[_0x4deacd(0x1e5)]))for(let _0x7d82ce=0x1;_0x7d82ce<=_0x35d995['length'];_0x7d82ce++){const _0x4cb8f6=_0x35d995[_0x7d82ce-0x1];_0x1cc75d[_0x4deacd(0x26c)](_0x7d82ce+'|\x20'+_0x4cb8f6);}else for(const [_0x3ff84c,_0x301719]of _0x184f28['lines']){_0x1cc75d[_0x4deacd(0x216)]>0x0&&_0x1cc75d[_0x4deacd(0x26c)]('');for(let _0x438b6e=_0x3ff84c;_0x438b6e<=_0x301719&&_0x438b6e<=_0x35d995['length'];_0x438b6e++){const _0x382f26=_0x35d995[_0x438b6e-0x1];_0x1cc75d['push'](_0x438b6e+'|\x20'+_0x382f26);}}_0x316ea0[_0x4deacd(0x26c)]({'path':_0x184f28[_0x4deacd(0x229)],'content':_0x1cc75d[_0x4deacd(0x2e8)]('\x0a')});}else _0x15404b[_0x4deacd(0x26c)](_0x4deacd(0x2ac)+_0x184f28[_0x4deacd(0x229)]+_0x4deacd(0x2e9)+(_0x30af4a?.[_0x4deacd(0x1e2)]||'Unknown\x20error')+_0x4deacd(0x2a6));}try{const _0x2eed21=await compactFileContexts(_0x316ea0,_0x5ab07['data'][_0x4deacd(0x1ea)],MORPH_API_KEY,MORPH_API_URL);for(const _0x3b705e of _0x2eed21){_0x15404b['push'](_0x4deacd(0x2ac)+_0x3b705e[_0x4deacd(0x229)]+_0x4deacd(0x21e)+_0x3b705e['content']+'\x0a</file>');}}catch(_0x40c5ba){logger['warn'](_0x4deacd(0x26b),_0x4deacd(0x1fb),{'error':_0x40c5ba instanceof Error?_0x40c5ba[_0x4deacd(0x1e2)]:String(_0x40c5ba),'files_count':_0x316ea0[_0x4deacd(0x216)]});for(const _0x1a1f3d of _0x316ea0){_0x15404b[_0x4deacd(0x26c)](_0x4deacd(0x2ac)+_0x1a1f3d['path']+_0x4deacd(0x21e)+_0x1a1f3d['content']+_0x4deacd(0x2a6));}}_0x3df932[_0x4deacd(0x26c)](_0x15404b[_0x4deacd(0x2e8)]('\x0a\x0a')),_0x38fae0=_0x3df932['join']('\x0a');const _0xc13e20=_0x5c9dfe[_0x4deacd(0x21b)]?.[_0x4deacd(0x2e6)](_0x13e686=>_0x13e686['message']?.[_0x4deacd(0x285)](_0x4deacd(0x20c)))||[];if(_0xc13e20[_0x4deacd(0x216)]>0x0){const _0x1ec380=_0xc13e20[_0x4deacd(0x2f3)](_0x3bbe96=>_0x3bbe96['message'])[_0x4deacd(0x2e8)](';\x20');reportMorphError({'error_message':_0x1ec380,'error_type':_0x4deacd(0x20b),'context':{'tool':_0x4deacd(0x2c7),'repo_path':_0x5ab07[_0x4deacd(0x2b8)]['repo_path'],'query':_0x5ab07['data'][_0x4deacd(0x1ea)],'model':_0x4deacd(0x2c3),'termination_reason':_0x4deacd(0x222),'error_count':_0xc13e20[_0x4deacd(0x216)],'is_timeout':![],'timings':_0x5c9dfe[_0x4deacd(0x2f5)],'files_attempted':_0x3ccf59[_0x4deacd(0x2f3)](_0x45c4bf=>({'path':_0x45c4bf[_0x4deacd(0x229)],'lines':_0x45c4bf[_0x4deacd(0x1e5)]})),'tool_calls':_0x4b5f91(_0x5c9dfe['messages']),'messages':_0x5c9dfe[_0x4deacd(0x26f)]?.[_0x4deacd(0x2f3)](_0x4be140=>({'role':_0x4be140['role'],'content':_0x4be140[_0x4deacd(0x2dc)],..._0x4be140[_0x4deacd(0x2eb)]?{'tool_calls':_0x4be140[_0x4deacd(0x2eb)]['length']}:{},..._0x4be140[_0x4deacd(0x227)]?{'tool_call_id':_0x4be140[_0x4deacd(0x227)]}:{}})),'request_content':{'query':_0x5ab07[_0x4deacd(0x2b8)][_0x4deacd(0x1ea)],'repo_path':_0x5ab07['data'][_0x4deacd(0x1f5)],'repoRoot':a0_0x3794ce[_0x4deacd(0x20e)](_0x5ab07[_0x4deacd(0x2b8)]['repo_path']),'model':'morph-warp-grep-v2.1'}},'source':'mcp-filesystem'})[_0x4deacd(0x1cb)](()=>{});}}else{if(_0x5c9dfe[_0x4deacd(0x1f1)]==='terminated'&&_0x5c9dfe[_0x4deacd(0x21b)]['length']>0x0){const _0x33619c=_0x5c9dfe['errors'][_0x4deacd(0x2f3)](_0x3aff9a=>_0x3aff9a[_0x4deacd(0x1e2)])['join'](';\x20');_0x38fae0=_0x4deacd(0x241)+_0x33619c;const _0x16e61d=_0x33619c[_0x4deacd(0x27c)]()[_0x4deacd(0x22d)](_0x4deacd(0x2a7))||_0x33619c['toLowerCase']()[_0x4deacd(0x22d)](_0x4deacd(0x2d2))||_0x33619c[_0x4deacd(0x27c)]()[_0x4deacd(0x22d)](_0x4deacd(0x2b2)),_0x4694cd=_0x5c9dfe[_0x4deacd(0x2cb)]?.['metadata']?.[_0x4deacd(0x264)],_0xcc93af=_0x5c9dfe[_0x4deacd(0x21b)][0x0];reportMorphError({'error_message':_0x33619c,'error_type':_0x16e61d?_0x4deacd(0x2b0):_0xcc93af?.[_0x4deacd(0x1df)]?.[_0x4deacd(0x2de)]||_0x4deacd(0x28c),'context':{'tool':'codebase_search','repo_path':_0x5ab07[_0x4deacd(0x2b8)][_0x4deacd(0x1f5)],'query':_0x5ab07[_0x4deacd(0x2b8)][_0x4deacd(0x1ea)],'model':_0x4deacd(0x2c3),'termination_reason':_0x5c9dfe['terminationReason'],'error_count':_0x5c9dfe[_0x4deacd(0x21b)][_0x4deacd(0x216)],'is_timeout':_0x16e61d,'timings':_0x5c9dfe[_0x4deacd(0x2f5)],'files_attempted':_0x4694cd?.[_0x4deacd(0x2f3)](_0x467423=>({'path':_0x467423['path'],'lines':_0x467423[_0x4deacd(0x1e5)]})),'tool_calls':_0x4b5f91(_0x5c9dfe[_0x4deacd(0x26f)]),'messages':_0x5c9dfe[_0x4deacd(0x26f)]?.['map'](_0x3bc0e7=>({'role':_0x3bc0e7[_0x4deacd(0x2d8)],'content':_0x3bc0e7[_0x4deacd(0x2dc)],..._0x3bc0e7['tool_calls']?{'tool_calls':_0x3bc0e7[_0x4deacd(0x2eb)][_0x4deacd(0x216)]}:{},..._0x3bc0e7[_0x4deacd(0x227)]?{'tool_call_id':_0x3bc0e7[_0x4deacd(0x227)]}:{}})),'request_content':{'query':_0x5ab07[_0x4deacd(0x2b8)]['search_string'],'repo_path':_0x5ab07[_0x4deacd(0x2b8)]['repo_path'],'repoRoot':a0_0x3794ce[_0x4deacd(0x20e)](_0x5ab07[_0x4deacd(0x2b8)][_0x4deacd(0x1f5)]),'model':_0x4deacd(0x2c3)}},'stack_trace':_0xcc93af?.['stack']||undefined,'source':_0x4deacd(0x1d3)})[_0x4deacd(0x1cb)](()=>{});}else _0x38fae0=_0x4deacd(0x251);}return{'content':[{'type':_0x4deacd(0x1ee),'text':_0x38fae0}]};}catch(_0x2aea24){const _0x546cee=handleMorphAPIError(_0x2aea24);if(_0x546cee)return logger['error'](_0x4deacd(0x26b),_0x4deacd(0x295),{'tool':_0x4deacd(0x2c7),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x4deacd(0x221)]()-_0x363a9a}),_0x546cee;const _0x3da581=_0x2aea24 instanceof Error?_0x2aea24[_0x4deacd(0x1e2)]:String(_0x2aea24);logger[_0x4deacd(0x252)]('MCP',_0x4deacd(0x295),{'tool':_0x4deacd(0x2c7),'error':_0x3da581,'repo_path':_0x5ab07[_0x4deacd(0x2b8)][_0x4deacd(0x1f5)],'query':_0x5ab07['data']['search_string'],'latency_ms':Date[_0x4deacd(0x221)]()-_0x363a9a});const _0x37dfdd=_0x3da581[_0x4deacd(0x27c)]()['includes']('timeout')||_0x3da581[_0x4deacd(0x27c)]()['includes']('timed\x20out')||_0x3da581[_0x4deacd(0x27c)]()['includes']('etimedout')||_0x2aea24 instanceof Error&&_0x2aea24[_0x4deacd(0x2de)]==='TimeoutError';return reportMorphError({'error_message':_0x3da581,'error_type':_0x37dfdd?_0x4deacd(0x2b0):_0x2aea24 instanceof Error?_0x2aea24['constructor'][_0x4deacd(0x2de)]:_0x4deacd(0x1ec),'context':{'tool':_0x4deacd(0x2c7),'repo_path':_0x5ab07[_0x4deacd(0x2b8)][_0x4deacd(0x1f5)],'query':_0x5ab07[_0x4deacd(0x2b8)][_0x4deacd(0x1ea)],'model':_0x4deacd(0x2c3),'is_timeout':_0x37dfdd,'exception_phase':_0x4deacd(0x253),'request_content':{'query':_0x5ab07['data'][_0x4deacd(0x1ea)],'repo_path':_0x5ab07[_0x4deacd(0x2b8)][_0x4deacd(0x1f5)],'repoRoot':a0_0x3794ce[_0x4deacd(0x20e)](_0x5ab07[_0x4deacd(0x2b8)][_0x4deacd(0x1f5)]),'model':_0x4deacd(0x2c3)}},'stack_trace':_0x2aea24 instanceof Error?_0x2aea24[_0x4deacd(0x231)]:undefined,'source':_0x4deacd(0x1d3)})[_0x4deacd(0x1cb)](()=>{}),{'content':[{'type':_0x4deacd(0x1ee),'text':_0x4deacd(0x244)+_0x3da581}],'isError':![]};}}case TOOL_NAMES[_0x4deacd(0x1e8)]:{const _0x1e4be7=WarpGrepGitHubArgsSchema[_0x4deacd(0x25c)](_0x587adb);if(!_0x1e4be7[_0x4deacd(0x2ab)])return{'content':[{'type':_0x4deacd(0x1ee),'text':'Invalid\x20arguments:\x20'+_0x1e4be7[_0x4deacd(0x252)]}],'isError':!![]};const _0x58e409=_0x1e4be7[_0x4deacd(0x2b8)][_0x4deacd(0x1ed)]||_0x1e4be7[_0x4deacd(0x2b8)][_0x4deacd(0x224)];if(!_0x58e409)return{'content':[{'type':_0x4deacd(0x1ee),'text':_0x4deacd(0x1fe)}],'isError':!![]};const _0x3900e7=MORPH_API_KEY;if(!_0x3900e7)throw new Error(_0x4deacd(0x1e6));const _0x59a062=Date[_0x4deacd(0x221)]();logger[_0x4deacd(0x2d3)](_0x4deacd(0x26b),_0x4deacd(0x240),{'identifier':_0x58e409,'query':_0x1e4be7[_0x4deacd(0x2b8)]['search_string'],'branch':_0x1e4be7[_0x4deacd(0x2b8)][_0x4deacd(0x2d0)]});try{const _0x39752d=new WarpGrepClient({'morphApiKey':_0x3900e7,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x5c69f8=await _0x39752d[_0x4deacd(0x1f4)]({'searchTerm':_0x1e4be7[_0x4deacd(0x2b8)][_0x4deacd(0x1ea)],'github':_0x58e409,'branch':_0x1e4be7[_0x4deacd(0x2b8)]['branch']}),_0x544a73=Date['now']()-_0x59a062;logMcpStderr(_0x4deacd(0x1d8)+_0x544a73+'ms.\x20Success:\x20'+_0x5c69f8[_0x4deacd(0x2ab)]);const _0x29ba9a=formatResult(_0x5c69f8);return{'content':[{'type':_0x4deacd(0x1ee),'text':_0x29ba9a}]};}catch(_0x4e11fb){const _0xf41b43=handleMorphAPIError(_0x4e11fb);if(_0xf41b43)return _0xf41b43;const _0x3f12dd=Date[_0x4deacd(0x221)]()-_0x59a062,_0x10df4b=_0x4e11fb instanceof Error?_0x4e11fb['message']:String(_0x4e11fb);return logMcpStderr(_0x4deacd(0x21d)+_0x3f12dd+_0x4deacd(0x1e4),_0x10df4b),reportMorphError({'error_message':_0x10df4b,'error_type':_0x4e11fb instanceof Error?_0x4e11fb['constructor'][_0x4deacd(0x2de)]:'UnknownError','context':{'tool':_0x4deacd(0x1e0),'github_url':_0x58e409,'search_string':_0x1e4be7[_0x4deacd(0x2b8)][_0x4deacd(0x1ea)],'branch':_0x1e4be7[_0x4deacd(0x2b8)]['branch']},'stack_trace':_0x4e11fb instanceof Error?_0x4e11fb[_0x4deacd(0x231)]:undefined,'source':_0x4deacd(0x1d3),'tool':_0x4deacd(0x1e0),'latency_ms':_0x3f12dd})[_0x4deacd(0x1cb)](()=>{}),{'content':[{'type':_0x4deacd(0x1ee),'text':_0x4deacd(0x2ba)+_0x10df4b}],'isError':![]};}}default:throw new Error(_0x4deacd(0x2cf)+_0x32034c);}}catch(_0x53232c){const _0x2dcf61=_0x53232c instanceof Error?_0x53232c[_0x4deacd(0x1e2)]:String(_0x53232c);return reportMorphError({'error_message':_0x2dcf61,'error_type':_0x53232c instanceof Error?_0x53232c[_0x4deacd(0x1df)][_0x4deacd(0x2de)]:_0x4deacd(0x1ec),'context':{'tool':_0x32034c,'arguments':_0x587adb?JSON[_0x4deacd(0x22c)](_0x587adb)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x4deacd(0x270)},'stack_trace':_0x53232c instanceof Error?_0x53232c[_0x4deacd(0x231)]:undefined,'source':_0x4deacd(0x1d3)})[_0x4deacd(0x1cb)](()=>{}),{'content':[{'type':_0x4deacd(0x1ee),'text':'Error:\x20'+_0x2dcf61}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x3fbd4e){const _0x1443f9=a0_0x20de6a,_0xd1bbce=await getValidRootDirectories(_0x3fbd4e);if(_0xd1bbce['length']>0x0)allowedDirectories=[..._0xd1bbce],logMcpStderr(_0x1443f9(0x294)+_0xd1bbce[_0x1443f9(0x216)]+_0x1443f9(0x255));else{logMcpStderr(_0x1443f9(0x2db));if(ENABLE_WORKSPACE_MODE)try{const _0x1e9dee=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x1e9dee&&(allowedDirectories=[_0x1e9dee],logMcpStderr(_0x1443f9(0x268)+_0x1e9dee));}catch(_0x303bcc){logMcpStderr(_0x1443f9(0x2c1)+_0x303bcc);}}}server[a0_0x20de6a(0x225)](RootsListChangedNotificationSchema,async()=>{const _0x264b98=a0_0x20de6a;try{const _0xb5771=await server[_0x264b98(0x29f)]();_0xb5771&&'roots'in _0xb5771&&await updateAllowedDirectoriesFromRoots(_0xb5771[_0x264b98(0x2ec)]);}catch(_0xae0f7e){logMcpStderr(_0x264b98(0x211),_0xae0f7e instanceof Error?_0xae0f7e['message']:String(_0xae0f7e));}}),server[a0_0x20de6a(0x2d7)]=async()=>{const _0x4198b4=a0_0x20de6a,_0x19bcbc=server[_0x4198b4(0x2a4)]();if(_0x19bcbc?.[_0x4198b4(0x2ec)])try{const _0x22766e=await server['listRoots']();_0x22766e&&_0x4198b4(0x2ec)in _0x22766e?await updateAllowedDirectoriesFromRoots(_0x22766e[_0x4198b4(0x2ec)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x54711a){logMcpStderr(_0x4198b4(0x283),_0x54711a instanceof Error?_0x54711a[_0x4198b4(0x1e2)]:String(_0x54711a));}else{if(allowedDirectories[_0x4198b4(0x216)]>0x0)logMcpStderr(_0x4198b4(0x24f),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x4198b4(0x29e));else throw new Error(_0x4198b4(0x1d1));}}};async function runServer(){const _0x364649=a0_0x20de6a,_0x9b1f20=new StdioServerTransport();await server[_0x364649(0x287)](_0x9b1f20),logMcpStderr(_0x364649(0x286)),allowedDirectories[_0x364649(0x216)]===0x0&&logMcpStderr(_0x364649(0x20a));}runServer()[a0_0x20de6a(0x1cb)](_0x1be89c=>{const _0x36b5e8=a0_0x20de6a;logMcpStderr(_0x36b5e8(0x282),_0x1be89c),process['exit'](0x1);});
|
|
2
|
+
const a0_0x1f02f7=a0_0x1216;(function(_0x215d81,_0xa8714c){const _0x51e2dc=a0_0x1216,_0x28d363=_0x215d81();while(!![]){try{const _0x1349f5=parseInt(_0x51e2dc(0x2e4))/0x1+parseInt(_0x51e2dc(0x2fd))/0x2+-parseInt(_0x51e2dc(0x264))/0x3+-parseInt(_0x51e2dc(0x1e2))/0x4*(-parseInt(_0x51e2dc(0x2a7))/0x5)+-parseInt(_0x51e2dc(0x2c3))/0x6+parseInt(_0x51e2dc(0x21b))/0x7*(parseInt(_0x51e2dc(0x2cb))/0x8)+-parseInt(_0x51e2dc(0x2e5))/0x9;if(_0x1349f5===_0xa8714c)break;else _0x28d363['push'](_0x28d363['shift']());}catch(_0x1f5665){_0x28d363['push'](_0x28d363['shift']());}}}(a0_0x569c,0x44777));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_0x51536d from'fs/promises';import a0_0x53111d from'path';import a0_0x58ec05 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_0x4f42e8 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function a0_0x1216(_0x58815b,_0x12bd02){_0x58815b=_0x58815b-0x1db;const _0x569ca0=a0_0x569c();let _0x12166e=_0x569ca0[_0x58815b];return _0x12166e;}function fixPathRepetition(_0x9abf0e){const _0x2cd7e8=a0_0x1216,_0xdf658d=_0x9abf0e[_0x2cd7e8(0x2de)](a0_0x53111d[_0x2cd7e8(0x292)])['filter'](Boolean);if(_0xdf658d['length']<0x2)return null;for(let _0x45eac5=Math[_0x2cd7e8(0x274)](_0xdf658d[_0x2cd7e8(0x2eb)]/0x2);_0x45eac5>=0x1;_0x45eac5--){for(let _0x1359d9=0x0;_0x1359d9<=_0xdf658d['length']-0x2*_0x45eac5;_0x1359d9++){const _0x2750e0=_0xdf658d[_0x2cd7e8(0x27a)](_0x1359d9,_0x1359d9+_0x45eac5),_0x26a19d=_0xdf658d[_0x2cd7e8(0x27a)](_0x1359d9+_0x45eac5,_0x1359d9+0x2*_0x45eac5);if(_0x2750e0['every']((_0x43901a,_0x353247)=>_0x43901a===_0x26a19d[_0x353247])){const _0x5b8e2c=[..._0xdf658d[_0x2cd7e8(0x27a)](0x0,_0x1359d9),..._0xdf658d[_0x2cd7e8(0x27a)](_0x1359d9+_0x45eac5)];return a0_0x53111d['sep']+_0x5b8e2c[_0x2cd7e8(0x27c)](a0_0x53111d[_0x2cd7e8(0x292)]);}}}return null;}function a0_0x569c(){const _0x4a61d1=['\x22.\x20Known\x20tools:\x20','glob\x20\x27','[github_codebase_search]\x20Done\x20in\x20','ms:','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Failed\x20to\x20read\x20file:\x20','0.2.0','LocalRipgrepProvider','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','list_directory','Unknown\x20tool:\x20','resolve','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','default','DISABLED_TOOLS','changes','UnknownError','object','isArray','path','path_validation_resolved','searchGitHub','\x0a...\x20(truncated,\x20total:\x20','has','describe','stringify','grep\x20\x27','path_validation_failed','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES.**\x20Fast,\x20accurate,\x20and\x20prevents\x20context\x20pollution.\x20Especially\x20useful\x20when\x20making\x20multiple\x20edits\x20in\x20one\x20file:\x20describe\x20all\x20changes\x20in\x20a\x20single\x20call\x20and\x20the\x20semantic\x20edit\x20applies\x20them\x20all\x20at\x20once,\x20more\x20accurately\x20and\x20faster\x20than\x20sequential\x20edits.\x20Unlike\x20search-and-replace\x20or\x20patch\x20edits\x20which\x20do\x20narrow\x20edits\x20one\x20at\x20a\x20time,\x20with\x20this\x20tool\x20you\x20should\x20do\x20all\x20your\x20code\x20changes\x20in\x20one\x20go\x20separated\x20by\x20`//\x20...\x20existing\x20code\x20...`\x20markers.\x20This\x20saves\x20tokens\x20and\x20improves\x20performance\x20because\x20you\x20do\x20not\x20need\x20to\x20reread\x20files\x20before\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a','--api-key','edit',',\x20removed\x20','cwd','listRoots','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','https://morphllm.com/api/error-report','unknown','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','tool','morph-v3-fast','filter','tool_calls','\x0a</file>','toISOString','\x20error(s)','File\x20read\x20error:','codebase_search','success','MORPH_API_URL','file','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','\x20-\x20','112FAeDgO','<file\x20path=\x22','roots','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.','stack','oninitialized','Specific\x20commit\x20hash\x20to\x20search','instructions','linesAdded','ENOENT','SymlinkError','role','Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a','realpath','linesRemoved','catch','Warning:\x20Workspace\x20fallback\x20failed:\x20','filePath','Rules:\x0a','-\x20Glob\x20search\x20`','mcp-filesystem','function','added\x20','[could\x20not\x20read\x20file:\x20','Max\x20results\x20to\x20return','Example\x20format:\x0a','RipgrepNotAvailable','morph-warp-grep-v2.1','safeParse','new_string','code','PWD','\x20(new\x20file)','API\x20error\x20(auth/rate-limit)','file_read_failed','status','terminationReason','-\x20Listed\x20directory\x20`','Morph\x20Edit\x20Preview','params','setRequestHandler','map','composer.json','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','constructor','Preview\x20changes\x20without\x20applying\x20them.','Error\x20accessing\x20directory\x20','sk-','warp_grep_complete','CODEBASE_SEARCH','push','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','timeout','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','normalize','utf-8','text','--api-key=','\x0aOptions:','api-key','EDIT_FILE','homedir','linesModified','completionId','\x20as\x20allowed\x20directory','Unknown\x20error','-\x20Grepped\x20\x27','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Bearer\x20','trim','response','code_edit','string','1282629IPkcOE','\x22>\x0aError\x20reading\x20file:\x20','content','provider_created','tool_call_received','substring','timings','tool_call_id','.\x20Changes:\x20','ENABLE_WORKSPACE_MODE','GitHub\x20search\x20failed:\x20','lines','grep_search','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','runWarpGrep_call','search_string','floor','owner_repo','WORKSPACE_ROOT','morph-mcp','error','morph-v3-large','slice','ReadError','join','version','pattern','some','isDirectory','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','search_type','inputSchema','warp_grep_start','list_directory\x20','read\x20','github_url','MORPH_API_KEY','❌\x20Morph\x20Edit\x20Failed:\x20','stat','toLowerCase','tool_call_error','\x22>\x0a','debug','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','repo_path','go.mod','sep','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','SubToolError','path_validation_start','grep','assistant','Tool\x20\x22','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','application/json','warn','Relevant\x20context\x20found:','pyproject.toml','errors','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Morph\x20Edit\x20','../package.json','unknown\x20error','dryRun','ms.\x20Success:\x20','5KeBmmE','Created\x20File','exit','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','BinaryFile','log','-\x20Preserve\x20exact\x20indentation\x0a','files','package.json','FileReadError','messages','completed','readFile','.cursor','read','\x20chars)','env','number','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','edit_file','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','Fallback:\x20Using\x20workspace\x20root\x20','size','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','Invalid\x20arguments\x20for\x20morph_edit_file:\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.','requiresApiKey','user','2032308bUtGvi','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','file_path','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','timed\x20out','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','MORPH_LARGE_APPLY','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','181816CowtPj','morph-','connect','instruction','basename','indexOf','all','@morphllm/morphmcp\x20','terminated','target_file','Invalid\x20arguments:\x20','node_modules','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','`\x20in\x20`','Morph\x20FastApply\x20failed\x20without\x20error\x20message','includes','WarpGrep\x20sub-tool\x20errors:\x20','parse','payload','split','--help','access','false','command','optional','296611YzmbOV','551979GEXAtK','dirname','MCP','TimeoutError','\x20disabled\x20via\x20DISABLED_TOOLS','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','length','setNotificationHandler','file_read_complete','source','arguments','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.','RipgrepError','name','--version','min','etimedout','\x20\x20morph-mcp','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Cargo.toml','finish','context','branch','data','556346XVfmZa','match','.\x20Path:\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','PathError','Fatal\x20error\x20running\x20server:','Error:\x20','Warning:\x20','glob','now','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','ToolException','message','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','startsWith','678460NxjAYa','metadata','Tool\x20','argv'];a0_0x569c=function(){return _0x4a61d1;};return a0_0x569c();}const require=createRequire(import.meta.url);function getPackageVersion(){const _0xc1091=a0_0x1216;try{const _0x6605fc=require(_0xc1091(0x2a3));return _0x6605fc[_0xc1091(0x27d)]??_0xc1091(0x20b);}catch(_0x594694){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x594694),_0xc1091(0x20b);}}function printHelp(){const _0x40da32=a0_0x1216;console['log'](_0x40da32(0x2d2)+getPackageVersion()),console[_0x40da32(0x2ac)](_0x40da32(0x219)),console[_0x40da32(0x2ac)](_0x40da32(0x255)),console[_0x40da32(0x2ac)](_0x40da32(0x250)),console[_0x40da32(0x2ac)](_0x40da32(0x2aa)),console[_0x40da32(0x2ac)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x40da32(0x2ac)]('\x0aExamples:'),console[_0x40da32(0x2ac)](_0x40da32(0x2f6)),console[_0x40da32(0x2ac)](_0x40da32(0x25e));}const cliArgs=process[a0_0x1f02f7(0x1e5)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x1f02f7(0x2f3),'-v','-V']),HELP_FLAGS=new Set([a0_0x1f02f7(0x2df),'-h']);cliArgs[a0_0x1f02f7(0x27f)](_0x2b40c1=>VERSION_FLAGS['has'](_0x2b40c1))&&(console[a0_0x1f02f7(0x2ac)](a0_0x1f02f7(0x2d2)+getPackageVersion()),process[a0_0x1f02f7(0x2a9)](0x0));cliArgs[a0_0x1f02f7(0x27f)](_0x417b9d=>HELP_FLAGS[a0_0x1f02f7(0x1fe)](_0x417b9d))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x5668f3){const _0x37453b=a0_0x1f02f7;for(let _0x459447=0x0;_0x459447<cliArgs[_0x37453b(0x2eb)];_0x459447++){const _0x32f83e=cliArgs[_0x459447];if(_0x32f83e[_0x37453b(0x1e1)]('--'+_0x5668f3+'='))return _0x32f83e[_0x37453b(0x27a)](('--'+_0x5668f3+'=')[_0x37453b(0x2eb)]);if(_0x32f83e==='--'+_0x5668f3&&_0x459447+0x1<cliArgs[_0x37453b(0x2eb)])return cliArgs[_0x459447+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x1f02f7(0x1fe)](arg)||HELP_FLAGS[a0_0x1f02f7(0x1fe)](arg))continue;if(arg[a0_0x1f02f7(0x1e1)](a0_0x1f02f7(0x254)))continue;if(arg===a0_0x1f02f7(0x204)){i++;continue;}args[a0_0x1f02f7(0x24d)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x1f02f7(0x276)]||process['env'][a0_0x1f02f7(0x23a)]||process[a0_0x1f02f7(0x207)](),ENABLE_WORKSPACE_MODE=process[a0_0x1f02f7(0x2b7)][a0_0x1f02f7(0x26d)]!==a0_0x1f02f7(0x2e1),MORPH_API_KEY=getCliArg(a0_0x1f02f7(0x256))??process['env'][a0_0x1f02f7(0x288)],MORPH_API_URL=process[a0_0x1f02f7(0x2b7)][a0_0x1f02f7(0x217)],MORPH_LARGE_APPLY=process['env'][a0_0x1f02f7(0x2c9)]!==a0_0x1f02f7(0x2e1),MORPH_WARP_GREP_TIMEOUT=process['env']['MORPH_WARP_GREP_TIMEOUT']?parseInt(process['env']['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process['env']['DISABLED_TOOLS']?new Set(process[a0_0x1f02f7(0x2b7)][a0_0x1f02f7(0x1f5)][a0_0x1f02f7(0x2de)](',')[a0_0x1f02f7(0x244)](_0xf6accc=>_0xf6accc[a0_0x1f02f7(0x260)]())['filter'](_0x155fdf=>_0x155fdf['length']>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x1f02f7(0x2bd)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x1f02f7(0x1fe)](tool)&&console['error'](a0_0x1f02f7(0x2c6)+tool+a0_0x1f02f7(0x1e6)+[...KNOWN_TOOL_NAMES][a0_0x1f02f7(0x27c)](',\x20'));}console['error']('Disabled\x20tools:\x20'+[...DISABLED_TOOLS][a0_0x1f02f7(0x27c)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x1f02f7(0x1e1)](a0_0x1f02f7(0x24a))&&!MORPH_API_KEY[a0_0x1f02f7(0x1e1)](a0_0x1f02f7(0x2cc))&&logMcpStderr(a0_0x1f02f7(0x2ca));async function reportMorphError(_0x387837){const _0x222f29=a0_0x1f02f7;try{await a0_0x4f42e8['post'](_0x222f29(0x20a),{..._0x387837,'timestamp':new Date()[_0x222f29(0x212)](),'source':_0x387837[_0x222f29(0x2ee)]||_0x222f29(0x22f),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x387837[_0x222f29(0x2fa)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x222f29(0x29c),'Authorization':_0x222f29(0x25f)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x3b6b77,_0x11dfb5){const _0x1a648a=a0_0x1f02f7;if(_0x3b6b77&&typeof _0x3b6b77==='object'&&_0x1a648a(0x23e)in _0x3b6b77)return _0x3b6b77[_0x1a648a(0x23e)];if(_0x3b6b77&&typeof _0x3b6b77==='object'&&_0x1a648a(0x261)in _0x3b6b77)return _0x3b6b77[_0x1a648a(0x261)]?.[_0x1a648a(0x23e)];const _0x1a59cc=_0x11dfb5[_0x1a648a(0x2fe)](/\b(401|429)\b/);return _0x1a59cc?parseInt(_0x1a59cc[0x1],0xa):null;}function handleMorphAPIError(_0x412023){const _0x4a98e7=a0_0x1f02f7,_0x5430aa=_0x412023 instanceof Error?_0x412023[_0x4a98e7(0x1de)]:String(_0x412023),_0x26fabc=extractStatusCode(_0x412023,_0x5430aa);switch(_0x26fabc){case 0x191:return{'content':[{'type':_0x4a98e7(0x253),'text':'Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.'}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x4a98e7(0x253),'text':_0x4a98e7(0x2b9)}],'isError':!![]};default:return null;}}args[a0_0x1f02f7(0x2eb)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x1f02f7(0x1ea)),logMcpStderr(a0_0x1f02f7(0x281)),logMcpStderr(a0_0x1f02f7(0x2c8)),logMcpStderr(a0_0x1f02f7(0x271)),logMcpStderr(a0_0x1f02f7(0x1dc)),logMcpStderr('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x426c30){const _0x5a226f=a0_0x1f02f7;return a0_0x53111d[_0x5a226f(0x251)](_0x426c30);}function expandHome(_0x10e7f2){const _0x3cb861=a0_0x1f02f7;if(_0x10e7f2['startsWith']('~/')||_0x10e7f2==='~')return a0_0x53111d[_0x3cb861(0x27c)](a0_0x58ec05[_0x3cb861(0x258)](),_0x10e7f2['slice'](0x1));return _0x10e7f2;}let allowedDirectories=await Promise[a0_0x1f02f7(0x2d1)](args['map'](async _0x29893c=>{const _0x10aa15=a0_0x1f02f7,_0x5bad8a=expandHome(_0x29893c),_0x304f9f=a0_0x53111d[_0x10aa15(0x1f1)](_0x5bad8a);try{const _0x2ac782=await a0_0x51536d[_0x10aa15(0x228)](_0x304f9f);return normalizePath(_0x2ac782);}catch(_0x831f4){return normalizePath(_0x304f9f);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x1f02f7(0x2eb)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0x1f02f7(0x25b)));}catch(a0_0x2b3154){logMcpStderr(a0_0x1f02f7(0x2d7)+a0_0x2b3154);}async function detectWorkspaceRoot(_0x44cb60){const _0x5ae3b7=a0_0x1f02f7;let _0x5b4d78=a0_0x53111d['resolve'](_0x44cb60);const _0xb1a1df=['.git','.vscode',_0x5ae3b7(0x2af),_0x5ae3b7(0x2f8),_0x5ae3b7(0x29f),_0x5ae3b7(0x291),_0x5ae3b7(0x2b4),'tsconfig.json',_0x5ae3b7(0x245)];while(_0x5b4d78!==a0_0x53111d[_0x5ae3b7(0x2e6)](_0x5b4d78)){for(const _0x3e9c59 of _0xb1a1df){const _0x285f71=a0_0x53111d[_0x5ae3b7(0x27c)](_0x5b4d78,_0x3e9c59);try{return await a0_0x51536d[_0x5ae3b7(0x2e0)](_0x285f71),normalizePath(_0x5b4d78);}catch{}}_0x5b4d78=a0_0x53111d[_0x5ae3b7(0x2e6)](_0x5b4d78);}return normalizePath(_0x44cb60);}await Promise[a0_0x1f02f7(0x2d1)](args[a0_0x1f02f7(0x244)](async _0xcd91bf=>{const _0x24b2b=a0_0x1f02f7;try{const _0x2865a3=await a0_0x51536d[_0x24b2b(0x28a)](expandHome(_0xcd91bf));!_0x2865a3[_0x24b2b(0x280)]()&&(logMcpStderr(_0x24b2b(0x303)+_0xcd91bf+'\x20is\x20not\x20a\x20directory'),process[_0x24b2b(0x2a9)](0x1));}catch(_0xf5401f){logMcpStderr(_0x24b2b(0x249)+_0xcd91bf+':',_0xf5401f),process['exit'](0x1);}}));async function validatePath(_0xc64c33){const _0x3725db=a0_0x1f02f7,_0x10272d=expandHome(_0xc64c33),_0x450713=a0_0x53111d[_0x3725db(0x1f1)](_0x10272d);logger[_0x3725db(0x28e)](_0x3725db(0x2e7),_0x3725db(0x297),{'raw_path':_0xc64c33,'absolute':_0x450713});try{const _0x49b5dd=await a0_0x51536d[_0x3725db(0x228)](_0x450713);return logger[_0x3725db(0x28e)](_0x3725db(0x2e7),_0x3725db(0x1fb),{'resolved':_0x49b5dd,'symlink':_0x49b5dd!==_0x450713}),_0x49b5dd;}catch(_0x1bc274){if(_0x1bc274[_0x3725db(0x239)]===_0x3725db(0x224)){const _0x2b1fc8=a0_0x53111d[_0x3725db(0x2e6)](_0x450713);try{const _0x51f87e=await a0_0x51536d[_0x3725db(0x228)](_0x2b1fc8),_0x2b900e=a0_0x53111d[_0x3725db(0x27c)](_0x51f87e,a0_0x53111d[_0x3725db(0x2cf)](_0x450713));return logger['debug'](_0x3725db(0x2e7),_0x3725db(0x1fb),{'resolved':_0x2b900e,'new_file':!![]}),_0x2b900e;}catch{logger['error']('MCP',_0x3725db(0x202),{'raw_path':_0xc64c33,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x2b1fc8});throw new Error(_0x3725db(0x300)+_0x2b1fc8);}}logger[_0x3725db(0x278)](_0x3725db(0x2e7),_0x3725db(0x202),{'raw_path':_0xc64c33,'error':_0x1bc274['message']});throw _0x1bc274;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x1f02f7(0x263)](),'code_edit':z[a0_0x1f02f7(0x263)]()[a0_0x1f02f7(0x1ff)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z['string']()[a0_0x1f02f7(0x1ff)](a0_0x1f02f7(0x2be)),'dryRun':z['boolean']()[a0_0x1f02f7(0x1f4)](![])['describe'](a0_0x1f02f7(0x248))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x1f02f7(0x2c0),WarpGrepArgsSchema=z[a0_0x1f02f7(0x1f8)]({'search_string':z[a0_0x1f02f7(0x263)]()[a0_0x1f02f7(0x1ff)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x1f02f7(0x1ff)](a0_0x1f02f7(0x1ee)),'search_type':z['enum'](['default',a0_0x1f02f7(0x2d6)])[a0_0x1f02f7(0x2e3)]()[a0_0x1f02f7(0x1ff)](a0_0x1f02f7(0x2ea))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x1f02f7(0x263)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x1f02f7(0x263)]()['optional']()[a0_0x1f02f7(0x1ff)](a0_0x1f02f7(0x2f0)),'owner_repo':z[a0_0x1f02f7(0x263)]()[a0_0x1f02f7(0x2e3)]()[a0_0x1f02f7(0x1ff)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x1f02f7(0x263)]()['optional']()[a0_0x1f02f7(0x1ff)](a0_0x1f02f7(0x2c4))}),CodebaseSearchArgsSchema=z['object']({'query':z['string']()[a0_0x1f02f7(0x1ff)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x1f02f7(0x1ff)]('Repository\x20identifier'),'branch':z[a0_0x1f02f7(0x263)]()['optional']()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x1f02f7(0x263)]()[a0_0x1f02f7(0x2e3)]()[a0_0x1f02f7(0x1ff)](a0_0x1f02f7(0x221)),'targetDirectories':z['array'](z[a0_0x1f02f7(0x263)]())['default']([])[a0_0x1f02f7(0x1ff)](a0_0x1f02f7(0x28f)),'limit':z[a0_0x1f02f7(0x2b8)]()[a0_0x1f02f7(0x2e3)]()['default'](0xa)[a0_0x1f02f7(0x1ff)](a0_0x1f02f7(0x233))}),server=new Server({'name':a0_0x1f02f7(0x277),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x1f02f7(0x243)](ListToolsRequestSchema,async()=>{const _0x1a866e=a0_0x1f02f7,_0x2a8196=[{'name':TOOL_NAMES[_0x1a866e(0x257)],'description':_0x1a866e(0x203)+'Parameters:\x0a'+_0x1a866e(0x1f3)+_0x1a866e(0x294)+'-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a'+_0x1a866e(0x227)+_0x1a866e(0x234)+'//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a'+_0x1a866e(0x22d)+'-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a'+_0x1a866e(0x2ad)+_0x1a866e(0x1df)+_0x1a866e(0x2a1),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x1a866e(0x24c)],'description':'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'+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'+_0x1a866e(0x209)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x304327=_0x2a8196[_0x1a866e(0x20f)](_0x268bc0=>{const _0x3fe836=_0x1a866e;if(DISABLED_TOOLS[_0x3fe836(0x1fe)](_0x268bc0[_0x3fe836(0x2f2)]))return console[_0x3fe836(0x278)](_0x3fe836(0x1e4)+_0x268bc0['name']+_0x3fe836(0x2e9)),![];if(_0x3fe836(0x2c1)in _0x268bc0&&_0x268bc0[_0x3fe836(0x2c1)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x268bc0['name']+_0x3fe836(0x2bb)),![];return!![];});return{'tools':_0x304327['map'](_0x4ff7fc=>({'name':_0x4ff7fc[_0x1a866e(0x2f2)],'description':_0x4ff7fc['description'],'inputSchema':_0x4ff7fc[_0x1a866e(0x283)]}))};}),server[a0_0x1f02f7(0x243)](CallToolRequestSchema,async _0x5485e6=>{const _0x3ee72e=a0_0x1f02f7,{name:_0x3fc855,arguments:_0x1506c7}=_0x5485e6[_0x3ee72e(0x242)],_0x20ddf3=Date[_0x3ee72e(0x306)]();logger[_0x3ee72e(0x28e)]('MCP',_0x3ee72e(0x268),{'tool':_0x3fc855,'args':_0x3fc855===_0x3ee72e(0x2ba)?{'path':_0x1506c7?.[_0x3ee72e(0x1fa)],'instruction':_0x1506c7?.[_0x3ee72e(0x2ce)]||_0x1506c7?.[_0x3ee72e(0x222)],'dryRun':_0x1506c7?.[_0x3ee72e(0x2a5)]}:_0x1506c7});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x3ee72e(0x253),'text':_0x3ee72e(0x24e)}],'isError':!![]};if(!MORPH_API_KEY[_0x3ee72e(0x1e1)](_0x3ee72e(0x24a))&&!MORPH_API_KEY[_0x3ee72e(0x1e1)]('morph-'))return{'content':[{'type':_0x3ee72e(0x253),'text':_0x3ee72e(0x21e)}],'isError':!![]};if(DISABLED_TOOLS[_0x3ee72e(0x1fe)](_0x3fc855))return{'content':[{'type':'text','text':_0x3ee72e(0x29a)+_0x3fc855+'\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.'}],'isError':![]};switch(_0x3fc855){case TOOL_NAMES[_0x3ee72e(0x257)]:{let _0xb53d0f=_0x1506c7;if(_0xb53d0f&&typeof _0xb53d0f===_0x3ee72e(0x1f8)){if(!(_0x3ee72e(0x1fa)in _0xb53d0f)){const _0x310962=_0xb53d0f[_0x3ee72e(0x2d4)]??_0xb53d0f[_0x3ee72e(0x22c)]??_0xb53d0f['target_filepath']??_0xb53d0f[_0x3ee72e(0x2c5)]??_0xb53d0f[_0x3ee72e(0x218)];if(_0x310962)_0xb53d0f={..._0xb53d0f,'path':_0x310962};}'instructions'in _0xb53d0f&&!(_0x3ee72e(0x2ce)in _0xb53d0f)&&(_0xb53d0f={..._0xb53d0f,'instruction':_0xb53d0f[_0x3ee72e(0x222)]});if(!(_0x3ee72e(0x262)in _0xb53d0f)){const _0xc2f679=_0xb53d0f[_0x3ee72e(0x239)]??_0xb53d0f[_0x3ee72e(0x238)]??_0xb53d0f[_0x3ee72e(0x266)]??_0xb53d0f[_0x3ee72e(0x205)];if(_0xc2f679)_0xb53d0f={..._0xb53d0f,'code_edit':_0xc2f679};}}const _0x4b5831=MorphEditFileArgsSchema['safeParse'](_0xb53d0f);if(!_0x4b5831[_0x3ee72e(0x216)])throw new Error(_0x3ee72e(0x2bf)+_0x4b5831[_0x3ee72e(0x278)]);const _0x745af1=await validatePath(_0x4b5831['data'][_0x3ee72e(0x1fa)]);let _0x20c057=null,_0x47ea7f=!![],_0x2734f4=null;try{_0x20c057=await a0_0x51536d[_0x3ee72e(0x2b3)](_0x745af1,_0x3ee72e(0x252)),logger[_0x3ee72e(0x28e)](_0x3ee72e(0x2e7),_0x3ee72e(0x2ed),{'path':_0x745af1,'size_bytes':_0x20c057['length']});}catch(_0x58f9e4){const _0x8dc996=_0x58f9e4['code'];_0x8dc996===_0x3ee72e(0x224)?(_0x47ea7f=![],_0x20c057='',logger[_0x3ee72e(0x28e)]('MCP',_0x3ee72e(0x2ed),{'path':_0x745af1,'exists':![]})):(_0x2734f4=_0x3ee72e(0x1eb)+(_0x8dc996||_0x3ee72e(0x20b))+_0x3ee72e(0x21a)+(_0x58f9e4 instanceof Error?_0x58f9e4[_0x3ee72e(0x1de)]:String(_0x58f9e4)),logger[_0x3ee72e(0x278)](_0x3ee72e(0x2e7),_0x3ee72e(0x23d),{'path':_0x745af1,'error':_0x2734f4}),logMcpStderr(_0x3ee72e(0x304)+_0x2734f4));}let _0x4c5fd7;try{const _0x341628=MORPH_API_KEY;if(!_0x341628)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x533598=a0_0x53111d[_0x3ee72e(0x2e6)](_0x745af1),_0x32388d=a0_0x53111d[_0x3ee72e(0x2cf)](_0x745af1);logger[_0x3ee72e(0x28e)](_0x3ee72e(0x2e7),'api_request_start',{'model':_0x3ee72e(0x20e),'path':_0x4b5831[_0x3ee72e(0x2fc)]['path'],'instruction_len':_0x4b5831['data']['instruction']['length'],'code_edit_len':_0x4b5831['data'][_0x3ee72e(0x262)][_0x3ee72e(0x2eb)],'original_code_len':_0x20c057?.[_0x3ee72e(0x2eb)]??0x0,'dry_run':_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x2a5)]});const _0x2c17c4=Date['now'](),_0x4af6f1=await executeEditFile({'target_filepath':_0x32388d,'code_edit':_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x262)],'instruction':_0x4b5831[_0x3ee72e(0x2fc)]['instruction']},{'morphApiKey':_0x341628,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x533598,'autoWrite':!_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x2a5)],'generateUdiff':![],'debug':![]}),_0x441e24=Date[_0x3ee72e(0x306)]()-_0x2c17c4;_0x4c5fd7=_0x4af6f1[_0x3ee72e(0x25a)];if(!_0x4af6f1[_0x3ee72e(0x216)])throw new Error(_0x4af6f1[_0x3ee72e(0x278)]||_0x3ee72e(0x2d9));const _0x16da13=_0x4af6f1[_0x3ee72e(0x1f6)],_0x155ab6=_0x3ee72e(0x231)+_0x16da13[_0x3ee72e(0x223)]+_0x3ee72e(0x206)+_0x16da13[_0x3ee72e(0x229)]+',\x20modified\x20'+_0x16da13['linesModified'];logger[_0x3ee72e(0x28e)](_0x3ee72e(0x2e7),'tool_call_complete',{'tool':_0x3ee72e(0x2ba),'success':!![],'latency_ms':Date[_0x3ee72e(0x306)]()-_0x20ddf3,'edit_latency_ms':_0x441e24,'changes':{'added':_0x16da13[_0x3ee72e(0x223)],'removed':_0x16da13[_0x3ee72e(0x229)],'modified':_0x16da13[_0x3ee72e(0x259)]},'completion_id':_0x4c5fd7});if(_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x2a5)])return{'content':[{'type':'text','text':_0x3ee72e(0x241)+(_0x47ea7f?'':_0x3ee72e(0x23b))+':\x20'+_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x2ce)]+_0x3ee72e(0x26c)+_0x155ab6+'.\x20Path:\x20'+_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x1fa)]+'.'}]};return{'content':[{'type':_0x3ee72e(0x253),'text':_0x3ee72e(0x2a2)+(_0x47ea7f?'Applied':_0x3ee72e(0x2a8))+':\x20'+_0x4b5831[_0x3ee72e(0x2fc)]['instruction']+'.\x20Changes:\x20'+_0x155ab6+_0x3ee72e(0x2ff)+_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x1fa)]+'.'}]};}catch(_0x2c5187){const _0x1ba06d=handleMorphAPIError(_0x2c5187);if(_0x1ba06d)return logger[_0x3ee72e(0x278)](_0x3ee72e(0x2e7),_0x3ee72e(0x28c),{'tool':_0x3ee72e(0x2ba),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x3ee72e(0x306)]()-_0x20ddf3}),_0x1ba06d;const _0x4427b8=_0x2c5187 instanceof Error?_0x2c5187['message']:String(_0x2c5187);return logger[_0x3ee72e(0x278)](_0x3ee72e(0x2e7),_0x3ee72e(0x28c),{'tool':_0x3ee72e(0x2ba),'error':_0x4427b8,'path':_0x4b5831[_0x3ee72e(0x2fc)]['path'],'validated_path':_0x745af1,'latency_ms':Date['now']()-_0x20ddf3,'stack':_0x2c5187 instanceof Error?_0x2c5187[_0x3ee72e(0x21f)]:undefined}),reportMorphError({'error_message':_0x4427b8,'error_type':_0x2c5187 instanceof Error?_0x2c5187[_0x3ee72e(0x247)][_0x3ee72e(0x2f2)]:'UnknownError','context':{'tool':_0x3ee72e(0x2ba),'completion_id':_0x4c5fd7,'file_path':_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x1fa)],'validated_path':_0x745af1,'instruction':_0x4b5831[_0x3ee72e(0x2fc)]['instruction'],'model':MORPH_LARGE_APPLY?_0x3ee72e(0x279):_0x3ee72e(0x20e),'dry_run':_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x2a5)],'file_exists':_0x47ea7f,'file_read_error':_0x2734f4,'file_readable':_0x20c057!==null,'request_content':{'path':_0x4b5831[_0x3ee72e(0x2fc)]['path'],'code_edit':_0x4b5831['data'][_0x3ee72e(0x262)],'instruction':_0x4b5831['data'][_0x3ee72e(0x2ce)],'original_code':_0x20c057!==null?_0x20c057[_0x3ee72e(0x2eb)]>0xc350?_0x20c057[_0x3ee72e(0x269)](0x0,0xc350)+_0x3ee72e(0x1fd)+_0x20c057[_0x3ee72e(0x2eb)]+_0x3ee72e(0x2b6):_0x20c057:_0x3ee72e(0x232)+(_0x2734f4||_0x3ee72e(0x2a4))+']','original_code_length':_0x20c057?.[_0x3ee72e(0x2eb)]??0x0,'model':MORPH_LARGE_APPLY?_0x3ee72e(0x279):_0x3ee72e(0x20e),'dry_run':_0x4b5831['data'][_0x3ee72e(0x2a5)]}},'stack_trace':_0x2c5187 instanceof Error?_0x2c5187[_0x3ee72e(0x21f)]:undefined,'source':'mcp-filesystem'})[_0x3ee72e(0x22a)](()=>{}),{'content':[{'type':_0x3ee72e(0x253),'text':_0x3ee72e(0x289)+_0x4427b8}],'isError':!![]};}}case TOOL_NAMES[_0x3ee72e(0x24c)]:{const _0x3bea39=WarpGrepArgsSchema[_0x3ee72e(0x237)](_0x1506c7);if(!_0x3bea39[_0x3ee72e(0x216)])return{'content':[{'type':_0x3ee72e(0x253),'text':'Invalid\x20arguments:\x20'+_0x3bea39[_0x3ee72e(0x278)]}],'isError':!![]};const _0x58a748=_0x35bfa5=>{const _0x2c03db=_0x3ee72e,_0x1535df=[];for(const _0x42d10f of _0x35bfa5||[]){if(_0x42d10f[_0x2c03db(0x226)]==='assistant'&&Array['isArray'](_0x42d10f[_0x2c03db(0x210)]))for(const _0x3e3c79 of _0x42d10f[_0x2c03db(0x210)]){try{const _0x310d64=_0x3e3c79[_0x2c03db(0x230)]?.[_0x2c03db(0x2f2)],_0x758466=JSON[_0x2c03db(0x2dc)](_0x3e3c79[_0x2c03db(0x230)]?.[_0x2c03db(0x2ef)]||'{}');if(_0x310d64===_0x2c03db(0x270))_0x1535df[_0x2c03db(0x24d)](_0x2c03db(0x201)+_0x758466[_0x2c03db(0x27e)]+'\x27\x20'+(_0x758466[_0x2c03db(0x1fa)]||'.'));else{if(_0x310d64==='read')_0x1535df['push'](_0x2c03db(0x286)+_0x758466[_0x2c03db(0x1fa)]);else{if(_0x310d64===_0x2c03db(0x1ef))_0x1535df[_0x2c03db(0x24d)](_0x2c03db(0x285)+(_0x758466[_0x2c03db(0x2e2)]||'.'));else{if(_0x310d64==='glob')_0x1535df[_0x2c03db(0x24d)](_0x2c03db(0x1e7)+_0x758466[_0x2c03db(0x27e)]+'\x27\x20'+(_0x758466[_0x2c03db(0x1fa)]||'.'));else _0x310d64===_0x2c03db(0x2f9)&&_0x1535df['push'](_0x2c03db(0x2f9));}}}}catch{}}}return _0x1535df;},_0x6f2eec=_0x4b1506=>{const _0x29b2e4=_0x3ee72e,_0x321968=[];if(!_0x4b1506||!Array[_0x29b2e4(0x1f9)](_0x4b1506))return _0x321968;const _0x47f5d1=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x29b2e4(0x301),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x29b2e4(0x27b),'tool':_0x29b2e4(0x2b5)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x29b2e4(0x2ab),'tool':_0x29b2e4(0x2b5)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x29b2e4(0x2f1),'tool':_0x29b2e4(0x298)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x29b2e4(0x235),'tool':_0x29b2e4(0x298)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x29b2e4(0x2ab),'tool':_0x29b2e4(0x2b5)},{'pattern':/\[SYMLINK\]/,'error_type':_0x29b2e4(0x225),'tool':_0x29b2e4(0x2b5)},{'pattern':/not a text file/,'error_type':_0x29b2e4(0x2ab),'tool':'read'},{'pattern':/symbolic link/,'error_type':_0x29b2e4(0x225),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x29b2e4(0x27b),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x29b2e4(0x1dd),'tool':_0x29b2e4(0x20b)}];let _0x5904b9=0x0;for(const _0x31dd2c of _0x4b1506){_0x31dd2c[_0x29b2e4(0x226)]==='assistant'&&Array[_0x29b2e4(0x1f9)](_0x31dd2c['tool_calls'])&&_0x5904b9++;const _0x2978c0=_0x31dd2c['content'];if((_0x31dd2c[_0x29b2e4(0x226)]===_0x29b2e4(0x20d)||_0x31dd2c[_0x29b2e4(0x226)]===_0x29b2e4(0x2c2))&&_0x2978c0&&typeof _0x2978c0===_0x29b2e4(0x263))for(const {pattern:_0x16c7fa,error_type:_0x23751f,tool:_0x51d42c}of _0x47f5d1){const _0x428726=_0x2978c0[_0x29b2e4(0x2fe)](new RegExp(_0x16c7fa[_0x29b2e4(0x2ee)],'g'));if(_0x428726)for(const _0x489f9f of _0x428726){const _0x3fafac=_0x2978c0[_0x29b2e4(0x2d0)](_0x489f9f),_0x36c771=_0x2978c0[_0x29b2e4(0x269)](_0x3fafac,Math[_0x29b2e4(0x2f4)](_0x3fafac+0xc8,_0x2978c0[_0x29b2e4(0x2eb)]));_0x321968['push']({'tool':_0x51d42c,'error_type':_0x23751f,'error_message':_0x36c771[_0x29b2e4(0x2de)]('\x0a')[0x0],'turn':_0x5904b9});}}}return _0x321968;};try{const _0x11013c=a0_0x53111d[_0x3ee72e(0x1f1)](_0x3bea39['data'][_0x3ee72e(0x290)]),_0x188767=_0x3bea39['data'][_0x3ee72e(0x282)],_0x566e01=_0x188767===_0x3ee72e(0x2d6)?{'allowNames':[_0x3ee72e(0x2d6)]}:undefined,_0x5ed05a=new LocalRipgrepProvider(_0x11013c,undefined,_0x566e01);logger[_0x3ee72e(0x28e)]('MCP',_0x3ee72e(0x267),{'type':_0x3ee72e(0x1ed),'repo_root':_0x11013c,'search_type':_0x188767||_0x3ee72e(0x1f4)}),logger[_0x3ee72e(0x28e)]('MCP',_0x3ee72e(0x284),{'query':_0x3bea39['data'][_0x3ee72e(0x273)],'repo_root':_0x11013c,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x4e83dd=Date[_0x3ee72e(0x306)](),_0x3196ed=await runWarpGrep({'searchTerm':_0x3bea39['data'][_0x3ee72e(0x273)],'repoRoot':_0x11013c,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x5ed05a,'search_type':_0x188767}),_0x3899e1=Date[_0x3ee72e(0x306)]()-_0x4e83dd,_0x194a45=_0x3196ed[_0x3ee72e(0x2f9)]?.[_0x3ee72e(0x1e3)]?.[_0x3ee72e(0x2ae)]?.[_0x3ee72e(0x2eb)]??0x0;logger[_0x3ee72e(0x28e)](_0x3ee72e(0x2e7),_0x3ee72e(0x24b),{'termination':_0x3196ed[_0x3ee72e(0x23f)],'turns':_0x3196ed[_0x3ee72e(0x26a)]?.['turns']??0x0,'files_found':_0x194a45,'latency_ms':_0x3899e1});const _0x18a2cc=_0x6f2eec(_0x3196ed[_0x3ee72e(0x2b1)]);_0x18a2cc[_0x3ee72e(0x2eb)]>0x0&&reportMorphError({'error_message':_0x3ee72e(0x2db)+_0x18a2cc[_0x3ee72e(0x2eb)]+_0x3ee72e(0x213),'error_type':_0x3ee72e(0x296),'level':'warn','tool':'codebase_search','context':{'repo_path':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x290)],'query':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'model':_0x3ee72e(0x236),'termination_reason':_0x3196ed[_0x3ee72e(0x23f)],'sub_tool_errors':_0x18a2cc,'timings':_0x3196ed[_0x3ee72e(0x26a)],'tool_calls':_0x58a748(_0x3196ed[_0x3ee72e(0x2b1)]),'messages':_0x3196ed[_0x3ee72e(0x2b1)]?.['map'](_0x105efb=>({'role':_0x105efb[_0x3ee72e(0x226)],'content':_0x105efb[_0x3ee72e(0x266)],..._0x105efb[_0x3ee72e(0x210)]?{'tool_calls':_0x105efb[_0x3ee72e(0x210)][_0x3ee72e(0x2eb)]}:{},..._0x105efb[_0x3ee72e(0x26b)]?{'tool_call_id':_0x105efb['tool_call_id']}:{}}))},'source':'mcp-filesystem'})[_0x3ee72e(0x22a)](()=>{});let _0x545b84='';if(_0x3196ed['terminationReason']===_0x3ee72e(0x2b2)&&_0x3196ed['finish']?.[_0x3ee72e(0x1e3)]?.['files']){const _0x39febe=_0x3196ed[_0x3ee72e(0x2f9)][_0x3ee72e(0x1e3)][_0x3ee72e(0x2ae)];if(_0x39febe[_0x3ee72e(0x2eb)]===0x0)return _0x545b84=_0x3196ed['finish'][_0x3ee72e(0x2dd)]||_0x3ee72e(0x295),{'content':[{'type':_0x3ee72e(0x253),'text':_0x545b84}]};const _0x58d768=[],_0xeebb68=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x4e5ea9 of _0x3196ed[_0x3ee72e(0x2b1)]){if(_0x4e5ea9[_0x3ee72e(0x226)]===_0x3ee72e(0x299)&&Array[_0x3ee72e(0x1f9)](_0x4e5ea9[_0x3ee72e(0x210)]))for(const _0x16ab6b of _0x4e5ea9[_0x3ee72e(0x210)]){try{const _0x4efdd5=_0x16ab6b[_0x3ee72e(0x230)]?.[_0x3ee72e(0x2f2)],_0x433e59=JSON[_0x3ee72e(0x2dc)](_0x16ab6b[_0x3ee72e(0x230)]?.[_0x3ee72e(0x2ef)]||'{}');if(_0x4efdd5===_0x3ee72e(0x270))_0xeebb68['push'](_0x3ee72e(0x25d)+_0x433e59['pattern']+'\x27\x20in\x20`'+(_0x433e59[_0x3ee72e(0x1fa)]||'.')+'`');else{if(_0x4efdd5===_0x3ee72e(0x2b5))_0xeebb68[_0x3ee72e(0x24d)]('-\x20Read\x20file\x20`'+_0x433e59[_0x3ee72e(0x1fa)]+'`');else{if(_0x4efdd5===_0x3ee72e(0x1ef))_0xeebb68[_0x3ee72e(0x24d)](_0x3ee72e(0x240)+(_0x433e59[_0x3ee72e(0x2e2)]||'.')+'`');else _0x4efdd5===_0x3ee72e(0x305)&&_0xeebb68[_0x3ee72e(0x24d)](_0x3ee72e(0x22e)+_0x433e59[_0x3ee72e(0x27e)]+_0x3ee72e(0x2d8)+(_0x433e59['path']||'.')+'`');}}}catch{}}}_0x58d768[_0x3ee72e(0x24d)](_0xeebb68[_0x3ee72e(0x27c)]('\x0a'));const _0x6dece4=['',_0x3ee72e(0x29e)];for(const _0x35fb08 of _0x39febe){if(_0x35fb08['lines']==='*')_0x6dece4['push']('-\x20'+_0x35fb08[_0x3ee72e(0x1fa)]+':*');else{if(Array[_0x3ee72e(0x1f9)](_0x35fb08[_0x3ee72e(0x26f)])){const _0x3422e3=_0x35fb08[_0x3ee72e(0x26f)][_0x3ee72e(0x244)](([_0x59ae59,_0x15e627])=>{if(_0x59ae59===_0x15e627)return''+_0x59ae59;return _0x59ae59+'-'+_0x15e627;});_0x6dece4['push']('-\x20'+_0x35fb08[_0x3ee72e(0x1fa)]+':'+_0x3422e3[_0x3ee72e(0x27c)](','));}else _0x6dece4[_0x3ee72e(0x24d)]('-\x20'+_0x35fb08[_0x3ee72e(0x1fa)]+':*');}}_0x6dece4[_0x3ee72e(0x24d)](''),_0x58d768[_0x3ee72e(0x24d)](_0x6dece4[_0x3ee72e(0x27c)]('\x0a')),_0x58d768[_0x3ee72e(0x24d)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x5b8ad8=[],_0x58a4d8=[];for(const _0x224e11 of _0x39febe){let _0x355423=a0_0x53111d[_0x3ee72e(0x1f1)](_0x3bea39[_0x3ee72e(0x2fc)]['repo_path'],_0x224e11['path']),_0x3de968=null,_0x158a9e=null;try{_0x3de968=await a0_0x51536d[_0x3ee72e(0x2b3)](_0x355423,{'encoding':'utf-8'});}catch(_0x55592a){const _0x2a5d24=fixPathRepetition(_0x355423);if(_0x2a5d24)try{_0x3de968=await a0_0x51536d[_0x3ee72e(0x2b3)](_0x2a5d24,{'encoding':_0x3ee72e(0x252)}),_0x355423=_0x2a5d24;}catch{_0x158a9e=_0x55592a instanceof Error?_0x55592a:new Error(String(_0x55592a));}else _0x158a9e=_0x55592a instanceof Error?_0x55592a:new Error(String(_0x55592a));}if(_0x3de968!==null){const _0x20edff=_0x3de968[_0x3ee72e(0x2de)](/\r?\n/),_0x46dba5=[];if(_0x224e11['lines']==='*'||!Array['isArray'](_0x224e11[_0x3ee72e(0x26f)]))for(let _0x4d96a4=0x1;_0x4d96a4<=_0x20edff[_0x3ee72e(0x2eb)];_0x4d96a4++){const _0x1b7717=_0x20edff[_0x4d96a4-0x1];_0x46dba5[_0x3ee72e(0x24d)](_0x4d96a4+'|\x20'+_0x1b7717);}else for(const [_0x30c171,_0x553c7e]of _0x224e11[_0x3ee72e(0x26f)]){_0x46dba5[_0x3ee72e(0x2eb)]>0x0&&_0x46dba5[_0x3ee72e(0x24d)]('');for(let _0x4985a8=_0x30c171;_0x4985a8<=_0x553c7e&&_0x4985a8<=_0x20edff[_0x3ee72e(0x2eb)];_0x4985a8++){const _0x372387=_0x20edff[_0x4985a8-0x1];_0x46dba5['push'](_0x4985a8+'|\x20'+_0x372387);}}_0x58a4d8[_0x3ee72e(0x24d)]({'path':_0x224e11['path'],'content':_0x46dba5[_0x3ee72e(0x27c)]('\x0a')});}else _0x5b8ad8[_0x3ee72e(0x24d)](_0x3ee72e(0x21c)+_0x224e11[_0x3ee72e(0x1fa)]+_0x3ee72e(0x265)+(_0x158a9e?.['message']||_0x3ee72e(0x25c))+_0x3ee72e(0x211));}try{const _0x3b6aaf=await compactFileContexts(_0x58a4d8,_0x3bea39['data'][_0x3ee72e(0x273)],MORPH_API_KEY,MORPH_API_URL);for(const _0x23197e of _0x3b6aaf){_0x5b8ad8[_0x3ee72e(0x24d)](_0x3ee72e(0x21c)+_0x23197e[_0x3ee72e(0x1fa)]+'\x22>\x0a'+_0x23197e[_0x3ee72e(0x266)]+_0x3ee72e(0x211));}}catch(_0x503abd){logger[_0x3ee72e(0x29d)](_0x3ee72e(0x2e7),'compaction_failed',{'error':_0x503abd instanceof Error?_0x503abd[_0x3ee72e(0x1de)]:String(_0x503abd),'files_count':_0x58a4d8[_0x3ee72e(0x2eb)]});for(const _0x5bb1cb of _0x58a4d8){_0x5b8ad8['push']('<file\x20path=\x22'+_0x5bb1cb[_0x3ee72e(0x1fa)]+_0x3ee72e(0x28d)+_0x5bb1cb[_0x3ee72e(0x266)]+'\x0a</file>');}}_0x58d768[_0x3ee72e(0x24d)](_0x5b8ad8['join']('\x0a\x0a')),_0x545b84=_0x58d768[_0x3ee72e(0x27c)]('\x0a');const _0x107daf=_0x3196ed[_0x3ee72e(0x2a0)]?.[_0x3ee72e(0x20f)](_0x5b7ffa=>_0x5b7ffa[_0x3ee72e(0x1de)]?.[_0x3ee72e(0x1e1)](_0x3ee72e(0x214)))||[];if(_0x107daf[_0x3ee72e(0x2eb)]>0x0){const _0x394d21=_0x107daf[_0x3ee72e(0x244)](_0x582410=>_0x582410[_0x3ee72e(0x1de)])[_0x3ee72e(0x27c)](';\x20');reportMorphError({'error_message':_0x394d21,'error_type':_0x3ee72e(0x2b0),'context':{'tool':'codebase_search','repo_path':_0x3bea39[_0x3ee72e(0x2fc)]['repo_path'],'query':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'model':'morph-warp-grep-v2.1','termination_reason':'completed_with_file_errors','error_count':_0x107daf[_0x3ee72e(0x2eb)],'is_timeout':![],'timings':_0x3196ed[_0x3ee72e(0x26a)],'files_attempted':_0x39febe[_0x3ee72e(0x244)](_0x58f4ed=>({'path':_0x58f4ed[_0x3ee72e(0x1fa)],'lines':_0x58f4ed[_0x3ee72e(0x26f)]})),'tool_calls':_0x58a748(_0x3196ed[_0x3ee72e(0x2b1)]),'messages':_0x3196ed[_0x3ee72e(0x2b1)]?.[_0x3ee72e(0x244)](_0x590436=>({'role':_0x590436[_0x3ee72e(0x226)],'content':_0x590436['content'],..._0x590436[_0x3ee72e(0x210)]?{'tool_calls':_0x590436[_0x3ee72e(0x210)][_0x3ee72e(0x2eb)]}:{},..._0x590436[_0x3ee72e(0x26b)]?{'tool_call_id':_0x590436['tool_call_id']}:{}})),'request_content':{'query':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'repo_path':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x290)],'repoRoot':a0_0x53111d[_0x3ee72e(0x1f1)](_0x3bea39['data'][_0x3ee72e(0x290)]),'model':_0x3ee72e(0x236)}},'source':_0x3ee72e(0x22f)})[_0x3ee72e(0x22a)](()=>{});}}else{if(_0x3196ed[_0x3ee72e(0x23f)]===_0x3ee72e(0x2d3)&&_0x3196ed[_0x3ee72e(0x2a0)][_0x3ee72e(0x2eb)]>0x0){const _0x2bd2d0=_0x3196ed['errors'][_0x3ee72e(0x244)](_0x25065b=>_0x25065b['message'])[_0x3ee72e(0x27c)](';\x20');_0x545b84=_0x3ee72e(0x303)+_0x2bd2d0;const _0x25a541=_0x2bd2d0[_0x3ee72e(0x28b)]()[_0x3ee72e(0x2da)](_0x3ee72e(0x24f))||_0x2bd2d0[_0x3ee72e(0x28b)]()[_0x3ee72e(0x2da)](_0x3ee72e(0x2c7))||_0x2bd2d0[_0x3ee72e(0x28b)]()[_0x3ee72e(0x2da)](_0x3ee72e(0x2f5)),_0x3fabf5=_0x3196ed['finish']?.[_0x3ee72e(0x1e3)]?.['files'],_0x26b387=_0x3196ed[_0x3ee72e(0x2a0)][0x0];reportMorphError({'error_message':_0x2bd2d0,'error_type':_0x25a541?_0x3ee72e(0x2e8):_0x26b387?.[_0x3ee72e(0x247)]?.[_0x3ee72e(0x2f2)]||'WarpGrepError','context':{'tool':_0x3ee72e(0x215),'repo_path':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x290)],'query':_0x3bea39[_0x3ee72e(0x2fc)]['search_string'],'model':_0x3ee72e(0x236),'termination_reason':_0x3196ed[_0x3ee72e(0x23f)],'error_count':_0x3196ed[_0x3ee72e(0x2a0)]['length'],'is_timeout':_0x25a541,'timings':_0x3196ed[_0x3ee72e(0x26a)],'files_attempted':_0x3fabf5?.['map'](_0x2bc285=>({'path':_0x2bc285[_0x3ee72e(0x1fa)],'lines':_0x2bc285[_0x3ee72e(0x26f)]})),'tool_calls':_0x58a748(_0x3196ed[_0x3ee72e(0x2b1)]),'messages':_0x3196ed['messages']?.[_0x3ee72e(0x244)](_0x516c95=>({'role':_0x516c95[_0x3ee72e(0x226)],'content':_0x516c95[_0x3ee72e(0x266)],..._0x516c95[_0x3ee72e(0x210)]?{'tool_calls':_0x516c95[_0x3ee72e(0x210)][_0x3ee72e(0x2eb)]}:{},..._0x516c95[_0x3ee72e(0x26b)]?{'tool_call_id':_0x516c95[_0x3ee72e(0x26b)]}:{}})),'request_content':{'query':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'repo_path':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x290)],'repoRoot':a0_0x53111d[_0x3ee72e(0x1f1)](_0x3bea39['data'][_0x3ee72e(0x290)]),'model':_0x3ee72e(0x236)}},'stack_trace':_0x26b387?.['stack']||undefined,'source':_0x3ee72e(0x22f)})[_0x3ee72e(0x22a)](()=>{});}else _0x545b84=_0x3ee72e(0x293);}return{'content':[{'type':_0x3ee72e(0x253),'text':_0x545b84}]};}catch(_0x3cb2ca){const _0x1e5344=handleMorphAPIError(_0x3cb2ca);if(_0x1e5344)return logger[_0x3ee72e(0x278)](_0x3ee72e(0x2e7),_0x3ee72e(0x28c),{'tool':_0x3ee72e(0x215),'error':_0x3ee72e(0x23c),'latency_ms':Date[_0x3ee72e(0x306)]()-_0x20ddf3}),_0x1e5344;const _0xa38819=_0x3cb2ca instanceof Error?_0x3cb2ca[_0x3ee72e(0x1de)]:String(_0x3cb2ca);logger[_0x3ee72e(0x278)](_0x3ee72e(0x2e7),_0x3ee72e(0x28c),{'tool':_0x3ee72e(0x215),'error':_0xa38819,'repo_path':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x290)],'query':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'latency_ms':Date[_0x3ee72e(0x306)]()-_0x20ddf3});const _0x59bd4a=_0xa38819[_0x3ee72e(0x28b)]()[_0x3ee72e(0x2da)](_0x3ee72e(0x24f))||_0xa38819[_0x3ee72e(0x28b)]()[_0x3ee72e(0x2da)]('timed\x20out')||_0xa38819[_0x3ee72e(0x28b)]()['includes'](_0x3ee72e(0x2f5))||_0x3cb2ca instanceof Error&&_0x3cb2ca['name']===_0x3ee72e(0x2e8);return reportMorphError({'error_message':_0xa38819,'error_type':_0x59bd4a?'TimeoutError':_0x3cb2ca instanceof Error?_0x3cb2ca[_0x3ee72e(0x247)][_0x3ee72e(0x2f2)]:'UnknownError','context':{'tool':_0x3ee72e(0x215),'repo_path':_0x3bea39['data'][_0x3ee72e(0x290)],'query':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'model':'morph-warp-grep-v2.1','is_timeout':_0x59bd4a,'exception_phase':_0x3ee72e(0x272),'request_content':{'query':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'repo_path':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x290)],'repoRoot':a0_0x53111d[_0x3ee72e(0x1f1)](_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x290)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x3cb2ca instanceof Error?_0x3cb2ca[_0x3ee72e(0x21f)]:undefined,'source':_0x3ee72e(0x22f)})[_0x3ee72e(0x22a)](()=>{}),{'content':[{'type':_0x3ee72e(0x253),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0xa38819}],'isError':![]};}}case TOOL_NAMES['GITHUB_CODEBASE_SEARCH']:{const _0x299ac4=WarpGrepGitHubArgsSchema[_0x3ee72e(0x237)](_0x1506c7);if(!_0x299ac4[_0x3ee72e(0x216)])return{'content':[{'type':_0x3ee72e(0x253),'text':_0x3ee72e(0x2d5)+_0x299ac4[_0x3ee72e(0x278)]}],'isError':!![]};const _0x363843=_0x299ac4[_0x3ee72e(0x2fc)][_0x3ee72e(0x287)]||_0x299ac4[_0x3ee72e(0x2fc)][_0x3ee72e(0x275)];if(!_0x363843)return{'content':[{'type':'text','text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x4c6f5d=MORPH_API_KEY;if(!_0x4c6f5d)throw new Error(_0x3ee72e(0x2f7));const _0x49bdc8=Date[_0x3ee72e(0x306)]();logger['debug'](_0x3ee72e(0x2e7),'github_search_start',{'identifier':_0x363843,'query':_0x299ac4[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'branch':_0x299ac4[_0x3ee72e(0x2fc)]['branch']});try{const _0x4e5b31=new WarpGrepClient({'morphApiKey':_0x4c6f5d,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0xf46774=await _0x4e5b31[_0x3ee72e(0x1fc)]({'searchTerm':_0x299ac4[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'github':_0x363843,'branch':_0x299ac4[_0x3ee72e(0x2fc)][_0x3ee72e(0x2fb)]}),_0x461a12=Date[_0x3ee72e(0x306)]()-_0x49bdc8;logMcpStderr(_0x3ee72e(0x1e8)+_0x461a12+_0x3ee72e(0x2a6)+_0xf46774['success']);const _0x20666f=formatResult(_0xf46774);return{'content':[{'type':_0x3ee72e(0x253),'text':_0x20666f}]};}catch(_0x404c53){const _0x3a15a5=handleMorphAPIError(_0x404c53);if(_0x3a15a5)return _0x3a15a5;const _0x3fb3de=Date['now']()-_0x49bdc8,_0x29d9c1=_0x404c53 instanceof Error?_0x404c53[_0x3ee72e(0x1de)]:String(_0x404c53);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x3fb3de+_0x3ee72e(0x1e9),_0x29d9c1),reportMorphError({'error_message':_0x29d9c1,'error_type':_0x404c53 instanceof Error?_0x404c53[_0x3ee72e(0x247)][_0x3ee72e(0x2f2)]:_0x3ee72e(0x1f7),'context':{'tool':'github_codebase_search','github_url':_0x363843,'search_string':_0x299ac4[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'branch':_0x299ac4[_0x3ee72e(0x2fc)][_0x3ee72e(0x2fb)]},'stack_trace':_0x404c53 instanceof Error?_0x404c53[_0x3ee72e(0x21f)]:undefined,'source':_0x3ee72e(0x22f),'tool':'github_codebase_search','latency_ms':_0x3fb3de})[_0x3ee72e(0x22a)](()=>{}),{'content':[{'type':_0x3ee72e(0x253),'text':_0x3ee72e(0x26e)+_0x29d9c1}],'isError':![]};}}default:throw new Error(_0x3ee72e(0x1f0)+_0x3fc855);}}catch(_0x232270){const _0x2bd86d=_0x232270 instanceof Error?_0x232270[_0x3ee72e(0x1de)]:String(_0x232270);return reportMorphError({'error_message':_0x2bd86d,'error_type':_0x232270 instanceof Error?_0x232270[_0x3ee72e(0x247)][_0x3ee72e(0x2f2)]:_0x3ee72e(0x1f7),'context':{'tool':_0x3fc855,'arguments':_0x1506c7?JSON[_0x3ee72e(0x200)](_0x1506c7)[_0x3ee72e(0x269)](0x0,0x1f4):undefined,'mcp_server_version':_0x3ee72e(0x1ec)},'stack_trace':_0x232270 instanceof Error?_0x232270[_0x3ee72e(0x21f)]:undefined,'source':'mcp-filesystem'})[_0x3ee72e(0x22a)](()=>{}),{'content':[{'type':_0x3ee72e(0x253),'text':_0x3ee72e(0x303)+_0x2bd86d}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x5caab2){const _0x583be9=a0_0x1f02f7,_0x593bc1=await getValidRootDirectories(_0x5caab2);if(_0x593bc1[_0x583be9(0x2eb)]>0x0)allowedDirectories=[..._0x593bc1],logMcpStderr(_0x583be9(0x1db)+_0x593bc1['length']+'\x20valid\x20directories');else{logMcpStderr(_0x583be9(0x246));if(ENABLE_WORKSPACE_MODE)try{const _0x541172=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x541172&&(allowedDirectories=[_0x541172],logMcpStderr(_0x583be9(0x2bc)+_0x541172));}catch(_0x5307fe){logMcpStderr(_0x583be9(0x22b)+_0x5307fe);}}}server[a0_0x1f02f7(0x2ec)](RootsListChangedNotificationSchema,async()=>{const _0x5a748a=a0_0x1f02f7;try{const _0x4adde5=await server[_0x5a748a(0x208)]();_0x4adde5&&_0x5a748a(0x21d)in _0x4adde5&&await updateAllowedDirectoriesFromRoots(_0x4adde5[_0x5a748a(0x21d)]);}catch(_0x5d04a8){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x5d04a8 instanceof Error?_0x5d04a8['message']:String(_0x5d04a8));}}),server[a0_0x1f02f7(0x220)]=async()=>{const _0x35c5c3=a0_0x1f02f7,_0x4fdf5d=server['getClientCapabilities']();if(_0x4fdf5d?.[_0x35c5c3(0x21d)])try{const _0x58f03d=await server[_0x35c5c3(0x208)]();_0x58f03d&&_0x35c5c3(0x21d)in _0x58f03d?await updateAllowedDirectoriesFromRoots(_0x58f03d[_0x35c5c3(0x21d)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x3ba85d){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x3ba85d instanceof Error?_0x3ba85d[_0x35c5c3(0x1de)]:String(_0x3ba85d));}else{if(allowedDirectories[_0x35c5c3(0x2eb)]>0x0)logMcpStderr(_0x35c5c3(0x29b),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x35c5c3(0x1e0));else throw new Error('Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.');}}};async function runServer(){const _0x352e85=a0_0x1f02f7,_0x346d95=new StdioServerTransport();await server[_0x352e85(0x2cd)](_0x346d95),logMcpStderr(_0x352e85(0x1f2)),allowedDirectories[_0x352e85(0x2eb)]===0x0&&logMcpStderr(_0x352e85(0x20c));}runServer()[a0_0x1f02f7(0x22a)](_0x1b1cc0=>{const _0x16aa75=a0_0x1f02f7;logMcpStderr(_0x16aa75(0x302),_0x1b1cc0),process[_0x16aa75(0x2a9)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a1_0x3021(_0x2ce03e,_0x28161e){_0x2ce03e=_0x2ce03e-0x1a2;var _0xaf6341=a1_0xaf63();var _0x3021e2=_0xaf6341[_0x2ce03e];return _0x3021e2;}var a1_0x1a7b4c=a1_0x3021;(function(_0x41363a,_0x55bd13){var _0x56af34=a1_0x3021,_0x3c31c8=_0x41363a();while(!![]){try{var _0x157404=parseInt(_0x56af34(0x1ab))/0x1+-parseInt(_0x56af34(0x1b0))/0x2+parseInt(_0x56af34(0x1a3))/0x3+-parseInt(_0x56af34(0x1ac))/0x4+parseInt(_0x56af34(0x1b6))/0x5+-parseInt(_0x56af34(0x1b2))/0x6*(parseInt(_0x56af34(0x1b5))/0x7)+-parseInt(_0x56af34(0x1ad))/0x8*(-parseInt(_0x56af34(0x1aa))/0x9);if(_0x157404===_0x55bd13)break;else _0x3c31c8['push'](_0x3c31c8['shift']());}catch(_0x5593c1){_0x3c31c8['push'](_0x3c31c8['shift']());}}}(a1_0xaf63,0x85bd9));import a1_0x318e8e from'os';import{logger}from'./logger.js';export function getOperatingSystemType(_0x1bceab=a1_0x318e8e[a1_0x1a7b4c(0x1b1)]()){var _0x2ccf34=a1_0x1a7b4c;switch(_0x1bceab){case _0x2ccf34(0x1a6):return _0x2ccf34(0x1b3);case _0x2ccf34(0x1af):return'Windows';case _0x2ccf34(0x1b4):return _0x2ccf34(0x1a8);default:return _0x2ccf34(0x1a5);}}function a1_0xaf63(){var _0x2eb3ad=['16oLcgLd','[os=','win32','991776OHRsNW','platform','24IspUDc','macOS','linux','1347199pPCJdW','1586360jDpOTD','MCP','3118260nNrgVj','info','Unknown','darwin','length','Linux','map','1907109OHYvtb','986380ITuuLG','3813428sEBONq'];a1_0xaf63=function(){return _0x2eb3ad;};return a1_0xaf63();}export function formatMcpLogMessage(_0x1adac9,_0x14954b=a1_0x318e8e['platform']()){var _0x11cba5=a1_0x1a7b4c;return _0x11cba5(0x1ae)+getOperatingSystemType(_0x14954b)+']\x20'+_0x1adac9;}export function logMcpStderr(_0x2d0271,..._0x2f4691){var _0x91364c=a1_0x1a7b4c;console['error'](formatMcpLogMessage(_0x2d0271),..._0x2f4691),logger[_0x91364c(0x1a4)](_0x91364c(0x1a2),_0x2d0271,_0x2f4691[_0x91364c(0x1a7)]?{'args':_0x2f4691[_0x91364c(0x1a9)](_0x380e3d=>String(_0x380e3d))}:undefined);}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a2_0x1ea00c=a2_0x5d57;function a2_0x216f(){const _0x1f5068=['6551868Ggrhgu','env','2905973NWlxlT','warn','MORPH_DEBUG','_log','45358GwMKsU','write','enabled',']\x20[','fileStream','34aVjgma','35866620JldLTh','27msrcLv','MORPH_LOG_FILE','1236968xSLcfT','debug','stringify','error','toUpperCase','1268845DFqAjE','40872USTKHY','4IzEmCW'];a2_0x216f=function(){return _0x1f5068;};return a2_0x216f();}(function(_0x2e4ea3,_0x4684c3){const _0x4a460d=a2_0x5d57,_0x28502c=_0x2e4ea3();while(!![]){try{const _0x1080c6=parseInt(_0x4a460d(0x11b))/0x1*(-parseInt(_0x4a460d(0x120))/0x2)+-parseInt(_0x4a460d(0x12a))/0x3+parseInt(_0x4a460d(0x12b))/0x4*(-parseInt(_0x4a460d(0x129))/0x5)+-parseInt(_0x4a460d(0x12c))/0x6+-parseInt(_0x4a460d(0x12e))/0x7+parseInt(_0x4a460d(0x124))/0x8*(-parseInt(_0x4a460d(0x122))/0x9)+parseInt(_0x4a460d(0x121))/0xa;if(_0x1080c6===_0x4684c3)break;else _0x28502c['push'](_0x28502c['shift']());}catch(_0x273c38){_0x28502c['push'](_0x28502c['shift']());}}}(a2_0x216f,0x8ceb3));function a2_0x5d57(_0x3e74a5,_0x1e48e9){_0x3e74a5=_0x3e74a5-0x11a;const _0x216f16=a2_0x216f();let _0x5d57d3=_0x216f16[_0x3e74a5];return _0x5d57d3;}import{createWriteStream}from'fs';class MorphLogger{[a2_0x1ea00c(0x11d)];[a2_0x1ea00c(0x11f)];constructor(){const _0x17ebf7=a2_0x1ea00c;this[_0x17ebf7(0x11d)]=process[_0x17ebf7(0x12d)][_0x17ebf7(0x130)]==='1'||!!process[_0x17ebf7(0x12d)]['MORPH_LOG_FILE'];const _0xfe7939=process['env'][_0x17ebf7(0x123)];this[_0x17ebf7(0x11f)]=_0xfe7939?createWriteStream(_0xfe7939,{'flags':'a'}):null;}['debug'](_0x3e4bcd,_0x510070,_0x32636f){const _0x14a7ee=a2_0x1ea00c;this[_0x14a7ee(0x11a)](_0x14a7ee(0x125),_0x3e4bcd,_0x510070,_0x32636f);}['info'](_0x29829d,_0x51286d,_0x31fb2d){const _0x3d2808=a2_0x1ea00c;this[_0x3d2808(0x11a)]('info',_0x29829d,_0x51286d,_0x31fb2d);}['warn'](_0x5ebbda,_0x2489bf,_0x547167){const _0x3b04aa=a2_0x1ea00c;this[_0x3b04aa(0x11a)](_0x3b04aa(0x12f),_0x5ebbda,_0x2489bf,_0x547167);}['error'](_0x3a5fdb,_0x205d7d,_0x2fcb87){const _0x57145a=a2_0x1ea00c;this[_0x57145a(0x11a)]('error',_0x3a5fdb,_0x205d7d,_0x2fcb87);}['enable'](){const _0x5c43a4=a2_0x1ea00c;this[_0x5c43a4(0x11d)]=!![];}get['isEnabled'](){const _0x25bd34=a2_0x1ea00c;return this[_0x25bd34(0x11d)];}[a2_0x1ea00c(0x11a)](_0x3dc7d1,_0x2a90d4,_0x53ba3a,_0x33cf04){const _0x5227d5=a2_0x1ea00c;if(_0x3dc7d1!=='error'&&!this[_0x5227d5(0x11d)])return;const _0xd81c66=new Date()['toISOString'](),_0x26b35e='['+_0xd81c66+_0x5227d5(0x11e)+_0x3dc7d1[_0x5227d5(0x128)]()+_0x5227d5(0x11e)+_0x2a90d4+']';console[_0x5227d5(0x127)](_0x33cf04?_0x26b35e+'\x20'+_0x53ba3a+'\x20'+JSON[_0x5227d5(0x126)](_0x33cf04):_0x26b35e+'\x20'+_0x53ba3a),this[_0x5227d5(0x11f)]?.[_0x5227d5(0x11c)](JSON[_0x5227d5(0x126)]({'ts':_0xd81c66,'level':_0x3dc7d1,'component':_0x2a90d4,'msg':_0x53ba3a,..._0x33cf04&&{'data':_0x33cf04}})+'\x0a');}}export const logger=new MorphLogger();
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x270b4d,_0x282fa7){const _0x160e49=a3_0x288a,_0x3ad726=_0x270b4d();while(!![]){try{const _0xb61c68=parseInt(_0x160e49(0x121))/0x1+parseInt(_0x160e49(0x11f))/0x2*(-parseInt(_0x160e49(0x120))/0x3)+parseInt(_0x160e49(0x129))/0x4+-parseInt(_0x160e49(0x122))/0x5+parseInt(_0x160e49(0x12b))/0x6+-parseInt(_0x160e49(0x124))/0x7*(parseInt(_0x160e49(0x12e))/0x8)+-parseInt(_0x160e49(0x11e))/0x9*(-parseInt(_0x160e49(0x12a))/0xa);if(_0xb61c68===_0x282fa7)break;else _0x3ad726['push'](_0x3ad726['shift']());}catch(_0x553408){_0x3ad726['push'](_0x3ad726['shift']());}}}(a3_0x1de2,0x86c37));import a3_0x37bdb9 from'path';import a3_0x11dd64 from'os';export function convertToWindowsPath(_0x4e3bcd){const _0x14087b=a3_0x288a;if(_0x4e3bcd[_0x14087b(0x12f)](_0x14087b(0x123))){const _0xc59c83=_0x4e3bcd[_0x14087b(0x11c)](0x5)[_0x14087b(0x11d)](),_0xfdc33e=_0x4e3bcd['slice'](0x6)[_0x14087b(0x131)](/\//g,'\x5c');return _0xc59c83+':'+_0xfdc33e;}if(_0x4e3bcd[_0x14087b(0x130)](/^\/[a-zA-Z]\//)){const _0x67455=_0x4e3bcd[_0x14087b(0x11c)](0x1)[_0x14087b(0x11d)](),_0x124424=_0x4e3bcd[_0x14087b(0x126)](0x2)[_0x14087b(0x131)](/\//g,'\x5c');return _0x67455+':'+_0x124424;}if(_0x4e3bcd[_0x14087b(0x130)](/^[a-zA-Z]:/))return _0x4e3bcd[_0x14087b(0x131)](/\//g,'\x5c');return _0x4e3bcd;}export function normalizePath(_0x43b896){const _0x3b2e15=a3_0x288a;_0x43b896=_0x43b896[_0x3b2e15(0x12d)]()[_0x3b2e15(0x131)](/^["']|["']$/g,'');const _0x28c85b=_0x43b896[_0x3b2e15(0x12f)]('/')&&!_0x43b896[_0x3b2e15(0x130)](/^\/mnt\/[a-z]\//i)&&!_0x43b896['match'](/^\/[a-zA-Z]\//);if(_0x28c85b)return _0x43b896[_0x3b2e15(0x131)](/\/+/g,'/')[_0x3b2e15(0x131)](/\/+$/,'');_0x43b896=convertToWindowsPath(_0x43b896);if(_0x43b896[_0x3b2e15(0x12f)]('\x5c\x5c')){let _0x1f8f11=_0x43b896;_0x1f8f11=_0x1f8f11[_0x3b2e15(0x131)](/^\\{2,}/,'\x5c\x5c');const _0x110397=_0x1f8f11[_0x3b2e15(0x127)](0x2)[_0x3b2e15(0x131)](/\\\\/g,'\x5c');_0x43b896='\x5c\x5c'+_0x110397;}else _0x43b896=_0x43b896[_0x3b2e15(0x131)](/\\\\/g,'\x5c');let _0x5cd336=a3_0x37bdb9[_0x3b2e15(0x128)](_0x43b896);_0x43b896['startsWith']('\x5c\x5c')&&!_0x5cd336[_0x3b2e15(0x12f)]('\x5c\x5c')&&(_0x5cd336='\x5c'+_0x5cd336);if(_0x5cd336[_0x3b2e15(0x130)](/^[a-zA-Z]:/)){let _0x2fdb61=_0x5cd336['replace'](/\//g,'\x5c');return/^[a-z]:/[_0x3b2e15(0x125)](_0x2fdb61)&&(_0x2fdb61=_0x2fdb61[_0x3b2e15(0x11c)](0x0)[_0x3b2e15(0x11d)]()+_0x2fdb61[_0x3b2e15(0x126)](0x1)),_0x2fdb61;}return _0x5cd336[_0x3b2e15(0x131)](/\//g,'\x5c');}export function expandHome(_0x3dfce7){const _0x5580ba=a3_0x288a;if(_0x3dfce7['startsWith']('~/')||_0x3dfce7==='~')return a3_0x37bdb9['join'](a3_0x11dd64[_0x5580ba(0x12c)](),_0x3dfce7[_0x5580ba(0x126)](0x1));return _0x3dfce7;}function a3_0x288a(_0x223076,_0x385562){_0x223076=_0x223076-0x11c;const _0x1de235=a3_0x1de2();let _0x288a74=_0x1de235[_0x223076];return _0x288a74;}function a3_0x1de2(){const _0x3727d1=['2189744SWLQmk','startsWith','match','replace','charAt','toUpperCase','465471ViMRjf','3546AZRUVB','1677ZtJCJZ','262636NzOalv','401280kUZsis','/mnt/','7PHStnZ','test','slice','substring','normalize','3302356QDtBrr','50dJGWrR','3301512NeFJqi','homedir','trim'];a3_0x1de2=function(){return _0x3727d1;};return a3_0x1de2();}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0xa86854,_0x4b1f0a){const _0x1904aa=a4_0x19b2,_0x50a59d=_0xa86854();while(!![]){try{const _0x16b487=parseInt(_0x1904aa(0x1f1))/0x1+-parseInt(_0x1904aa(0x1f4))/0x2+-parseInt(_0x1904aa(0x1fd))/0x3+parseInt(_0x1904aa(0x1ff))/0x4+-parseInt(_0x1904aa(0x1fe))/0x5+-parseInt(_0x1904aa(0x1f3))/0x6*(parseInt(_0x1904aa(0x201))/0x7)+parseInt(_0x1904aa(0x1f7))/0x8;if(_0x16b487===_0x4b1f0a)break;else _0x50a59d['push'](_0x50a59d['shift']());}catch(_0x56b68e){_0x50a59d['push'](_0x50a59d['shift']());}}}(a4_0x26d3,0xa0bd7));import a4_0x2ef420 from'path';function a4_0x19b2(_0x3654d5,_0x3f2582){_0x3654d5=_0x3654d5-0x1f1;const _0x26d369=a4_0x26d3();let _0x19b2d4=_0x26d369[_0x3654d5];return _0x19b2d4;}function a4_0x26d3(){const _0xcc5a7=['6972djkLJz','includes','903905alxRCQ','isAbsolute','2214buCZcs','2212174DwuObe','string','resolve','18994144QMIuPA','startsWith','Path\x20must\x20be\x20absolute\x20after\x20normalization','sep','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','normalize','470271xNwBrw','5244705yqySjw','238108LkLlke','isArray'];a4_0x26d3=function(){return _0xcc5a7;};return a4_0x26d3();}export function isPathWithinAllowedDirectories(_0x3f986b,_0x2f12b0){const _0x4eec86=a4_0x19b2;if(typeof _0x3f986b!=='string'||!Array[_0x4eec86(0x200)](_0x2f12b0))return![];if(!_0x3f986b||_0x2f12b0['length']===0x0)return![];if(_0x3f986b[_0x4eec86(0x202)]('\x00'))return![];let _0x3e6eb1;try{_0x3e6eb1=a4_0x2ef420['resolve'](a4_0x2ef420[_0x4eec86(0x1fc)](_0x3f986b));}catch{return![];}if(!a4_0x2ef420[_0x4eec86(0x1f2)](_0x3e6eb1))throw new Error(_0x4eec86(0x1f9));return _0x2f12b0['some'](_0x1f15ab=>{const _0x26f9e5=_0x4eec86;if(typeof _0x1f15ab!==_0x26f9e5(0x1f5)||!_0x1f15ab)return![];if(_0x1f15ab[_0x26f9e5(0x202)]('\x00'))return![];let _0x41dc31;try{_0x41dc31=a4_0x2ef420[_0x26f9e5(0x1f6)](a4_0x2ef420[_0x26f9e5(0x1fc)](_0x1f15ab));}catch{return![];}if(!a4_0x2ef420[_0x26f9e5(0x1f2)](_0x41dc31))throw new Error(_0x26f9e5(0x1fb));if(_0x3e6eb1===_0x41dc31)return!![];if(_0x41dc31===a4_0x2ef420[_0x26f9e5(0x1fa)])return _0x3e6eb1[_0x26f9e5(0x1f8)](a4_0x2ef420[_0x26f9e5(0x1fa)]);return _0x3e6eb1[_0x26f9e5(0x1f8)](_0x41dc31+a4_0x2ef420[_0x26f9e5(0x1fa)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a5_0x15d7(_0x11d234,_0x532fec){_0x11d234=_0x11d234-0x16d;const _0x56c0c2=a5_0x56c0();let _0x15d79f=_0x56c0c2[_0x11d234];return _0x15d79f;}(function(_0x1d73e4,_0x2422a6){const _0x18a381=a5_0x15d7,_0x30ea77=_0x1d73e4();while(!![]){try{const _0x12c315=parseInt(_0x18a381(0x185))/0x1+-parseInt(_0x18a381(0x17e))/0x2+-parseInt(_0x18a381(0x181))/0x3*(parseInt(_0x18a381(0x17d))/0x4)+-parseInt(_0x18a381(0x180))/0x5*(-parseInt(_0x18a381(0x172))/0x6)+-parseInt(_0x18a381(0x17f))/0x7+parseInt(_0x18a381(0x175))/0x8+-parseInt(_0x18a381(0x170))/0x9*(-parseInt(_0x18a381(0x178))/0xa);if(_0x12c315===_0x2422a6)break;else _0x30ea77['push'](_0x30ea77['shift']());}catch(_0x58112e){_0x30ea77['push'](_0x30ea77['shift']());}}}(a5_0x56c0,0x290dc));function a5_0x56c0(){const _0x454240=['file://','uri','resolve','279809QcEpZt','\x20due\x20to\x20error:\x20','homedir','message','567wRlWUO','Skipping\x20invalid\x20directory:\x20','12ELgkln','startsWith','non-directory\x20root','320328pfZQJF','stat','Skipping\x20','19870fzUWZo','push','realpath','isDirectory','slice','12uCwHpl','510862jZMWrv','254289mMXOYF','591390oeoZdg','221673cVpPSH'];a5_0x56c0=function(){return _0x454240;};return a5_0x56c0();}import{promises as a5_0x9c0cf4}from'fs';import a5_0x2e2cb8 from'path';import a5_0x367db3 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x5e8740){const _0x9f65e9=a5_0x15d7;try{const _0x4313b2=_0x5e8740[_0x9f65e9(0x173)](_0x9f65e9(0x182))?_0x5e8740[_0x9f65e9(0x17c)](0x7):_0x5e8740,_0x5f023a=_0x4313b2['startsWith']('~/')||_0x4313b2==='~'?a5_0x2e2cb8['join'](a5_0x367db3[_0x9f65e9(0x16e)](),_0x4313b2[_0x9f65e9(0x17c)](0x1)):_0x4313b2,_0x15a4fc=a5_0x2e2cb8[_0x9f65e9(0x184)](_0x5f023a),_0x4925b2=await a5_0x9c0cf4[_0x9f65e9(0x17a)](_0x15a4fc);return normalizePath(_0x4925b2);}catch{return null;}}function formatDirectoryError(_0x200852,_0x5b3691,_0x506f9c){const _0x57f1e2=a5_0x15d7;if(_0x506f9c)return _0x57f1e2(0x177)+_0x506f9c+':\x20'+_0x200852;const _0x10b6ad=_0x5b3691 instanceof Error?_0x5b3691[_0x57f1e2(0x16f)]:String(_0x5b3691);return _0x57f1e2(0x171)+_0x200852+_0x57f1e2(0x16d)+_0x10b6ad;}export async function getValidRootDirectories(_0x3cb61e){const _0x1f9579=a5_0x15d7,_0x4969c9=[];for(const _0x19d72b of _0x3cb61e){const _0x599384=await parseRootUri(_0x19d72b[_0x1f9579(0x183)]);if(!_0x599384){logMcpStderr(formatDirectoryError(_0x19d72b['uri'],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x4c3e02=await a5_0x9c0cf4[_0x1f9579(0x176)](_0x599384);_0x4c3e02[_0x1f9579(0x17b)]()?_0x4969c9[_0x1f9579(0x179)](_0x599384):logMcpStderr(formatDirectoryError(_0x599384,undefined,_0x1f9579(0x174)));}catch(_0x286faa){logMcpStderr(formatDirectoryError(_0x599384,_0x286faa));}}return _0x4969c9;}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a6_0x1466ab=a6_0x1cb4;(function(_0x38ffd8,_0x4c4058){const _0x2fd057=a6_0x1cb4,_0x2ae376=_0x38ffd8();while(!![]){try{const _0x3885aa=parseInt(_0x2fd057(0x9d))/0x1+parseInt(_0x2fd057(0x97))/0x2+-parseInt(_0x2fd057(0x9c))/0x3+parseInt(_0x2fd057(0x9a))/0x4*(parseInt(_0x2fd057(0x99))/0x5)+-parseInt(_0x2fd057(0x9b))/0x6+-parseInt(_0x2fd057(0x98))/0x7*(parseInt(_0x2fd057(0x96))/0x8)+parseInt(_0x2fd057(0x95))/0x9;if(_0x3885aa===_0x4c4058)break;else _0x2ae376['push'](_0x2ae376['shift']());}catch(_0x180c1a){_0x2ae376['push'](_0x2ae376['shift']());}}}(a6_0x15ba,0xdef94));export const TOOL_NAMES={'EDIT_FILE':'edit_file','CODEBASE_SEARCH':a6_0x1466ab(0x93),'GITHUB_CODEBASE_SEARCH':a6_0x1466ab(0x94)};export const ALL_TOOL_NAMES=Object['values'](TOOL_NAMES);function a6_0x15ba(){const _0x29bde9=['351988xNlnQw','10749074XQHXlq','18355FaBfkj','68crQVfm','10875372xJIgRo','3161322zwezeD','517071YoVXRY','codebase_search','github_codebase_search','41037714PrdPMQ','8jJppCy'];a6_0x15ba=function(){return _0x29bde9;};return a6_0x15ba();}function a6_0x1cb4(_0x43de43,_0x151462){_0x43de43=_0x43de43-0x93;const _0x15ba1a=a6_0x15ba();let _0x1cb4d3=_0x15ba1a[_0x43de43];return _0x1cb4d3;}export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.193",
|
|
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.183",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|