@morphllm/morphmcp 0.8.186 → 0.8.187
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_0x5a8a3f=a0_0x5275;(function(_0x552a5d,_0x4dcad9){const _0x1a5076=a0_0x5275,_0x23912b=_0x552a5d();while(!![]){try{const _0x3b7e97=-parseInt(_0x1a5076(0x10e))/0x1*(parseInt(_0x1a5076(0xa6))/0x2)+parseInt(_0x1a5076(0xc0))/0x3*(parseInt(_0x1a5076(0x9d))/0x4)+parseInt(_0x1a5076(0x119))/0x5*(-parseInt(_0x1a5076(0x14a))/0x6)+-parseInt(_0x1a5076(0x133))/0x7+parseInt(_0x1a5076(0x15e))/0x8+parseInt(_0x1a5076(0x112))/0x9*(parseInt(_0x1a5076(0x134))/0xa)+parseInt(_0x1a5076(0x129))/0xb;if(_0x3b7e97===_0x4dcad9)break;else _0x23912b['push'](_0x23912b['shift']());}catch(_0x2e6ea0){_0x23912b['push'](_0x23912b['shift']());}}}(a0_0x330b,0x8866b));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_0x3e6463 from'fs/promises';import a0_0x562446 from'path';import a0_0x58d0fe 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';function a0_0x5275(_0x2e0be7,_0x347a57){_0x2e0be7=_0x2e0be7-0x9a;const _0x330bdc=a0_0x330b();let _0x52759a=_0x330bdc[_0x2e0be7];return _0x52759a;}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_0x1c6535 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x4b03f2){const _0x412a0a=a0_0x5275,_0x370b9d=_0x4b03f2[_0x412a0a(0x115)](a0_0x562446[_0x412a0a(0x15c)])[_0x412a0a(0x182)](Boolean);if(_0x370b9d[_0x412a0a(0x142)]<0x2)return null;for(let _0x4620a5=Math[_0x412a0a(0x18d)](_0x370b9d[_0x412a0a(0x142)]/0x2);_0x4620a5>=0x1;_0x4620a5--){for(let _0x183f9b=0x0;_0x183f9b<=_0x370b9d[_0x412a0a(0x142)]-0x2*_0x4620a5;_0x183f9b++){const _0x1a8aa9=_0x370b9d[_0x412a0a(0xff)](_0x183f9b,_0x183f9b+_0x4620a5),_0x3792a7=_0x370b9d['slice'](_0x183f9b+_0x4620a5,_0x183f9b+0x2*_0x4620a5);if(_0x1a8aa9[_0x412a0a(0xc5)]((_0x328a20,_0x4982b3)=>_0x328a20===_0x3792a7[_0x4982b3])){const _0x4ffcad=[..._0x370b9d[_0x412a0a(0xff)](0x0,_0x183f9b),..._0x370b9d['slice'](_0x183f9b+_0x4620a5)];return a0_0x562446[_0x412a0a(0x15c)]+_0x4ffcad['join'](a0_0x562446[_0x412a0a(0x15c)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x2bca67=a0_0x5275;try{const _0x5eefe9=require(_0x2bca67(0xea));return _0x5eefe9[_0x2bca67(0x1c5)]??_0x2bca67(0xfd);}catch(_0x169c35){return logMcpStderr(_0x2bca67(0xad),_0x169c35),_0x2bca67(0xfd);}}function printHelp(){const _0x269fd5=a0_0x5275;console[_0x269fd5(0xd9)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x269fd5(0xd9)](_0x269fd5(0x122)),console[_0x269fd5(0xd9)](_0x269fd5(0x153)),console[_0x269fd5(0xd9)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x269fd5(0xd9)](_0x269fd5(0xa4)),console[_0x269fd5(0xd9)](_0x269fd5(0x1c6)),console[_0x269fd5(0xd9)](_0x269fd5(0x186)),console[_0x269fd5(0xd9)](_0x269fd5(0xcc)),console[_0x269fd5(0xd9)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x5a8a3f(0x191)][a0_0x5a8a3f(0xff)](0x2),VERSION_FLAGS=new Set([a0_0x5a8a3f(0x16d),'-v','-V']),HELP_FLAGS=new Set([a0_0x5a8a3f(0x1bf),'-h']);cliArgs[a0_0x5a8a3f(0x127)](_0x283d86=>VERSION_FLAGS[a0_0x5a8a3f(0x1b2)](_0x283d86))&&(console[a0_0x5a8a3f(0xd9)](a0_0x5a8a3f(0xfb)+getPackageVersion()),process[a0_0x5a8a3f(0x167)](0x0));cliArgs['some'](_0x4059f3=>HELP_FLAGS[a0_0x5a8a3f(0x1b2)](_0x4059f3))&&(printHelp(),process[a0_0x5a8a3f(0x167)](0x0));function getCliArg(_0x23d0f8){const _0x1b1673=a0_0x5a8a3f;for(let _0xec0dd1=0x0;_0xec0dd1<cliArgs[_0x1b1673(0x142)];_0xec0dd1++){const _0x2ded5a=cliArgs[_0xec0dd1];if(_0x2ded5a[_0x1b1673(0x166)]('--'+_0x23d0f8+'='))return _0x2ded5a['slice'](('--'+_0x23d0f8+'=')['length']);if(_0x2ded5a==='--'+_0x23d0f8&&_0xec0dd1+0x1<cliArgs[_0x1b1673(0x142)])return cliArgs[_0xec0dd1+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x5a8a3f(0x142)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x5a8a3f(0x1b2)](arg)||HELP_FLAGS[a0_0x5a8a3f(0x1b2)](arg))continue;if(arg[a0_0x5a8a3f(0x166)]('--api-key='))continue;if(arg===a0_0x5a8a3f(0x16a)){i++;continue;}args[a0_0x5a8a3f(0xb1)](arg);}const WORKSPACE_ROOT=process[a0_0x5a8a3f(0xbc)][a0_0x5a8a3f(0x13a)]||process[a0_0x5a8a3f(0xbc)][a0_0x5a8a3f(0x13e)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x5a8a3f(0xbc)][a0_0x5a8a3f(0x103)]!==a0_0x5a8a3f(0x18b),MORPH_API_KEY=getCliArg(a0_0x5a8a3f(0x1b6))??process[a0_0x5a8a3f(0xbc)][a0_0x5a8a3f(0x1ba)],MORPH_API_URL=process['env'][a0_0x5a8a3f(0xe4)],MORPH_LARGE_APPLY=process['env']['MORPH_LARGE_APPLY']!==a0_0x5a8a3f(0x18b),MORPH_WARP_GREP_TIMEOUT=process[a0_0x5a8a3f(0xbc)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x5a8a3f(0xbc)][a0_0x5a8a3f(0x1b5)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x5a8a3f(0xbc)][a0_0x5a8a3f(0x1b8)]?new Set(process[a0_0x5a8a3f(0xbc)]['DISABLED_TOOLS']['split'](',')['map'](_0xad7a7b=>_0xad7a7b[a0_0x5a8a3f(0x137)]())['filter'](_0x182bf4=>_0x182bf4[a0_0x5a8a3f(0x142)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x5a8a3f(0x10a)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x5a8a3f(0xda)](a0_0x5a8a3f(0x18e)+tool+a0_0x5a8a3f(0x1ac)+[...KNOWN_TOOL_NAMES][a0_0x5a8a3f(0x110)](',\x20'));}console[a0_0x5a8a3f(0xda)](a0_0x5a8a3f(0xaf)+[...DISABLED_TOOLS][a0_0x5a8a3f(0x110)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5a8a3f(0x166)](a0_0x5a8a3f(0xa9))&&!MORPH_API_KEY[a0_0x5a8a3f(0x166)](a0_0x5a8a3f(0xc3))&&logMcpStderr(a0_0x5a8a3f(0xef));async function reportMorphError(_0x3d6200){const _0x1eb8b5=a0_0x5a8a3f;try{await a0_0x1c6535[_0x1eb8b5(0x189)](_0x1eb8b5(0x117),{..._0x3d6200,'timestamp':new Date()[_0x1eb8b5(0x17d)](),'source':_0x3d6200['source']||_0x1eb8b5(0x11e),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x3d6200[_0x1eb8b5(0x175)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x1eb8b5(0xd7)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x1b78fa,_0x587587){const _0x3920df=a0_0x5a8a3f;if(_0x1b78fa&&typeof _0x1b78fa===_0x3920df(0x178)&&_0x3920df(0xdc)in _0x1b78fa)return _0x1b78fa[_0x3920df(0xdc)];if(_0x1b78fa&&typeof _0x1b78fa===_0x3920df(0x178)&&_0x3920df(0xbe)in _0x1b78fa)return _0x1b78fa['response']?.[_0x3920df(0xdc)];const _0x3fba44=_0x587587[_0x3920df(0x1ce)](/\b(401|429)\b/);return _0x3fba44?parseInt(_0x3fba44[0x1],0xa):null;}function handleMorphAPIError(_0x4a1064){const _0x1605b8=a0_0x5a8a3f,_0x24b381=_0x4a1064 instanceof Error?_0x4a1064[_0x1605b8(0x140)]:String(_0x4a1064),_0x217447=extractStatusCode(_0x4a1064,_0x24b381);switch(_0x217447){case 0x191:return{'content':[{'type':_0x1605b8(0x19e),'text':_0x1605b8(0x152)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x1605b8(0x19e),'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_0x5a8a3f(0x142)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x5a8a3f(0x12f)),logMcpStderr(a0_0x5a8a3f(0x1cf)),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr(a0_0x5a8a3f(0xbd)),logMcpStderr(a0_0x5a8a3f(0x1ad)),logMcpStderr('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x5bf2a0){const _0x3bbc26=a0_0x5a8a3f;return a0_0x562446[_0x3bbc26(0x145)](_0x5bf2a0);}function expandHome(_0x43bb47){const _0x201313=a0_0x5a8a3f;if(_0x43bb47[_0x201313(0x166)]('~/')||_0x43bb47==='~')return a0_0x562446[_0x201313(0x110)](a0_0x58d0fe[_0x201313(0x150)](),_0x43bb47[_0x201313(0xff)](0x1));return _0x43bb47;}let allowedDirectories=await Promise[a0_0x5a8a3f(0x1b1)](args[a0_0x5a8a3f(0xa8)](async _0x5110b4=>{const _0x4f5808=a0_0x5a8a3f,_0x4fa606=expandHome(_0x5110b4),_0x59c74a=a0_0x562446['resolve'](_0x4fa606);try{const _0x406b51=await a0_0x3e6463[_0x4f5808(0xc7)](_0x59c74a);return normalizePath(_0x406b51);}catch(_0x443a28){return normalizePath(_0x59c74a);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5a8a3f(0x142)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5a8a3f(0xb1)](workspaceDir),logMcpStderr(a0_0x5a8a3f(0x192)+workspaceDir+a0_0x5a8a3f(0x144)));}catch(a0_0x16cf49){logMcpStderr(a0_0x5a8a3f(0x17c)+a0_0x16cf49);}async function detectWorkspaceRoot(_0x1249c2){const _0x4c7a93=a0_0x5a8a3f;let _0x1b27e0=a0_0x562446[_0x4c7a93(0x100)](_0x1249c2);const _0x34ba08=[_0x4c7a93(0x132),_0x4c7a93(0x1b4),_0x4c7a93(0x15f),'Cargo.toml',_0x4c7a93(0xab),_0x4c7a93(0x125),_0x4c7a93(0x16f),_0x4c7a93(0x190),'composer.json'];while(_0x1b27e0!==a0_0x562446[_0x4c7a93(0xb8)](_0x1b27e0)){for(const _0x19af4f of _0x34ba08){const _0x51013d=a0_0x562446[_0x4c7a93(0x110)](_0x1b27e0,_0x19af4f);try{return await a0_0x3e6463[_0x4c7a93(0x1cd)](_0x51013d),normalizePath(_0x1b27e0);}catch{}}_0x1b27e0=a0_0x562446[_0x4c7a93(0xb8)](_0x1b27e0);}return normalizePath(_0x1249c2);}await Promise[a0_0x5a8a3f(0x1b1)](args[a0_0x5a8a3f(0xa8)](async _0x4bec70=>{const _0x2e0a22=a0_0x5a8a3f;try{const _0x1c12ff=await a0_0x3e6463[_0x2e0a22(0x9f)](expandHome(_0x4bec70));!_0x1c12ff['isDirectory']()&&(logMcpStderr(_0x2e0a22(0x165)+_0x4bec70+_0x2e0a22(0x102)),process[_0x2e0a22(0x167)](0x1));}catch(_0x289846){logMcpStderr(_0x2e0a22(0xa1)+_0x4bec70+':',_0x289846),process[_0x2e0a22(0x167)](0x1);}}));async function validatePath(_0xca3b13){const _0x33b7a4=a0_0x5a8a3f,_0x305959=expandHome(_0xca3b13),_0x1bde64=a0_0x562446[_0x33b7a4(0x100)](_0x305959);logger[_0x33b7a4(0x13f)]('MCP',_0x33b7a4(0xc1),{'raw_path':_0xca3b13,'absolute':_0x1bde64});try{const _0xe78872=await a0_0x3e6463[_0x33b7a4(0xc7)](_0x1bde64);return logger[_0x33b7a4(0x13f)](_0x33b7a4(0x105),_0x33b7a4(0x16b),{'resolved':_0xe78872,'symlink':_0xe78872!==_0x1bde64}),_0xe78872;}catch(_0x485a3d){if(_0x485a3d[_0x33b7a4(0xde)]===_0x33b7a4(0x1ae)){const _0x25477c=a0_0x562446[_0x33b7a4(0xb8)](_0x1bde64);try{const _0x10b6ba=await a0_0x3e6463[_0x33b7a4(0xc7)](_0x25477c),_0x5a9e45=a0_0x562446['join'](_0x10b6ba,a0_0x562446[_0x33b7a4(0x141)](_0x1bde64));return logger[_0x33b7a4(0x13f)](_0x33b7a4(0x105),_0x33b7a4(0x16b),{'resolved':_0x5a9e45,'new_file':!![]}),_0x5a9e45;}catch{logger[_0x33b7a4(0xda)]('MCP',_0x33b7a4(0xf7),{'raw_path':_0xca3b13,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x25477c});throw new Error(_0x33b7a4(0x1a0)+_0x25477c);}}logger['error'](_0x33b7a4(0x105),_0x33b7a4(0xf7),{'raw_path':_0xca3b13,'error':_0x485a3d['message']});throw _0x485a3d;}}function a0_0x330b(){const _0x389009=['code','WarpGrepError','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','[could\x20not\x20read\x20file:\x20','Fatal\x20error\x20running\x20server:','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.','MORPH_API_URL','provider_created','role','grep_search','Preview\x20changes\x20without\x20applying\x20them.','-\x20Preserve\x20exact\x20indentation\x0a','../package.json','success','file_read_complete','morph-v3-fast','inputSchema','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','timed\x20out','code_edit','\x20valid\x20directories','content','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','path_validation_failed','Max\x20results\x20to\x20return','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','-\x20Read\x20file\x20`','@morphllm/morphmcp\x20','tool_call_error','unknown','Morph\x20Edit\x20Preview','slice','resolve','glob\x20\x27','\x20is\x20not\x20a\x20directory','ENABLE_WORKSPACE_MODE','tool','MCP','Here\x20is\x20the\x20content\x20of\x20files:\x0a','-\x20Glob\x20search\x20`','[github_codebase_search]\x20Failed\x20in\x20','\x27\x20in\x20`','size','stack','function','string','1poZXXj','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','join','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','24777DzUGmH','warp_grep_start','requiresApiKey','split','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','https://morphllm.com/api/error-report','read','7195jGztyt','setRequestHandler','TimeoutError','Warning:\x20','<file\x20path=\x22','mcp-filesystem','-\x20Grepped\x20\x27','errors','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','ToolException','tool_calls','go.mod','etimedout','some','min','19519995MlWsWd','\x0a...\x20(truncated,\x20total:\x20','Invalid\x20arguments:\x20','setNotificationHandler','linesRemoved','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','roots','edit_file','.git','2996595aEvjyq','1420yRqAWY','morph-v3-large','Specific\x20commit\x20hash\x20to\x20search','trim','finish','BinaryFile','WORKSPACE_ROOT','GitHub\x20search\x20failed:\x20','command','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.','PWD','debug','message','basename','length','github_codebase_search','\x20as\x20allowed\x20directory','normalize','optional','timeout','EDIT_FILE','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.','2118rrIJLq','indexOf','filePath','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','ms.\x20Success:\x20','default','homedir','\x20-\x20','Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.','\x0aOptions:','\x22>\x0aError\x20reading\x20file:\x20','Applied','ReadError','pattern','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','API\x20error\x20(auth/rate-limit)','searchGitHub','dryRun','sep','timings','604632mYinpZ','package.json','Example\x20format:\x0a','Unknown\x20error','edit','files','SymlinkError','Error:\x20','startsWith','exit','substring','ms:','--api-key','path_validation_resolved','warn','--version','Morph\x20Edit\x20','.cursor','array','parse','0.2.0','linesAdded','messages','context','list_directory','list_directory\x20','object','utf-8','\x0a</file>','Tool\x20\x22','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','toISOString','read\x20','linesModified','\x20chars)','api_request_start','filter','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','describe','\x0aExamples:','node_modules','Morph\x20FastApply\x20failed\x20without\x20error\x20message','post','codebase_search','false','toLowerCase','floor','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','branch','tsconfig.json','argv','Workspace\x20mode\x20enabled:\x20Using\x20','lines','**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','repo_path','catch','Failed\x20to\x20read\x20file:\x20','safeParse','tool_call_id','now','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','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','path','text','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Parent\x20directory\x20does\x20not\x20exist:\x20','readFile','instruction','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','target_file','data','isArray','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','UnknownError','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.','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','\x22>\x0a','\x22.\x20Known\x20tools:\x20','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','ENOENT','owner_repo','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','all','has','number','.vscode','MORPH_WARP_GREP_TIMEOUT','api-key','grep\x20\x27','DISABLED_TOOLS','FileNotFound','MORPH_API_KEY','new_string','warp_grep_complete','description','Error\x20running\x20fast\x20context\x20search:\x20','--help','listRoots','completed','includes','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.',',\x20modified\x20','version','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','completed_with_file_errors','-\x20Listed\x20directory\x20`','Parameters:\x0a','turns','added\x20','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','access','match','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','.\x20Changes:\x20','changes','getClientCapabilities','380372KePsMu','search_string','stat','[github_codebase_search]\x20Done\x20in\x20','Error\x20accessing\x20directory\x20','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','constructor','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','SubToolError','2063156tHPgfx','.\x20Path:\x20','map','sk-','unknown\x20error','pyproject.toml','tool_call_complete','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','grep','Disabled\x20tools:\x20','terminated','push','RipgrepNotAvailable','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','Repository\x20identifier','metadata','Failed\x20to\x20request\x20roots\x20from\x20client:','connect','dirname','stringify','terminationReason','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','env','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','response','LocalRipgrepProvider','9iyElLz','path_validation_start','user','morph-','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','every','File\x20read\x20error:','realpath','completionId','assistant','FileReadError','name','\x20\x20morph-mcp','PathError','Rules:\x0a','instructions','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','\x20error(s)','morph-warp-grep-v2.1',',\x20removed\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','Bearer\x20','WarpGrep\x20sub-tool\x20errors:\x20','log','error','glob','status','Warning:\x20Workspace\x20fallback\x20failed:\x20'];a0_0x330b=function(){return _0x389009;};return a0_0x330b();}const MorphEditFileArgsSchema=z[a0_0x5a8a3f(0x178)]({'path':z[a0_0x5a8a3f(0x10d)](),'code_edit':z[a0_0x5a8a3f(0x10d)]()[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0x116)),'instruction':z[a0_0x5a8a3f(0x10d)]()[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0x1c3)),'dryRun':z['boolean']()[a0_0x5a8a3f(0x14f)](![])['describe'](a0_0x5a8a3f(0xe8))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x5a8a3f(0x1a9),WarpGrepArgsSchema=z[a0_0x5a8a3f(0x178)]({'search_string':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x5a8a3f(0x10d)]()[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0x19c)),'search_type':z['enum']([a0_0x5a8a3f(0x14f),a0_0x5a8a3f(0x187)])[a0_0x5a8a3f(0x146)]()[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0xbb))}),WarpGrepGitHubArgsSchema=z[a0_0x5a8a3f(0x178)]({'search_string':z[a0_0x5a8a3f(0x10d)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x5a8a3f(0x10d)]()['optional']()['describe'](a0_0x5a8a3f(0x149)),'owner_repo':z[a0_0x5a8a3f(0x10d)]()['optional']()[a0_0x5a8a3f(0x185)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x5a8a3f(0x10d)]()[a0_0x5a8a3f(0x146)]()[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0x184))}),CodebaseSearchArgsSchema=z[a0_0x5a8a3f(0x178)]({'query':z[a0_0x5a8a3f(0x10d)]()[a0_0x5a8a3f(0x185)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0xb4)),'branch':z['string']()[a0_0x5a8a3f(0x146)]()[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0x1cc)),'commitHash':z[a0_0x5a8a3f(0x10d)]()['optional']()['describe'](a0_0x5a8a3f(0x136)),'targetDirectories':z[a0_0x5a8a3f(0x170)](z[a0_0x5a8a3f(0x10d)]())[a0_0x5a8a3f(0x14f)]([])[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0x19f)),'limit':z[a0_0x5a8a3f(0x1b3)]()['optional']()[a0_0x5a8a3f(0x14f)](0xa)[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0xf8))}),server=new Server({'name':'morph-mcp','version':a0_0x5a8a3f(0x172)},{'capabilities':{'tools':{}}});server[a0_0x5a8a3f(0x11a)](ListToolsRequestSchema,async()=>{const _0x223754=a0_0x5a8a3f,_0x194ce5=[{'name':TOOL_NAMES[_0x223754(0x148)],'description':_0x223754(0x194)+_0x223754(0x1c9)+_0x223754(0xf5)+_0x223754(0x1b0)+'-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a'+'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'+_0x223754(0x160)+_0x223754(0xb3)+_0x223754(0xce)+_0x223754(0xf6)+_0x223754(0xe9)+_0x223754(0xc4)+_0x223754(0x1aa),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES['CODEBASE_SEARCH'],'description':_0x223754(0x14d)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x223754(0x1a3)+_0x223754(0xa2)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x2e9b38=_0x194ce5[_0x223754(0x182)](_0x5a451b=>{const _0x2b3ce5=_0x223754;if(DISABLED_TOOLS[_0x2b3ce5(0x1b2)](_0x5a451b[_0x2b3ce5(0xcb)]))return console[_0x2b3ce5(0xda)]('Tool\x20'+_0x5a451b[_0x2b3ce5(0xcb)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x2b3ce5(0x114)in _0x5a451b&&_0x5a451b[_0x2b3ce5(0x114)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x5a451b[_0x2b3ce5(0xcb)]+_0x2b3ce5(0x1a7)),![];return!![];});return{'tools':_0x2e9b38['map'](_0x148c57=>({'name':_0x148c57[_0x223754(0xcb)],'description':_0x148c57[_0x223754(0x1bd)],'inputSchema':_0x148c57[_0x223754(0xee)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x2274b2=>{const _0x134562=a0_0x5a8a3f,{name:_0x5e4754,arguments:_0x5b4ef4}=_0x2274b2['params'],_0x2ada35=Date['now']();logger['debug']('MCP','tool_call_received',{'tool':_0x5e4754,'args':_0x5e4754===_0x134562(0x131)?{'path':_0x5b4ef4?.[_0x134562(0x19d)],'instruction':_0x5b4ef4?.[_0x134562(0x1a2)]||_0x5b4ef4?.[_0x134562(0xcf)],'dryRun':_0x5b4ef4?.[_0x134562(0x15b)]}:_0x5b4ef4});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x134562(0x19e),'text':'No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.'}],'isError':!![]};if(!MORPH_API_KEY[_0x134562(0x166)](_0x134562(0xa9))&&!MORPH_API_KEY[_0x134562(0x166)](_0x134562(0xc3)))return{'content':[{'type':_0x134562(0x19e),'text':_0x134562(0x13d)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0x5e4754))return{'content':[{'type':_0x134562(0x19e),'text':_0x134562(0x17b)+_0x5e4754+_0x134562(0x10f)}],'isError':![]};switch(_0x5e4754){case TOOL_NAMES['EDIT_FILE']:{let _0x347688=_0x5b4ef4;if(_0x347688&&typeof _0x347688===_0x134562(0x178)){if(!(_0x134562(0x19d)in _0x347688)){const _0x31ffd2=_0x347688[_0x134562(0x1a4)]??_0x347688[_0x134562(0x14c)]??_0x347688['target_filepath']??_0x347688['file_path']??_0x347688['file'];if(_0x31ffd2)_0x347688={..._0x347688,'path':_0x31ffd2};}_0x134562(0xcf)in _0x347688&&!('instruction'in _0x347688)&&(_0x347688={..._0x347688,'instruction':_0x347688['instructions']});if(!(_0x134562(0xf1)in _0x347688)){const _0x48d75f=_0x347688['code']??_0x347688[_0x134562(0x1bb)]??_0x347688[_0x134562(0xf3)]??_0x347688[_0x134562(0x162)];if(_0x48d75f)_0x347688={..._0x347688,'code_edit':_0x48d75f};}}const _0x3555af=MorphEditFileArgsSchema[_0x134562(0x198)](_0x347688);if(!_0x3555af['success'])throw new Error(_0x134562(0xd2)+_0x3555af[_0x134562(0xda)]);const _0x5e8494=await validatePath(_0x3555af[_0x134562(0x1a5)]['path']);let _0x44c297=null,_0x398c16=!![],_0x2e3bd1=null;try{_0x44c297=await a0_0x3e6463['readFile'](_0x5e8494,_0x134562(0x179)),logger[_0x134562(0x13f)](_0x134562(0x105),_0x134562(0xec),{'path':_0x5e8494,'size_bytes':_0x44c297[_0x134562(0x142)]});}catch(_0x2dee63){const _0x84d451=_0x2dee63[_0x134562(0xde)];_0x84d451===_0x134562(0x1ae)?(_0x398c16=![],_0x44c297='',logger[_0x134562(0x13f)](_0x134562(0x105),'file_read_complete',{'path':_0x5e8494,'exists':![]})):(_0x2e3bd1=_0x134562(0x197)+(_0x84d451||'unknown')+_0x134562(0x151)+(_0x2dee63 instanceof Error?_0x2dee63[_0x134562(0x140)]:String(_0x2dee63)),logger[_0x134562(0xda)](_0x134562(0x105),'file_read_failed',{'path':_0x5e8494,'error':_0x2e3bd1}),logMcpStderr(_0x134562(0x11c)+_0x2e3bd1));}let _0x2aee46;try{const _0x11f7df=MORPH_API_KEY;if(!_0x11f7df)throw new Error(_0x134562(0xd1));const _0x124903=a0_0x562446[_0x134562(0xb8)](_0x5e8494),_0x55b2f6=a0_0x562446[_0x134562(0x141)](_0x5e8494);logger['debug'](_0x134562(0x105),_0x134562(0x181),{'model':'morph-v3-fast','path':_0x3555af[_0x134562(0x1a5)][_0x134562(0x19d)],'instruction_len':_0x3555af[_0x134562(0x1a5)]['instruction'][_0x134562(0x142)],'code_edit_len':_0x3555af[_0x134562(0x1a5)][_0x134562(0xf1)][_0x134562(0x142)],'original_code_len':_0x44c297?.[_0x134562(0x142)]??0x0,'dry_run':_0x3555af['data'][_0x134562(0x15b)]});const _0x3940ce=Date['now'](),_0x59a086=await executeEditFile({'target_filepath':_0x55b2f6,'code_edit':_0x3555af[_0x134562(0x1a5)]['code_edit'],'instruction':_0x3555af[_0x134562(0x1a5)][_0x134562(0x1a2)]},{'morphApiKey':_0x11f7df,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x124903,'autoWrite':!_0x3555af[_0x134562(0x1a5)][_0x134562(0x15b)],'generateUdiff':![],'debug':![]}),_0x4aae0f=Date[_0x134562(0x19a)]()-_0x3940ce;_0x2aee46=_0x59a086[_0x134562(0xc8)];if(!_0x59a086[_0x134562(0xeb)])throw new Error(_0x59a086[_0x134562(0xda)]||_0x134562(0x188));const _0x5e6db3=_0x59a086[_0x134562(0x9b)],_0x18215a=_0x134562(0x1cb)+_0x5e6db3[_0x134562(0x173)]+_0x134562(0xd5)+_0x5e6db3[_0x134562(0x12d)]+_0x134562(0x1c4)+_0x5e6db3[_0x134562(0x17f)];logger[_0x134562(0x13f)](_0x134562(0x105),_0x134562(0xac),{'tool':_0x134562(0x131),'success':!![],'latency_ms':Date[_0x134562(0x19a)]()-_0x2ada35,'edit_latency_ms':_0x4aae0f,'changes':{'added':_0x5e6db3[_0x134562(0x173)],'removed':_0x5e6db3[_0x134562(0x12d)],'modified':_0x5e6db3[_0x134562(0x17f)]},'completion_id':_0x2aee46});if(_0x3555af[_0x134562(0x1a5)][_0x134562(0x15b)])return{'content':[{'type':_0x134562(0x19e),'text':_0x134562(0xfe)+(_0x398c16?'':'\x20(new\x20file)')+':\x20'+_0x3555af[_0x134562(0x1a5)][_0x134562(0x1a2)]+_0x134562(0x9a)+_0x18215a+_0x134562(0xa7)+_0x3555af[_0x134562(0x1a5)][_0x134562(0x19d)]+'.'}]};return{'content':[{'type':'text','text':_0x134562(0x16e)+(_0x398c16?_0x134562(0x155):'Created\x20File')+':\x20'+_0x3555af[_0x134562(0x1a5)]['instruction']+'.\x20Changes:\x20'+_0x18215a+_0x134562(0xa7)+_0x3555af[_0x134562(0x1a5)]['path']+'.'}]};}catch(_0x2e4d09){const _0xaaffd0=handleMorphAPIError(_0x2e4d09);if(_0xaaffd0)return logger[_0x134562(0xda)](_0x134562(0x105),_0x134562(0xfc),{'tool':_0x134562(0x131),'error':_0x134562(0x159),'latency_ms':Date[_0x134562(0x19a)]()-_0x2ada35}),_0xaaffd0;const _0x22f3ea=_0x2e4d09 instanceof Error?_0x2e4d09['message']:String(_0x2e4d09);return logger['error']('MCP',_0x134562(0xfc),{'tool':_0x134562(0x131),'error':_0x22f3ea,'path':_0x3555af[_0x134562(0x1a5)]['path'],'validated_path':_0x5e8494,'latency_ms':Date['now']()-_0x2ada35,'stack':_0x2e4d09 instanceof Error?_0x2e4d09[_0x134562(0x10b)]:undefined}),reportMorphError({'error_message':_0x22f3ea,'error_type':_0x2e4d09 instanceof Error?_0x2e4d09[_0x134562(0xa3)][_0x134562(0xcb)]:_0x134562(0x1a8),'context':{'tool':_0x134562(0x131),'completion_id':_0x2aee46,'file_path':_0x3555af[_0x134562(0x1a5)][_0x134562(0x19d)],'validated_path':_0x5e8494,'instruction':_0x3555af[_0x134562(0x1a5)][_0x134562(0x1a2)],'model':MORPH_LARGE_APPLY?_0x134562(0x135):_0x134562(0xed),'dry_run':_0x3555af[_0x134562(0x1a5)][_0x134562(0x15b)],'file_exists':_0x398c16,'file_read_error':_0x2e3bd1,'file_readable':_0x44c297!==null,'request_content':{'path':_0x3555af['data'][_0x134562(0x19d)],'code_edit':_0x3555af['data']['code_edit'],'instruction':_0x3555af[_0x134562(0x1a5)]['instruction'],'original_code':_0x44c297!==null?_0x44c297['length']>0xc350?_0x44c297['substring'](0x0,0xc350)+_0x134562(0x12a)+_0x44c297[_0x134562(0x142)]+_0x134562(0x180):_0x44c297:_0x134562(0xe1)+(_0x2e3bd1||_0x134562(0xaa))+']','original_code_length':_0x44c297?.[_0x134562(0x142)]??0x0,'model':MORPH_LARGE_APPLY?_0x134562(0x135):_0x134562(0xed),'dry_run':_0x3555af[_0x134562(0x1a5)][_0x134562(0x15b)]}},'stack_trace':_0x2e4d09 instanceof Error?_0x2e4d09[_0x134562(0x10b)]:undefined,'source':_0x134562(0x11e)})[_0x134562(0x196)](()=>{}),{'content':[{'type':_0x134562(0x19e),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x22f3ea}],'isError':!![]};}}case TOOL_NAMES['CODEBASE_SEARCH']:{const _0x592e0f=WarpGrepArgsSchema['safeParse'](_0x5b4ef4);if(!_0x592e0f['success'])return{'content':[{'type':_0x134562(0x19e),'text':_0x134562(0x12b)+_0x592e0f[_0x134562(0xda)]}],'isError':!![]};const _0x2ccf68=_0xc2c047=>{const _0xef0301=_0x134562,_0xbf8ff1=[];for(const _0x16c903 of _0xc2c047||[]){if(_0x16c903[_0xef0301(0xe6)]===_0xef0301(0xc9)&&Array[_0xef0301(0x1a6)](_0x16c903['tool_calls']))for(const _0x718e8f of _0x16c903[_0xef0301(0x124)]){try{const _0x34e2af=_0x718e8f[_0xef0301(0x10c)]?.[_0xef0301(0xcb)],_0x2a731f=JSON[_0xef0301(0x171)](_0x718e8f[_0xef0301(0x10c)]?.['arguments']||'{}');if(_0x34e2af===_0xef0301(0xe7))_0xbf8ff1[_0xef0301(0xb1)](_0xef0301(0x1b7)+_0x2a731f['pattern']+'\x27\x20'+(_0x2a731f[_0xef0301(0x19d)]||'.'));else{if(_0x34e2af===_0xef0301(0x118))_0xbf8ff1[_0xef0301(0xb1)](_0xef0301(0x17e)+_0x2a731f[_0xef0301(0x19d)]);else{if(_0x34e2af===_0xef0301(0x176))_0xbf8ff1[_0xef0301(0xb1)](_0xef0301(0x177)+(_0x2a731f[_0xef0301(0x13c)]||'.'));else{if(_0x34e2af===_0xef0301(0xdb))_0xbf8ff1[_0xef0301(0xb1)](_0xef0301(0x101)+_0x2a731f['pattern']+'\x27\x20'+(_0x2a731f[_0xef0301(0x19d)]||'.'));else _0x34e2af===_0xef0301(0x138)&&_0xbf8ff1['push'](_0xef0301(0x138));}}}}catch{}}}return _0xbf8ff1;},_0x176d4e=_0x1b794b=>{const _0x10ff1e=_0x134562,_0xc7b994=[];if(!_0x1b794b||!Array['isArray'](_0x1b794b))return _0xc7b994;const _0x132d9d=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x10ff1e(0x1b9),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x10ff1e(0xcd),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':_0x10ff1e(0x118)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':_0x10ff1e(0x118)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x10ff1e(0xb2),'tool':_0x10ff1e(0xae)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x10ff1e(0x139),'tool':_0x10ff1e(0x118)},{'pattern':/\[SYMLINK\]/,'error_type':_0x10ff1e(0x164),'tool':_0x10ff1e(0x118)},{'pattern':/not a text file/,'error_type':_0x10ff1e(0x139),'tool':_0x10ff1e(0x118)},{'pattern':/symbolic link/,'error_type':_0x10ff1e(0x164),'tool':_0x10ff1e(0x118)},{'pattern':/Error reading file:/,'error_type':_0x10ff1e(0x156),'tool':_0x10ff1e(0x118)},{'pattern':/status="error"/,'error_type':_0x10ff1e(0x123),'tool':_0x10ff1e(0xfd)}];let _0x5ca5b9=0x0;for(const _0x34e00d of _0x1b794b){_0x34e00d[_0x10ff1e(0xe6)]===_0x10ff1e(0xc9)&&Array[_0x10ff1e(0x1a6)](_0x34e00d[_0x10ff1e(0x124)])&&_0x5ca5b9++;const _0x56f331=_0x34e00d[_0x10ff1e(0xf3)];if((_0x34e00d['role']===_0x10ff1e(0x104)||_0x34e00d['role']===_0x10ff1e(0xc2))&&_0x56f331&&typeof _0x56f331===_0x10ff1e(0x10d))for(const {pattern:_0x25d9c6,error_type:_0x5bef89,tool:_0x3c0969}of _0x132d9d){const _0x24c84e=_0x56f331['match'](new RegExp(_0x25d9c6['source'],'g'));if(_0x24c84e)for(const _0x43490b of _0x24c84e){const _0x4eff15=_0x56f331[_0x10ff1e(0x14b)](_0x43490b),_0x265260=_0x56f331[_0x10ff1e(0x168)](_0x4eff15,Math[_0x10ff1e(0x128)](_0x4eff15+0xc8,_0x56f331[_0x10ff1e(0x142)]));_0xc7b994[_0x10ff1e(0xb1)]({'tool':_0x3c0969,'error_type':_0x5bef89,'error_message':_0x265260[_0x10ff1e(0x115)]('\x0a')[0x0],'turn':_0x5ca5b9});}}}return _0xc7b994;};try{const _0x5210ba=a0_0x562446['resolve'](_0x592e0f['data'][_0x134562(0x195)]),_0x288633=_0x592e0f[_0x134562(0x1a5)]['search_type'],_0x1920c5=_0x288633===_0x134562(0x187)?{'allowNames':[_0x134562(0x187)]}:undefined,_0x21b276=new LocalRipgrepProvider(_0x5210ba,undefined,_0x1920c5);logger[_0x134562(0x13f)](_0x134562(0x105),_0x134562(0xe5),{'type':_0x134562(0xbf),'repo_root':_0x5210ba,'search_type':_0x288633||_0x134562(0x14f)}),logger['debug'](_0x134562(0x105),_0x134562(0x113),{'query':_0x592e0f['data'][_0x134562(0x9e)],'repo_root':_0x5210ba,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x28d5f4=Date[_0x134562(0x19a)](),_0x2a71c8=await runWarpGrep({'searchTerm':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x9e)],'repoRoot':_0x5210ba,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x21b276,'search_type':_0x288633}),_0x55de3a=Date[_0x134562(0x19a)]()-_0x28d5f4,_0xc3c3=_0x2a71c8[_0x134562(0x138)]?.[_0x134562(0xb5)]?.[_0x134562(0x163)]?.[_0x134562(0x142)]??0x0;logger[_0x134562(0x13f)](_0x134562(0x105),_0x134562(0x1bc),{'termination':_0x2a71c8[_0x134562(0xba)],'turns':_0x2a71c8[_0x134562(0x15d)]?.[_0x134562(0x1ca)]??0x0,'files_found':_0xc3c3,'latency_ms':_0x55de3a});const _0x3b830f=_0x176d4e(_0x2a71c8['messages']);_0x3b830f[_0x134562(0x142)]>0x0&&reportMorphError({'error_message':_0x134562(0xd8)+_0x3b830f[_0x134562(0x142)]+_0x134562(0xd3),'error_type':_0x134562(0xa5),'level':_0x134562(0x16c),'tool':_0x134562(0x18a),'context':{'repo_path':_0x592e0f['data'][_0x134562(0x195)],'query':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x9e)],'model':_0x134562(0xd4),'termination_reason':_0x2a71c8[_0x134562(0xba)],'sub_tool_errors':_0x3b830f,'timings':_0x2a71c8['timings'],'tool_calls':_0x2ccf68(_0x2a71c8[_0x134562(0x174)]),'messages':_0x2a71c8['messages']?.['map'](_0x29e73c=>({'role':_0x29e73c[_0x134562(0xe6)],'content':_0x29e73c['content'],..._0x29e73c[_0x134562(0x124)]?{'tool_calls':_0x29e73c[_0x134562(0x124)]['length']}:{},..._0x29e73c[_0x134562(0x199)]?{'tool_call_id':_0x29e73c[_0x134562(0x199)]}:{}}))},'source':_0x134562(0x11e)})[_0x134562(0x196)](()=>{});let _0x1cec87='';if(_0x2a71c8[_0x134562(0xba)]===_0x134562(0x1c1)&&_0x2a71c8[_0x134562(0x138)]?.[_0x134562(0xb5)]?.[_0x134562(0x163)]){const _0x43564f=_0x2a71c8['finish']['metadata'][_0x134562(0x163)];if(_0x43564f[_0x134562(0x142)]===0x0)return _0x1cec87=_0x2a71c8[_0x134562(0x138)]['payload']||_0x134562(0xf9),{'content':[{'type':_0x134562(0x19e),'text':_0x1cec87}]};const _0x25174c=[],_0x3f8146=[_0x134562(0x183)];for(const _0x3c64af of _0x2a71c8[_0x134562(0x174)]){if(_0x3c64af['role']==='assistant'&&Array['isArray'](_0x3c64af[_0x134562(0x124)]))for(const _0x2aed54 of _0x3c64af[_0x134562(0x124)]){try{const _0x55a5ff=_0x2aed54[_0x134562(0x10c)]?.['name'],_0x395cae=JSON['parse'](_0x2aed54[_0x134562(0x10c)]?.['arguments']||'{}');if(_0x55a5ff===_0x134562(0xe7))_0x3f8146['push'](_0x134562(0x11f)+_0x395cae[_0x134562(0x157)]+_0x134562(0x109)+(_0x395cae['path']||'.')+'`');else{if(_0x55a5ff===_0x134562(0x118))_0x3f8146[_0x134562(0xb1)](_0x134562(0xfa)+_0x395cae[_0x134562(0x19d)]+'`');else{if(_0x55a5ff===_0x134562(0x176))_0x3f8146['push'](_0x134562(0x1c8)+(_0x395cae[_0x134562(0x13c)]||'.')+'`');else _0x55a5ff===_0x134562(0xdb)&&_0x3f8146[_0x134562(0xb1)](_0x134562(0x107)+_0x395cae[_0x134562(0x157)]+'`\x20in\x20`'+(_0x395cae['path']||'.')+'`');}}}catch{}}}_0x25174c['push'](_0x3f8146[_0x134562(0x110)]('\x0a'));const _0x436979=['','Relevant\x20context\x20found:'];for(const _0x4ebba3 of _0x43564f){if(_0x4ebba3['lines']==='*')_0x436979[_0x134562(0xb1)]('-\x20'+_0x4ebba3[_0x134562(0x19d)]+':*');else{if(Array['isArray'](_0x4ebba3[_0x134562(0x193)])){const _0x16c98f=_0x4ebba3[_0x134562(0x193)]['map'](([_0x32b2e5,_0x51e0b0])=>{if(_0x32b2e5===_0x51e0b0)return''+_0x32b2e5;return _0x32b2e5+'-'+_0x51e0b0;});_0x436979[_0x134562(0xb1)]('-\x20'+_0x4ebba3[_0x134562(0x19d)]+':'+_0x16c98f[_0x134562(0x110)](','));}else _0x436979[_0x134562(0xb1)]('-\x20'+_0x4ebba3[_0x134562(0x19d)]+':*');}}_0x436979[_0x134562(0xb1)](''),_0x25174c['push'](_0x436979[_0x134562(0x110)]('\x0a')),_0x25174c[_0x134562(0xb1)](_0x134562(0x106));const _0x472f49=[],_0x4292ff=[];for(const _0x38d96e of _0x43564f){let _0x30f7b6=a0_0x562446[_0x134562(0x100)](_0x592e0f['data'][_0x134562(0x195)],_0x38d96e['path']),_0x288228=null,_0x30f084=null;try{_0x288228=await a0_0x3e6463[_0x134562(0x1a1)](_0x30f7b6,{'encoding':'utf-8'});}catch(_0xf52d05){const _0x4fd754=fixPathRepetition(_0x30f7b6);if(_0x4fd754)try{_0x288228=await a0_0x3e6463[_0x134562(0x1a1)](_0x4fd754,{'encoding':_0x134562(0x179)}),_0x30f7b6=_0x4fd754;}catch{_0x30f084=_0xf52d05 instanceof Error?_0xf52d05:new Error(String(_0xf52d05));}else _0x30f084=_0xf52d05 instanceof Error?_0xf52d05:new Error(String(_0xf52d05));}if(_0x288228!==null){const _0x3800fd=_0x288228['split'](/\r?\n/),_0x40538d=[];if(_0x38d96e[_0x134562(0x193)]==='*'||!Array[_0x134562(0x1a6)](_0x38d96e[_0x134562(0x193)]))for(let _0x276ebd=0x1;_0x276ebd<=_0x3800fd['length'];_0x276ebd++){const _0x224225=_0x3800fd[_0x276ebd-0x1];_0x40538d['push'](_0x276ebd+'|\x20'+_0x224225);}else for(const [_0x5d7fb6,_0x3a050f]of _0x38d96e[_0x134562(0x193)]){_0x40538d[_0x134562(0x142)]>0x0&&_0x40538d['push']('');for(let _0x2e3e93=_0x5d7fb6;_0x2e3e93<=_0x3a050f&&_0x2e3e93<=_0x3800fd['length'];_0x2e3e93++){const _0x592ae1=_0x3800fd[_0x2e3e93-0x1];_0x40538d[_0x134562(0xb1)](_0x2e3e93+'|\x20'+_0x592ae1);}}_0x4292ff['push']({'path':_0x38d96e[_0x134562(0x19d)],'content':_0x40538d[_0x134562(0x110)]('\x0a')});}else _0x472f49['push'](_0x134562(0x11d)+_0x38d96e[_0x134562(0x19d)]+_0x134562(0x154)+(_0x30f084?.['message']||_0x134562(0x161))+_0x134562(0x17a));}try{const _0x5724d6=await compactFileContexts(_0x4292ff,_0x592e0f[_0x134562(0x1a5)][_0x134562(0x9e)],MORPH_API_KEY,MORPH_API_URL);for(const _0x500c28 of _0x5724d6){_0x472f49[_0x134562(0xb1)](_0x134562(0x11d)+_0x500c28[_0x134562(0x19d)]+_0x134562(0x1ab)+_0x500c28[_0x134562(0xf3)]+_0x134562(0x17a));}}catch(_0x1f4c91){logger[_0x134562(0x16c)](_0x134562(0x105),'compaction_failed',{'error':_0x1f4c91 instanceof Error?_0x1f4c91[_0x134562(0x140)]:String(_0x1f4c91),'files_count':_0x4292ff[_0x134562(0x142)]});for(const _0x14a868 of _0x4292ff){_0x472f49[_0x134562(0xb1)](_0x134562(0x11d)+_0x14a868[_0x134562(0x19d)]+'\x22>\x0a'+_0x14a868[_0x134562(0xf3)]+_0x134562(0x17a));}}_0x25174c[_0x134562(0xb1)](_0x472f49['join']('\x0a\x0a')),_0x1cec87=_0x25174c[_0x134562(0x110)]('\x0a');const _0x5920ca=_0x2a71c8[_0x134562(0x120)]?.[_0x134562(0x182)](_0xf7d290=>_0xf7d290[_0x134562(0x140)]?.['startsWith'](_0x134562(0xc6)))||[];if(_0x5920ca['length']>0x0){const _0x568b17=_0x5920ca[_0x134562(0xa8)](_0x23237a=>_0x23237a[_0x134562(0x140)])['join'](';\x20');reportMorphError({'error_message':_0x568b17,'error_type':_0x134562(0xca),'context':{'tool':'codebase_search','repo_path':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x195)],'query':_0x592e0f['data'][_0x134562(0x9e)],'model':_0x134562(0xd4),'termination_reason':_0x134562(0x1c7),'error_count':_0x5920ca[_0x134562(0x142)],'is_timeout':![],'timings':_0x2a71c8[_0x134562(0x15d)],'files_attempted':_0x43564f['map'](_0x120f74=>({'path':_0x120f74[_0x134562(0x19d)],'lines':_0x120f74[_0x134562(0x193)]})),'tool_calls':_0x2ccf68(_0x2a71c8[_0x134562(0x174)]),'messages':_0x2a71c8[_0x134562(0x174)]?.['map'](_0x24da11=>({'role':_0x24da11[_0x134562(0xe6)],'content':_0x24da11['content'],..._0x24da11[_0x134562(0x124)]?{'tool_calls':_0x24da11[_0x134562(0x124)][_0x134562(0x142)]}:{},..._0x24da11[_0x134562(0x199)]?{'tool_call_id':_0x24da11[_0x134562(0x199)]}:{}})),'request_content':{'query':_0x592e0f[_0x134562(0x1a5)]['search_string'],'repo_path':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x195)],'repoRoot':a0_0x562446[_0x134562(0x100)](_0x592e0f[_0x134562(0x1a5)][_0x134562(0x195)]),'model':'morph-warp-grep-v2.1'}},'source':_0x134562(0x11e)})[_0x134562(0x196)](()=>{});}}else{if(_0x2a71c8[_0x134562(0xba)]===_0x134562(0xb0)&&_0x2a71c8[_0x134562(0x120)][_0x134562(0x142)]>0x0){const _0x7c3929=_0x2a71c8[_0x134562(0x120)]['map'](_0x41dbe8=>_0x41dbe8['message'])['join'](';\x20');_0x1cec87='Error:\x20'+_0x7c3929;const _0x8d2966=_0x7c3929[_0x134562(0x18c)]()['includes']('timeout')||_0x7c3929[_0x134562(0x18c)]()[_0x134562(0x1c2)](_0x134562(0xf0))||_0x7c3929[_0x134562(0x18c)]()[_0x134562(0x1c2)](_0x134562(0x126)),_0xe0c907=_0x2a71c8['finish']?.[_0x134562(0xb5)]?.[_0x134562(0x163)],_0x2844ef=_0x2a71c8[_0x134562(0x120)][0x0];reportMorphError({'error_message':_0x7c3929,'error_type':_0x8d2966?_0x134562(0x11b):_0x2844ef?.[_0x134562(0xa3)]?.['name']||_0x134562(0xdf),'context':{'tool':'codebase_search','repo_path':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x195)],'query':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x9e)],'model':_0x134562(0xd4),'termination_reason':_0x2a71c8[_0x134562(0xba)],'error_count':_0x2a71c8[_0x134562(0x120)]['length'],'is_timeout':_0x8d2966,'timings':_0x2a71c8[_0x134562(0x15d)],'files_attempted':_0xe0c907?.[_0x134562(0xa8)](_0x57064a=>({'path':_0x57064a[_0x134562(0x19d)],'lines':_0x57064a[_0x134562(0x193)]})),'tool_calls':_0x2ccf68(_0x2a71c8[_0x134562(0x174)]),'messages':_0x2a71c8[_0x134562(0x174)]?.[_0x134562(0xa8)](_0x598b7d=>({'role':_0x598b7d[_0x134562(0xe6)],'content':_0x598b7d[_0x134562(0xf3)],..._0x598b7d[_0x134562(0x124)]?{'tool_calls':_0x598b7d[_0x134562(0x124)][_0x134562(0x142)]}:{},..._0x598b7d[_0x134562(0x199)]?{'tool_call_id':_0x598b7d[_0x134562(0x199)]}:{}})),'request_content':{'query':_0x592e0f['data'][_0x134562(0x9e)],'repo_path':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x195)],'repoRoot':a0_0x562446['resolve'](_0x592e0f[_0x134562(0x1a5)]['repo_path']),'model':_0x134562(0xd4)}},'stack_trace':_0x2844ef?.[_0x134562(0x10b)]||undefined,'source':'mcp-filesystem'})[_0x134562(0x196)](()=>{});}else _0x1cec87=_0x134562(0x111);}return{'content':[{'type':_0x134562(0x19e),'text':_0x1cec87}]};}catch(_0x1217fc){const _0x3ca99c=handleMorphAPIError(_0x1217fc);if(_0x3ca99c)return logger[_0x134562(0xda)](_0x134562(0x105),_0x134562(0xfc),{'tool':_0x134562(0x18a),'error':_0x134562(0x159),'latency_ms':Date[_0x134562(0x19a)]()-_0x2ada35}),_0x3ca99c;const _0x505e83=_0x1217fc instanceof Error?_0x1217fc['message']:String(_0x1217fc);logger['error'](_0x134562(0x105),_0x134562(0xfc),{'tool':_0x134562(0x18a),'error':_0x505e83,'repo_path':_0x592e0f['data'][_0x134562(0x195)],'query':_0x592e0f[_0x134562(0x1a5)]['search_string'],'latency_ms':Date[_0x134562(0x19a)]()-_0x2ada35});const _0xd183b9=_0x505e83[_0x134562(0x18c)]()[_0x134562(0x1c2)](_0x134562(0x147))||_0x505e83[_0x134562(0x18c)]()[_0x134562(0x1c2)](_0x134562(0xf0))||_0x505e83[_0x134562(0x18c)]()[_0x134562(0x1c2)](_0x134562(0x126))||_0x1217fc instanceof Error&&_0x1217fc[_0x134562(0xcb)]===_0x134562(0x11b);return reportMorphError({'error_message':_0x505e83,'error_type':_0xd183b9?_0x134562(0x11b):_0x1217fc instanceof Error?_0x1217fc['constructor']['name']:_0x134562(0x1a8),'context':{'tool':_0x134562(0x18a),'repo_path':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x195)],'query':_0x592e0f[_0x134562(0x1a5)]['search_string'],'model':_0x134562(0xd4),'is_timeout':_0xd183b9,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x592e0f[_0x134562(0x1a5)]['search_string'],'repo_path':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x195)],'repoRoot':a0_0x562446[_0x134562(0x100)](_0x592e0f[_0x134562(0x1a5)][_0x134562(0x195)]),'model':_0x134562(0xd4)}},'stack_trace':_0x1217fc instanceof Error?_0x1217fc['stack']:undefined,'source':_0x134562(0x11e)})[_0x134562(0x196)](()=>{}),{'content':[{'type':'text','text':_0x134562(0x1be)+_0x505e83}],'isError':![]};}}case TOOL_NAMES['GITHUB_CODEBASE_SEARCH']:{const _0x486861=WarpGrepGitHubArgsSchema[_0x134562(0x198)](_0x5b4ef4);if(!_0x486861[_0x134562(0xeb)])return{'content':[{'type':_0x134562(0x19e),'text':'Invalid\x20arguments:\x20'+_0x486861[_0x134562(0xda)]}],'isError':!![]};const _0xd17405=_0x486861[_0x134562(0x1a5)]['github_url']||_0x486861[_0x134562(0x1a5)][_0x134562(0x1af)];if(!_0xd17405)return{'content':[{'type':_0x134562(0x19e),'text':_0x134562(0xf4)}],'isError':!![]};const _0x32827e=MORPH_API_KEY;if(!_0x32827e)throw new Error(_0x134562(0xd1));const _0x1cb960=Date[_0x134562(0x19a)]();logger[_0x134562(0x13f)](_0x134562(0x105),'github_search_start',{'identifier':_0xd17405,'query':_0x486861[_0x134562(0x1a5)]['search_string'],'branch':_0x486861['data'][_0x134562(0x18f)]});try{const _0x48abb1=new WarpGrepClient({'morphApiKey':_0x32827e,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x290ea8=await _0x48abb1[_0x134562(0x15a)]({'searchTerm':_0x486861[_0x134562(0x1a5)][_0x134562(0x9e)],'github':_0xd17405,'branch':_0x486861[_0x134562(0x1a5)][_0x134562(0x18f)]}),_0x3816fe=Date[_0x134562(0x19a)]()-_0x1cb960;logMcpStderr(_0x134562(0xa0)+_0x3816fe+_0x134562(0x14e)+_0x290ea8[_0x134562(0xeb)]);const _0x3b84f6=formatResult(_0x290ea8);return{'content':[{'type':_0x134562(0x19e),'text':_0x3b84f6}]};}catch(_0x295b79){const _0x320280=handleMorphAPIError(_0x295b79);if(_0x320280)return _0x320280;const _0x3781c1=Date[_0x134562(0x19a)]()-_0x1cb960,_0x2a34ab=_0x295b79 instanceof Error?_0x295b79['message']:String(_0x295b79);return logMcpStderr(_0x134562(0x108)+_0x3781c1+_0x134562(0x169),_0x2a34ab),reportMorphError({'error_message':_0x2a34ab,'error_type':_0x295b79 instanceof Error?_0x295b79[_0x134562(0xa3)][_0x134562(0xcb)]:_0x134562(0x1a8),'context':{'tool':_0x134562(0x143),'github_url':_0xd17405,'search_string':_0x486861[_0x134562(0x1a5)][_0x134562(0x9e)],'branch':_0x486861[_0x134562(0x1a5)][_0x134562(0x18f)]},'stack_trace':_0x295b79 instanceof Error?_0x295b79[_0x134562(0x10b)]:undefined,'source':_0x134562(0x11e),'tool':_0x134562(0x143),'latency_ms':_0x3781c1})[_0x134562(0x196)](()=>{}),{'content':[{'type':'text','text':_0x134562(0x13b)+_0x2a34ab}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x5e4754);}}catch(_0x341e40){const _0x332ad3=_0x341e40 instanceof Error?_0x341e40['message']:String(_0x341e40);return reportMorphError({'error_message':_0x332ad3,'error_type':_0x341e40 instanceof Error?_0x341e40[_0x134562(0xa3)]['name']:_0x134562(0x1a8),'context':{'tool':_0x5e4754,'arguments':_0x5b4ef4?JSON[_0x134562(0xb9)](_0x5b4ef4)[_0x134562(0x168)](0x0,0x1f4):undefined,'mcp_server_version':_0x134562(0x172)},'stack_trace':_0x341e40 instanceof Error?_0x341e40[_0x134562(0x10b)]:undefined,'source':_0x134562(0x11e)})['catch'](()=>{}),{'content':[{'type':'text','text':_0x134562(0x165)+_0x332ad3}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x5eef20){const _0x18775e=a0_0x5a8a3f,_0x27cc5c=await getValidRootDirectories(_0x5eef20);if(_0x27cc5c[_0x18775e(0x142)]>0x0)allowedDirectories=[..._0x27cc5c],logMcpStderr(_0x18775e(0xd0)+_0x27cc5c[_0x18775e(0x142)]+_0x18775e(0xf2));else{logMcpStderr(_0x18775e(0x121));if(ENABLE_WORKSPACE_MODE)try{const _0x24a7af=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x24a7af&&(allowedDirectories=[_0x24a7af],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x24a7af));}catch(_0xa02be0){logMcpStderr(_0x18775e(0xdd)+_0xa02be0);}}}server[a0_0x5a8a3f(0x12c)](RootsListChangedNotificationSchema,async()=>{const _0x24c976=a0_0x5a8a3f;try{const _0x5acf0a=await server[_0x24c976(0x1c0)]();_0x5acf0a&&_0x24c976(0x130)in _0x5acf0a&&await updateAllowedDirectoriesFromRoots(_0x5acf0a['roots']);}catch(_0x36f69b){logMcpStderr(_0x24c976(0xb6),_0x36f69b instanceof Error?_0x36f69b[_0x24c976(0x140)]:String(_0x36f69b));}}),server['oninitialized']=async()=>{const _0x2dbb21=a0_0x5a8a3f,_0x4db2ee=server[_0x2dbb21(0x9c)]();if(_0x4db2ee?.[_0x2dbb21(0x130)])try{const _0x274932=await server[_0x2dbb21(0x1c0)]();_0x274932&&_0x2dbb21(0x130)in _0x274932?await updateAllowedDirectoriesFromRoots(_0x274932[_0x2dbb21(0x130)]):logMcpStderr(_0x2dbb21(0xe0));}catch(_0x541abe){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x541abe instanceof Error?_0x541abe[_0x2dbb21(0x140)]:String(_0x541abe));}else{if(allowedDirectories['length']>0x0)logMcpStderr(_0x2dbb21(0xd6),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x2dbb21(0x19b));else throw new Error(_0x2dbb21(0xe3));}}};async function runServer(){const _0x13de52=a0_0x5a8a3f,_0x2b8a92=new StdioServerTransport();await server[_0x13de52(0xb7)](_0x2b8a92),logMcpStderr(_0x13de52(0x12e)),allowedDirectories['length']===0x0&&logMcpStderr(_0x13de52(0x158));}runServer()['catch'](_0x1841e9=>{const _0x6e4f49=a0_0x5a8a3f;logMcpStderr(_0x6e4f49(0xe2),_0x1841e9),process[_0x6e4f49(0x167)](0x1);});
|
|
2
|
+
const a0_0x3e026d=a0_0x3579;(function(_0x361e28,_0x44e5f3){const _0x4cb00e=a0_0x3579,_0x5cf58a=_0x361e28();while(!![]){try{const _0x3bf7d8=-parseInt(_0x4cb00e(0x1e0))/0x1*(parseInt(_0x4cb00e(0x18c))/0x2)+parseInt(_0x4cb00e(0x1d6))/0x3*(parseInt(_0x4cb00e(0x103))/0x4)+parseInt(_0x4cb00e(0x16e))/0x5*(-parseInt(_0x4cb00e(0x11d))/0x6)+-parseInt(_0x4cb00e(0x12c))/0x7+parseInt(_0x4cb00e(0x1a6))/0x8*(parseInt(_0x4cb00e(0x1e5))/0x9)+parseInt(_0x4cb00e(0xe7))/0xa+parseInt(_0x4cb00e(0x18a))/0xb;if(_0x3bf7d8===_0x44e5f3)break;else _0x5cf58a['push'](_0x5cf58a['shift']());}catch(_0x9893f){_0x5cf58a['push'](_0x5cf58a['shift']());}}}(a0_0xf1bd,0xcd78f));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';function a0_0x3579(_0x4085db,_0x5150e0){_0x4085db=_0x4085db-0xd9;const _0xf1bd68=a0_0xf1bd();let _0x3579bd=_0xf1bd68[_0x4085db];return _0x3579bd;}import a0_0x25800f from'fs/promises';import a0_0x5748e1 from'path';function a0_0xf1bd(){const _0x5b6d35=['DISABLED_TOOLS','ENABLE_WORKSPACE_MODE','join','role','RipgrepNotAvailable','new_string','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','file_read_complete','assistant','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','object','Workspace\x20mode\x20enabled:\x20Using\x20','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','string','8093975IGARkg','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','path_validation_start','user','error','MORPH_LARGE_APPLY','readFile','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','getClientCapabilities','MCP','status','every','pyproject.toml','Unknown\x20tool:\x20','parse','Here\x20is\x20the\x20content\x20of\x20files:\x0a','Relevant\x20context\x20found:','0.2.0','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','morph-warp-grep-v2.1','github_codebase_search','\x20-\x20','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','some','grep_search','name','messages','8123170Johgpf','FileReadError','222460gdbrXL','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','warn','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.','API\x20error\x20(auth/rate-limit)','github_search_start','file_path','content','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','morph-v3-fast','debug','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','optional','.git','log','isArray','catch','\x22>\x0a','composer.json','GitHub\x20search\x20failed:\x20','sep','path','substring','.cursor','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','MORPH_API_URL','8AJuysj','split','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','message','.vscode','filter','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','etimedout','grep\x20\x27','[github_codebase_search]\x20Done\x20in\x20','Warning:\x20Workspace\x20fallback\x20failed:\x20','glob','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','false','stringify','payload',',\x20removed\x20',',\x20modified\x20','list_directory\x20','\x0aOptions:','\x20is\x20not\x20a\x20directory','Unknown\x20error','setRequestHandler','FileNotFound','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','search_type','\x20as\x20allowed\x20directory','describe','startsWith','Failed\x20to\x20request\x20roots\x20from\x20client:','Morph\x20Edit\x20Preview','map','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','\x0aExamples:','listRoots','EDIT_FILE','linesModified','tool_call_received','../package.json','-\x20Preserve\x20exact\x20indentation\x0a','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Error\x20running\x20fast\x20context\x20search:\x20','timeout','morph-v3-large','resolve','toISOString','-\x20Grepped\x20\x27','node_modules','255RRZOPY','added\x20','MORPH_API_KEY','cwd','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','RipgrepError','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','success','provider_created','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','5deSVTi','has','@morphllm/morphmcp\x20','ms.\x20Success:\x20','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','9113049wLKGfH','boolean','instruction','compaction_failed','-\x20Glob\x20search\x20`','ReadError','codebase_search','Disabled\x20tools:\x20','file','package.json','tool_call_complete','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','Morph\x20FastApply\x20failed\x20without\x20error\x20message','requiresApiKey','turns','WarpGrep\x20sub-tool\x20errors:\x20','PWD','SymlinkError','branch','\x27\x20in\x20`','pattern','instructions','array','<file\x20path=\x22','command','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.','function','now','text','.\x20Path:\x20','mcp-filesystem','repo_path','path_validation_resolved','path_validation_failed','Max\x20results\x20to\x20return','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','api-key','includes','lines','push','.\x20Changes:\x20','Cargo.toml','4783830VOcxZe','ENOENT','realpath','timed\x20out','tool_calls','go.mod','version','dryRun','env','\x20disabled\x20via\x20DISABLED_TOOLS','params','unknown','Preview\x20changes\x20without\x20applying\x20them.','stat','sk-','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','tool','homedir','read','tool_call_id','arguments','files','application/json','description','Invalid\x20arguments:\x20','completed_with_file_errors','code','MORPH_WARP_GREP_TIMEOUT','59676gAjqXF','indexOf','\x0a...\x20(truncated,\x20total:\x20','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','Fallback:\x20Using\x20workspace\x20root\x20','utf-8','filePath','errors','read\x20','length','tool_call_error','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','unknown\x20error','oninitialized','response','linesAdded','source','Error:\x20','BinaryFile','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','search_string','Tool\x20','[github_codebase_search]\x20Failed\x20in\x20','context','[could\x20not\x20read\x20file:\x20','github_url','6ZJXztj','constructor','searchGitHub','code_edit','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','-\x20Read\x20file\x20`','exit','dirname','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','slice','grep','Morph\x20Edit\x20','https://morphllm.com/api/error-report','number','data','3366783wbSicL','list_directory','enum','TimeoutError','`\x20in\x20`','Error\x20accessing\x20directory\x20','morph-','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','SubToolError','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','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.','CODEBASE_SEARCH','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','Parameters:\x0a','WarpGrepError','LocalRipgrepProvider','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','finish','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','\x0a</file>','ToolException','size','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','\x20(new\x20file)','default','Bearer\x20','safeParse','all','file_read_failed','toLowerCase','metadata','stack','linesRemoved','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','timings','\x20valid\x20directories','❌\x20Morph\x20Edit\x20Failed:\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','terminationReason','glob\x20\x27','basename','UnknownError','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','edit_file','Warning:\x20','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','Created\x20File','PathError','\x20error(s)','setNotificationHandler','Fatal\x20error\x20running\x20server:'];a0_0xf1bd=function(){return _0x5b6d35;};return a0_0xf1bd();}import a0_0x4003c7 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_0x1840de from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x5552c4){const _0x472176=a0_0x3579,_0x347efb=_0x5552c4[_0x472176(0x1a7)](a0_0x5748e1['sep'])[_0x472176(0x1ab)](Boolean);if(_0x347efb[_0x472176(0x10c)]<0x2)return null;for(let _0x7128bf=Math['floor'](_0x347efb['length']/0x2);_0x7128bf>=0x1;_0x7128bf--){for(let _0x5e757c=0x0;_0x5e757c<=_0x347efb[_0x472176(0x10c)]-0x2*_0x7128bf;_0x5e757c++){const _0x5c2c9c=_0x347efb[_0x472176(0x126)](_0x5e757c,_0x5e757c+_0x7128bf),_0x11d00d=_0x347efb['slice'](_0x5e757c+_0x7128bf,_0x5e757c+0x2*_0x7128bf);if(_0x5c2c9c[_0x472176(0x179)]((_0x216d12,_0x283caf)=>_0x216d12===_0x11d00d[_0x283caf])){const _0x305bf7=[..._0x347efb['slice'](0x0,_0x5e757c),..._0x347efb[_0x472176(0x126)](_0x5e757c+_0x7128bf)];return a0_0x5748e1[_0x472176(0x1a0)]+_0x305bf7['join'](a0_0x5748e1[_0x472176(0x1a0)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x449866=a0_0x3579;try{const _0x117c91=require(_0x449866(0x1cc));return _0x117c91[_0x449866(0xed)]??_0x449866(0xf2);}catch(_0x538896){return logMcpStderr(_0x449866(0x175),_0x538896),'unknown';}}function printHelp(){const _0x3b3d1f=a0_0x3579;console[_0x3b3d1f(0x19a)](_0x3b3d1f(0x1e2)+getPackageVersion()),console[_0x3b3d1f(0x19a)](_0x3b3d1f(0x15a)),console[_0x3b3d1f(0x19a)](_0x3b3d1f(0x1b9)),console[_0x3b3d1f(0x19a)](_0x3b3d1f(0x135)),console[_0x3b3d1f(0x19a)](_0x3b3d1f(0x139)),console['log'](_0x3b3d1f(0x184)),console['log'](_0x3b3d1f(0x1c7)),console['log']('\x20\x20morph-mcp'),console[_0x3b3d1f(0x19a)](_0x3b3d1f(0x13f));}const cliArgs=process['argv'][a0_0x3e026d(0x126)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs['some'](_0x4ae0ed=>VERSION_FLAGS['has'](_0x4ae0ed))&&(console[a0_0x3e026d(0x19a)](a0_0x3e026d(0x1e2)+getPackageVersion()),process[a0_0x3e026d(0x123)](0x0));cliArgs[a0_0x3e026d(0x186)](_0x373f62=>HELP_FLAGS[a0_0x3e026d(0x1e1)](_0x373f62))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x1495f9){const _0x23ad23=a0_0x3e026d;for(let _0x4ec7a4=0x0;_0x4ec7a4<cliArgs[_0x23ad23(0x10c)];_0x4ec7a4++){const _0x55e4b0=cliArgs[_0x4ec7a4];if(_0x55e4b0[_0x23ad23(0x1c2)]('--'+_0x1495f9+'='))return _0x55e4b0[_0x23ad23(0x126)](('--'+_0x1495f9+'=')[_0x23ad23(0x10c)]);if(_0x55e4b0==='--'+_0x1495f9&&_0x4ec7a4+0x1<cliArgs[_0x23ad23(0x10c)])return cliArgs[_0x4ec7a4+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x3e026d(0x10c)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0x3e026d(0x1e1)](arg))continue;if(arg[a0_0x3e026d(0x1c2)]('--api-key='))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x3e026d(0xe4)](arg);}const WORKSPACE_ROOT=process[a0_0x3e026d(0xef)]['WORKSPACE_ROOT']||process[a0_0x3e026d(0xef)][a0_0x3e026d(0x1f5)]||process[a0_0x3e026d(0x1d9)](),ENABLE_WORKSPACE_MODE=process[a0_0x3e026d(0xef)][a0_0x3e026d(0x161)]!==a0_0x3e026d(0x1b3),MORPH_API_KEY=getCliArg(a0_0x3e026d(0xe1))??process[a0_0x3e026d(0xef)][a0_0x3e026d(0x1d8)],MORPH_API_URL=process['env'][a0_0x3e026d(0x1a5)],MORPH_LARGE_APPLY=process[a0_0x3e026d(0xef)][a0_0x3e026d(0x173)]!==a0_0x3e026d(0x1b3),MORPH_WARP_GREP_TIMEOUT=process[a0_0x3e026d(0xef)][a0_0x3e026d(0x102)]?parseInt(process[a0_0x3e026d(0xef)][a0_0x3e026d(0x102)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x3e026d(0xef)][a0_0x3e026d(0x160)]?new Set(process[a0_0x3e026d(0xef)][a0_0x3e026d(0x160)][a0_0x3e026d(0x1a7)](',')['map'](_0x3b7aec=>_0x3b7aec['trim']())[a0_0x3e026d(0x1ab)](_0x4f1b46=>_0x4f1b46[a0_0x3e026d(0x10c)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x3e026d(0x142)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console['error'](a0_0x3e026d(0x1df)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console[a0_0x3e026d(0x172)](a0_0x3e026d(0x1ec)+[...DISABLED_TOOLS][a0_0x3e026d(0x162)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x3e026d(0x1c2)](a0_0x3e026d(0xf5))&&!MORPH_API_KEY['startsWith'](a0_0x3e026d(0x132))&&logMcpStderr(a0_0x3e026d(0xe0));async function reportMorphError(_0x137b25){const _0x4c09f0=a0_0x3e026d;try{await a0_0x1840de['post'](_0x4c09f0(0x129),{..._0x137b25,'timestamp':new Date()[_0x4c09f0(0x1d3)](),'source':_0x137b25[_0x4c09f0(0x113)]||_0x4c09f0(0xdb),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x137b25[_0x4c09f0(0x11a)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x4c09f0(0xfd),'Authorization':_0x4c09f0(0x146)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x1a1477,_0x337a17){const _0x2a358f=a0_0x3e026d;if(_0x1a1477&&typeof _0x1a1477===_0x2a358f(0x16a)&&_0x2a358f(0x178)in _0x1a1477)return _0x1a1477['status'];if(_0x1a1477&&typeof _0x1a1477==='object'&&_0x2a358f(0x111)in _0x1a1477)return _0x1a1477[_0x2a358f(0x111)]?.[_0x2a358f(0x178)];const _0x7cf7e7=_0x337a17['match'](/\b(401|429)\b/);return _0x7cf7e7?parseInt(_0x7cf7e7[0x1],0xa):null;}function handleMorphAPIError(_0x1042ee){const _0x39c68d=a0_0x3e026d,_0x358b8a=_0x1042ee instanceof Error?_0x1042ee[_0x39c68d(0x1a9)]:String(_0x1042ee),_0x3a13da=extractStatusCode(_0x1042ee,_0x358b8a);switch(_0x3a13da){case 0x191:return{'content':[{'type':_0x39c68d(0xd9),'text':_0x39c68d(0x1fe)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x39c68d(0xd9),'text':_0x39c68d(0x180)}],'isError':!![]};default:return null;}}args[a0_0x3e026d(0x10c)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x3e026d(0x1ce)),logMcpStderr(a0_0x3e026d(0x1dc)));function normalizePath(_0x221bdd){return a0_0x5748e1['normalize'](_0x221bdd);}function expandHome(_0x3f1e48){const _0x400a5d=a0_0x3e026d;if(_0x3f1e48[_0x400a5d(0x1c2)]('~/')||_0x3f1e48==='~')return a0_0x5748e1['join'](a0_0x4003c7[_0x400a5d(0xf8)](),_0x3f1e48['slice'](0x1));return _0x3f1e48;}let allowedDirectories=await Promise['all'](args[a0_0x3e026d(0x1c5)](async _0x59b1ce=>{const _0x290c5a=a0_0x3e026d,_0x2062d7=expandHome(_0x59b1ce),_0x1d9602=a0_0x5748e1['resolve'](_0x2062d7);try{const _0x3550e2=await a0_0x25800f[_0x290c5a(0xe9)](_0x1d9602);return normalizePath(_0x3550e2);}catch(_0x4881ab){return normalizePath(_0x1d9602);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x3e026d(0x10c)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),logMcpStderr(a0_0x3e026d(0x16b)+workspaceDir+a0_0x3e026d(0x1c0)));}catch(a0_0x597f57){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x597f57);}async function detectWorkspaceRoot(_0x733549){const _0xb2735d=a0_0x3e026d;let _0xeb4337=a0_0x5748e1['resolve'](_0x733549);const _0x381734=[_0xb2735d(0x199),_0xb2735d(0x1aa),_0xb2735d(0x1ee),_0xb2735d(0xe6),_0xb2735d(0x17a),_0xb2735d(0xec),_0xb2735d(0x1a3),'tsconfig.json',_0xb2735d(0x19e)];while(_0xeb4337!==a0_0x5748e1[_0xb2735d(0x124)](_0xeb4337)){for(const _0xb891c8 of _0x381734){const _0x1c27e5=a0_0x5748e1[_0xb2735d(0x162)](_0xeb4337,_0xb891c8);try{return await a0_0x25800f['access'](_0x1c27e5),normalizePath(_0xeb4337);}catch{}}_0xeb4337=a0_0x5748e1[_0xb2735d(0x124)](_0xeb4337);}return normalizePath(_0x733549);}await Promise[a0_0x3e026d(0x148)](args[a0_0x3e026d(0x1c5)](async _0x52fdf7=>{const _0x23d92b=a0_0x3e026d;try{const _0x57c99a=await a0_0x25800f[_0x23d92b(0xf4)](expandHome(_0x52fdf7));!_0x57c99a['isDirectory']()&&(logMcpStderr(_0x23d92b(0x114)+_0x52fdf7+_0x23d92b(0x1ba)),process[_0x23d92b(0x123)](0x1));}catch(_0xf2539a){logMcpStderr(_0x23d92b(0x131)+_0x52fdf7+':',_0xf2539a),process['exit'](0x1);}}));async function validatePath(_0x14976b){const _0x5115d9=a0_0x3e026d,_0x4dbeaf=expandHome(_0x14976b),_0x590c0d=a0_0x5748e1['resolve'](_0x4dbeaf);logger[_0x5115d9(0x196)](_0x5115d9(0x177),_0x5115d9(0x170),{'raw_path':_0x14976b,'absolute':_0x590c0d});try{const _0x276656=await a0_0x25800f[_0x5115d9(0xe9)](_0x590c0d);return logger[_0x5115d9(0x196)](_0x5115d9(0x177),'path_validation_resolved',{'resolved':_0x276656,'symlink':_0x276656!==_0x590c0d}),_0x276656;}catch(_0x16f078){if(_0x16f078[_0x5115d9(0x101)]===_0x5115d9(0xe8)){const _0xff7f82=a0_0x5748e1['dirname'](_0x590c0d);try{const _0x2a305d=await a0_0x25800f[_0x5115d9(0xe9)](_0xff7f82),_0x6df898=a0_0x5748e1[_0x5115d9(0x162)](_0x2a305d,a0_0x5748e1[_0x5115d9(0x155)](_0x590c0d));return logger[_0x5115d9(0x196)](_0x5115d9(0x177),_0x5115d9(0xdd),{'resolved':_0x6df898,'new_file':!![]}),_0x6df898;}catch{logger[_0x5115d9(0x172)]('MCP',_0x5115d9(0xde),{'raw_path':_0x14976b,'error':_0x5115d9(0x152)+_0xff7f82});throw new Error(_0x5115d9(0x152)+_0xff7f82);}}logger['error'](_0x5115d9(0x177),'path_validation_failed',{'raw_path':_0x14976b,'error':_0x16f078[_0x5115d9(0x1a9)]});throw _0x16f078;}}const MorphEditFileArgsSchema=z[a0_0x3e026d(0x16a)]({'path':z[a0_0x3e026d(0x16d)](),'code_edit':z[a0_0x3e026d(0x16d)]()[a0_0x3e026d(0x1c1)](a0_0x3e026d(0x169)),'instruction':z[a0_0x3e026d(0x16d)]()[a0_0x3e026d(0x1c1)]('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0x3e026d(0x1e6)]()[a0_0x3e026d(0x145)](![])[a0_0x3e026d(0x1c1)](a0_0x3e026d(0xf3))}),CODEBASE_SEARCH_QUERY_DESCRIPTION='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.',WarpGrepArgsSchema=z[a0_0x3e026d(0x16a)]({'search_string':z[a0_0x3e026d(0x16d)]()[a0_0x3e026d(0x1c1)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x3e026d(0x16d)]()[a0_0x3e026d(0x1c1)](a0_0x3e026d(0x1a4)),'search_type':z[a0_0x3e026d(0x12e)]([a0_0x3e026d(0x145),a0_0x3e026d(0x1d5)])[a0_0x3e026d(0x198)]()['describe'](a0_0x3e026d(0x13d))}),WarpGrepGitHubArgsSchema=z[a0_0x3e026d(0x16a)]({'search_string':z[a0_0x3e026d(0x16d)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x3e026d(0x16d)]()[a0_0x3e026d(0x198)]()[a0_0x3e026d(0x1c1)]('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.'),'owner_repo':z['string']()[a0_0x3e026d(0x198)]()[a0_0x3e026d(0x1c1)](a0_0x3e026d(0x14e)),'branch':z['string']()[a0_0x3e026d(0x198)]()[a0_0x3e026d(0x1c1)](a0_0x3e026d(0xf6))}),CodebaseSearchArgsSchema=z[a0_0x3e026d(0x16a)]({'query':z[a0_0x3e026d(0x16d)]()[a0_0x3e026d(0x1c1)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x3e026d(0x16d)]()['describe']('Repository\x20identifier'),'branch':z[a0_0x3e026d(0x16d)]()['optional']()['describe'](a0_0x3e026d(0x16c)),'commitHash':z['string']()['optional']()['describe']('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x3e026d(0x1fb)](z[a0_0x3e026d(0x16d)]())[a0_0x3e026d(0x145)]([])[a0_0x3e026d(0x1c1)](a0_0x3e026d(0x16f)),'limit':z[a0_0x3e026d(0x12a)]()[a0_0x3e026d(0x198)]()[a0_0x3e026d(0x145)](0xa)[a0_0x3e026d(0x1c1)](a0_0x3e026d(0xdf))}),server=new Server({'name':'morph-mcp','version':a0_0x3e026d(0x17f)},{'capabilities':{'tools':{}}});server[a0_0x3e026d(0x1bc)](ListToolsRequestSchema,async()=>{const _0x48906f=a0_0x3e026d,_0x5774c4=[{'name':TOOL_NAMES[_0x48906f(0x1c9)],'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'+_0x48906f(0x13a)+_0x48906f(0x106)+_0x48906f(0x185)+'-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a'+_0x48906f(0x194)+'Example\x20format:\x0a'+_0x48906f(0x121)+'Rules:\x0a'+_0x48906f(0x1a8)+_0x48906f(0x1cd)+'-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a'+_0x48906f(0x10e),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x48906f(0x138)],'description':_0x48906f(0x1f0)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x48906f(0x1ac)+_0x48906f(0x157)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x3f3979=_0x5774c4[_0x48906f(0x1ab)](_0x41769d=>{const _0x34eeee=_0x48906f;if(DISABLED_TOOLS[_0x34eeee(0x1e1)](_0x41769d[_0x34eeee(0x188)]))return console[_0x34eeee(0x172)](_0x34eeee(0x118)+_0x41769d['name']+_0x34eeee(0xf0)),![];if(_0x34eeee(0x1f2)in _0x41769d&&_0x41769d[_0x34eeee(0x1f2)]&&!MORPH_API_KEY)return logMcpStderr(_0x34eeee(0x159)+_0x41769d['name']+_0x34eeee(0x1da)),![];return!![];});return{'tools':_0x3f3979['map'](_0x2dee15=>({'name':_0x2dee15[_0x48906f(0x188)],'description':_0x2dee15[_0x48906f(0xfe)],'inputSchema':_0x2dee15['inputSchema']}))};}),server[a0_0x3e026d(0x1bc)](CallToolRequestSchema,async _0x16aaa8=>{const _0x14b0d9=a0_0x3e026d,{name:_0x16603f,arguments:_0x1888ae}=_0x16aaa8[_0x14b0d9(0xf1)],_0x341237=Date[_0x14b0d9(0x200)]();logger[_0x14b0d9(0x196)]('MCP',_0x14b0d9(0x1cb),{'tool':_0x16603f,'args':_0x16603f===_0x14b0d9(0x158)?{'path':_0x1888ae?.[_0x14b0d9(0x1a1)],'instruction':_0x1888ae?.[_0x14b0d9(0x1e7)]||_0x1888ae?.[_0x14b0d9(0x1fa)],'dryRun':_0x1888ae?.[_0x14b0d9(0xee)]}:_0x1888ae});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x14b0d9(0xd9),'text':'No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.'}],'isError':!![]};if(!MORPH_API_KEY[_0x14b0d9(0x1c2)]('sk-')&&!MORPH_API_KEY['startsWith'](_0x14b0d9(0x132)))return{'content':[{'type':_0x14b0d9(0xd9),'text':_0x14b0d9(0x137)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0x16603f))return{'content':[{'type':_0x14b0d9(0xd9),'text':'Tool\x20\x22'+_0x16603f+_0x14b0d9(0x1e4)}],'isError':![]};switch(_0x16603f){case TOOL_NAMES[_0x14b0d9(0x1c9)]:{let _0x1c75f5=_0x1888ae;if(_0x1c75f5&&typeof _0x1c75f5==='object'){if(!('path'in _0x1c75f5)){const _0x2d688c=_0x1c75f5['target_file']??_0x1c75f5[_0x14b0d9(0x109)]??_0x1c75f5['target_filepath']??_0x1c75f5[_0x14b0d9(0x192)]??_0x1c75f5[_0x14b0d9(0x1ed)];if(_0x2d688c)_0x1c75f5={..._0x1c75f5,'path':_0x2d688c};}'instructions'in _0x1c75f5&&!(_0x14b0d9(0x1e7)in _0x1c75f5)&&(_0x1c75f5={..._0x1c75f5,'instruction':_0x1c75f5[_0x14b0d9(0x1fa)]});if(!(_0x14b0d9(0x120)in _0x1c75f5)){const _0x59457f=_0x1c75f5[_0x14b0d9(0x101)]??_0x1c75f5[_0x14b0d9(0x165)]??_0x1c75f5[_0x14b0d9(0x193)]??_0x1c75f5['edit'];if(_0x59457f)_0x1c75f5={..._0x1c75f5,'code_edit':_0x59457f};}}const _0x122f22=MorphEditFileArgsSchema['safeParse'](_0x1c75f5);if(!_0x122f22[_0x14b0d9(0x1dd)])throw new Error(_0x14b0d9(0x1c6)+_0x122f22[_0x14b0d9(0x172)]);const _0x3a7301=await validatePath(_0x122f22['data'][_0x14b0d9(0x1a1)]);let _0x592f59=null,_0x148f34=!![],_0x34911c=null;try{_0x592f59=await a0_0x25800f[_0x14b0d9(0x174)](_0x3a7301,_0x14b0d9(0x108)),logger['debug'](_0x14b0d9(0x177),_0x14b0d9(0x167),{'path':_0x3a7301,'size_bytes':_0x592f59['length']});}catch(_0x2e84cf){const _0x4cf8fa=_0x2e84cf['code'];_0x4cf8fa===_0x14b0d9(0xe8)?(_0x148f34=![],_0x592f59='',logger['debug'](_0x14b0d9(0x177),'file_read_complete',{'path':_0x3a7301,'exists':![]})):(_0x34911c='Failed\x20to\x20read\x20file:\x20'+(_0x4cf8fa||'unknown')+_0x14b0d9(0x183)+(_0x2e84cf instanceof Error?_0x2e84cf[_0x14b0d9(0x1a9)]:String(_0x2e84cf)),logger[_0x14b0d9(0x172)](_0x14b0d9(0x177),_0x14b0d9(0x149),{'path':_0x3a7301,'error':_0x34911c}),logMcpStderr('Warning:\x20'+_0x34911c));}let _0x7a42a0;try{const _0x71b95c=MORPH_API_KEY;if(!_0x71b95c)throw new Error(_0x14b0d9(0x18d));const _0x41c91f=a0_0x5748e1[_0x14b0d9(0x124)](_0x3a7301),_0x340ad4=a0_0x5748e1[_0x14b0d9(0x155)](_0x3a7301);logger[_0x14b0d9(0x196)](_0x14b0d9(0x177),'api_request_start',{'model':_0x14b0d9(0x195),'path':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x1a1)],'instruction_len':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x1e7)][_0x14b0d9(0x10c)],'code_edit_len':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x120)][_0x14b0d9(0x10c)],'original_code_len':_0x592f59?.[_0x14b0d9(0x10c)]??0x0,'dry_run':_0x122f22['data'][_0x14b0d9(0xee)]});const _0x121395=Date['now'](),_0xe42830=await executeEditFile({'target_filepath':_0x340ad4,'code_edit':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x120)],'instruction':_0x122f22[_0x14b0d9(0x12b)]['instruction']},{'morphApiKey':_0x71b95c,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x41c91f,'autoWrite':!_0x122f22['data']['dryRun'],'generateUdiff':![],'debug':![]}),_0x4dd9d1=Date['now']()-_0x121395;_0x7a42a0=_0xe42830['completionId'];if(!_0xe42830['success'])throw new Error(_0xe42830['error']||_0x14b0d9(0x1f1));const _0xdf137f=_0xe42830['changes'],_0x1d6689=_0x14b0d9(0x1d7)+_0xdf137f[_0x14b0d9(0x112)]+_0x14b0d9(0x1b6)+_0xdf137f['linesRemoved']+_0x14b0d9(0x1b7)+_0xdf137f[_0x14b0d9(0x1ca)];logger[_0x14b0d9(0x196)](_0x14b0d9(0x177),_0x14b0d9(0x1ef),{'tool':_0x14b0d9(0x158),'success':!![],'latency_ms':Date[_0x14b0d9(0x200)]()-_0x341237,'edit_latency_ms':_0x4dd9d1,'changes':{'added':_0xdf137f[_0x14b0d9(0x112)],'removed':_0xdf137f[_0x14b0d9(0x14d)],'modified':_0xdf137f[_0x14b0d9(0x1ca)]},'completion_id':_0x7a42a0});if(_0x122f22[_0x14b0d9(0x12b)]['dryRun'])return{'content':[{'type':_0x14b0d9(0xd9),'text':_0x14b0d9(0x1c4)+(_0x148f34?'':_0x14b0d9(0x144))+':\x20'+_0x122f22['data']['instruction']+'.\x20Changes:\x20'+_0x1d6689+'.\x20Path:\x20'+_0x122f22[_0x14b0d9(0x12b)]['path']+'.'}]};return{'content':[{'type':'text','text':_0x14b0d9(0x128)+(_0x148f34?'Applied':_0x14b0d9(0x15b))+':\x20'+_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x1e7)]+_0x14b0d9(0xe5)+_0x1d6689+_0x14b0d9(0xda)+_0x122f22[_0x14b0d9(0x12b)]['path']+'.'}]};}catch(_0x1a927d){const _0x1337d5=handleMorphAPIError(_0x1a927d);if(_0x1337d5)return logger[_0x14b0d9(0x172)](_0x14b0d9(0x177),_0x14b0d9(0x10d),{'tool':'edit_file','error':_0x14b0d9(0x190),'latency_ms':Date[_0x14b0d9(0x200)]()-_0x341237}),_0x1337d5;const _0x20daf7=_0x1a927d instanceof Error?_0x1a927d[_0x14b0d9(0x1a9)]:String(_0x1a927d);return logger[_0x14b0d9(0x172)](_0x14b0d9(0x177),_0x14b0d9(0x10d),{'tool':'edit_file','error':_0x20daf7,'path':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x1a1)],'validated_path':_0x3a7301,'latency_ms':Date[_0x14b0d9(0x200)]()-_0x341237,'stack':_0x1a927d instanceof Error?_0x1a927d['stack']:undefined}),reportMorphError({'error_message':_0x20daf7,'error_type':_0x1a927d instanceof Error?_0x1a927d[_0x14b0d9(0x11e)][_0x14b0d9(0x188)]:_0x14b0d9(0x156),'context':{'tool':_0x14b0d9(0x158),'completion_id':_0x7a42a0,'file_path':_0x122f22[_0x14b0d9(0x12b)]['path'],'validated_path':_0x3a7301,'instruction':_0x122f22['data'][_0x14b0d9(0x1e7)],'model':MORPH_LARGE_APPLY?_0x14b0d9(0x1d1):_0x14b0d9(0x195),'dry_run':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0xee)],'file_exists':_0x148f34,'file_read_error':_0x34911c,'file_readable':_0x592f59!==null,'request_content':{'path':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x1a1)],'code_edit':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x120)],'instruction':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x1e7)],'original_code':_0x592f59!==null?_0x592f59[_0x14b0d9(0x10c)]>0xc350?_0x592f59['substring'](0x0,0xc350)+_0x14b0d9(0x105)+_0x592f59['length']+'\x20chars)':_0x592f59:_0x14b0d9(0x11b)+(_0x34911c||_0x14b0d9(0x10f))+']','original_code_length':_0x592f59?.[_0x14b0d9(0x10c)]??0x0,'model':MORPH_LARGE_APPLY?_0x14b0d9(0x1d1):_0x14b0d9(0x195),'dry_run':_0x122f22['data'][_0x14b0d9(0xee)]}},'stack_trace':_0x1a927d instanceof Error?_0x1a927d[_0x14b0d9(0x14c)]:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':_0x14b0d9(0xd9),'text':_0x14b0d9(0x151)+_0x20daf7}],'isError':!![]};}}case TOOL_NAMES[_0x14b0d9(0x138)]:{const _0x38c771=WarpGrepArgsSchema[_0x14b0d9(0x147)](_0x1888ae);if(!_0x38c771[_0x14b0d9(0x1dd)])return{'content':[{'type':_0x14b0d9(0xd9),'text':_0x14b0d9(0xff)+_0x38c771[_0x14b0d9(0x172)]}],'isError':!![]};const _0x300a94=_0x522c4b=>{const _0x4467e4=_0x14b0d9,_0xb9ab76=[];for(const _0x2630ec of _0x522c4b||[]){if(_0x2630ec[_0x4467e4(0x163)]===_0x4467e4(0x168)&&Array[_0x4467e4(0x19b)](_0x2630ec['tool_calls']))for(const _0x134ab1 of _0x2630ec['tool_calls']){try{const _0x461b1a=_0x134ab1[_0x4467e4(0x1ff)]?.[_0x4467e4(0x188)],_0x50cd2d=JSON['parse'](_0x134ab1['function']?.['arguments']||'{}');if(_0x461b1a===_0x4467e4(0x187))_0xb9ab76['push'](_0x4467e4(0x1ae)+_0x50cd2d[_0x4467e4(0x1f9)]+'\x27\x20'+(_0x50cd2d[_0x4467e4(0x1a1)]||'.'));else{if(_0x461b1a===_0x4467e4(0xf9))_0xb9ab76[_0x4467e4(0xe4)](_0x4467e4(0x10b)+_0x50cd2d['path']);else{if(_0x461b1a==='list_directory')_0xb9ab76[_0x4467e4(0xe4)](_0x4467e4(0x1b8)+(_0x50cd2d[_0x4467e4(0x1fd)]||'.'));else{if(_0x461b1a===_0x4467e4(0x1b1))_0xb9ab76['push'](_0x4467e4(0x154)+_0x50cd2d[_0x4467e4(0x1f9)]+'\x27\x20'+(_0x50cd2d[_0x4467e4(0x1a1)]||'.'));else _0x461b1a===_0x4467e4(0x13e)&&_0xb9ab76[_0x4467e4(0xe4)](_0x4467e4(0x13e));}}}}catch{}}}return _0xb9ab76;},_0x42a8cd=_0x5c0123=>{const _0x1249e6=_0x14b0d9,_0x1fe563=[];if(!_0x5c0123||!Array['isArray'](_0x5c0123))return _0x1fe563;const _0x4710ef=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x1249e6(0x1bd),'tool':_0x1249e6(0xf9)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x1249e6(0x15c),'tool':_0x1249e6(0xf9)},{'pattern':/\[READ ERROR\]/,'error_type':_0x1249e6(0x1ea),'tool':_0x1249e6(0xf9)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x1249e6(0x115),'tool':_0x1249e6(0xf9)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x1249e6(0x1db),'tool':_0x1249e6(0x127)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x1249e6(0x164),'tool':_0x1249e6(0x127)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x1249e6(0x115),'tool':_0x1249e6(0xf9)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x1249e6(0xf9)},{'pattern':/not a text file/,'error_type':_0x1249e6(0x115),'tool':'read'},{'pattern':/symbolic link/,'error_type':_0x1249e6(0x1f6),'tool':'read'},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x1249e6(0xf9)},{'pattern':/status="error"/,'error_type':_0x1249e6(0x141),'tool':_0x1249e6(0xf2)}];let _0x27dfaf=0x0;for(const _0xde8bde of _0x5c0123){_0xde8bde[_0x1249e6(0x163)]===_0x1249e6(0x168)&&Array['isArray'](_0xde8bde['tool_calls'])&&_0x27dfaf++;const _0x22dfa7=_0xde8bde[_0x1249e6(0x193)];if((_0xde8bde[_0x1249e6(0x163)]===_0x1249e6(0xf7)||_0xde8bde[_0x1249e6(0x163)]===_0x1249e6(0x171))&&_0x22dfa7&&typeof _0x22dfa7===_0x1249e6(0x16d))for(const {pattern:_0x262d84,error_type:_0x3d3fae,tool:_0x1428aa}of _0x4710ef){const _0x312d56=_0x22dfa7['match'](new RegExp(_0x262d84[_0x1249e6(0x113)],'g'));if(_0x312d56)for(const _0x591b28 of _0x312d56){const _0xb49356=_0x22dfa7[_0x1249e6(0x104)](_0x591b28),_0x3d6832=_0x22dfa7[_0x1249e6(0x1a2)](_0xb49356,Math['min'](_0xb49356+0xc8,_0x22dfa7['length']));_0x1fe563[_0x1249e6(0xe4)]({'tool':_0x1428aa,'error_type':_0x3d3fae,'error_message':_0x3d6832[_0x1249e6(0x1a7)]('\x0a')[0x0],'turn':_0x27dfaf});}}}return _0x1fe563;};try{const _0x5d62a7=a0_0x5748e1[_0x14b0d9(0x1d2)](_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)]),_0x417c25=_0x38c771['data'][_0x14b0d9(0x1bf)],_0x1ebe4d=_0x417c25===_0x14b0d9(0x1d5)?{'allowNames':[_0x14b0d9(0x1d5)]}:undefined,_0x524007=new LocalRipgrepProvider(_0x5d62a7,undefined,_0x1ebe4d);logger[_0x14b0d9(0x196)]('MCP',_0x14b0d9(0x1de),{'type':_0x14b0d9(0x13c),'repo_root':_0x5d62a7,'search_type':_0x417c25||_0x14b0d9(0x145)}),logger[_0x14b0d9(0x196)](_0x14b0d9(0x177),'warp_grep_start',{'query':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'repo_root':_0x5d62a7,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x3d8956=Date[_0x14b0d9(0x200)](),_0x5310c3=await runWarpGrep({'searchTerm':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'repoRoot':_0x5d62a7,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x524007,'search_type':_0x417c25}),_0x50ec21=Date['now']()-_0x3d8956,_0x548019=_0x5310c3[_0x14b0d9(0x13e)]?.[_0x14b0d9(0x14b)]?.['files']?.['length']??0x0;logger['debug'](_0x14b0d9(0x177),'warp_grep_complete',{'termination':_0x5310c3[_0x14b0d9(0x153)],'turns':_0x5310c3[_0x14b0d9(0x14f)]?.[_0x14b0d9(0x1f3)]??0x0,'files_found':_0x548019,'latency_ms':_0x50ec21});const _0x2d0523=_0x42a8cd(_0x5310c3[_0x14b0d9(0x189)]);_0x2d0523['length']>0x0&&reportMorphError({'error_message':_0x14b0d9(0x1f4)+_0x2d0523[_0x14b0d9(0x10c)]+_0x14b0d9(0x15d),'error_type':_0x14b0d9(0x134),'level':_0x14b0d9(0x18e),'tool':'codebase_search','context':{'repo_path':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)],'query':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'model':'morph-warp-grep-v2.1','termination_reason':_0x5310c3[_0x14b0d9(0x153)],'sub_tool_errors':_0x2d0523,'timings':_0x5310c3['timings'],'tool_calls':_0x300a94(_0x5310c3[_0x14b0d9(0x189)]),'messages':_0x5310c3[_0x14b0d9(0x189)]?.[_0x14b0d9(0x1c5)](_0x5a1434=>({'role':_0x5a1434[_0x14b0d9(0x163)],'content':_0x5a1434['content'],..._0x5a1434[_0x14b0d9(0xeb)]?{'tool_calls':_0x5a1434[_0x14b0d9(0xeb)]['length']}:{},..._0x5a1434[_0x14b0d9(0xfa)]?{'tool_call_id':_0x5a1434[_0x14b0d9(0xfa)]}:{}}))},'source':'mcp-filesystem'})['catch'](()=>{});let _0x2330a6='';if(_0x5310c3['terminationReason']==='completed'&&_0x5310c3['finish']?.[_0x14b0d9(0x14b)]?.[_0x14b0d9(0xfc)]){const _0x50f4f0=_0x5310c3[_0x14b0d9(0x13e)][_0x14b0d9(0x14b)][_0x14b0d9(0xfc)];if(_0x50f4f0[_0x14b0d9(0x10c)]===0x0)return _0x2330a6=_0x5310c3[_0x14b0d9(0x13e)][_0x14b0d9(0x1b5)]||_0x14b0d9(0x166),{'content':[{'type':_0x14b0d9(0xd9),'text':_0x2330a6}]};const _0x1f2093=[],_0x37a7a6=[_0x14b0d9(0x197)];for(const _0x22c7ca of _0x5310c3[_0x14b0d9(0x189)]){if(_0x22c7ca[_0x14b0d9(0x163)]===_0x14b0d9(0x168)&&Array[_0x14b0d9(0x19b)](_0x22c7ca[_0x14b0d9(0xeb)]))for(const _0x3ce1b3 of _0x22c7ca[_0x14b0d9(0xeb)]){try{const _0x4949ae=_0x3ce1b3[_0x14b0d9(0x1ff)]?.['name'],_0x3e7bd9=JSON[_0x14b0d9(0x17c)](_0x3ce1b3[_0x14b0d9(0x1ff)]?.[_0x14b0d9(0xfb)]||'{}');if(_0x4949ae===_0x14b0d9(0x187))_0x37a7a6['push'](_0x14b0d9(0x1d4)+_0x3e7bd9['pattern']+_0x14b0d9(0x1f8)+(_0x3e7bd9['path']||'.')+'`');else{if(_0x4949ae===_0x14b0d9(0xf9))_0x37a7a6[_0x14b0d9(0xe4)](_0x14b0d9(0x122)+_0x3e7bd9[_0x14b0d9(0x1a1)]+'`');else{if(_0x4949ae===_0x14b0d9(0x12d))_0x37a7a6[_0x14b0d9(0xe4)]('-\x20Listed\x20directory\x20`'+(_0x3e7bd9['command']||'.')+'`');else _0x4949ae===_0x14b0d9(0x1b1)&&_0x37a7a6[_0x14b0d9(0xe4)](_0x14b0d9(0x1e9)+_0x3e7bd9[_0x14b0d9(0x1f9)]+_0x14b0d9(0x130)+(_0x3e7bd9[_0x14b0d9(0x1a1)]||'.')+'`');}}}catch{}}}_0x1f2093['push'](_0x37a7a6['join']('\x0a'));const _0x2df97a=['',_0x14b0d9(0x17e)];for(const _0x300eb7 of _0x50f4f0){if(_0x300eb7[_0x14b0d9(0xe3)]==='*')_0x2df97a[_0x14b0d9(0xe4)]('-\x20'+_0x300eb7[_0x14b0d9(0x1a1)]+':*');else{if(Array[_0x14b0d9(0x19b)](_0x300eb7[_0x14b0d9(0xe3)])){const _0x3182d8=_0x300eb7[_0x14b0d9(0xe3)][_0x14b0d9(0x1c5)](([_0x110539,_0x173cca])=>{if(_0x110539===_0x173cca)return''+_0x110539;return _0x110539+'-'+_0x173cca;});_0x2df97a[_0x14b0d9(0xe4)]('-\x20'+_0x300eb7[_0x14b0d9(0x1a1)]+':'+_0x3182d8['join'](','));}else _0x2df97a['push']('-\x20'+_0x300eb7['path']+':*');}}_0x2df97a[_0x14b0d9(0xe4)](''),_0x1f2093['push'](_0x2df97a[_0x14b0d9(0x162)]('\x0a')),_0x1f2093[_0x14b0d9(0xe4)](_0x14b0d9(0x17d));const _0x1426f2=[],_0x94cf32=[];for(const _0x6e82f of _0x50f4f0){let _0x24b09d=a0_0x5748e1[_0x14b0d9(0x1d2)](_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)],_0x6e82f[_0x14b0d9(0x1a1)]),_0x462970=null,_0x981736=null;try{_0x462970=await a0_0x25800f[_0x14b0d9(0x174)](_0x24b09d,{'encoding':'utf-8'});}catch(_0x480cda){const _0x5e3736=fixPathRepetition(_0x24b09d);if(_0x5e3736)try{_0x462970=await a0_0x25800f[_0x14b0d9(0x174)](_0x5e3736,{'encoding':_0x14b0d9(0x108)}),_0x24b09d=_0x5e3736;}catch{_0x981736=_0x480cda instanceof Error?_0x480cda:new Error(String(_0x480cda));}else _0x981736=_0x480cda instanceof Error?_0x480cda:new Error(String(_0x480cda));}if(_0x462970!==null){const _0x5c007d=_0x462970[_0x14b0d9(0x1a7)](/\r?\n/),_0x2df880=[];if(_0x6e82f[_0x14b0d9(0xe3)]==='*'||!Array['isArray'](_0x6e82f[_0x14b0d9(0xe3)]))for(let _0x294a53=0x1;_0x294a53<=_0x5c007d[_0x14b0d9(0x10c)];_0x294a53++){const _0x109e4e=_0x5c007d[_0x294a53-0x1];_0x2df880[_0x14b0d9(0xe4)](_0x294a53+'|\x20'+_0x109e4e);}else for(const [_0x596dc0,_0x309c0e]of _0x6e82f[_0x14b0d9(0xe3)]){_0x2df880[_0x14b0d9(0x10c)]>0x0&&_0x2df880[_0x14b0d9(0xe4)]('');for(let _0x13d5f2=_0x596dc0;_0x13d5f2<=_0x309c0e&&_0x13d5f2<=_0x5c007d[_0x14b0d9(0x10c)];_0x13d5f2++){const _0xd5aa1a=_0x5c007d[_0x13d5f2-0x1];_0x2df880[_0x14b0d9(0xe4)](_0x13d5f2+'|\x20'+_0xd5aa1a);}}_0x94cf32['push']({'path':_0x6e82f[_0x14b0d9(0x1a1)],'content':_0x2df880['join']('\x0a')});}else _0x1426f2[_0x14b0d9(0xe4)](_0x14b0d9(0x1fc)+_0x6e82f[_0x14b0d9(0x1a1)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x981736?.[_0x14b0d9(0x1a9)]||_0x14b0d9(0x1bb))+_0x14b0d9(0x140));}try{const _0x5603ea=await compactFileContexts(_0x94cf32,_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],MORPH_API_KEY,MORPH_API_URL);for(const _0x456eee of _0x5603ea){_0x1426f2[_0x14b0d9(0xe4)](_0x14b0d9(0x1fc)+_0x456eee[_0x14b0d9(0x1a1)]+_0x14b0d9(0x19d)+_0x456eee['content']+'\x0a</file>');}}catch(_0x268265){logger[_0x14b0d9(0x18e)]('MCP',_0x14b0d9(0x1e8),{'error':_0x268265 instanceof Error?_0x268265[_0x14b0d9(0x1a9)]:String(_0x268265),'files_count':_0x94cf32[_0x14b0d9(0x10c)]});for(const _0x26b00e of _0x94cf32){_0x1426f2[_0x14b0d9(0xe4)]('<file\x20path=\x22'+_0x26b00e[_0x14b0d9(0x1a1)]+_0x14b0d9(0x19d)+_0x26b00e[_0x14b0d9(0x193)]+_0x14b0d9(0x140));}}_0x1f2093[_0x14b0d9(0xe4)](_0x1426f2[_0x14b0d9(0x162)]('\x0a\x0a')),_0x2330a6=_0x1f2093[_0x14b0d9(0x162)]('\x0a');const _0x457d95=_0x5310c3[_0x14b0d9(0x10a)]?.['filter'](_0x165080=>_0x165080[_0x14b0d9(0x1a9)]?.[_0x14b0d9(0x1c2)]('File\x20read\x20error:'))||[];if(_0x457d95[_0x14b0d9(0x10c)]>0x0){const _0x4e5eaa=_0x457d95['map'](_0x310ce1=>_0x310ce1['message'])['join'](';\x20');reportMorphError({'error_message':_0x4e5eaa,'error_type':_0x14b0d9(0x18b),'context':{'tool':_0x14b0d9(0x1eb),'repo_path':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)],'query':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'model':'morph-warp-grep-v2.1','termination_reason':_0x14b0d9(0x100),'error_count':_0x457d95['length'],'is_timeout':![],'timings':_0x5310c3[_0x14b0d9(0x14f)],'files_attempted':_0x50f4f0[_0x14b0d9(0x1c5)](_0x1d70d3=>({'path':_0x1d70d3[_0x14b0d9(0x1a1)],'lines':_0x1d70d3['lines']})),'tool_calls':_0x300a94(_0x5310c3['messages']),'messages':_0x5310c3[_0x14b0d9(0x189)]?.[_0x14b0d9(0x1c5)](_0x57ad9f=>({'role':_0x57ad9f[_0x14b0d9(0x163)],'content':_0x57ad9f['content'],..._0x57ad9f[_0x14b0d9(0xeb)]?{'tool_calls':_0x57ad9f[_0x14b0d9(0xeb)][_0x14b0d9(0x10c)]}:{},..._0x57ad9f[_0x14b0d9(0xfa)]?{'tool_call_id':_0x57ad9f['tool_call_id']}:{}})),'request_content':{'query':_0x38c771['data'][_0x14b0d9(0x117)],'repo_path':_0x38c771[_0x14b0d9(0x12b)]['repo_path'],'repoRoot':a0_0x5748e1[_0x14b0d9(0x1d2)](_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)]),'model':_0x14b0d9(0x181)}},'source':_0x14b0d9(0xdb)})[_0x14b0d9(0x19c)](()=>{});}}else{if(_0x5310c3[_0x14b0d9(0x153)]==='terminated'&&_0x5310c3[_0x14b0d9(0x10a)]['length']>0x0){const _0x490a19=_0x5310c3[_0x14b0d9(0x10a)][_0x14b0d9(0x1c5)](_0x197686=>_0x197686[_0x14b0d9(0x1a9)])[_0x14b0d9(0x162)](';\x20');_0x2330a6=_0x14b0d9(0x114)+_0x490a19;const _0x4906eb=_0x490a19[_0x14b0d9(0x14a)]()[_0x14b0d9(0xe2)](_0x14b0d9(0x1d0))||_0x490a19[_0x14b0d9(0x14a)]()[_0x14b0d9(0xe2)]('timed\x20out')||_0x490a19[_0x14b0d9(0x14a)]()[_0x14b0d9(0xe2)](_0x14b0d9(0x1ad)),_0x9dc4de=_0x5310c3[_0x14b0d9(0x13e)]?.['metadata']?.[_0x14b0d9(0xfc)],_0x27a02d=_0x5310c3['errors'][0x0];reportMorphError({'error_message':_0x490a19,'error_type':_0x4906eb?'TimeoutError':_0x27a02d?.['constructor']?.[_0x14b0d9(0x188)]||_0x14b0d9(0x13b),'context':{'tool':'codebase_search','repo_path':_0x38c771[_0x14b0d9(0x12b)]['repo_path'],'query':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'model':_0x14b0d9(0x181),'termination_reason':_0x5310c3[_0x14b0d9(0x153)],'error_count':_0x5310c3[_0x14b0d9(0x10a)]['length'],'is_timeout':_0x4906eb,'timings':_0x5310c3[_0x14b0d9(0x14f)],'files_attempted':_0x9dc4de?.['map'](_0x561bfc=>({'path':_0x561bfc[_0x14b0d9(0x1a1)],'lines':_0x561bfc['lines']})),'tool_calls':_0x300a94(_0x5310c3[_0x14b0d9(0x189)]),'messages':_0x5310c3[_0x14b0d9(0x189)]?.[_0x14b0d9(0x1c5)](_0x3afb31=>({'role':_0x3afb31[_0x14b0d9(0x163)],'content':_0x3afb31[_0x14b0d9(0x193)],..._0x3afb31[_0x14b0d9(0xeb)]?{'tool_calls':_0x3afb31['tool_calls']['length']}:{},..._0x3afb31[_0x14b0d9(0xfa)]?{'tool_call_id':_0x3afb31[_0x14b0d9(0xfa)]}:{}})),'request_content':{'query':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'repo_path':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)],'repoRoot':a0_0x5748e1[_0x14b0d9(0x1d2)](_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x27a02d?.[_0x14b0d9(0x14c)]||undefined,'source':'mcp-filesystem'})[_0x14b0d9(0x19c)](()=>{});}else _0x2330a6='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0x14b0d9(0xd9),'text':_0x2330a6}]};}catch(_0x224734){const _0x3a9684=handleMorphAPIError(_0x224734);if(_0x3a9684)return logger[_0x14b0d9(0x172)](_0x14b0d9(0x177),_0x14b0d9(0x10d),{'tool':_0x14b0d9(0x1eb),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x14b0d9(0x200)]()-_0x341237}),_0x3a9684;const _0x5f1819=_0x224734 instanceof Error?_0x224734['message']:String(_0x224734);logger[_0x14b0d9(0x172)](_0x14b0d9(0x177),_0x14b0d9(0x10d),{'tool':_0x14b0d9(0x1eb),'error':_0x5f1819,'repo_path':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)],'query':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'latency_ms':Date[_0x14b0d9(0x200)]()-_0x341237});const _0x52323d=_0x5f1819[_0x14b0d9(0x14a)]()['includes'](_0x14b0d9(0x1d0))||_0x5f1819[_0x14b0d9(0x14a)]()[_0x14b0d9(0xe2)](_0x14b0d9(0xea))||_0x5f1819['toLowerCase']()[_0x14b0d9(0xe2)](_0x14b0d9(0x1ad))||_0x224734 instanceof Error&&_0x224734['name']===_0x14b0d9(0x12f);return reportMorphError({'error_message':_0x5f1819,'error_type':_0x52323d?_0x14b0d9(0x12f):_0x224734 instanceof Error?_0x224734[_0x14b0d9(0x11e)][_0x14b0d9(0x188)]:_0x14b0d9(0x156),'context':{'tool':'codebase_search','repo_path':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)],'query':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'model':_0x14b0d9(0x181),'is_timeout':_0x52323d,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'repo_path':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)],'repoRoot':a0_0x5748e1[_0x14b0d9(0x1d2)](_0x38c771[_0x14b0d9(0x12b)]['repo_path']),'model':_0x14b0d9(0x181)}},'stack_trace':_0x224734 instanceof Error?_0x224734[_0x14b0d9(0x14c)]:undefined,'source':_0x14b0d9(0xdb)})[_0x14b0d9(0x19c)](()=>{}),{'content':[{'type':_0x14b0d9(0xd9),'text':_0x14b0d9(0x1cf)+_0x5f1819}],'isError':![]};}}case TOOL_NAMES['GITHUB_CODEBASE_SEARCH']:{const _0x180938=WarpGrepGitHubArgsSchema[_0x14b0d9(0x147)](_0x1888ae);if(!_0x180938[_0x14b0d9(0x1dd)])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x180938[_0x14b0d9(0x172)]}],'isError':!![]};const _0x300827=_0x180938[_0x14b0d9(0x12b)][_0x14b0d9(0x11c)]||_0x180938['data']['owner_repo'];if(!_0x300827)return{'content':[{'type':_0x14b0d9(0xd9),'text':_0x14b0d9(0x1be)}],'isError':!![]};const _0x3d6d95=MORPH_API_KEY;if(!_0x3d6d95)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x4545a7=Date['now']();logger['debug'](_0x14b0d9(0x177),_0x14b0d9(0x191),{'identifier':_0x300827,'query':_0x180938[_0x14b0d9(0x12b)]['search_string'],'branch':_0x180938[_0x14b0d9(0x12b)]['branch']});try{const _0x3f8bf8=new WarpGrepClient({'morphApiKey':_0x3d6d95,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x132168=await _0x3f8bf8[_0x14b0d9(0x11f)]({'searchTerm':_0x180938[_0x14b0d9(0x12b)]['search_string'],'github':_0x300827,'branch':_0x180938[_0x14b0d9(0x12b)]['branch']}),_0x22ef68=Date['now']()-_0x4545a7;logMcpStderr(_0x14b0d9(0x1af)+_0x22ef68+_0x14b0d9(0x1e3)+_0x132168['success']);const _0x4c7546=formatResult(_0x132168);return{'content':[{'type':_0x14b0d9(0xd9),'text':_0x4c7546}]};}catch(_0x2c2960){const _0x3923af=handleMorphAPIError(_0x2c2960);if(_0x3923af)return _0x3923af;const _0x2cec4b=Date[_0x14b0d9(0x200)]()-_0x4545a7,_0x1eadb3=_0x2c2960 instanceof Error?_0x2c2960[_0x14b0d9(0x1a9)]:String(_0x2c2960);return logMcpStderr(_0x14b0d9(0x119)+_0x2cec4b+'ms:',_0x1eadb3),reportMorphError({'error_message':_0x1eadb3,'error_type':_0x2c2960 instanceof Error?_0x2c2960[_0x14b0d9(0x11e)][_0x14b0d9(0x188)]:'UnknownError','context':{'tool':_0x14b0d9(0x182),'github_url':_0x300827,'search_string':_0x180938[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'branch':_0x180938[_0x14b0d9(0x12b)][_0x14b0d9(0x1f7)]},'stack_trace':_0x2c2960 instanceof Error?_0x2c2960['stack']:undefined,'source':_0x14b0d9(0xdb),'tool':'github_codebase_search','latency_ms':_0x2cec4b})[_0x14b0d9(0x19c)](()=>{}),{'content':[{'type':_0x14b0d9(0xd9),'text':_0x14b0d9(0x19f)+_0x1eadb3}],'isError':![]};}}default:throw new Error(_0x14b0d9(0x17b)+_0x16603f);}}catch(_0x4d0735){const _0x16f040=_0x4d0735 instanceof Error?_0x4d0735[_0x14b0d9(0x1a9)]:String(_0x4d0735);return reportMorphError({'error_message':_0x16f040,'error_type':_0x4d0735 instanceof Error?_0x4d0735[_0x14b0d9(0x11e)][_0x14b0d9(0x188)]:_0x14b0d9(0x156),'context':{'tool':_0x16603f,'arguments':_0x1888ae?JSON[_0x14b0d9(0x1b4)](_0x1888ae)[_0x14b0d9(0x1a2)](0x0,0x1f4):undefined,'mcp_server_version':_0x14b0d9(0x17f)},'stack_trace':_0x4d0735 instanceof Error?_0x4d0735[_0x14b0d9(0x14c)]:undefined,'source':_0x14b0d9(0xdb)})[_0x14b0d9(0x19c)](()=>{}),{'content':[{'type':_0x14b0d9(0xd9),'text':'Error:\x20'+_0x16f040}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0xeff3ad){const _0x181a2c=a0_0x3e026d,_0x1f4997=await getValidRootDirectories(_0xeff3ad);if(_0x1f4997[_0x181a2c(0x10c)]>0x0)allowedDirectories=[..._0x1f4997],logMcpStderr(_0x181a2c(0x1b2)+_0x1f4997[_0x181a2c(0x10c)]+_0x181a2c(0x150));else{logMcpStderr(_0x181a2c(0x125));if(ENABLE_WORKSPACE_MODE)try{const _0x566d26=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x566d26&&(allowedDirectories=[_0x566d26],logMcpStderr(_0x181a2c(0x107)+_0x566d26));}catch(_0x5d1034){logMcpStderr(_0x181a2c(0x1b0)+_0x5d1034);}}}server[a0_0x3e026d(0x15e)](RootsListChangedNotificationSchema,async()=>{const _0x56a2a0=a0_0x3e026d;try{const _0x589af8=await server[_0x56a2a0(0x1c8)]();_0x589af8&&_0x56a2a0(0x136)in _0x589af8&&await updateAllowedDirectoriesFromRoots(_0x589af8[_0x56a2a0(0x136)]);}catch(_0x5731f1){logMcpStderr(_0x56a2a0(0x1c3),_0x5731f1 instanceof Error?_0x5731f1['message']:String(_0x5731f1));}}),server[a0_0x3e026d(0x110)]=async()=>{const _0x5a94e1=a0_0x3e026d,_0x5e14ca=server[_0x5a94e1(0x176)]();if(_0x5e14ca?.[_0x5a94e1(0x136)])try{const _0x3bc3d2=await server[_0x5a94e1(0x1c8)]();_0x3bc3d2&&_0x5a94e1(0x136)in _0x3bc3d2?await updateAllowedDirectoriesFromRoots(_0x3bc3d2[_0x5a94e1(0x136)]):logMcpStderr(_0x5a94e1(0x133));}catch(_0x4b023a){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x4b023a instanceof Error?_0x4b023a[_0x5a94e1(0x1a9)]:String(_0x4b023a));}else{if(allowedDirectories[_0x5a94e1(0x10c)]>0x0)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x5a94e1(0x116));else throw new Error(_0x5a94e1(0x18f));}}};async function runServer(){const _0x27e674=a0_0x3e026d,_0x172f32=new StdioServerTransport();await server['connect'](_0x172f32),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x27e674(0x10c)]===0x0&&logMcpStderr(_0x27e674(0x143));}runServer()['catch'](_0x24abdb=>{const _0x29e136=a0_0x3e026d;logMcpStderr(_0x29e136(0x15f),_0x24abdb),process['exit'](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
var a1_0x5928fc=a1_0x4191;(function(_0x84eb1a,_0x3c8eea){var _0x9fc241=a1_0x4191,_0x593ca6=_0x84eb1a();while(!![]){try{var _0xfa2048=-parseInt(_0x9fc241(0x8a))/0x1*(parseInt(_0x9fc241(0x88))/0x2)+parseInt(_0x9fc241(0x92))/0x3*(parseInt(_0x9fc241(0x95))/0x4)+parseInt(_0x9fc241(0x8d))/0x5+-parseInt(_0x9fc241(0x82))/0x6*(parseInt(_0x9fc241(0x80))/0x7)+-parseInt(_0x9fc241(0x89))/0x8+-parseInt(_0x9fc241(0x84))/0x9*(parseInt(_0x9fc241(0x94))/0xa)+-parseInt(_0x9fc241(0x90))/0xb*(-parseInt(_0x9fc241(0x93))/0xc);if(_0xfa2048===_0x3c8eea)break;else _0x593ca6['push'](_0x593ca6['shift']());}catch(_0x3a9ae0){_0x593ca6['push'](_0x593ca6['shift']());}}}(a1_0x3a4f,0x5d8a7));import a1_0x1df2d2 from'os';import{logger}from'./logger.js';export function getOperatingSystemType(_0x471439=a1_0x1df2d2[a1_0x5928fc(0x7f)]()){var _0x4bbd19=a1_0x5928fc;switch(_0x471439){case _0x4bbd19(0x87):return _0x4bbd19(0x8f);case _0x4bbd19(0x83):return _0x4bbd19(0x8b);case'linux':return'Linux';default:return _0x4bbd19(0x85);}}export function formatMcpLogMessage(_0x316196,_0x1fb19a=a1_0x1df2d2['platform']()){var _0xd48168=a1_0x5928fc;return _0xd48168(0x81)+getOperatingSystemType(_0x1fb19a)+']\x20'+_0x316196;}function a1_0x4191(_0x35f5ac,_0x5a4584){_0x35f5ac=_0x35f5ac-0x7f;var _0x3a4f0e=a1_0x3a4f();var _0x41911c=_0x3a4f0e[_0x35f5ac];return _0x41911c;}export function logMcpStderr(_0x3795a8,..._0x39f182){var _0x1bfeb2=a1_0x5928fc;console[_0x1bfeb2(0x8e)](formatMcpLogMessage(_0x3795a8),..._0x39f182),logger[_0x1bfeb2(0x91)](_0x1bfeb2(0x8c),_0x3795a8,_0x39f182['length']?{'args':_0x39f182[_0x1bfeb2(0x86)](_0x4ab90f=>String(_0x4ab90f))}:undefined);}function a1_0x3a4f(){var _0x3c46db=['1967084SZyyBX','[os=','12ewdDfo','win32','14031TYJwbz','Unknown','map','darwin','24350uuxEdg','5861448pBilsQ','51nbFbRa','Windows','MCP','1264665gCrRmE','error','macOS','55kGhXBi','info','389394ilbscV','4329960yxGIKl','1780VsxBuC','16qeazDY','platform'];a1_0x3a4f=function(){return _0x3c46db;};return a1_0x3a4f();}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a2_0x32d86a=a2_0x3233;function a2_0x3233(_0x43dc57,_0x1892d3){_0x43dc57=_0x43dc57-0x1ce;const _0x11880e=a2_0x1188();let _0x3233c8=_0x11880e[_0x43dc57];return _0x3233c8;}(function(_0x302dac,_0x5368a9){const _0xd93d85=a2_0x3233,_0x3d75a8=_0x302dac();while(!![]){try{const _0x2482bc=parseInt(_0xd93d85(0x1d0))/0x1*(parseInt(_0xd93d85(0x1cf))/0x2)+-parseInt(_0xd93d85(0x1da))/0x3+parseInt(_0xd93d85(0x1d2))/0x4*(-parseInt(_0xd93d85(0x1d9))/0x5)+parseInt(_0xd93d85(0x1d5))/0x6*(parseInt(_0xd93d85(0x1dd))/0x7)+-parseInt(_0xd93d85(0x1e7))/0x8*(-parseInt(_0xd93d85(0x1e4))/0x9)+parseInt(_0xd93d85(0x1e0))/0xa*(-parseInt(_0xd93d85(0x1e8))/0xb)+-parseInt(_0xd93d85(0x1ce))/0xc*(-parseInt(_0xd93d85(0x1e1))/0xd);if(_0x2482bc===_0x5368a9)break;else _0x3d75a8['push'](_0x3d75a8['shift']());}catch(_0x2cbdbb){_0x3d75a8['push'](_0x3d75a8['shift']());}}}(a2_0x1188,0x39222));import{createWriteStream}from'fs';class MorphLogger{[a2_0x32d86a(0x1d8)];[a2_0x32d86a(0x1e6)];constructor(){const _0x1265ee=a2_0x32d86a;this['enabled']=process[_0x1265ee(0x1d3)][_0x1265ee(0x1e5)]==='1'||!!process[_0x1265ee(0x1d3)]['MORPH_LOG_FILE'];const _0x3781f1=process[_0x1265ee(0x1d3)]['MORPH_LOG_FILE'];this[_0x1265ee(0x1e6)]=_0x3781f1?createWriteStream(_0x3781f1,{'flags':'a'}):null;}[a2_0x32d86a(0x1d6)](_0x5cee9c,_0x211675,_0x24a3d3){this['_log']('debug',_0x5cee9c,_0x211675,_0x24a3d3);}[a2_0x32d86a(0x1db)](_0x541290,_0x5a72d1,_0x472a3a){const _0x414c14=a2_0x32d86a;this[_0x414c14(0x1d7)]('info',_0x541290,_0x5a72d1,_0x472a3a);}[a2_0x32d86a(0x1df)](_0x5d3a5d,_0x16f3ec,_0x2806b9){const _0x18bd34=a2_0x32d86a;this[_0x18bd34(0x1d7)](_0x18bd34(0x1df),_0x5d3a5d,_0x16f3ec,_0x2806b9);}[a2_0x32d86a(0x1e2)](_0x38cbe6,_0x590c7e,_0x290208){const _0x36ac5d=a2_0x32d86a;this[_0x36ac5d(0x1d7)](_0x36ac5d(0x1e2),_0x38cbe6,_0x590c7e,_0x290208);}[a2_0x32d86a(0x1dc)](){const _0x14db03=a2_0x32d86a;this[_0x14db03(0x1d8)]=!![];}get['isEnabled'](){const _0x171419=a2_0x32d86a;return this[_0x171419(0x1d8)];}[a2_0x32d86a(0x1d7)](_0x2dd60e,_0x9ff246,_0x2aaa11,_0x34da7d){const _0x50a539=a2_0x32d86a;if(_0x2dd60e!==_0x50a539(0x1e2)&&!this[_0x50a539(0x1d8)])return;const _0x293cd6=new Date()[_0x50a539(0x1d4)](),_0x3de495='['+_0x293cd6+']\x20['+_0x2dd60e['toUpperCase']()+_0x50a539(0x1e3)+_0x9ff246+']';console[_0x50a539(0x1e2)](_0x34da7d?_0x3de495+'\x20'+_0x2aaa11+'\x20'+JSON[_0x50a539(0x1de)](_0x34da7d):_0x3de495+'\x20'+_0x2aaa11),this['fileStream']?.[_0x50a539(0x1d1)](JSON['stringify']({'ts':_0x293cd6,'level':_0x2dd60e,'component':_0x9ff246,'msg':_0x2aaa11,..._0x34da7d&&{'data':_0x34da7d}})+'\x0a');}}export const logger=new MorphLogger();function a2_0x1188(){const _0x27f7f2=[']\x20[','9sRXIcj','MORPH_DEBUG','fileStream','672936doIPzL','889284zzanVk','140484JuaupT','18OUUELY','31339YYdLkC','write','216OkOBFq','env','toISOString','166326kybCBq','debug','_log','enabled','26385EcpYoh','846015uvOknh','info','enable','77NbwyPn','stringify','warn','10iaMhnH','234nSKGQv','error'];a2_0x1188=function(){return _0x27f7f2;};return a2_0x1188();}
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x245080,_0x23ee0d){const _0x39d0a8=a3_0xe559,_0x4fc7c2=_0x245080();while(!![]){try{const _0x1ffd87=-parseInt(_0x39d0a8(0xdf))/0x1+-parseInt(_0x39d0a8(0xe0))/0x2*(parseInt(_0x39d0a8(0xd3))/0x3)+parseInt(_0x39d0a8(0xd7))/0x4+-parseInt(_0x39d0a8(0xd6))/0x5*(-parseInt(_0x39d0a8(0xcf))/0x6)+-parseInt(_0x39d0a8(0xd2))/0x7*(parseInt(_0x39d0a8(0xd1))/0x8)+parseInt(_0x39d0a8(0xdd))/0x9+parseInt(_0x39d0a8(0xda))/0xa;if(_0x1ffd87===_0x23ee0d)break;else _0x4fc7c2['push'](_0x4fc7c2['shift']());}catch(_0x220200){_0x4fc7c2['push'](_0x4fc7c2['shift']());}}}(a3_0x21be,0x3475b));import a3_0x44e071 from'path';import a3_0x406ec4 from'os';export function convertToWindowsPath(_0xd29d5){const _0xc1ac82=a3_0xe559;if(_0xd29d5[_0xc1ac82(0xe1)](_0xc1ac82(0xd0))){const _0xcc8399=_0xd29d5[_0xc1ac82(0xd4)](0x5)[_0xc1ac82(0xde)](),_0x280eca=_0xd29d5['slice'](0x6)[_0xc1ac82(0xd8)](/\//g,'\x5c');return _0xcc8399+':'+_0x280eca;}if(_0xd29d5[_0xc1ac82(0xcd)](/^\/[a-zA-Z]\//)){const _0x44c09e=_0xd29d5[_0xc1ac82(0xd4)](0x1)[_0xc1ac82(0xde)](),_0x5a7fc0=_0xd29d5[_0xc1ac82(0xd5)](0x2)['replace'](/\//g,'\x5c');return _0x44c09e+':'+_0x5a7fc0;}if(_0xd29d5[_0xc1ac82(0xcd)](/^[a-zA-Z]:/))return _0xd29d5['replace'](/\//g,'\x5c');return _0xd29d5;}function a3_0xe559(_0x10f03b,_0xd2cd95){_0x10f03b=_0x10f03b-0xcd;const _0x21be9c=a3_0x21be();let _0xe559b=_0x21be9c[_0x10f03b];return _0xe559b;}export function normalizePath(_0x1e0948){const _0x5efdff=a3_0xe559;_0x1e0948=_0x1e0948[_0x5efdff(0xce)]()[_0x5efdff(0xd8)](/^["']|["']$/g,'');const _0xfe3333=_0x1e0948[_0x5efdff(0xe1)]('/')&&!_0x1e0948[_0x5efdff(0xcd)](/^\/mnt\/[a-z]\//i)&&!_0x1e0948[_0x5efdff(0xcd)](/^\/[a-zA-Z]\//);if(_0xfe3333)return _0x1e0948[_0x5efdff(0xd8)](/\/+/g,'/')['replace'](/\/+$/,'');_0x1e0948=convertToWindowsPath(_0x1e0948);if(_0x1e0948[_0x5efdff(0xe1)]('\x5c\x5c')){let _0x46d7a8=_0x1e0948;_0x46d7a8=_0x46d7a8[_0x5efdff(0xd8)](/^\\{2,}/,'\x5c\x5c');const _0xa9a150=_0x46d7a8['substring'](0x2)[_0x5efdff(0xd8)](/\\\\/g,'\x5c');_0x1e0948='\x5c\x5c'+_0xa9a150;}else _0x1e0948=_0x1e0948[_0x5efdff(0xd8)](/\\\\/g,'\x5c');let _0x5e22f9=a3_0x44e071[_0x5efdff(0xdb)](_0x1e0948);_0x1e0948[_0x5efdff(0xe1)]('\x5c\x5c')&&!_0x5e22f9[_0x5efdff(0xe1)]('\x5c\x5c')&&(_0x5e22f9='\x5c'+_0x5e22f9);if(_0x5e22f9[_0x5efdff(0xcd)](/^[a-zA-Z]:/)){let _0x400ca5=_0x5e22f9[_0x5efdff(0xd8)](/\//g,'\x5c');return/^[a-z]:/['test'](_0x400ca5)&&(_0x400ca5=_0x400ca5[_0x5efdff(0xd4)](0x0)[_0x5efdff(0xde)]()+_0x400ca5[_0x5efdff(0xd5)](0x1)),_0x400ca5;}return _0x5e22f9[_0x5efdff(0xd8)](/\//g,'\x5c');}function a3_0x21be(){const _0x19794b=['/mnt/','1407048LEmDTl','14vksIgE','75UNziGq','charAt','slice','365amPtLb','263032FTATKX','replace','join','4288630hkqiaT','normalize','homedir','3717711otrKAo','toUpperCase','76100jkBqTi','27294EvRDjp','startsWith','match','trim','6264NIKITk'];a3_0x21be=function(){return _0x19794b;};return a3_0x21be();}export function expandHome(_0x1e94a0){const _0x3261ab=a3_0xe559;if(_0x1e94a0[_0x3261ab(0xe1)]('~/')||_0x1e94a0==='~')return a3_0x44e071[_0x3261ab(0xd9)](a3_0x406ec4[_0x3261ab(0xdc)](),_0x1e94a0['slice'](0x1));return _0x1e94a0;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a4_0x3a06(_0x245e0d,_0x2b8931){_0x245e0d=_0x245e0d-0x9a;const _0x1d07ac=a4_0x1d07();let _0x3a066d=_0x1d07ac[_0x245e0d];return _0x3a066d;}function a4_0x1d07(){const _0x511f0b=['sep','72fLSaCh','resolve','25Hxzedn','some','normalize','3524889tKNcUj','isAbsolute','includes','23352714szoYkg','1165464dWspQM','10XkRfeo','1095672UimZVX','startsWith','string','7402nMqzQH','1481585wokbfE','77UkLcrm','232371JbYIxC'];a4_0x1d07=function(){return _0x511f0b;};return a4_0x1d07();}(function(_0x76e786,_0x1e6fb1){const _0x4c48fa=a4_0x3a06,_0x320354=_0x76e786();while(!![]){try{const _0xcc55de=-parseInt(_0x4c48fa(0xaa))/0x1*(-parseInt(_0x4c48fa(0xa8))/0x2)+parseInt(_0x4c48fa(0x9f))/0x3+parseInt(_0x4c48fa(0xa5))/0x4+parseInt(_0x4c48fa(0x9c))/0x5*(-parseInt(_0x4c48fa(0xa3))/0x6)+parseInt(_0x4c48fa(0xa9))/0x7*(-parseInt(_0x4c48fa(0x9a))/0x8)+-parseInt(_0x4c48fa(0xab))/0x9*(parseInt(_0x4c48fa(0xa4))/0xa)+parseInt(_0x4c48fa(0xa2))/0xb;if(_0xcc55de===_0x1e6fb1)break;else _0x320354['push'](_0x320354['shift']());}catch(_0x51a32d){_0x320354['push'](_0x320354['shift']());}}}(a4_0x1d07,0xe9212));import a4_0x50e958 from'path';export function isPathWithinAllowedDirectories(_0x11230a,_0x598591){const _0x1daa9f=a4_0x3a06;if(typeof _0x11230a!==_0x1daa9f(0xa7)||!Array['isArray'](_0x598591))return![];if(!_0x11230a||_0x598591['length']===0x0)return![];if(_0x11230a[_0x1daa9f(0xa1)]('\x00'))return![];let _0xa1143;try{_0xa1143=a4_0x50e958['resolve'](a4_0x50e958[_0x1daa9f(0x9e)](_0x11230a));}catch{return![];}if(!a4_0x50e958[_0x1daa9f(0xa0)](_0xa1143))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x598591[_0x1daa9f(0x9d)](_0x1496ff=>{const _0x571704=_0x1daa9f;if(typeof _0x1496ff!==_0x571704(0xa7)||!_0x1496ff)return![];if(_0x1496ff['includes']('\x00'))return![];let _0x278239;try{_0x278239=a4_0x50e958[_0x571704(0x9b)](a4_0x50e958['normalize'](_0x1496ff));}catch{return![];}if(!a4_0x50e958[_0x571704(0xa0)](_0x278239))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0xa1143===_0x278239)return!![];if(_0x278239===a4_0x50e958['sep'])return _0xa1143[_0x571704(0xa6)](a4_0x50e958[_0x571704(0xac)]);return _0xa1143[_0x571704(0xa6)](_0x278239+a4_0x50e958[_0x571704(0xac)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x8cbe4a,_0x4dcaad){const _0x4dc06c=a5_0x3393,_0x29f7ba=_0x8cbe4a();while(!![]){try{const _0x515b7f=-parseInt(_0x4dc06c(0x1a5))/0x1+parseInt(_0x4dc06c(0x196))/0x2*(-parseInt(_0x4dc06c(0x198))/0x3)+parseInt(_0x4dc06c(0x18c))/0x4*(parseInt(_0x4dc06c(0x194))/0x5)+parseInt(_0x4dc06c(0x18d))/0x6*(parseInt(_0x4dc06c(0x193))/0x7)+parseInt(_0x4dc06c(0x1a3))/0x8*(-parseInt(_0x4dc06c(0x18f))/0x9)+-parseInt(_0x4dc06c(0x19e))/0xa*(parseInt(_0x4dc06c(0x19f))/0xb)+parseInt(_0x4dc06c(0x1a4))/0xc*(parseInt(_0x4dc06c(0x18b))/0xd);if(_0x515b7f===_0x4dcaad)break;else _0x29f7ba['push'](_0x29f7ba['shift']());}catch(_0x6d1297){_0x29f7ba['push'](_0x29f7ba['shift']());}}}(a5_0x4705,0x86577));import{promises as a5_0x24b099}from'fs';function a5_0x4705(){const _0x27caaa=['28688PgVfnV','324192XRaGmh','468417TFbPBa','push','260NuWGzH','8940weOmAz','200418WVYnYA','Skipping\x20invalid\x20directory:\x20','819DgugpP','uri','invalid\x20path\x20or\x20inaccessible','slice','217kwhsre','2065niEiQX','stat','793874BkzWdD','message','3zATABr','isDirectory','resolve','startsWith','file://','Skipping\x20','3250mPUsQE','25619xutzUX','realpath','\x20due\x20to\x20error:\x20','homedir'];a5_0x4705=function(){return _0x27caaa;};return a5_0x4705();}import a5_0x6e1e22 from'path';import a5_0x58192c from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';function a5_0x3393(_0x1cb7ac,_0x8fbc16){_0x1cb7ac=_0x1cb7ac-0x18a;const _0x4705b2=a5_0x4705();let _0x339380=_0x4705b2[_0x1cb7ac];return _0x339380;}async function parseRootUri(_0x9dda97){const _0xf89cf9=a5_0x3393;try{const _0x1b0ba9=_0x9dda97[_0xf89cf9(0x19b)](_0xf89cf9(0x19c))?_0x9dda97[_0xf89cf9(0x192)](0x7):_0x9dda97,_0x4b9ad7=_0x1b0ba9[_0xf89cf9(0x19b)]('~/')||_0x1b0ba9==='~'?a5_0x6e1e22['join'](a5_0x58192c[_0xf89cf9(0x1a2)](),_0x1b0ba9[_0xf89cf9(0x192)](0x1)):_0x1b0ba9,_0x2c0c4f=a5_0x6e1e22[_0xf89cf9(0x19a)](_0x4b9ad7),_0x1a90c4=await a5_0x24b099[_0xf89cf9(0x1a0)](_0x2c0c4f);return normalizePath(_0x1a90c4);}catch{return null;}}function formatDirectoryError(_0x2e29f4,_0x13368f,_0x284c8b){const _0x25eb08=a5_0x3393;if(_0x284c8b)return _0x25eb08(0x19d)+_0x284c8b+':\x20'+_0x2e29f4;const _0x50aeca=_0x13368f instanceof Error?_0x13368f[_0x25eb08(0x197)]:String(_0x13368f);return _0x25eb08(0x18e)+_0x2e29f4+_0x25eb08(0x1a1)+_0x50aeca;}export async function getValidRootDirectories(_0x559295){const _0x5ce022=a5_0x3393,_0x5ebb83=[];for(const _0x3b5f24 of _0x559295){const _0x5c3507=await parseRootUri(_0x3b5f24[_0x5ce022(0x190)]);if(!_0x5c3507){logMcpStderr(formatDirectoryError(_0x3b5f24[_0x5ce022(0x190)],undefined,_0x5ce022(0x191)));continue;}try{const _0x483eb5=await a5_0x24b099[_0x5ce022(0x195)](_0x5c3507);_0x483eb5[_0x5ce022(0x199)]()?_0x5ebb83[_0x5ce022(0x18a)](_0x5c3507):logMcpStderr(formatDirectoryError(_0x5c3507,undefined,'non-directory\x20root'));}catch(_0x34cf2f){logMcpStderr(formatDirectoryError(_0x5c3507,_0x34cf2f));}}return _0x5ebb83;}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a6_0x22315d=a6_0x2e4f;(function(_0x4a0cf8,_0x12ec71){const _0x2bc1f0=a6_0x2e4f,_0x6c2eb=_0x4a0cf8();while(!![]){try{const _0xe94340=-parseInt(_0x2bc1f0(0x168))/0x1*(parseInt(_0x2bc1f0(0x169))/0x2)+parseInt(_0x2bc1f0(0x163))/0x3*(-parseInt(_0x2bc1f0(0x164))/0x4)+parseInt(_0x2bc1f0(0x15f))/0x5+parseInt(_0x2bc1f0(0x15e))/0x6*(-parseInt(_0x2bc1f0(0x162))/0x7)+-parseInt(_0x2bc1f0(0x16a))/0x8*(parseInt(_0x2bc1f0(0x160))/0x9)+parseInt(_0x2bc1f0(0x161))/0xa+parseInt(_0x2bc1f0(0x15d))/0xb;if(_0xe94340===_0x12ec71)break;else _0x6c2eb['push'](_0x6c2eb['shift']());}catch(_0x884b83){_0x6c2eb['push'](_0x6c2eb['shift']());}}}(a6_0x42d4,0xefb67));export const TOOL_NAMES={'EDIT_FILE':a6_0x22315d(0x15c),'CODEBASE_SEARCH':a6_0x22315d(0x165),'GITHUB_CODEBASE_SEARCH':a6_0x22315d(0x167)};export const ALL_TOOL_NAMES=Object[a6_0x22315d(0x166)](TOOL_NAMES);function a6_0x2e4f(_0x2ff1f4,_0x1fb46c){_0x2ff1f4=_0x2ff1f4-0x15c;const _0x42d442=a6_0x42d4();let _0x2e4f3c=_0x42d442[_0x2ff1f4];return _0x2e4f3c;}export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);function a6_0x42d4(){const _0x47201e=['github_codebase_search','35SMwMDx','108466xfLVRy','1504dcVuKV','edit_file','54039623nSNJSR','7685796HINlVd','764745gzVPOQ','22122WAyoUx','5242830PPsqqV','7JwhRNz','9LdlwbE','1289116AljAGt','codebase_search','values'];a6_0x42d4=function(){return _0x47201e;};return a6_0x42d4();}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.187",
|
|
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.177",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|