@morphllm/morphmcp 0.8.190 → 0.8.192

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 CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const a0_0x12ce28=a0_0x2320;(function(_0x192115,_0x14a32c){const _0x506328=a0_0x2320,_0x1ca457=_0x192115();while(!![]){try{const _0x3f5557=-parseInt(_0x506328(0x229))/0x1+-parseInt(_0x506328(0x291))/0x2+parseInt(_0x506328(0x282))/0x3*(-parseInt(_0x506328(0x28c))/0x4)+-parseInt(_0x506328(0x252))/0x5*(-parseInt(_0x506328(0x2a2))/0x6)+parseInt(_0x506328(0x2fc))/0x7+parseInt(_0x506328(0x225))/0x8*(parseInt(_0x506328(0x240))/0x9)+parseInt(_0x506328(0x2da))/0xa;if(_0x3f5557===_0x14a32c)break;else _0x1ca457['push'](_0x1ca457['shift']());}catch(_0x1f145e){_0x1ca457['push'](_0x1ca457['shift']());}}}(a0_0x3621,0x87b02));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_0x43bb89 from'fs/promises';import a0_0x4fab89 from'path';import a0_0x4f8c4b 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_0x5f2eee from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0xd4a12e){const _0x19645f=a0_0x2320,_0x30191f=_0xd4a12e[_0x19645f(0x26d)](a0_0x4fab89[_0x19645f(0x222)])[_0x19645f(0x223)](Boolean);if(_0x30191f['length']<0x2)return null;for(let _0x400f58=Math[_0x19645f(0x27e)](_0x30191f['length']/0x2);_0x400f58>=0x1;_0x400f58--){for(let _0xfab5=0x0;_0xfab5<=_0x30191f[_0x19645f(0x2f2)]-0x2*_0x400f58;_0xfab5++){const _0x1a7815=_0x30191f[_0x19645f(0x26f)](_0xfab5,_0xfab5+_0x400f58),_0x5eb250=_0x30191f[_0x19645f(0x26f)](_0xfab5+_0x400f58,_0xfab5+0x2*_0x400f58);if(_0x1a7815[_0x19645f(0x1f9)]((_0x3b8c85,_0xf6fbfd)=>_0x3b8c85===_0x5eb250[_0xf6fbfd])){const _0x1bea0a=[..._0x30191f[_0x19645f(0x26f)](0x0,_0xfab5),..._0x30191f[_0x19645f(0x26f)](_0xfab5+_0x400f58)];return a0_0x4fab89[_0x19645f(0x222)]+_0x1bea0a[_0x19645f(0x261)](a0_0x4fab89[_0x19645f(0x222)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x459c7e=a0_0x2320;try{const _0x3bcd36=require('../package.json');return _0x3bcd36[_0x459c7e(0x1f6)]??_0x459c7e(0x296);}catch(_0xb12797){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0xb12797),_0x459c7e(0x296);}}function printHelp(){const _0x3d0ffe=a0_0x2320;console[_0x3d0ffe(0x202)](_0x3d0ffe(0x2c3)+getPackageVersion()),console[_0x3d0ffe(0x202)](_0x3d0ffe(0x257)),console[_0x3d0ffe(0x202)](_0x3d0ffe(0x2a4)),console[_0x3d0ffe(0x202)](_0x3d0ffe(0x266)),console[_0x3d0ffe(0x202)](_0x3d0ffe(0x2f3)),console['log']('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x3d0ffe(0x202)]('\x0aExamples:'),console[_0x3d0ffe(0x202)](_0x3d0ffe(0x2d6)),console[_0x3d0ffe(0x202)](_0x3d0ffe(0x20d));}const cliArgs=process[a0_0x12ce28(0x292)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x12ce28(0x27b),'-v','-V']),HELP_FLAGS=new Set([a0_0x12ce28(0x231),'-h']);cliArgs[a0_0x12ce28(0x1fe)](_0x4e1bc3=>VERSION_FLAGS[a0_0x12ce28(0x2a6)](_0x4e1bc3))&&(console[a0_0x12ce28(0x202)](a0_0x12ce28(0x2c3)+getPackageVersion()),process[a0_0x12ce28(0x2d7)](0x0));cliArgs['some'](_0x6276d=>HELP_FLAGS['has'](_0x6276d))&&(printHelp(),process[a0_0x12ce28(0x2d7)](0x0));function getCliArg(_0x490ab5){const _0x5a6560=a0_0x12ce28;for(let _0x3bf26e=0x0;_0x3bf26e<cliArgs[_0x5a6560(0x2f2)];_0x3bf26e++){const _0x518d0f=cliArgs[_0x3bf26e];if(_0x518d0f[_0x5a6560(0x2ff)]('--'+_0x490ab5+'='))return _0x518d0f[_0x5a6560(0x26f)](('--'+_0x490ab5+'=')[_0x5a6560(0x2f2)]);if(_0x518d0f==='--'+_0x490ab5&&_0x3bf26e+0x1<cliArgs[_0x5a6560(0x2f2)])return cliArgs[_0x3bf26e+0x1];}return undefined;}const args=[];function a0_0x2320(_0x48b0c9,_0x5033cd){_0x48b0c9=_0x48b0c9-0x1df;const _0x362186=a0_0x3621();let _0x2320de=_0x362186[_0x48b0c9];return _0x2320de;}for(let i=0x0;i<cliArgs[a0_0x12ce28(0x2f2)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x12ce28(0x2a6)](arg)||HELP_FLAGS['has'](arg))continue;if(arg[a0_0x12ce28(0x2ff)](a0_0x12ce28(0x267)))continue;if(arg===a0_0x12ce28(0x1f1)){i++;continue;}args[a0_0x12ce28(0x309)](arg);}const WORKSPACE_ROOT=process['env']['WORKSPACE_ROOT']||process[a0_0x12ce28(0x241)]['PWD']||process[a0_0x12ce28(0x2be)](),ENABLE_WORKSPACE_MODE=process['env'][a0_0x12ce28(0x26e)]!==a0_0x12ce28(0x1e9),MORPH_API_KEY=getCliArg(a0_0x12ce28(0x2ad))??process[a0_0x12ce28(0x241)][a0_0x12ce28(0x235)],MORPH_API_URL=process[a0_0x12ce28(0x241)][a0_0x12ce28(0x2f0)],MORPH_LARGE_APPLY=process[a0_0x12ce28(0x241)][a0_0x12ce28(0x283)]!=='false',MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x12ce28(0x2b3)]?parseInt(process[a0_0x12ce28(0x241)][a0_0x12ce28(0x2b3)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process['env']['DISABLED_TOOLS']?new Set(process[a0_0x12ce28(0x241)][a0_0x12ce28(0x2d5)][a0_0x12ce28(0x26d)](',')[a0_0x12ce28(0x28d)](_0x4c9cd7=>_0x4c9cd7[a0_0x12ce28(0x2bf)]())[a0_0x12ce28(0x223)](_0x3cd132=>_0x3cd132['length']>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x12ce28(0x25b)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x12ce28(0x29d)](a0_0x12ce28(0x26c)+tool+a0_0x12ce28(0x2af)+[...KNOWN_TOOL_NAMES][a0_0x12ce28(0x261)](',\x20'));}console[a0_0x12ce28(0x29d)](a0_0x12ce28(0x278)+[...DISABLED_TOOLS][a0_0x12ce28(0x261)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x12ce28(0x2ff)](a0_0x12ce28(0x2e3))&&!MORPH_API_KEY['startsWith'](a0_0x12ce28(0x30a))&&logMcpStderr(a0_0x12ce28(0x305));async function reportMorphError(_0xc033fc){const _0x1e5847=a0_0x12ce28;try{await a0_0x5f2eee[_0x1e5847(0x2ea)]('https://morphllm.com/api/error-report',{..._0xc033fc,'timestamp':new Date()['toISOString'](),'source':_0xc033fc['source']||_0x1e5847(0x308),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0xc033fc[_0x1e5847(0x238)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x4fde36,_0x475628){const _0x745e6c=a0_0x12ce28;if(_0x4fde36&&typeof _0x4fde36===_0x745e6c(0x23c)&&_0x745e6c(0x2a9)in _0x4fde36)return _0x4fde36[_0x745e6c(0x2a9)];if(_0x4fde36&&typeof _0x4fde36===_0x745e6c(0x23c)&&_0x745e6c(0x1ef)in _0x4fde36)return _0x4fde36[_0x745e6c(0x1ef)]?.[_0x745e6c(0x2a9)];const _0x1cb16f=_0x475628['match'](/\b(401|429)\b/);return _0x1cb16f?parseInt(_0x1cb16f[0x1],0xa):null;}function handleMorphAPIError(_0x4a4246){const _0x2b9089=a0_0x12ce28,_0x3875f9=_0x4a4246 instanceof Error?_0x4a4246['message']:String(_0x4a4246),_0x25d8d6=extractStatusCode(_0x4a4246,_0x3875f9);switch(_0x25d8d6){case 0x191:return{'content':[{'type':_0x2b9089(0x2f8),'text':_0x2b9089(0x2ca)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x2b9089(0x2f8),'text':_0x2b9089(0x2e8)}],'isError':!![]};default:return null;}}args[a0_0x12ce28(0x2f2)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x12ce28(0x2ee)),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_0x12ce28(0x22d)),logMcpStderr(a0_0x12ce28(0x27c)));function normalizePath(_0x3b788e){const _0x339d9d=a0_0x12ce28;return a0_0x4fab89[_0x339d9d(0x1e0)](_0x3b788e);}function expandHome(_0x43f4ad){const _0x10891e=a0_0x12ce28;if(_0x43f4ad['startsWith']('~/')||_0x43f4ad==='~')return a0_0x4fab89[_0x10891e(0x261)](a0_0x4f8c4b['homedir'](),_0x43f4ad[_0x10891e(0x26f)](0x1));return _0x43f4ad;}let allowedDirectories=await Promise[a0_0x12ce28(0x304)](args['map'](async _0x38ef2d=>{const _0x5047e9=a0_0x12ce28,_0x1ec34e=expandHome(_0x38ef2d),_0x39a373=a0_0x4fab89[_0x5047e9(0x2d3)](_0x1ec34e);try{const _0x570d6f=await a0_0x43bb89['realpath'](_0x39a373);return normalizePath(_0x570d6f);}catch(_0x11513c){return normalizePath(_0x39a373);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x12ce28(0x2f2)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),logMcpStderr(a0_0x12ce28(0x25f)+workspaceDir+a0_0x12ce28(0x2c9)));}catch(a0_0x1e7fa5){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x1e7fa5);}async function detectWorkspaceRoot(_0x51d87e){const _0x48f3c7=a0_0x12ce28;let _0x2a3511=a0_0x4fab89[_0x48f3c7(0x2d3)](_0x51d87e);const _0x50b60a=[_0x48f3c7(0x216),'.vscode',_0x48f3c7(0x1f7),'Cargo.toml',_0x48f3c7(0x1e3),'go.mod',_0x48f3c7(0x236),_0x48f3c7(0x2c0),_0x48f3c7(0x2fa)];while(_0x2a3511!==a0_0x4fab89[_0x48f3c7(0x288)](_0x2a3511)){for(const _0x27eafb of _0x50b60a){const _0x19e94a=a0_0x4fab89[_0x48f3c7(0x261)](_0x2a3511,_0x27eafb);try{return await a0_0x43bb89['access'](_0x19e94a),normalizePath(_0x2a3511);}catch{}}_0x2a3511=a0_0x4fab89[_0x48f3c7(0x288)](_0x2a3511);}return normalizePath(_0x51d87e);}function a0_0x3621(){const _0x40cd60=['provider_created','Workspace\x20mode\x20enabled:\x20Using\x20','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.','join','added\x20','PathError','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','--api-key=','path_validation_failed','search_string','metadata','constructor','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','split','ENABLE_WORKSPACE_MODE','slice','0.2.0','timed\x20out','name','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','completed','inputSchema','tool_call_complete','Disabled\x20tools:\x20','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','warn','--version','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','.\x20Path:\x20','floor','-\x20Grepped\x20\x27','codebase_search','path_validation_resolved','3oeapRp','MORPH_LARGE_APPLY','-\x20Glob\x20search\x20`','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','changes','morph-warp-grep-v2.1','dirname','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','[github_codebase_search]\x20Done\x20in\x20','EDIT_FILE','2022368XwqYiG','map','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.','\x22>\x0a','FileNotFound','2027636lepPQT','argv','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','isArray','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','unknown','now','grep','terminationReason','searchGitHub','realpath',',\x20modified\x20','error','stat','\x20(new\x20file)','Error:\x20','grep_search','348GffepM','morph-mcp','\x0aOptions:','pattern','has','params','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','status','ReadError','array','morph-v3-fast','api-key','repo_path','\x22.\x20Known\x20tools:\x20','SubToolError','unknown\x20error','Tool\x20','MORPH_WARP_GREP_TIMEOUT','Parameters:\x0a','payload','Example\x20format:\x0a','description','tool','BinaryFile','messages','branch','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','\x20disabled\x20via\x20DISABLED_TOOLS','cwd','trim','tsconfig.json','list_directory','file_read_failed','@morphllm/morphmcp\x20','assistant','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','includes','morph-v3-large','warp_grep_complete','\x20as\x20allowed\x20directory','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.','linesAdded','SymlinkError','Created\x20File','Unknown\x20error','target_file','node_modules','getClientCapabilities','\x20chars)','resolve','basename','DISABLED_TOOLS','\x20\x20morph-mcp','exit','path','etimedout','18263900wPptnl','Relevant\x20context\x20found:','terminated','github_codebase_search','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','function','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','File\x20read\x20error:','enum','sk-','\x0a...\x20(truncated,\x20total:\x20','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','Specific\x20commit\x20hash\x20to\x20search','parse','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','match','post','default','\x27\x20in\x20`','Fatal\x20error\x20running\x20server:','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','<file\x20path=\x22','MORPH_API_URL','files','length','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','min','message','api_request_start','-\x20Listed\x20directory\x20`','text','Parent\x20directory\x20does\x20not\x20exist:\x20','composer.json','TimeoutError','3086496BIGRwU','Here\x20is\x20the\x20content\x20of\x20files:\x0a','Applied','startsWith','RipgrepNotAvailable','turns','catch','readFile','all','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','API\x20error\x20(auth/rate-limit)','mcp-filesystem','push','morph-','ms:','connect','stringify','normalize','isDirectory','Invalid\x20arguments:\x20','pyproject.toml','❌\x20Morph\x20Edit\x20Failed:\x20','dryRun','errors','success','content','false','roots','code','ToolException','github_search_start','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','response','read\x20','--api-key','linesRemoved','instruction','.\x20Changes:\x20','tool_call_error','version','package.json','setRequestHandler','every','timings','optional','linesModified','glob','some','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.','-\x20Read\x20file\x20`','CODEBASE_SEARCH','log','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','MCP','finish','Rules:\x0a','Failed\x20to\x20read\x20file:\x20','user','string','LocalRipgrepProvider','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','role','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','toLowerCase','listRoots','warp_grep_start','edit_file','number','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','WarpGrep\x20sub-tool\x20errors:\x20','\x20error(s)','.git','Failed\x20to\x20request\x20roots\x20from\x20client:','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','instructions','github_url','\x20valid\x20directories','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Error\x20accessing\x20directory\x20','tool_call_id','owner_repo','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','sep','filter','debug','16inuXgo','\x20-\x20','search_type','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','503332Ykmann','UnknownError','timeout','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','path_validation_start','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','data','--help','Tool\x20\x22','utf-8','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','MORPH_API_KEY','.cursor','grep\x20\x27','context','Warning:\x20','safeParse','Repository\x20identifier','object','new_string','Error\x20running\x20fast\x20context\x20search:\x20','read','806373fBwPoW','env','compaction_failed','substring','[github_codebase_search]\x20Failed\x20in\x20','Unknown\x20tool:\x20','code_edit','Warning:\x20Workspace\x20fallback\x20failed:\x20','\x0a</file>','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','setNotificationHandler','filePath','GITHUB_CODEBASE_SEARCH','describe','lines','arguments','file_path','tool_calls','11380MggUUA','tool_call_received','list_directory\x20','command','requiresApiKey','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','[could\x20not\x20read\x20file:\x20','stack','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','size','ms.\x20Success:\x20','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a'];a0_0x3621=function(){return _0x40cd60;};return a0_0x3621();}await Promise['all'](args[a0_0x12ce28(0x28d)](async _0x47bbe4=>{const _0x56da67=a0_0x12ce28;try{const _0x1866eb=await a0_0x43bb89[_0x56da67(0x29e)](expandHome(_0x47bbe4));!_0x1866eb[_0x56da67(0x1e1)]()&&(logMcpStderr(_0x56da67(0x2a0)+_0x47bbe4+'\x20is\x20not\x20a\x20directory'),process['exit'](0x1));}catch(_0xd3184e){logMcpStderr(_0x56da67(0x21e)+_0x47bbe4+':',_0xd3184e),process[_0x56da67(0x2d7)](0x1);}}));async function validatePath(_0x5ba80a){const _0x4b656d=a0_0x12ce28,_0x50254c=expandHome(_0x5ba80a),_0x4c2a3d=a0_0x4fab89[_0x4b656d(0x2d3)](_0x50254c);logger[_0x4b656d(0x224)](_0x4b656d(0x204),_0x4b656d(0x22e),{'raw_path':_0x5ba80a,'absolute':_0x4c2a3d});try{const _0xe70bc0=await a0_0x43bb89['realpath'](_0x4c2a3d);return logger[_0x4b656d(0x224)]('MCP',_0x4b656d(0x281),{'resolved':_0xe70bc0,'symlink':_0xe70bc0!==_0x4c2a3d}),_0xe70bc0;}catch(_0x2fdb8e){if(_0x2fdb8e[_0x4b656d(0x1eb)]==='ENOENT'){const _0x1f6819=a0_0x4fab89['dirname'](_0x4c2a3d);try{const _0x5b1581=await a0_0x43bb89[_0x4b656d(0x29b)](_0x1f6819),_0x161968=a0_0x4fab89[_0x4b656d(0x261)](_0x5b1581,a0_0x4fab89['basename'](_0x4c2a3d));return logger[_0x4b656d(0x224)]('MCP',_0x4b656d(0x281),{'resolved':_0x161968,'new_file':!![]}),_0x161968;}catch{logger['error'](_0x4b656d(0x204),'path_validation_failed',{'raw_path':_0x5ba80a,'error':_0x4b656d(0x2f9)+_0x1f6819});throw new Error(_0x4b656d(0x2f9)+_0x1f6819);}}logger[_0x4b656d(0x29d)](_0x4b656d(0x204),_0x4b656d(0x268),{'raw_path':_0x5ba80a,'error':_0x2fdb8e['message']});throw _0x2fdb8e;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x12ce28(0x209)](),'code_edit':z[a0_0x12ce28(0x209)]()[a0_0x12ce28(0x24d)](a0_0x12ce28(0x273)),'instruction':z[a0_0x12ce28(0x209)]()['describe'](a0_0x12ce28(0x218)),'dryRun':z['boolean']()[a0_0x12ce28(0x2eb)](![])[a0_0x12ce28(0x24d)]('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x12ce28(0x2e5),WarpGrepArgsSchema=z[a0_0x12ce28(0x23c)]({'search_string':z[a0_0x12ce28(0x209)]()[a0_0x12ce28(0x24d)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x12ce28(0x209)]()[a0_0x12ce28(0x24d)](a0_0x12ce28(0x289)),'search_type':z[a0_0x12ce28(0x2e2)](['default',a0_0x12ce28(0x2d0)])['optional']()[a0_0x12ce28(0x24d)](a0_0x12ce28(0x306))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x12ce28(0x209)]()[a0_0x12ce28(0x24d)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x12ce28(0x209)]()[a0_0x12ce28(0x1fb)]()[a0_0x12ce28(0x24d)](a0_0x12ce28(0x28e)),'owner_repo':z[a0_0x12ce28(0x209)]()[a0_0x12ce28(0x1fb)]()[a0_0x12ce28(0x24d)](a0_0x12ce28(0x22f)),'branch':z['string']()[a0_0x12ce28(0x1fb)]()[a0_0x12ce28(0x24d)](a0_0x12ce28(0x2e0))}),CodebaseSearchArgsSchema=z[a0_0x12ce28(0x23c)]({'query':z[a0_0x12ce28(0x209)]()[a0_0x12ce28(0x24d)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x12ce28(0x209)]()[a0_0x12ce28(0x24d)](a0_0x12ce28(0x23b)),'branch':z[a0_0x12ce28(0x209)]()['optional']()[a0_0x12ce28(0x24d)](a0_0x12ce28(0x234)),'commitHash':z[a0_0x12ce28(0x209)]()[a0_0x12ce28(0x1fb)]()[a0_0x12ce28(0x24d)](a0_0x12ce28(0x2e6)),'targetDirectories':z[a0_0x12ce28(0x2ab)](z[a0_0x12ce28(0x209)]())['default']([])[a0_0x12ce28(0x24d)](a0_0x12ce28(0x20b)),'limit':z[a0_0x12ce28(0x212)]()[a0_0x12ce28(0x1fb)]()[a0_0x12ce28(0x2eb)](0xa)[a0_0x12ce28(0x24d)]('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x12ce28(0x2a3),'version':'0.2.0'},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x45c707=a0_0x12ce28,_0xcdbc7e=[{'name':TOOL_NAMES[_0x45c707(0x28b)],'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'+_0x45c707(0x2b4)+'-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a'+_0x45c707(0x25d)+'-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a'+_0x45c707(0x295)+_0x45c707(0x2b6)+_0x45c707(0x285)+_0x45c707(0x206)+_0x45c707(0x265)+'-\x20Preserve\x20exact\x20indentation\x0a'+_0x45c707(0x25a)+_0x45c707(0x21d),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x45c707(0x201)],'description':'A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20'+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x45c707(0x2bc)+_0x45c707(0x274)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x15edfc=_0xcdbc7e[_0x45c707(0x223)](_0x4ea239=>{const _0x224420=_0x45c707;if(DISABLED_TOOLS['has'](_0x4ea239[_0x224420(0x272)]))return console[_0x224420(0x29d)](_0x224420(0x2b2)+_0x4ea239['name']+_0x224420(0x2bd)),![];if(_0x224420(0x256)in _0x4ea239&&_0x4ea239[_0x224420(0x256)]&&!MORPH_API_KEY)return logMcpStderr(_0x224420(0x239)+_0x4ea239[_0x224420(0x272)]+_0x224420(0x249)),![];return!![];});return{'tools':_0x15edfc['map'](_0x55790b=>({'name':_0x55790b[_0x45c707(0x272)],'description':_0x55790b[_0x45c707(0x2b7)],'inputSchema':_0x55790b[_0x45c707(0x276)]}))};}),server[a0_0x12ce28(0x1f8)](CallToolRequestSchema,async _0x15bb43=>{const _0x494e60=a0_0x12ce28,{name:_0x497adb,arguments:_0xc562d}=_0x15bb43[_0x494e60(0x2a7)],_0x11d39b=Date[_0x494e60(0x297)]();logger['debug']('MCP',_0x494e60(0x253),{'tool':_0x497adb,'args':_0x497adb===_0x494e60(0x211)?{'path':_0xc562d?.[_0x494e60(0x2d8)],'instruction':_0xc562d?.[_0x494e60(0x1f3)]||_0xc562d?.[_0x494e60(0x21a)],'dryRun':_0xc562d?.[_0x494e60(0x1e5)]}:_0xc562d});try{if(!MORPH_API_KEY)return{'content':[{'type':'text','text':_0x494e60(0x264)}],'isError':!![]};if(!MORPH_API_KEY[_0x494e60(0x2ff)](_0x494e60(0x2e3))&&!MORPH_API_KEY[_0x494e60(0x2ff)](_0x494e60(0x30a)))return{'content':[{'type':'text','text':_0x494e60(0x1ff)}],'isError':!![]};if(DISABLED_TOOLS[_0x494e60(0x2a6)](_0x497adb))return{'content':[{'type':_0x494e60(0x2f8),'text':_0x494e60(0x232)+_0x497adb+_0x494e60(0x279)}],'isError':![]};switch(_0x497adb){case TOOL_NAMES[_0x494e60(0x28b)]:{let _0x27ab1c=_0xc562d;if(_0x27ab1c&&typeof _0x27ab1c==='object'){if(!('path'in _0x27ab1c)){const _0x5a6a6a=_0x27ab1c[_0x494e60(0x2cf)]??_0x27ab1c[_0x494e60(0x24b)]??_0x27ab1c['target_filepath']??_0x27ab1c[_0x494e60(0x250)]??_0x27ab1c['file'];if(_0x5a6a6a)_0x27ab1c={..._0x27ab1c,'path':_0x5a6a6a};}'instructions'in _0x27ab1c&&!(_0x494e60(0x1f3)in _0x27ab1c)&&(_0x27ab1c={..._0x27ab1c,'instruction':_0x27ab1c['instructions']});if(!(_0x494e60(0x246)in _0x27ab1c)){const _0x46456c=_0x27ab1c['code']??_0x27ab1c[_0x494e60(0x23d)]??_0x27ab1c[_0x494e60(0x1e8)]??_0x27ab1c['edit'];if(_0x46456c)_0x27ab1c={..._0x27ab1c,'code_edit':_0x46456c};}}const _0x5dc80a=MorphEditFileArgsSchema[_0x494e60(0x23a)](_0x27ab1c);if(!_0x5dc80a[_0x494e60(0x1e7)])throw new Error(_0x494e60(0x219)+_0x5dc80a[_0x494e60(0x29d)]);const _0xfe7d43=await validatePath(_0x5dc80a['data']['path']);let _0x2ed306=null,_0x5c8765=!![],_0x2ea2be=null;try{_0x2ed306=await a0_0x43bb89[_0x494e60(0x303)](_0xfe7d43,_0x494e60(0x233)),logger[_0x494e60(0x224)](_0x494e60(0x204),'file_read_complete',{'path':_0xfe7d43,'size_bytes':_0x2ed306[_0x494e60(0x2f2)]});}catch(_0x149618){const _0x38290c=_0x149618['code'];_0x38290c==='ENOENT'?(_0x5c8765=![],_0x2ed306='',logger['debug'](_0x494e60(0x204),'file_read_complete',{'path':_0xfe7d43,'exists':![]})):(_0x2ea2be=_0x494e60(0x207)+(_0x38290c||'unknown')+_0x494e60(0x226)+(_0x149618 instanceof Error?_0x149618[_0x494e60(0x2f5)]:String(_0x149618)),logger[_0x494e60(0x29d)](_0x494e60(0x204),_0x494e60(0x2c2),{'path':_0xfe7d43,'error':_0x2ea2be}),logMcpStderr(_0x494e60(0x239)+_0x2ea2be));}let _0xf6090;try{const _0x2da2a7=MORPH_API_KEY;if(!_0x2da2a7)throw new Error(_0x494e60(0x2de));const _0x263d1b=a0_0x4fab89['dirname'](_0xfe7d43),_0x4e7bf8=a0_0x4fab89[_0x494e60(0x2d4)](_0xfe7d43);logger[_0x494e60(0x224)]('MCP',_0x494e60(0x2f6),{'model':_0x494e60(0x2ac),'path':_0x5dc80a[_0x494e60(0x230)][_0x494e60(0x2d8)],'instruction_len':_0x5dc80a[_0x494e60(0x230)][_0x494e60(0x1f3)][_0x494e60(0x2f2)],'code_edit_len':_0x5dc80a[_0x494e60(0x230)][_0x494e60(0x246)][_0x494e60(0x2f2)],'original_code_len':_0x2ed306?.[_0x494e60(0x2f2)]??0x0,'dry_run':_0x5dc80a[_0x494e60(0x230)][_0x494e60(0x1e5)]});const _0xcb9065=Date[_0x494e60(0x297)](),_0x4c4903=await executeEditFile({'target_filepath':_0x4e7bf8,'code_edit':_0x5dc80a[_0x494e60(0x230)][_0x494e60(0x246)],'instruction':_0x5dc80a[_0x494e60(0x230)][_0x494e60(0x1f3)]},{'morphApiKey':_0x2da2a7,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x263d1b,'autoWrite':!_0x5dc80a['data'][_0x494e60(0x1e5)],'generateUdiff':![],'debug':![]}),_0x51f38f=Date[_0x494e60(0x297)]()-_0xcb9065;_0xf6090=_0x4c4903['completionId'];if(!_0x4c4903[_0x494e60(0x1e7)])throw new Error(_0x4c4903[_0x494e60(0x29d)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x36c3c2=_0x4c4903[_0x494e60(0x286)],_0x3f30ed=_0x494e60(0x262)+_0x36c3c2[_0x494e60(0x2cb)]+',\x20removed\x20'+_0x36c3c2['linesRemoved']+_0x494e60(0x29c)+_0x36c3c2[_0x494e60(0x1fc)];logger[_0x494e60(0x224)](_0x494e60(0x204),_0x494e60(0x277),{'tool':_0x494e60(0x211),'success':!![],'latency_ms':Date[_0x494e60(0x297)]()-_0x11d39b,'edit_latency_ms':_0x51f38f,'changes':{'added':_0x36c3c2[_0x494e60(0x2cb)],'removed':_0x36c3c2[_0x494e60(0x1f2)],'modified':_0x36c3c2['linesModified']},'completion_id':_0xf6090});if(_0x5dc80a[_0x494e60(0x230)]['dryRun'])return{'content':[{'type':_0x494e60(0x2f8),'text':'Morph\x20Edit\x20Preview'+(_0x5c8765?'':_0x494e60(0x29f))+':\x20'+_0x5dc80a['data']['instruction']+_0x494e60(0x1f4)+_0x3f30ed+'.\x20Path:\x20'+_0x5dc80a[_0x494e60(0x230)]['path']+'.'}]};return{'content':[{'type':_0x494e60(0x2f8),'text':'Morph\x20Edit\x20'+(_0x5c8765?_0x494e60(0x2fe):_0x494e60(0x2cd))+':\x20'+_0x5dc80a[_0x494e60(0x230)][_0x494e60(0x1f3)]+_0x494e60(0x1f4)+_0x3f30ed+_0x494e60(0x27d)+_0x5dc80a[_0x494e60(0x230)][_0x494e60(0x2d8)]+'.'}]};}catch(_0x68f03c){const _0x1b73c9=handleMorphAPIError(_0x68f03c);if(_0x1b73c9)return logger[_0x494e60(0x29d)](_0x494e60(0x204),_0x494e60(0x1f5),{'tool':_0x494e60(0x211),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date['now']()-_0x11d39b}),_0x1b73c9;const _0x2052fd=_0x68f03c instanceof Error?_0x68f03c[_0x494e60(0x2f5)]:String(_0x68f03c);return logger[_0x494e60(0x29d)](_0x494e60(0x204),_0x494e60(0x1f5),{'tool':_0x494e60(0x211),'error':_0x2052fd,'path':_0x5dc80a[_0x494e60(0x230)]['path'],'validated_path':_0xfe7d43,'latency_ms':Date[_0x494e60(0x297)]()-_0x11d39b,'stack':_0x68f03c instanceof Error?_0x68f03c[_0x494e60(0x259)]:undefined}),reportMorphError({'error_message':_0x2052fd,'error_type':_0x68f03c instanceof Error?_0x68f03c[_0x494e60(0x26b)][_0x494e60(0x272)]:'UnknownError','context':{'tool':_0x494e60(0x211),'completion_id':_0xf6090,'file_path':_0x5dc80a[_0x494e60(0x230)][_0x494e60(0x2d8)],'validated_path':_0xfe7d43,'instruction':_0x5dc80a[_0x494e60(0x230)]['instruction'],'model':MORPH_LARGE_APPLY?_0x494e60(0x2c7):'morph-v3-fast','dry_run':_0x5dc80a['data'][_0x494e60(0x1e5)],'file_exists':_0x5c8765,'file_read_error':_0x2ea2be,'file_readable':_0x2ed306!==null,'request_content':{'path':_0x5dc80a[_0x494e60(0x230)][_0x494e60(0x2d8)],'code_edit':_0x5dc80a[_0x494e60(0x230)][_0x494e60(0x246)],'instruction':_0x5dc80a[_0x494e60(0x230)]['instruction'],'original_code':_0x2ed306!==null?_0x2ed306[_0x494e60(0x2f2)]>0xc350?_0x2ed306[_0x494e60(0x243)](0x0,0xc350)+_0x494e60(0x2e4)+_0x2ed306[_0x494e60(0x2f2)]+_0x494e60(0x2d2):_0x2ed306:_0x494e60(0x258)+(_0x2ea2be||_0x494e60(0x2b1))+']','original_code_length':_0x2ed306?.[_0x494e60(0x2f2)]??0x0,'model':MORPH_LARGE_APPLY?_0x494e60(0x2c7):_0x494e60(0x2ac),'dry_run':_0x5dc80a[_0x494e60(0x230)][_0x494e60(0x1e5)]}},'stack_trace':_0x68f03c instanceof Error?_0x68f03c[_0x494e60(0x259)]:undefined,'source':_0x494e60(0x308)})[_0x494e60(0x302)](()=>{}),{'content':[{'type':_0x494e60(0x2f8),'text':_0x494e60(0x1e4)+_0x2052fd}],'isError':!![]};}}case TOOL_NAMES['CODEBASE_SEARCH']:{const _0x5e5bc8=WarpGrepArgsSchema[_0x494e60(0x23a)](_0xc562d);if(!_0x5e5bc8['success'])return{'content':[{'type':_0x494e60(0x2f8),'text':_0x494e60(0x1e2)+_0x5e5bc8['error']}],'isError':!![]};const _0x26016f=_0x3b3670=>{const _0x4605de=_0x494e60,_0x423063=[];for(const _0x589c68 of _0x3b3670||[]){if(_0x589c68[_0x4605de(0x20c)]==='assistant'&&Array[_0x4605de(0x294)](_0x589c68[_0x4605de(0x251)]))for(const _0x3d9682 of _0x589c68['tool_calls']){try{const _0x2eaa3f=_0x3d9682['function']?.[_0x4605de(0x272)],_0x15077e=JSON['parse'](_0x3d9682[_0x4605de(0x2df)]?.[_0x4605de(0x24f)]||'{}');if(_0x2eaa3f===_0x4605de(0x2a1))_0x423063[_0x4605de(0x309)](_0x4605de(0x237)+_0x15077e['pattern']+'\x27\x20'+(_0x15077e[_0x4605de(0x2d8)]||'.'));else{if(_0x2eaa3f==='read')_0x423063[_0x4605de(0x309)](_0x4605de(0x1f0)+_0x15077e[_0x4605de(0x2d8)]);else{if(_0x2eaa3f===_0x4605de(0x2c1))_0x423063[_0x4605de(0x309)](_0x4605de(0x254)+(_0x15077e[_0x4605de(0x255)]||'.'));else{if(_0x2eaa3f==='glob')_0x423063['push']('glob\x20\x27'+_0x15077e['pattern']+'\x27\x20'+(_0x15077e[_0x4605de(0x2d8)]||'.'));else _0x2eaa3f===_0x4605de(0x205)&&_0x423063[_0x4605de(0x309)](_0x4605de(0x205));}}}}catch{}}}return _0x423063;},_0x5f437e=_0x3458a1=>{const _0x2860d9=_0x494e60,_0x36942b=[];if(!_0x3458a1||!Array[_0x2860d9(0x294)](_0x3458a1))return _0x36942b;const _0x187124=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x2860d9(0x290),'tool':_0x2860d9(0x23f)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x2860d9(0x263),'tool':_0x2860d9(0x23f)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x2860d9(0x2b9),'tool':_0x2860d9(0x23f)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':_0x2860d9(0x298)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x2860d9(0x300),'tool':_0x2860d9(0x298)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':_0x2860d9(0x23f)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x2860d9(0x23f)},{'pattern':/not a text file/,'error_type':_0x2860d9(0x2b9),'tool':_0x2860d9(0x23f)},{'pattern':/symbolic link/,'error_type':_0x2860d9(0x2cc),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x2860d9(0x2aa),'tool':_0x2860d9(0x23f)},{'pattern':/status="error"/,'error_type':_0x2860d9(0x1ec),'tool':_0x2860d9(0x296)}];let _0x5bd79d=0x0;for(const _0x29a71d of _0x3458a1){_0x29a71d[_0x2860d9(0x20c)]==='assistant'&&Array['isArray'](_0x29a71d[_0x2860d9(0x251)])&&_0x5bd79d++;const _0x5410b6=_0x29a71d[_0x2860d9(0x1e8)];if((_0x29a71d[_0x2860d9(0x20c)]===_0x2860d9(0x2b8)||_0x29a71d[_0x2860d9(0x20c)]===_0x2860d9(0x208))&&_0x5410b6&&typeof _0x5410b6==='string')for(const {pattern:_0x2f01cb,error_type:_0x4330f3,tool:_0x5d7778}of _0x187124){const _0x7cbc61=_0x5410b6[_0x2860d9(0x2e9)](new RegExp(_0x2f01cb['source'],'g'));if(_0x7cbc61)for(const _0x1a9e7e of _0x7cbc61){const _0x220616=_0x5410b6['indexOf'](_0x1a9e7e),_0x4614cd=_0x5410b6[_0x2860d9(0x243)](_0x220616,Math[_0x2860d9(0x2f4)](_0x220616+0xc8,_0x5410b6['length']));_0x36942b[_0x2860d9(0x309)]({'tool':_0x5d7778,'error_type':_0x4330f3,'error_message':_0x4614cd[_0x2860d9(0x26d)]('\x0a')[0x0],'turn':_0x5bd79d});}}}return _0x36942b;};try{const _0x1ec57e=a0_0x4fab89['resolve'](_0x5e5bc8[_0x494e60(0x230)][_0x494e60(0x2ae)]),_0x502f76=_0x5e5bc8[_0x494e60(0x230)][_0x494e60(0x227)],_0x34d7f7=_0x502f76==='node_modules'?{'allowNames':[_0x494e60(0x2d0)]}:undefined,_0x2e44d6=new LocalRipgrepProvider(_0x1ec57e,undefined,_0x34d7f7);logger[_0x494e60(0x224)](_0x494e60(0x204),_0x494e60(0x25e),{'type':_0x494e60(0x20a),'repo_root':_0x1ec57e,'search_type':_0x502f76||'default'}),logger['debug'](_0x494e60(0x204),_0x494e60(0x210),{'query':_0x5e5bc8['data'][_0x494e60(0x269)],'repo_root':_0x1ec57e,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x528384=Date[_0x494e60(0x297)](),_0x4a6f51=await runWarpGrep({'searchTerm':_0x5e5bc8['data']['search_string'],'repoRoot':_0x1ec57e,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x2e44d6,'search_type':_0x502f76}),_0x1fc873=Date[_0x494e60(0x297)]()-_0x528384,_0x1109f0=_0x4a6f51[_0x494e60(0x205)]?.[_0x494e60(0x26a)]?.[_0x494e60(0x2f1)]?.[_0x494e60(0x2f2)]??0x0;logger[_0x494e60(0x224)](_0x494e60(0x204),_0x494e60(0x2c8),{'termination':_0x4a6f51[_0x494e60(0x299)],'turns':_0x4a6f51[_0x494e60(0x1fa)]?.[_0x494e60(0x301)]??0x0,'files_found':_0x1109f0,'latency_ms':_0x1fc873});const _0xa0c222=_0x5f437e(_0x4a6f51[_0x494e60(0x2ba)]);_0xa0c222[_0x494e60(0x2f2)]>0x0&&reportMorphError({'error_message':_0x494e60(0x214)+_0xa0c222[_0x494e60(0x2f2)]+_0x494e60(0x215),'error_type':_0x494e60(0x2b0),'level':_0x494e60(0x27a),'tool':'codebase_search','context':{'repo_path':_0x5e5bc8[_0x494e60(0x230)]['repo_path'],'query':_0x5e5bc8[_0x494e60(0x230)][_0x494e60(0x269)],'model':_0x494e60(0x287),'termination_reason':_0x4a6f51[_0x494e60(0x299)],'sub_tool_errors':_0xa0c222,'timings':_0x4a6f51[_0x494e60(0x1fa)],'tool_calls':_0x26016f(_0x4a6f51[_0x494e60(0x2ba)]),'messages':_0x4a6f51['messages']?.[_0x494e60(0x28d)](_0x17c672=>({'role':_0x17c672['role'],'content':_0x17c672[_0x494e60(0x1e8)],..._0x17c672['tool_calls']?{'tool_calls':_0x17c672[_0x494e60(0x251)]['length']}:{},..._0x17c672['tool_call_id']?{'tool_call_id':_0x17c672[_0x494e60(0x21f)]}:{}}))},'source':_0x494e60(0x308)})[_0x494e60(0x302)](()=>{});let _0x55c496='';if(_0x4a6f51['terminationReason']===_0x494e60(0x275)&&_0x4a6f51[_0x494e60(0x205)]?.['metadata']?.['files']){const _0x1f34cc=_0x4a6f51[_0x494e60(0x205)][_0x494e60(0x26a)][_0x494e60(0x2f1)];if(_0x1f34cc[_0x494e60(0x2f2)]===0x0)return _0x55c496=_0x4a6f51[_0x494e60(0x205)][_0x494e60(0x2b5)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x494e60(0x2f8),'text':_0x55c496}]};const _0x4794d9=[],_0x474ab2=[_0x494e60(0x2a8)];for(const _0x4f7ca0 of _0x4a6f51[_0x494e60(0x2ba)]){if(_0x4f7ca0['role']===_0x494e60(0x2c4)&&Array[_0x494e60(0x294)](_0x4f7ca0['tool_calls']))for(const _0x275b66 of _0x4f7ca0['tool_calls']){try{const _0x534c70=_0x275b66['function']?.[_0x494e60(0x272)],_0x4d7433=JSON[_0x494e60(0x2e7)](_0x275b66['function']?.[_0x494e60(0x24f)]||'{}');if(_0x534c70===_0x494e60(0x2a1))_0x474ab2[_0x494e60(0x309)](_0x494e60(0x27f)+_0x4d7433[_0x494e60(0x2a5)]+_0x494e60(0x2ec)+(_0x4d7433[_0x494e60(0x2d8)]||'.')+'`');else{if(_0x534c70===_0x494e60(0x23f))_0x474ab2['push'](_0x494e60(0x200)+_0x4d7433[_0x494e60(0x2d8)]+'`');else{if(_0x534c70===_0x494e60(0x2c1))_0x474ab2[_0x494e60(0x309)](_0x494e60(0x2f7)+(_0x4d7433[_0x494e60(0x255)]||'.')+'`');else _0x534c70===_0x494e60(0x1fd)&&_0x474ab2[_0x494e60(0x309)](_0x494e60(0x284)+_0x4d7433[_0x494e60(0x2a5)]+'`\x20in\x20`'+(_0x4d7433[_0x494e60(0x2d8)]||'.')+'`');}}}catch{}}}_0x4794d9[_0x494e60(0x309)](_0x474ab2[_0x494e60(0x261)]('\x0a'));const _0xd4bb9c=['',_0x494e60(0x2db)];for(const _0x29e21b of _0x1f34cc){if(_0x29e21b[_0x494e60(0x24e)]==='*')_0xd4bb9c['push']('-\x20'+_0x29e21b[_0x494e60(0x2d8)]+':*');else{if(Array[_0x494e60(0x294)](_0x29e21b[_0x494e60(0x24e)])){const _0x33bbdb=_0x29e21b[_0x494e60(0x24e)]['map'](([_0x305239,_0x76ffb])=>{if(_0x305239===_0x76ffb)return''+_0x305239;return _0x305239+'-'+_0x76ffb;});_0xd4bb9c[_0x494e60(0x309)]('-\x20'+_0x29e21b['path']+':'+_0x33bbdb[_0x494e60(0x261)](','));}else _0xd4bb9c[_0x494e60(0x309)]('-\x20'+_0x29e21b[_0x494e60(0x2d8)]+':*');}}_0xd4bb9c[_0x494e60(0x309)](''),_0x4794d9[_0x494e60(0x309)](_0xd4bb9c[_0x494e60(0x261)]('\x0a')),_0x4794d9[_0x494e60(0x309)](_0x494e60(0x2fd));const _0x130ead=[],_0x3ae012=[];for(const _0x58d26c of _0x1f34cc){let _0x5517bd=a0_0x4fab89[_0x494e60(0x2d3)](_0x5e5bc8[_0x494e60(0x230)][_0x494e60(0x2ae)],_0x58d26c['path']),_0x44c8be=null,_0x2f7754=null;try{_0x44c8be=await a0_0x43bb89[_0x494e60(0x303)](_0x5517bd,{'encoding':_0x494e60(0x233)});}catch(_0x5ef4eb){const _0x222c1c=fixPathRepetition(_0x5517bd);if(_0x222c1c)try{_0x44c8be=await a0_0x43bb89['readFile'](_0x222c1c,{'encoding':_0x494e60(0x233)}),_0x5517bd=_0x222c1c;}catch{_0x2f7754=_0x5ef4eb instanceof Error?_0x5ef4eb:new Error(String(_0x5ef4eb));}else _0x2f7754=_0x5ef4eb instanceof Error?_0x5ef4eb:new Error(String(_0x5ef4eb));}if(_0x44c8be!==null){const _0x221749=_0x44c8be['split'](/\r?\n/),_0x3f45d2=[];if(_0x58d26c[_0x494e60(0x24e)]==='*'||!Array['isArray'](_0x58d26c[_0x494e60(0x24e)]))for(let _0x3e1a3e=0x1;_0x3e1a3e<=_0x221749[_0x494e60(0x2f2)];_0x3e1a3e++){const _0x200ea3=_0x221749[_0x3e1a3e-0x1];_0x3f45d2['push'](_0x3e1a3e+'|\x20'+_0x200ea3);}else for(const [_0x4c8eb4,_0x52f113]of _0x58d26c[_0x494e60(0x24e)]){_0x3f45d2[_0x494e60(0x2f2)]>0x0&&_0x3f45d2[_0x494e60(0x309)]('');for(let _0x385a20=_0x4c8eb4;_0x385a20<=_0x52f113&&_0x385a20<=_0x221749[_0x494e60(0x2f2)];_0x385a20++){const _0x336423=_0x221749[_0x385a20-0x1];_0x3f45d2[_0x494e60(0x309)](_0x385a20+'|\x20'+_0x336423);}}_0x3ae012['push']({'path':_0x58d26c[_0x494e60(0x2d8)],'content':_0x3f45d2[_0x494e60(0x261)]('\x0a')});}else _0x130ead[_0x494e60(0x309)](_0x494e60(0x2ef)+_0x58d26c[_0x494e60(0x2d8)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x2f7754?.[_0x494e60(0x2f5)]||_0x494e60(0x2ce))+_0x494e60(0x248));}try{const _0x4446b8=await compactFileContexts(_0x3ae012,_0x5e5bc8['data']['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x416b2e of _0x4446b8){_0x130ead[_0x494e60(0x309)](_0x494e60(0x2ef)+_0x416b2e[_0x494e60(0x2d8)]+'\x22>\x0a'+_0x416b2e[_0x494e60(0x1e8)]+_0x494e60(0x248));}}catch(_0x55c306){logger[_0x494e60(0x27a)](_0x494e60(0x204),_0x494e60(0x242),{'error':_0x55c306 instanceof Error?_0x55c306[_0x494e60(0x2f5)]:String(_0x55c306),'files_count':_0x3ae012[_0x494e60(0x2f2)]});for(const _0x326e1c of _0x3ae012){_0x130ead[_0x494e60(0x309)]('<file\x20path=\x22'+_0x326e1c[_0x494e60(0x2d8)]+_0x494e60(0x28f)+_0x326e1c[_0x494e60(0x1e8)]+_0x494e60(0x248));}}_0x4794d9['push'](_0x130ead['join']('\x0a\x0a')),_0x55c496=_0x4794d9[_0x494e60(0x261)]('\x0a');const _0x6590ee=_0x4a6f51['errors']?.['filter'](_0x38208c=>_0x38208c[_0x494e60(0x2f5)]?.[_0x494e60(0x2ff)](_0x494e60(0x2e1)))||[];if(_0x6590ee[_0x494e60(0x2f2)]>0x0){const _0x36e3b6=_0x6590ee['map'](_0x2884b3=>_0x2884b3[_0x494e60(0x2f5)])[_0x494e60(0x261)](';\x20');reportMorphError({'error_message':_0x36e3b6,'error_type':'FileReadError','context':{'tool':_0x494e60(0x280),'repo_path':_0x5e5bc8[_0x494e60(0x230)]['repo_path'],'query':_0x5e5bc8[_0x494e60(0x230)][_0x494e60(0x269)],'model':_0x494e60(0x287),'termination_reason':'completed_with_file_errors','error_count':_0x6590ee[_0x494e60(0x2f2)],'is_timeout':![],'timings':_0x4a6f51[_0x494e60(0x1fa)],'files_attempted':_0x1f34cc['map'](_0x1651b5=>({'path':_0x1651b5['path'],'lines':_0x1651b5[_0x494e60(0x24e)]})),'tool_calls':_0x26016f(_0x4a6f51[_0x494e60(0x2ba)]),'messages':_0x4a6f51['messages']?.[_0x494e60(0x28d)](_0x48bd6b=>({'role':_0x48bd6b[_0x494e60(0x20c)],'content':_0x48bd6b['content'],..._0x48bd6b[_0x494e60(0x251)]?{'tool_calls':_0x48bd6b[_0x494e60(0x251)][_0x494e60(0x2f2)]}:{},..._0x48bd6b[_0x494e60(0x21f)]?{'tool_call_id':_0x48bd6b[_0x494e60(0x21f)]}:{}})),'request_content':{'query':_0x5e5bc8[_0x494e60(0x230)][_0x494e60(0x269)],'repo_path':_0x5e5bc8['data'][_0x494e60(0x2ae)],'repoRoot':a0_0x4fab89[_0x494e60(0x2d3)](_0x5e5bc8[_0x494e60(0x230)][_0x494e60(0x2ae)]),'model':_0x494e60(0x287)}},'source':_0x494e60(0x308)})[_0x494e60(0x302)](()=>{});}}else{if(_0x4a6f51[_0x494e60(0x299)]===_0x494e60(0x2dc)&&_0x4a6f51[_0x494e60(0x1e6)]['length']>0x0){const _0x364789=_0x4a6f51['errors'][_0x494e60(0x28d)](_0x3ef920=>_0x3ef920[_0x494e60(0x2f5)])['join'](';\x20');_0x55c496=_0x494e60(0x2a0)+_0x364789;const _0x3cc3b2=_0x364789[_0x494e60(0x20e)]()[_0x494e60(0x2c6)](_0x494e60(0x22b))||_0x364789[_0x494e60(0x20e)]()[_0x494e60(0x2c6)](_0x494e60(0x271))||_0x364789[_0x494e60(0x20e)]()['includes'](_0x494e60(0x2d9)),_0x58a538=_0x4a6f51[_0x494e60(0x205)]?.[_0x494e60(0x26a)]?.[_0x494e60(0x2f1)],_0x3f6e1f=_0x4a6f51[_0x494e60(0x1e6)][0x0];reportMorphError({'error_message':_0x364789,'error_type':_0x3cc3b2?_0x494e60(0x2fb):_0x3f6e1f?.['constructor']?.[_0x494e60(0x272)]||'WarpGrepError','context':{'tool':_0x494e60(0x280),'repo_path':_0x5e5bc8[_0x494e60(0x230)][_0x494e60(0x2ae)],'query':_0x5e5bc8['data'][_0x494e60(0x269)],'model':_0x494e60(0x287),'termination_reason':_0x4a6f51[_0x494e60(0x299)],'error_count':_0x4a6f51[_0x494e60(0x1e6)][_0x494e60(0x2f2)],'is_timeout':_0x3cc3b2,'timings':_0x4a6f51[_0x494e60(0x1fa)],'files_attempted':_0x58a538?.[_0x494e60(0x28d)](_0xe69c9d=>({'path':_0xe69c9d[_0x494e60(0x2d8)],'lines':_0xe69c9d['lines']})),'tool_calls':_0x26016f(_0x4a6f51[_0x494e60(0x2ba)]),'messages':_0x4a6f51['messages']?.[_0x494e60(0x28d)](_0x6f0531=>({'role':_0x6f0531[_0x494e60(0x20c)],'content':_0x6f0531[_0x494e60(0x1e8)],..._0x6f0531[_0x494e60(0x251)]?{'tool_calls':_0x6f0531[_0x494e60(0x251)][_0x494e60(0x2f2)]}:{},..._0x6f0531[_0x494e60(0x21f)]?{'tool_call_id':_0x6f0531['tool_call_id']}:{}})),'request_content':{'query':_0x5e5bc8[_0x494e60(0x230)][_0x494e60(0x269)],'repo_path':_0x5e5bc8[_0x494e60(0x230)]['repo_path'],'repoRoot':a0_0x4fab89[_0x494e60(0x2d3)](_0x5e5bc8[_0x494e60(0x230)][_0x494e60(0x2ae)]),'model':_0x494e60(0x287)}},'stack_trace':_0x3f6e1f?.[_0x494e60(0x259)]||undefined,'source':'mcp-filesystem'})['catch'](()=>{});}else _0x55c496=_0x494e60(0x22c);}return{'content':[{'type':'text','text':_0x55c496}]};}catch(_0x4a06bc){const _0x34ba12=handleMorphAPIError(_0x4a06bc);if(_0x34ba12)return logger[_0x494e60(0x29d)](_0x494e60(0x204),_0x494e60(0x1f5),{'tool':_0x494e60(0x280),'error':_0x494e60(0x307),'latency_ms':Date[_0x494e60(0x297)]()-_0x11d39b}),_0x34ba12;const _0x28ed72=_0x4a06bc instanceof Error?_0x4a06bc[_0x494e60(0x2f5)]:String(_0x4a06bc);logger['error'](_0x494e60(0x204),'tool_call_error',{'tool':_0x494e60(0x280),'error':_0x28ed72,'repo_path':_0x5e5bc8[_0x494e60(0x230)][_0x494e60(0x2ae)],'query':_0x5e5bc8[_0x494e60(0x230)][_0x494e60(0x269)],'latency_ms':Date[_0x494e60(0x297)]()-_0x11d39b});const _0xb96254=_0x28ed72['toLowerCase']()[_0x494e60(0x2c6)](_0x494e60(0x22b))||_0x28ed72[_0x494e60(0x20e)]()[_0x494e60(0x2c6)](_0x494e60(0x271))||_0x28ed72['toLowerCase']()[_0x494e60(0x2c6)](_0x494e60(0x2d9))||_0x4a06bc instanceof Error&&_0x4a06bc[_0x494e60(0x272)]===_0x494e60(0x2fb);return reportMorphError({'error_message':_0x28ed72,'error_type':_0xb96254?_0x494e60(0x2fb):_0x4a06bc instanceof Error?_0x4a06bc[_0x494e60(0x26b)][_0x494e60(0x272)]:_0x494e60(0x22a),'context':{'tool':_0x494e60(0x280),'repo_path':_0x5e5bc8['data'][_0x494e60(0x2ae)],'query':_0x5e5bc8[_0x494e60(0x230)][_0x494e60(0x269)],'model':_0x494e60(0x287),'is_timeout':_0xb96254,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x5e5bc8[_0x494e60(0x230)][_0x494e60(0x269)],'repo_path':_0x5e5bc8['data'][_0x494e60(0x2ae)],'repoRoot':a0_0x4fab89['resolve'](_0x5e5bc8['data']['repo_path']),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x4a06bc instanceof Error?_0x4a06bc[_0x494e60(0x259)]:undefined,'source':_0x494e60(0x308)})[_0x494e60(0x302)](()=>{}),{'content':[{'type':'text','text':_0x494e60(0x23e)+_0x28ed72}],'isError':![]};}}case TOOL_NAMES[_0x494e60(0x24c)]:{const _0x201ff1=WarpGrepGitHubArgsSchema[_0x494e60(0x23a)](_0xc562d);if(!_0x201ff1[_0x494e60(0x1e7)])return{'content':[{'type':_0x494e60(0x2f8),'text':'Invalid\x20arguments:\x20'+_0x201ff1[_0x494e60(0x29d)]}],'isError':!![]};const _0x293303=_0x201ff1['data'][_0x494e60(0x21b)]||_0x201ff1['data'][_0x494e60(0x220)];if(!_0x293303)return{'content':[{'type':_0x494e60(0x2f8),'text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x4b7e77=MORPH_API_KEY;if(!_0x4b7e77)throw new Error(_0x494e60(0x2de));const _0x117e23=Date[_0x494e60(0x297)]();logger[_0x494e60(0x224)](_0x494e60(0x204),_0x494e60(0x1ed),{'identifier':_0x293303,'query':_0x201ff1['data'][_0x494e60(0x269)],'branch':_0x201ff1['data'][_0x494e60(0x2bb)]});try{const _0x597858=new WarpGrepClient({'morphApiKey':_0x4b7e77,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0xc1fbe7=await _0x597858[_0x494e60(0x29a)]({'searchTerm':_0x201ff1[_0x494e60(0x230)][_0x494e60(0x269)],'github':_0x293303,'branch':_0x201ff1['data'][_0x494e60(0x2bb)]}),_0x4a144b=Date[_0x494e60(0x297)]()-_0x117e23;logMcpStderr(_0x494e60(0x28a)+_0x4a144b+_0x494e60(0x25c)+_0xc1fbe7[_0x494e60(0x1e7)]);const _0x192ca9=formatResult(_0xc1fbe7);return{'content':[{'type':'text','text':_0x192ca9}]};}catch(_0x1123dc){const _0x55c2d9=handleMorphAPIError(_0x1123dc);if(_0x55c2d9)return _0x55c2d9;const _0x2d982b=Date[_0x494e60(0x297)]()-_0x117e23,_0x651113=_0x1123dc instanceof Error?_0x1123dc[_0x494e60(0x2f5)]:String(_0x1123dc);return logMcpStderr(_0x494e60(0x244)+_0x2d982b+_0x494e60(0x30b),_0x651113),reportMorphError({'error_message':_0x651113,'error_type':_0x1123dc instanceof Error?_0x1123dc[_0x494e60(0x26b)][_0x494e60(0x272)]:'UnknownError','context':{'tool':_0x494e60(0x2dd),'github_url':_0x293303,'search_string':_0x201ff1[_0x494e60(0x230)][_0x494e60(0x269)],'branch':_0x201ff1['data'][_0x494e60(0x2bb)]},'stack_trace':_0x1123dc instanceof Error?_0x1123dc[_0x494e60(0x259)]:undefined,'source':_0x494e60(0x308),'tool':_0x494e60(0x2dd),'latency_ms':_0x2d982b})[_0x494e60(0x302)](()=>{}),{'content':[{'type':_0x494e60(0x2f8),'text':'GitHub\x20search\x20failed:\x20'+_0x651113}],'isError':![]};}}default:throw new Error(_0x494e60(0x245)+_0x497adb);}}catch(_0x47ca97){const _0x5f09c1=_0x47ca97 instanceof Error?_0x47ca97[_0x494e60(0x2f5)]:String(_0x47ca97);return reportMorphError({'error_message':_0x5f09c1,'error_type':_0x47ca97 instanceof Error?_0x47ca97['constructor']['name']:_0x494e60(0x22a),'context':{'tool':_0x497adb,'arguments':_0xc562d?JSON[_0x494e60(0x1df)](_0xc562d)[_0x494e60(0x243)](0x0,0x1f4):undefined,'mcp_server_version':_0x494e60(0x270)},'stack_trace':_0x47ca97 instanceof Error?_0x47ca97[_0x494e60(0x259)]:undefined,'source':'mcp-filesystem'})[_0x494e60(0x302)](()=>{}),{'content':[{'type':'text','text':_0x494e60(0x2a0)+_0x5f09c1}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x5bed20){const _0x22d6bc=a0_0x12ce28,_0x476bb4=await getValidRootDirectories(_0x5bed20);if(_0x476bb4[_0x22d6bc(0x2f2)]>0x0)allowedDirectories=[..._0x476bb4],logMcpStderr(_0x22d6bc(0x2c5)+_0x476bb4[_0x22d6bc(0x2f2)]+_0x22d6bc(0x21c));else{logMcpStderr(_0x22d6bc(0x213));if(ENABLE_WORKSPACE_MODE)try{const _0x2773b2=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x2773b2&&(allowedDirectories=[_0x2773b2],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x2773b2));}catch(_0x29245d){logMcpStderr(_0x22d6bc(0x247)+_0x29245d);}}}server[a0_0x12ce28(0x24a)](RootsListChangedNotificationSchema,async()=>{const _0x44a5ca=a0_0x12ce28;try{const _0x2f6a94=await server[_0x44a5ca(0x20f)]();_0x2f6a94&&_0x44a5ca(0x1ea)in _0x2f6a94&&await updateAllowedDirectoriesFromRoots(_0x2f6a94[_0x44a5ca(0x1ea)]);}catch(_0x35cde4){logMcpStderr(_0x44a5ca(0x217),_0x35cde4 instanceof Error?_0x35cde4[_0x44a5ca(0x2f5)]:String(_0x35cde4));}}),server['oninitialized']=async()=>{const _0x30c97a=a0_0x12ce28,_0x2cff57=server[_0x30c97a(0x2d1)]();if(_0x2cff57?.['roots'])try{const _0x554294=await server[_0x30c97a(0x20f)]();_0x554294&&_0x30c97a(0x1ea)in _0x554294?await updateAllowedDirectoriesFromRoots(_0x554294[_0x30c97a(0x1ea)]):logMcpStderr(_0x30c97a(0x203));}catch(_0x1dab98){logMcpStderr(_0x30c97a(0x1ee),_0x1dab98 instanceof Error?_0x1dab98[_0x30c97a(0x2f5)]:String(_0x1dab98));}else{if(allowedDirectories[_0x30c97a(0x2f2)]>0x0)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x30c97a(0x293));else throw new Error(_0x30c97a(0x260));}}};async function runServer(){const _0x29e8b8=a0_0x12ce28,_0x356929=new StdioServerTransport();await server[_0x29e8b8(0x30c)](_0x356929),logMcpStderr(_0x29e8b8(0x221)),allowedDirectories[_0x29e8b8(0x2f2)]===0x0&&logMcpStderr(_0x29e8b8(0x228));}runServer()[a0_0x12ce28(0x302)](_0x458a31=>{const _0x2de547=a0_0x12ce28;logMcpStderr(_0x2de547(0x2ed),_0x458a31),process[_0x2de547(0x2d7)](0x1);});
2
+ const a0_0x510957=a0_0x4273;(function(_0x1dddc3,_0x268a3b){const _0x2c08f9=a0_0x4273,_0x118c89=_0x1dddc3();while(!![]){try{const _0x44fb74=-parseInt(_0x2c08f9(0x205))/0x1*(parseInt(_0x2c08f9(0x247))/0x2)+-parseInt(_0x2c08f9(0x2ff))/0x3+parseInt(_0x2c08f9(0x26b))/0x4*(-parseInt(_0x2c08f9(0x2a7))/0x5)+-parseInt(_0x2c08f9(0x248))/0x6*(-parseInt(_0x2c08f9(0x2b8))/0x7)+parseInt(_0x2c08f9(0x238))/0x8*(parseInt(_0x2c08f9(0x22d))/0x9)+-parseInt(_0x2c08f9(0x275))/0xa+-parseInt(_0x2c08f9(0x2f4))/0xb*(-parseInt(_0x2c08f9(0x21f))/0xc);if(_0x44fb74===_0x268a3b)break;else _0x118c89['push'](_0x118c89['shift']());}catch(_0x341e7e){_0x118c89['push'](_0x118c89['shift']());}}}(a0_0x2384,0x81584));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_0x53dc6d from'fs/promises';import a0_0xa4cb51 from'path';import a0_0xd57d56 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';function a0_0x4273(_0x2ace7e,_0x299241){_0x2ace7e=_0x2ace7e-0x1d9;const _0x2384b7=a0_0x2384();let _0x42734f=_0x2384b7[_0x2ace7e];return _0x42734f;}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_0x56b343 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x186c5d){const _0x220dfc=a0_0x4273,_0x347c2c=_0x186c5d[_0x220dfc(0x2da)](a0_0xa4cb51['sep'])[_0x220dfc(0x2c6)](Boolean);if(_0x347c2c['length']<0x2)return null;for(let _0x4ff2af=Math[_0x220dfc(0x1de)](_0x347c2c['length']/0x2);_0x4ff2af>=0x1;_0x4ff2af--){for(let _0x5315d4=0x0;_0x5315d4<=_0x347c2c[_0x220dfc(0x244)]-0x2*_0x4ff2af;_0x5315d4++){const _0x34f68e=_0x347c2c[_0x220dfc(0x2b2)](_0x5315d4,_0x5315d4+_0x4ff2af),_0x590a9d=_0x347c2c['slice'](_0x5315d4+_0x4ff2af,_0x5315d4+0x2*_0x4ff2af);if(_0x34f68e[_0x220dfc(0x2ba)]((_0x4e80b8,_0x488b4a)=>_0x4e80b8===_0x590a9d[_0x488b4a])){const _0x5722e2=[..._0x347c2c[_0x220dfc(0x2b2)](0x0,_0x5315d4),..._0x347c2c[_0x220dfc(0x2b2)](_0x5315d4+_0x4ff2af)];return a0_0xa4cb51[_0x220dfc(0x2c3)]+_0x5722e2[_0x220dfc(0x201)](a0_0xa4cb51[_0x220dfc(0x2c3)]);}}}return null;}function a0_0x2384(){const _0x3c7f2e=['object','.vscode',',\x20removed\x20','repo_path','optional','`\x20in\x20`','\x20(new\x20file)','isDirectory','getClientCapabilities','-\x20Preserve\x20exact\x20indentation\x0a','Tool\x20','DISABLED_TOOLS','grep_search','Created\x20File','now','morph-v3-fast','filePath','\x20valid\x20directories','path_validation_start','morph-mcp','homedir','ReadError','error','tool_calls','env','MORPH_API_KEY','Specific\x20commit\x20hash\x20to\x20search','terminationReason','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.','etimedout','--version','target_file','Rules:\x0a','join','messages','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','read','45bidVME','UnknownError','node_modules','default','Tool\x20\x22','argv','path_validation_resolved','API\x20error\x20(auth/rate-limit)','FileReadError','list_directory','branch','SubToolError','linesModified','timeout','response','metadata','0.2.0','ENOENT','path','toISOString','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','string','Invalid\x20arguments:\x20','substring','basename','\x0a</file>','714036nPGuNm','--api-key','toLowerCase','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','Parent\x20directory\x20does\x20not\x20exist:\x20','description','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','stack','readFile','size','post','pattern','\x20as\x20allowed\x20directory','.\x20Changes:\x20','376749LYBivI','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','access','tool','realpath','log','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','codebase_search','includes','setNotificationHandler','morph-warp-grep-v2.1','16cgFLwq','role','github_search_start','Warning:\x20Workspace\x20fallback\x20failed:\x20','mcp-filesystem','RipgrepError','application/json','Warning:\x20','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','params','<file\x20path=\x22','completed_with_file_errors','length','grep\x20\x27','[github_codebase_search]\x20Done\x20in\x20','15538FIrFrB','2137050YQQOoe','read\x20','instructions','\x0aExamples:','GITHUB_CODEBASE_SEARCH','File\x20read\x20error:','linesRemoved','grep','Error:\x20','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','map','\x20disabled\x20via\x20DISABLED_TOOLS','instruction','describe','-\x20Grepped\x20\x27','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','runWarpGrep_call','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','https://morphllm.com/api/error-report','terminated','finish',',\x20modified\x20','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','Applied','normalize','command','success','\x27\x20in\x20`','lines','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','false','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','parse','\x20is\x20not\x20a\x20directory','version','17324nkhmOk','debug','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','LocalRipgrepProvider','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','catch','listRoots','\x20\x20morph-mcp','2250440xbpLVU','MORPH_API_URL','EDIT_FILE','Max\x20results\x20to\x20return','inputSchema','morph-','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','stringify','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','CODEBASE_SEARCH','-\x20Read\x20file\x20`','tool_call_complete','file_read_complete','cwd','requiresApiKey','composer.json','dryRun','.\x20Path:\x20','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','@morphllm/morphmcp\x20','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','code_edit','indexOf','number','some','data','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','startsWith','trim','MORPH_WARP_GREP_TIMEOUT','target_filepath','path_validation_failed','code','function','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','text','added\x20','safeParse','PWD','morph-v3-large','linesAdded','has','tool_call_error','resolve','Fatal\x20error\x20running\x20server:','Morph\x20Edit\x20','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','exit','1105iMbVhB','context','-\x20Glob\x20search\x20`','roots','push','Preview\x20changes\x20without\x20applying\x20them.','message','Here\x20is\x20the\x20content\x20of\x20files:\x0a','warp_grep_complete','WarpGrepError','completed','slice','\x20chars)','glob','\x22>\x0a','setRequestHandler','.cursor','7zLChNc','\x22.\x20Known\x20tools:\x20','every','ToolException','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','source','SymlinkError','Workspace\x20mode\x20enabled:\x20Using\x20','dirname','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','Morph\x20Edit\x20Preview','sep','Fallback:\x20Using\x20workspace\x20root\x20','FileNotFound','filter','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','BinaryFile','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','name','file','PathError','tool_call_id','changes','Relevant\x20context\x20found:','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Example\x20format:\x0a','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','ms:','searchGitHub','list_directory\x20','timed\x20out','❌\x20Morph\x20Edit\x20Failed:\x20','utf-8','split','stat','Parameters:\x0a','ms.\x20Success:\x20','files','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Bearer\x20','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','connect','user','\x20-\x20','\x0a...\x20(truncated,\x20total:\x20','MCP','../package.json','go.mod','timings','unknown','Error\x20accessing\x20directory\x20','Unknown\x20error','Unknown\x20tool:\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','all','Failed\x20to\x20read\x20file:\x20','search_string','isArray','341uQWQLe','errors','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','array','RipgrepNotAvailable','edit_file','\x20error(s)','content','assistant','Repository\x20identifier','TimeoutError','668682alXmAv','github_codebase_search','arguments','sk-','tsconfig.json','constructor','status','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','min','\x22>\x0aError\x20reading\x20file:\x20','GitHub\x20search\x20failed:\x20','floor','match'];a0_0x2384=function(){return _0x3c7f2e;};return a0_0x2384();}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x8d4c68=a0_0x4273;try{const _0x190334=require(_0x8d4c68(0x2e8));return _0x190334[_0x8d4c68(0x26a)]??'unknown';}catch(_0x1cc990){return logMcpStderr(_0x8d4c68(0x27d),_0x1cc990),_0x8d4c68(0x2eb);}}function printHelp(){const _0x44b9d0=a0_0x4273;console[_0x44b9d0(0x232)](_0x44b9d0(0x288)+getPackageVersion()),console[_0x44b9d0(0x232)](_0x44b9d0(0x240)),console['log']('\x0aOptions:'),console[_0x44b9d0(0x232)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x44b9d0(0x232)](_0x44b9d0(0x225)),console[_0x44b9d0(0x232)](_0x44b9d0(0x25e)),console[_0x44b9d0(0x232)](_0x44b9d0(0x24b)),console[_0x44b9d0(0x232)](_0x44b9d0(0x274)),console[_0x44b9d0(0x232)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x510957(0x20a)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x510957(0x1fe),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0x510957(0x28d)](_0x50d81b=>VERSION_FLAGS[a0_0x510957(0x29f)](_0x50d81b))&&(console[a0_0x510957(0x232)](a0_0x510957(0x288)+getPackageVersion()),process[a0_0x510957(0x2a6)](0x0));cliArgs[a0_0x510957(0x28d)](_0x52b658=>HELP_FLAGS[a0_0x510957(0x29f)](_0x52b658))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x22ed4d){const _0xfe0bac=a0_0x510957;for(let _0x110ccd=0x0;_0x110ccd<cliArgs[_0xfe0bac(0x244)];_0x110ccd++){const _0xa867f7=cliArgs[_0x110ccd];if(_0xa867f7[_0xfe0bac(0x291)]('--'+_0x22ed4d+'='))return _0xa867f7[_0xfe0bac(0x2b2)](('--'+_0x22ed4d+'=')[_0xfe0bac(0x244)]);if(_0xa867f7==='--'+_0x22ed4d&&_0x110ccd+0x1<cliArgs[_0xfe0bac(0x244)])return cliArgs[_0x110ccd+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0x510957(0x29f)](arg))continue;if(arg[a0_0x510957(0x291)]('--api-key='))continue;if(arg===a0_0x510957(0x220)){i++;continue;}args[a0_0x510957(0x2ab)](arg);}const WORKSPACE_ROOT=process[a0_0x510957(0x1f8)]['WORKSPACE_ROOT']||process['env'][a0_0x510957(0x29c)]||process[a0_0x510957(0x282)](),ENABLE_WORKSPACE_MODE=process['env']['ENABLE_WORKSPACE_MODE']!==a0_0x510957(0x266),MORPH_API_KEY=getCliArg('api-key')??process[a0_0x510957(0x1f8)][a0_0x510957(0x1f9)],MORPH_API_URL=process[a0_0x510957(0x1f8)][a0_0x510957(0x276)],MORPH_LARGE_APPLY=process[a0_0x510957(0x1f8)]['MORPH_LARGE_APPLY']!==a0_0x510957(0x266),MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x510957(0x293)]?parseInt(process[a0_0x510957(0x1f8)][a0_0x510957(0x293)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process['env'][a0_0x510957(0x1eb)]?new Set(process[a0_0x510957(0x1f8)][a0_0x510957(0x1eb)]['split'](',')[a0_0x510957(0x252)](_0x526c71=>_0x526c71[a0_0x510957(0x292)]())[a0_0x510957(0x2c6)](_0x5b3226=>_0x5b3226[a0_0x510957(0x244)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x510957(0x228)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x510957(0x29f)](tool)&&console[a0_0x510957(0x1f6)](a0_0x510957(0x27b)+tool+a0_0x510957(0x2b9)+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console[a0_0x510957(0x1f6)]('Disabled\x20tools:\x20'+[...DISABLED_TOOLS][a0_0x510957(0x201)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x510957(0x291)](a0_0x510957(0x302))&&!MORPH_API_KEY[a0_0x510957(0x291)](a0_0x510957(0x27a))&&logMcpStderr(a0_0x510957(0x2a4));async function reportMorphError(_0x3af346){const _0x4f9a85=a0_0x510957;try{await a0_0x56b343[_0x4f9a85(0x229)](_0x4f9a85(0x25a),{..._0x3af346,'timestamp':new Date()[_0x4f9a85(0x218)](),'source':_0x3af346['source']||_0x4f9a85(0x23c),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x3af346[_0x4f9a85(0x2a8)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x4f9a85(0x23e),'Authorization':_0x4f9a85(0x2e1)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x5a80db,_0x4f9cb8){const _0x4b8599=a0_0x510957;if(_0x5a80db&&typeof _0x5a80db===_0x4b8599(0x1e0)&&'status'in _0x5a80db)return _0x5a80db[_0x4b8599(0x1d9)];if(_0x5a80db&&typeof _0x5a80db===_0x4b8599(0x1e0)&&_0x4b8599(0x213)in _0x5a80db)return _0x5a80db[_0x4b8599(0x213)]?.['status'];const _0x1fbad2=_0x4f9cb8[_0x4b8599(0x1df)](/\b(401|429)\b/);return _0x1fbad2?parseInt(_0x1fbad2[0x1],0xa):null;}function handleMorphAPIError(_0x32adb8){const _0x650a22=a0_0x510957,_0x3fdf6f=_0x32adb8 instanceof Error?_0x32adb8[_0x650a22(0x2ad)]:String(_0x32adb8),_0x4a4596=extractStatusCode(_0x32adb8,_0x3fdf6f);switch(_0x4a4596){case 0x191:return{'content':[{'type':_0x650a22(0x299),'text':'Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.'}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x650a22(0x299),'text':_0x650a22(0x222)}],'isError':!![]};default:return null;}}args[a0_0x510957(0x244)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x510957(0x2d0)),logMcpStderr(a0_0x510957(0x2a5)),logMcpStderr(a0_0x510957(0x259)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x510957(0x2e0)),logMcpStderr(a0_0x510957(0x26e)));function normalizePath(_0x485500){const _0xc93e56=a0_0x510957;return a0_0xa4cb51[_0xc93e56(0x260)](_0x485500);}function expandHome(_0x56bddb){const _0x195882=a0_0x510957;if(_0x56bddb[_0x195882(0x291)]('~/')||_0x56bddb==='~')return a0_0xa4cb51['join'](a0_0xd57d56[_0x195882(0x1f4)](),_0x56bddb[_0x195882(0x2b2)](0x1));return _0x56bddb;}let allowedDirectories=await Promise[a0_0x510957(0x2f0)](args[a0_0x510957(0x252)](async _0x95a02=>{const _0x41afdd=a0_0x510957,_0x1e64c9=expandHome(_0x95a02),_0x1d1d23=a0_0xa4cb51[_0x41afdd(0x2a1)](_0x1e64c9);try{const _0x37602f=await a0_0x53dc6d[_0x41afdd(0x231)](_0x1d1d23);return normalizePath(_0x37602f);}catch(_0x1511e6){return normalizePath(_0x1d1d23);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x510957(0x244)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x510957(0x2ab)](workspaceDir),logMcpStderr(a0_0x510957(0x2bf)+workspaceDir+a0_0x510957(0x22b)));}catch(a0_0xd51ef0){logMcpStderr(a0_0x510957(0x1da)+a0_0xd51ef0);}async function detectWorkspaceRoot(_0x1b429a){const _0x338a97=a0_0x510957;let _0x2514af=a0_0xa4cb51[_0x338a97(0x2a1)](_0x1b429a);const _0x2a804e=['.git',_0x338a97(0x1e1),'package.json','Cargo.toml','pyproject.toml',_0x338a97(0x2e9),_0x338a97(0x2b7),_0x338a97(0x303),_0x338a97(0x284)];while(_0x2514af!==a0_0xa4cb51['dirname'](_0x2514af)){for(const _0x5011fa of _0x2a804e){const _0x143166=a0_0xa4cb51['join'](_0x2514af,_0x5011fa);try{return await a0_0x53dc6d[_0x338a97(0x22f)](_0x143166),normalizePath(_0x2514af);}catch{}}_0x2514af=a0_0xa4cb51[_0x338a97(0x2c0)](_0x2514af);}return normalizePath(_0x1b429a);}await Promise[a0_0x510957(0x2f0)](args[a0_0x510957(0x252)](async _0x459dc9=>{const _0x4e497e=a0_0x510957;try{const _0x29ccd1=await a0_0x53dc6d[_0x4e497e(0x2db)](expandHome(_0x459dc9));!_0x29ccd1[_0x4e497e(0x1e7)]()&&(logMcpStderr(_0x4e497e(0x250)+_0x459dc9+_0x4e497e(0x269)),process[_0x4e497e(0x2a6)](0x1));}catch(_0x41c79e){logMcpStderr(_0x4e497e(0x2ec)+_0x459dc9+':',_0x41c79e),process[_0x4e497e(0x2a6)](0x1);}}));async function validatePath(_0xbb079d){const _0x5703a4=a0_0x510957,_0x38890e=expandHome(_0xbb079d),_0x4c0722=a0_0xa4cb51['resolve'](_0x38890e);logger[_0x5703a4(0x26c)](_0x5703a4(0x2e7),_0x5703a4(0x1f2),{'raw_path':_0xbb079d,'absolute':_0x4c0722});try{const _0x4ce698=await a0_0x53dc6d[_0x5703a4(0x231)](_0x4c0722);return logger[_0x5703a4(0x26c)]('MCP',_0x5703a4(0x20b),{'resolved':_0x4ce698,'symlink':_0x4ce698!==_0x4c0722}),_0x4ce698;}catch(_0x484e01){if(_0x484e01[_0x5703a4(0x296)]===_0x5703a4(0x216)){const _0x2bac78=a0_0xa4cb51[_0x5703a4(0x2c0)](_0x4c0722);try{const _0x2b6c16=await a0_0x53dc6d[_0x5703a4(0x231)](_0x2bac78),_0x25233e=a0_0xa4cb51[_0x5703a4(0x201)](_0x2b6c16,a0_0xa4cb51['basename'](_0x4c0722));return logger[_0x5703a4(0x26c)](_0x5703a4(0x2e7),_0x5703a4(0x20b),{'resolved':_0x25233e,'new_file':!![]}),_0x25233e;}catch{logger['error'](_0x5703a4(0x2e7),_0x5703a4(0x295),{'raw_path':_0xbb079d,'error':_0x5703a4(0x223)+_0x2bac78});throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x2bac78);}}logger[_0x5703a4(0x1f6)](_0x5703a4(0x2e7),_0x5703a4(0x295),{'raw_path':_0xbb079d,'error':_0x484e01[_0x5703a4(0x2ad)]});throw _0x484e01;}}const MorphEditFileArgsSchema=z['object']({'path':z['string'](),'code_edit':z[a0_0x510957(0x21a)]()['describe'](a0_0x510957(0x2ef)),'instruction':z['string']()[a0_0x510957(0x255)]('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z['boolean']()[a0_0x510957(0x208)](![])['describe'](a0_0x510957(0x2ac))}),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_0x510957(0x1e0)]({'search_string':z[a0_0x510957(0x21a)]()[a0_0x510957(0x255)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x510957(0x21a)]()[a0_0x510957(0x255)](a0_0x510957(0x298)),'search_type':z['enum']([a0_0x510957(0x208),a0_0x510957(0x207)])[a0_0x510957(0x1e4)]()['describe'](a0_0x510957(0x267))}),WarpGrepGitHubArgsSchema=z[a0_0x510957(0x1e0)]({'search_string':z[a0_0x510957(0x21a)]()[a0_0x510957(0x255)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x510957(0x21a)]()[a0_0x510957(0x1e4)]()[a0_0x510957(0x255)](a0_0x510957(0x290)),'owner_repo':z[a0_0x510957(0x21a)]()[a0_0x510957(0x1e4)]()[a0_0x510957(0x255)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x510957(0x21a)]()[a0_0x510957(0x1e4)]()[a0_0x510957(0x255)]('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z[a0_0x510957(0x1e0)]({'query':z[a0_0x510957(0x21a)]()[a0_0x510957(0x255)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x510957(0x21a)]()[a0_0x510957(0x255)](a0_0x510957(0x2fd)),'branch':z[a0_0x510957(0x21a)]()[a0_0x510957(0x1e4)]()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x510957(0x21a)]()[a0_0x510957(0x1e4)]()['describe'](a0_0x510957(0x1fa)),'targetDirectories':z[a0_0x510957(0x2f7)](z[a0_0x510957(0x21a)]())[a0_0x510957(0x208)]([])[a0_0x510957(0x255)](a0_0x510957(0x251)),'limit':z[a0_0x510957(0x28c)]()[a0_0x510957(0x1e4)]()['default'](0xa)[a0_0x510957(0x255)](a0_0x510957(0x278))}),server=new Server({'name':a0_0x510957(0x1f3),'version':a0_0x510957(0x215)},{'capabilities':{'tools':{}}});server[a0_0x510957(0x2b6)](ListToolsRequestSchema,async()=>{const _0x32251a=a0_0x510957,_0x31911a=[{'name':TOOL_NAMES['EDIT_FILE'],'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES.**\x20Fast,\x20accurate,\x20and\x20prevents\x20context\x20pollution.\x20Especially\x20useful\x20when\x20making\x20multiple\x20edits\x20in\x20one\x20file:\x20describe\x20all\x20changes\x20in\x20a\x20single\x20call\x20and\x20the\x20semantic\x20edit\x20applies\x20them\x20all\x20at\x20once,\x20more\x20accurately\x20and\x20faster\x20than\x20sequential\x20edits.\x20Unlike\x20search-and-replace\x20or\x20patch\x20edits\x20which\x20do\x20narrow\x20edits\x20one\x20at\x20a\x20time,\x20with\x20this\x20tool\x20you\x20should\x20do\x20all\x20your\x20code\x20changes\x20in\x20one\x20go\x20separated\x20by\x20`//\x20...\x20existing\x20code\x20...`\x20markers.\x20This\x20saves\x20tokens\x20and\x20improves\x20performance\x20because\x20you\x20do\x20not\x20need\x20to\x20reread\x20files\x20before\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a'+_0x32251a(0x2dc)+'-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a'+_0x32251a(0x271)+_0x32251a(0x28f)+_0x32251a(0x2bc)+_0x32251a(0x2d1)+_0x32251a(0x257)+_0x32251a(0x200)+_0x32251a(0x22e)+_0x32251a(0x1e9)+_0x32251a(0x270)+_0x32251a(0x2d2),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x32251a(0x27e)],'description':'A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20'+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x32251a(0x287)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20'+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x5205e6=_0x31911a['filter'](_0x170539=>{const _0x74cda5=_0x32251a;if(DISABLED_TOOLS[_0x74cda5(0x29f)](_0x170539[_0x74cda5(0x2ca)]))return console['error'](_0x74cda5(0x1ea)+_0x170539['name']+_0x74cda5(0x253)),![];if('requiresApiKey'in _0x170539&&_0x170539[_0x74cda5(0x283)]&&!MORPH_API_KEY)return logMcpStderr(_0x74cda5(0x23f)+_0x170539['name']+_0x74cda5(0x2c9)),![];return!![];});return{'tools':_0x5205e6[_0x32251a(0x252)](_0x4629ac=>({'name':_0x4629ac[_0x32251a(0x2ca)],'description':_0x4629ac[_0x32251a(0x224)],'inputSchema':_0x4629ac[_0x32251a(0x279)]}))};}),server[a0_0x510957(0x2b6)](CallToolRequestSchema,async _0x1d7e7a=>{const _0x4c66f0=a0_0x510957,{name:_0x4170d1,arguments:_0x21926f}=_0x1d7e7a[_0x4c66f0(0x241)],_0x551b55=Date[_0x4c66f0(0x1ee)]();logger[_0x4c66f0(0x26c)](_0x4c66f0(0x2e7),'tool_call_received',{'tool':_0x4170d1,'args':_0x4170d1===_0x4c66f0(0x2f9)?{'path':_0x21926f?.[_0x4c66f0(0x217)],'instruction':_0x21926f?.[_0x4c66f0(0x254)]||_0x21926f?.[_0x4c66f0(0x24a)],'dryRun':_0x21926f?.['dryRun']}:_0x21926f});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x4c66f0(0x299),'text':_0x4c66f0(0x2c1)}],'isError':!![]};if(!MORPH_API_KEY[_0x4c66f0(0x291)]('sk-')&&!MORPH_API_KEY['startsWith'](_0x4c66f0(0x27a)))return{'content':[{'type':_0x4c66f0(0x299),'text':_0x4c66f0(0x1fc)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0x4170d1))return{'content':[{'type':_0x4c66f0(0x299),'text':_0x4c66f0(0x209)+_0x4170d1+'\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.'}],'isError':![]};switch(_0x4170d1){case TOOL_NAMES[_0x4c66f0(0x277)]:{let _0x169b3d=_0x21926f;if(_0x169b3d&&typeof _0x169b3d===_0x4c66f0(0x1e0)){if(!(_0x4c66f0(0x217)in _0x169b3d)){const _0x59360b=_0x169b3d[_0x4c66f0(0x1ff)]??_0x169b3d[_0x4c66f0(0x1f0)]??_0x169b3d[_0x4c66f0(0x294)]??_0x169b3d['file_path']??_0x169b3d[_0x4c66f0(0x2cb)];if(_0x59360b)_0x169b3d={..._0x169b3d,'path':_0x59360b};}_0x4c66f0(0x24a)in _0x169b3d&&!(_0x4c66f0(0x254)in _0x169b3d)&&(_0x169b3d={..._0x169b3d,'instruction':_0x169b3d['instructions']});if(!(_0x4c66f0(0x28a)in _0x169b3d)){const _0x21d311=_0x169b3d['code']??_0x169b3d['new_string']??_0x169b3d[_0x4c66f0(0x2fb)]??_0x169b3d['edit'];if(_0x21d311)_0x169b3d={..._0x169b3d,'code_edit':_0x21d311};}}const _0x595b70=MorphEditFileArgsSchema[_0x4c66f0(0x29b)](_0x169b3d);if(!_0x595b70[_0x4c66f0(0x262)])throw new Error(_0x4c66f0(0x219)+_0x595b70[_0x4c66f0(0x1f6)]);const _0x3666dc=await validatePath(_0x595b70[_0x4c66f0(0x28e)]['path']);let _0x5af96d=null,_0x3c41bf=!![],_0x169cd3=null;try{_0x5af96d=await a0_0x53dc6d[_0x4c66f0(0x227)](_0x3666dc,_0x4c66f0(0x2d9)),logger[_0x4c66f0(0x26c)](_0x4c66f0(0x2e7),_0x4c66f0(0x281),{'path':_0x3666dc,'size_bytes':_0x5af96d['length']});}catch(_0x13ed9a){const _0x4c429d=_0x13ed9a[_0x4c66f0(0x296)];_0x4c429d===_0x4c66f0(0x216)?(_0x3c41bf=![],_0x5af96d='',logger[_0x4c66f0(0x26c)](_0x4c66f0(0x2e7),'file_read_complete',{'path':_0x3666dc,'exists':![]})):(_0x169cd3=_0x4c66f0(0x2f1)+(_0x4c429d||_0x4c66f0(0x2eb))+_0x4c66f0(0x2e5)+(_0x13ed9a instanceof Error?_0x13ed9a[_0x4c66f0(0x2ad)]:String(_0x13ed9a)),logger[_0x4c66f0(0x1f6)]('MCP','file_read_failed',{'path':_0x3666dc,'error':_0x169cd3}),logMcpStderr(_0x4c66f0(0x23f)+_0x169cd3));}let _0x3c2fb0;try{const _0xb86e4f=MORPH_API_KEY;if(!_0xb86e4f)throw new Error(_0x4c66f0(0x265));const _0x4adbac=a0_0xa4cb51['dirname'](_0x3666dc),_0xedec2e=a0_0xa4cb51[_0x4c66f0(0x21d)](_0x3666dc);logger['debug'](_0x4c66f0(0x2e7),'api_request_start',{'model':_0x4c66f0(0x1ef),'path':_0x595b70['data'][_0x4c66f0(0x217)],'instruction_len':_0x595b70['data']['instruction'][_0x4c66f0(0x244)],'code_edit_len':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x28a)][_0x4c66f0(0x244)],'original_code_len':_0x5af96d?.[_0x4c66f0(0x244)]??0x0,'dry_run':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x285)]});const _0x1cd819=Date['now'](),_0x4400ad=await executeEditFile({'target_filepath':_0xedec2e,'code_edit':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x28a)],'instruction':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x254)]},{'morphApiKey':_0xb86e4f,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x4adbac,'autoWrite':!_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x285)],'generateUdiff':![],'debug':![]}),_0x1f12a0=Date['now']()-_0x1cd819;_0x3c2fb0=_0x4400ad['completionId'];if(!_0x4400ad[_0x4c66f0(0x262)])throw new Error(_0x4400ad[_0x4c66f0(0x1f6)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x49e2a9=_0x4400ad[_0x4c66f0(0x2ce)],_0x312d62=_0x4c66f0(0x29a)+_0x49e2a9[_0x4c66f0(0x29e)]+_0x4c66f0(0x1e2)+_0x49e2a9[_0x4c66f0(0x24e)]+_0x4c66f0(0x25d)+_0x49e2a9[_0x4c66f0(0x211)];logger[_0x4c66f0(0x26c)](_0x4c66f0(0x2e7),_0x4c66f0(0x280),{'tool':_0x4c66f0(0x2f9),'success':!![],'latency_ms':Date[_0x4c66f0(0x1ee)]()-_0x551b55,'edit_latency_ms':_0x1f12a0,'changes':{'added':_0x49e2a9[_0x4c66f0(0x29e)],'removed':_0x49e2a9[_0x4c66f0(0x24e)],'modified':_0x49e2a9[_0x4c66f0(0x211)]},'completion_id':_0x3c2fb0});if(_0x595b70['data'][_0x4c66f0(0x285)])return{'content':[{'type':_0x4c66f0(0x299),'text':_0x4c66f0(0x2c2)+(_0x3c41bf?'':_0x4c66f0(0x1e6))+':\x20'+_0x595b70[_0x4c66f0(0x28e)]['instruction']+_0x4c66f0(0x22c)+_0x312d62+_0x4c66f0(0x286)+_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x217)]+'.'}]};return{'content':[{'type':_0x4c66f0(0x299),'text':_0x4c66f0(0x2a3)+(_0x3c41bf?_0x4c66f0(0x25f):_0x4c66f0(0x1ed))+':\x20'+_0x595b70['data'][_0x4c66f0(0x254)]+_0x4c66f0(0x22c)+_0x312d62+_0x4c66f0(0x286)+_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x217)]+'.'}]};}catch(_0x28f040){const _0xebf647=handleMorphAPIError(_0x28f040);if(_0xebf647)return logger['error'](_0x4c66f0(0x2e7),_0x4c66f0(0x2a0),{'tool':'edit_file','error':_0x4c66f0(0x20c),'latency_ms':Date['now']()-_0x551b55}),_0xebf647;const _0x1904c9=_0x28f040 instanceof Error?_0x28f040[_0x4c66f0(0x2ad)]:String(_0x28f040);return logger['error'](_0x4c66f0(0x2e7),'tool_call_error',{'tool':_0x4c66f0(0x2f9),'error':_0x1904c9,'path':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x217)],'validated_path':_0x3666dc,'latency_ms':Date[_0x4c66f0(0x1ee)]()-_0x551b55,'stack':_0x28f040 instanceof Error?_0x28f040[_0x4c66f0(0x226)]:undefined}),reportMorphError({'error_message':_0x1904c9,'error_type':_0x28f040 instanceof Error?_0x28f040[_0x4c66f0(0x304)][_0x4c66f0(0x2ca)]:_0x4c66f0(0x206),'context':{'tool':'edit_file','completion_id':_0x3c2fb0,'file_path':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x217)],'validated_path':_0x3666dc,'instruction':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x254)],'model':MORPH_LARGE_APPLY?_0x4c66f0(0x29d):_0x4c66f0(0x1ef),'dry_run':_0x595b70[_0x4c66f0(0x28e)]['dryRun'],'file_exists':_0x3c41bf,'file_read_error':_0x169cd3,'file_readable':_0x5af96d!==null,'request_content':{'path':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x217)],'code_edit':_0x595b70['data'][_0x4c66f0(0x28a)],'instruction':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x254)],'original_code':_0x5af96d!==null?_0x5af96d[_0x4c66f0(0x244)]>0xc350?_0x5af96d['substring'](0x0,0xc350)+_0x4c66f0(0x2e6)+_0x5af96d[_0x4c66f0(0x244)]+_0x4c66f0(0x2b3):_0x5af96d:'[could\x20not\x20read\x20file:\x20'+(_0x169cd3||'unknown\x20error')+']','original_code_length':_0x5af96d?.[_0x4c66f0(0x244)]??0x0,'model':MORPH_LARGE_APPLY?_0x4c66f0(0x29d):'morph-v3-fast','dry_run':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x285)]}},'stack_trace':_0x28f040 instanceof Error?_0x28f040[_0x4c66f0(0x226)]:undefined,'source':_0x4c66f0(0x23c)})[_0x4c66f0(0x272)](()=>{}),{'content':[{'type':_0x4c66f0(0x299),'text':_0x4c66f0(0x2d8)+_0x1904c9}],'isError':!![]};}}case TOOL_NAMES[_0x4c66f0(0x27e)]:{const _0x48afe4=WarpGrepArgsSchema[_0x4c66f0(0x29b)](_0x21926f);if(!_0x48afe4['success'])return{'content':[{'type':'text','text':_0x4c66f0(0x21b)+_0x48afe4['error']}],'isError':!![]};const _0x38fb01=_0x17844e=>{const _0x5c0f0c=_0x4c66f0,_0x5238b3=[];for(const _0x2ea8ae of _0x17844e||[]){if(_0x2ea8ae[_0x5c0f0c(0x239)]===_0x5c0f0c(0x2fc)&&Array[_0x5c0f0c(0x2f3)](_0x2ea8ae[_0x5c0f0c(0x1f7)]))for(const _0x36bc78 of _0x2ea8ae[_0x5c0f0c(0x1f7)]){try{const _0x392518=_0x36bc78[_0x5c0f0c(0x297)]?.[_0x5c0f0c(0x2ca)],_0x3df743=JSON['parse'](_0x36bc78[_0x5c0f0c(0x297)]?.[_0x5c0f0c(0x301)]||'{}');if(_0x392518===_0x5c0f0c(0x1ec))_0x5238b3[_0x5c0f0c(0x2ab)](_0x5c0f0c(0x245)+_0x3df743[_0x5c0f0c(0x22a)]+'\x27\x20'+(_0x3df743[_0x5c0f0c(0x217)]||'.'));else{if(_0x392518===_0x5c0f0c(0x204))_0x5238b3[_0x5c0f0c(0x2ab)](_0x5c0f0c(0x249)+_0x3df743[_0x5c0f0c(0x217)]);else{if(_0x392518===_0x5c0f0c(0x20e))_0x5238b3['push'](_0x5c0f0c(0x2d6)+(_0x3df743['command']||'.'));else{if(_0x392518==='glob')_0x5238b3[_0x5c0f0c(0x2ab)]('glob\x20\x27'+_0x3df743[_0x5c0f0c(0x22a)]+'\x27\x20'+(_0x3df743[_0x5c0f0c(0x217)]||'.'));else _0x392518===_0x5c0f0c(0x25c)&&_0x5238b3[_0x5c0f0c(0x2ab)]('finish');}}}}catch{}}}return _0x5238b3;},_0x214bdb=_0x4ac1f2=>{const _0x5231ca=_0x4c66f0,_0x4f206b=[];if(!_0x4ac1f2||!Array[_0x5231ca(0x2f3)](_0x4ac1f2))return _0x4f206b;const _0x423230=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x5231ca(0x2c5),'tool':_0x5231ca(0x204)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x5231ca(0x2cc),'tool':_0x5231ca(0x204)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x5231ca(0x2c8),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x5231ca(0x23d),'tool':_0x5231ca(0x24f)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x5231ca(0x2f8),'tool':_0x5231ca(0x24f)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x5231ca(0x2c8),'tool':_0x5231ca(0x204)},{'pattern':/\[SYMLINK\]/,'error_type':_0x5231ca(0x2be),'tool':_0x5231ca(0x204)},{'pattern':/not a text file/,'error_type':_0x5231ca(0x2c8),'tool':_0x5231ca(0x204)},{'pattern':/symbolic link/,'error_type':_0x5231ca(0x2be),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x5231ca(0x1f5),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x5231ca(0x2bb),'tool':_0x5231ca(0x2eb)}];let _0x2fc591=0x0;for(const _0x2009fb of _0x4ac1f2){_0x2009fb['role']===_0x5231ca(0x2fc)&&Array['isArray'](_0x2009fb[_0x5231ca(0x1f7)])&&_0x2fc591++;const _0xf5092f=_0x2009fb[_0x5231ca(0x2fb)];if((_0x2009fb[_0x5231ca(0x239)]===_0x5231ca(0x230)||_0x2009fb[_0x5231ca(0x239)]===_0x5231ca(0x2e4))&&_0xf5092f&&typeof _0xf5092f===_0x5231ca(0x21a))for(const {pattern:_0x544985,error_type:_0x292caa,tool:_0x3e2d49}of _0x423230){const _0x918175=_0xf5092f[_0x5231ca(0x1df)](new RegExp(_0x544985[_0x5231ca(0x2bd)],'g'));if(_0x918175)for(const _0x1ca073 of _0x918175){const _0x37e41d=_0xf5092f[_0x5231ca(0x28b)](_0x1ca073),_0x2392d4=_0xf5092f[_0x5231ca(0x21c)](_0x37e41d,Math[_0x5231ca(0x1db)](_0x37e41d+0xc8,_0xf5092f[_0x5231ca(0x244)]));_0x4f206b[_0x5231ca(0x2ab)]({'tool':_0x3e2d49,'error_type':_0x292caa,'error_message':_0x2392d4['split']('\x0a')[0x0],'turn':_0x2fc591});}}}return _0x4f206b;};try{const _0x4184a5=a0_0xa4cb51['resolve'](_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)]),_0x1564c8=_0x48afe4[_0x4c66f0(0x28e)]['search_type'],_0x11cdd2=_0x1564c8==='node_modules'?{'allowNames':[_0x4c66f0(0x207)]}:undefined,_0x501107=new LocalRipgrepProvider(_0x4184a5,undefined,_0x11cdd2);logger[_0x4c66f0(0x26c)](_0x4c66f0(0x2e7),'provider_created',{'type':_0x4c66f0(0x26f),'repo_root':_0x4184a5,'search_type':_0x1564c8||_0x4c66f0(0x208)}),logger[_0x4c66f0(0x26c)](_0x4c66f0(0x2e7),'warp_grep_start',{'query':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x2f2)],'repo_root':_0x4184a5,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0xba5e80=Date[_0x4c66f0(0x1ee)](),_0x1675e3=await runWarpGrep({'searchTerm':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x2f2)],'repoRoot':_0x4184a5,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x501107,'search_type':_0x1564c8}),_0x509fe7=Date[_0x4c66f0(0x1ee)]()-_0xba5e80,_0xee7836=_0x1675e3['finish']?.[_0x4c66f0(0x214)]?.[_0x4c66f0(0x2de)]?.['length']??0x0;logger[_0x4c66f0(0x26c)]('MCP',_0x4c66f0(0x2af),{'termination':_0x1675e3[_0x4c66f0(0x1fb)],'turns':_0x1675e3[_0x4c66f0(0x2ea)]?.['turns']??0x0,'files_found':_0xee7836,'latency_ms':_0x509fe7});const _0x2adfcc=_0x214bdb(_0x1675e3[_0x4c66f0(0x202)]);_0x2adfcc['length']>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x2adfcc[_0x4c66f0(0x244)]+_0x4c66f0(0x2fa),'error_type':_0x4c66f0(0x210),'level':'warn','tool':'codebase_search','context':{'repo_path':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)],'query':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x2f2)],'model':_0x4c66f0(0x237),'termination_reason':_0x1675e3['terminationReason'],'sub_tool_errors':_0x2adfcc,'timings':_0x1675e3[_0x4c66f0(0x2ea)],'tool_calls':_0x38fb01(_0x1675e3['messages']),'messages':_0x1675e3[_0x4c66f0(0x202)]?.[_0x4c66f0(0x252)](_0x53fd5e=>({'role':_0x53fd5e[_0x4c66f0(0x239)],'content':_0x53fd5e[_0x4c66f0(0x2fb)],..._0x53fd5e[_0x4c66f0(0x1f7)]?{'tool_calls':_0x53fd5e[_0x4c66f0(0x1f7)]['length']}:{},..._0x53fd5e[_0x4c66f0(0x2cd)]?{'tool_call_id':_0x53fd5e[_0x4c66f0(0x2cd)]}:{}}))},'source':_0x4c66f0(0x23c)})[_0x4c66f0(0x272)](()=>{});let _0x1f8874='';if(_0x1675e3['terminationReason']===_0x4c66f0(0x2b1)&&_0x1675e3[_0x4c66f0(0x25c)]?.[_0x4c66f0(0x214)]?.[_0x4c66f0(0x2de)]){const _0x1591ff=_0x1675e3[_0x4c66f0(0x25c)]['metadata'][_0x4c66f0(0x2de)];if(_0x1591ff['length']===0x0)return _0x1f8874=_0x1675e3[_0x4c66f0(0x25c)]['payload']||_0x4c66f0(0x289),{'content':[{'type':_0x4c66f0(0x299),'text':_0x1f8874}]};const _0xd5aeca=[],_0x18cb88=[_0x4c66f0(0x203)];for(const _0x14b488 of _0x1675e3[_0x4c66f0(0x202)]){if(_0x14b488[_0x4c66f0(0x239)]===_0x4c66f0(0x2fc)&&Array[_0x4c66f0(0x2f3)](_0x14b488['tool_calls']))for(const _0x50805e of _0x14b488[_0x4c66f0(0x1f7)]){try{const _0x41ded1=_0x50805e[_0x4c66f0(0x297)]?.[_0x4c66f0(0x2ca)],_0x523c9d=JSON[_0x4c66f0(0x268)](_0x50805e[_0x4c66f0(0x297)]?.[_0x4c66f0(0x301)]||'{}');if(_0x41ded1===_0x4c66f0(0x1ec))_0x18cb88['push'](_0x4c66f0(0x256)+_0x523c9d['pattern']+_0x4c66f0(0x263)+(_0x523c9d[_0x4c66f0(0x217)]||'.')+'`');else{if(_0x41ded1==='read')_0x18cb88[_0x4c66f0(0x2ab)](_0x4c66f0(0x27f)+_0x523c9d[_0x4c66f0(0x217)]+'`');else{if(_0x41ded1===_0x4c66f0(0x20e))_0x18cb88[_0x4c66f0(0x2ab)]('-\x20Listed\x20directory\x20`'+(_0x523c9d[_0x4c66f0(0x261)]||'.')+'`');else _0x41ded1===_0x4c66f0(0x2b4)&&_0x18cb88[_0x4c66f0(0x2ab)](_0x4c66f0(0x2a9)+_0x523c9d[_0x4c66f0(0x22a)]+_0x4c66f0(0x1e5)+(_0x523c9d[_0x4c66f0(0x217)]||'.')+'`');}}}catch{}}}_0xd5aeca[_0x4c66f0(0x2ab)](_0x18cb88['join']('\x0a'));const _0x3826aa=['',_0x4c66f0(0x2cf)];for(const _0x5d5eef of _0x1591ff){if(_0x5d5eef[_0x4c66f0(0x264)]==='*')_0x3826aa[_0x4c66f0(0x2ab)]('-\x20'+_0x5d5eef['path']+':*');else{if(Array[_0x4c66f0(0x2f3)](_0x5d5eef[_0x4c66f0(0x264)])){const _0x5ef306=_0x5d5eef['lines'][_0x4c66f0(0x252)](([_0x314ce1,_0x49e224])=>{if(_0x314ce1===_0x49e224)return''+_0x314ce1;return _0x314ce1+'-'+_0x49e224;});_0x3826aa[_0x4c66f0(0x2ab)]('-\x20'+_0x5d5eef[_0x4c66f0(0x217)]+':'+_0x5ef306[_0x4c66f0(0x201)](','));}else _0x3826aa['push']('-\x20'+_0x5d5eef['path']+':*');}}_0x3826aa[_0x4c66f0(0x2ab)](''),_0xd5aeca[_0x4c66f0(0x2ab)](_0x3826aa['join']('\x0a')),_0xd5aeca['push'](_0x4c66f0(0x2ae));const _0x5c4887=[],_0x4e8cdc=[];for(const _0x5b9f00 of _0x1591ff){let _0x33d5a2=a0_0xa4cb51[_0x4c66f0(0x2a1)](_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)],_0x5b9f00[_0x4c66f0(0x217)]),_0x35080f=null,_0x4d2d92=null;try{_0x35080f=await a0_0x53dc6d[_0x4c66f0(0x227)](_0x33d5a2,{'encoding':_0x4c66f0(0x2d9)});}catch(_0x52819b){const _0x1a369b=fixPathRepetition(_0x33d5a2);if(_0x1a369b)try{_0x35080f=await a0_0x53dc6d['readFile'](_0x1a369b,{'encoding':_0x4c66f0(0x2d9)}),_0x33d5a2=_0x1a369b;}catch{_0x4d2d92=_0x52819b instanceof Error?_0x52819b:new Error(String(_0x52819b));}else _0x4d2d92=_0x52819b instanceof Error?_0x52819b:new Error(String(_0x52819b));}if(_0x35080f!==null){const _0x120246=_0x35080f[_0x4c66f0(0x2da)](/\r?\n/),_0x3c3136=[];if(_0x5b9f00[_0x4c66f0(0x264)]==='*'||!Array[_0x4c66f0(0x2f3)](_0x5b9f00[_0x4c66f0(0x264)]))for(let _0x21a018=0x1;_0x21a018<=_0x120246[_0x4c66f0(0x244)];_0x21a018++){const _0x3950da=_0x120246[_0x21a018-0x1];_0x3c3136[_0x4c66f0(0x2ab)](_0x21a018+'|\x20'+_0x3950da);}else for(const [_0xe26e87,_0x3307b0]of _0x5b9f00['lines']){_0x3c3136[_0x4c66f0(0x244)]>0x0&&_0x3c3136['push']('');for(let _0x5182ab=_0xe26e87;_0x5182ab<=_0x3307b0&&_0x5182ab<=_0x120246[_0x4c66f0(0x244)];_0x5182ab++){const _0x5fbcf4=_0x120246[_0x5182ab-0x1];_0x3c3136['push'](_0x5182ab+'|\x20'+_0x5fbcf4);}}_0x4e8cdc[_0x4c66f0(0x2ab)]({'path':_0x5b9f00['path'],'content':_0x3c3136[_0x4c66f0(0x201)]('\x0a')});}else _0x5c4887['push'](_0x4c66f0(0x242)+_0x5b9f00[_0x4c66f0(0x217)]+_0x4c66f0(0x1dc)+(_0x4d2d92?.[_0x4c66f0(0x2ad)]||_0x4c66f0(0x2ed))+_0x4c66f0(0x21e));}try{const _0x1cf872=await compactFileContexts(_0x4e8cdc,_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x2f2)],MORPH_API_KEY,MORPH_API_URL);for(const _0x178778 of _0x1cf872){_0x5c4887[_0x4c66f0(0x2ab)](_0x4c66f0(0x242)+_0x178778[_0x4c66f0(0x217)]+'\x22>\x0a'+_0x178778[_0x4c66f0(0x2fb)]+_0x4c66f0(0x21e));}}catch(_0x325101){logger['warn']('MCP','compaction_failed',{'error':_0x325101 instanceof Error?_0x325101[_0x4c66f0(0x2ad)]:String(_0x325101),'files_count':_0x4e8cdc[_0x4c66f0(0x244)]});for(const _0x56a18f of _0x4e8cdc){_0x5c4887[_0x4c66f0(0x2ab)]('<file\x20path=\x22'+_0x56a18f['path']+_0x4c66f0(0x2b5)+_0x56a18f[_0x4c66f0(0x2fb)]+'\x0a</file>');}}_0xd5aeca[_0x4c66f0(0x2ab)](_0x5c4887[_0x4c66f0(0x201)]('\x0a\x0a')),_0x1f8874=_0xd5aeca[_0x4c66f0(0x201)]('\x0a');const _0x3d4d45=_0x1675e3[_0x4c66f0(0x2f5)]?.['filter'](_0x277232=>_0x277232[_0x4c66f0(0x2ad)]?.['startsWith'](_0x4c66f0(0x24d)))||[];if(_0x3d4d45[_0x4c66f0(0x244)]>0x0){const _0x3ba9aa=_0x3d4d45[_0x4c66f0(0x252)](_0x4cdb02=>_0x4cdb02['message'])['join'](';\x20');reportMorphError({'error_message':_0x3ba9aa,'error_type':_0x4c66f0(0x20d),'context':{'tool':_0x4c66f0(0x234),'repo_path':_0x48afe4['data'][_0x4c66f0(0x1e3)],'query':_0x48afe4[_0x4c66f0(0x28e)]['search_string'],'model':_0x4c66f0(0x237),'termination_reason':_0x4c66f0(0x243),'error_count':_0x3d4d45[_0x4c66f0(0x244)],'is_timeout':![],'timings':_0x1675e3[_0x4c66f0(0x2ea)],'files_attempted':_0x1591ff[_0x4c66f0(0x252)](_0x372a1f=>({'path':_0x372a1f['path'],'lines':_0x372a1f['lines']})),'tool_calls':_0x38fb01(_0x1675e3[_0x4c66f0(0x202)]),'messages':_0x1675e3[_0x4c66f0(0x202)]?.[_0x4c66f0(0x252)](_0x45de69=>({'role':_0x45de69['role'],'content':_0x45de69[_0x4c66f0(0x2fb)],..._0x45de69[_0x4c66f0(0x1f7)]?{'tool_calls':_0x45de69[_0x4c66f0(0x1f7)][_0x4c66f0(0x244)]}:{},..._0x45de69['tool_call_id']?{'tool_call_id':_0x45de69['tool_call_id']}:{}})),'request_content':{'query':_0x48afe4['data']['search_string'],'repo_path':_0x48afe4['data'][_0x4c66f0(0x1e3)],'repoRoot':a0_0xa4cb51[_0x4c66f0(0x2a1)](_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)]),'model':'morph-warp-grep-v2.1'}},'source':_0x4c66f0(0x23c)})[_0x4c66f0(0x272)](()=>{});}}else{if(_0x1675e3['terminationReason']===_0x4c66f0(0x25b)&&_0x1675e3[_0x4c66f0(0x2f5)][_0x4c66f0(0x244)]>0x0){const _0x2d5892=_0x1675e3[_0x4c66f0(0x2f5)][_0x4c66f0(0x252)](_0x84ea6e=>_0x84ea6e[_0x4c66f0(0x2ad)])[_0x4c66f0(0x201)](';\x20');_0x1f8874=_0x4c66f0(0x250)+_0x2d5892;const _0x102623=_0x2d5892[_0x4c66f0(0x221)]()[_0x4c66f0(0x235)](_0x4c66f0(0x212))||_0x2d5892[_0x4c66f0(0x221)]()[_0x4c66f0(0x235)]('timed\x20out')||_0x2d5892[_0x4c66f0(0x221)]()['includes'](_0x4c66f0(0x1fd)),_0x5be270=_0x1675e3[_0x4c66f0(0x25c)]?.[_0x4c66f0(0x214)]?.['files'],_0x2af8fd=_0x1675e3[_0x4c66f0(0x2f5)][0x0];reportMorphError({'error_message':_0x2d5892,'error_type':_0x102623?_0x4c66f0(0x2fe):_0x2af8fd?.[_0x4c66f0(0x304)]?.[_0x4c66f0(0x2ca)]||_0x4c66f0(0x2b0),'context':{'tool':_0x4c66f0(0x234),'repo_path':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)],'query':_0x48afe4['data'][_0x4c66f0(0x2f2)],'model':_0x4c66f0(0x237),'termination_reason':_0x1675e3[_0x4c66f0(0x1fb)],'error_count':_0x1675e3[_0x4c66f0(0x2f5)][_0x4c66f0(0x244)],'is_timeout':_0x102623,'timings':_0x1675e3[_0x4c66f0(0x2ea)],'files_attempted':_0x5be270?.['map'](_0x2394ed=>({'path':_0x2394ed[_0x4c66f0(0x217)],'lines':_0x2394ed[_0x4c66f0(0x264)]})),'tool_calls':_0x38fb01(_0x1675e3[_0x4c66f0(0x202)]),'messages':_0x1675e3['messages']?.[_0x4c66f0(0x252)](_0x54ac20=>({'role':_0x54ac20[_0x4c66f0(0x239)],'content':_0x54ac20[_0x4c66f0(0x2fb)],..._0x54ac20[_0x4c66f0(0x1f7)]?{'tool_calls':_0x54ac20[_0x4c66f0(0x1f7)][_0x4c66f0(0x244)]}:{},..._0x54ac20[_0x4c66f0(0x2cd)]?{'tool_call_id':_0x54ac20['tool_call_id']}:{}})),'request_content':{'query':_0x48afe4['data']['search_string'],'repo_path':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)],'repoRoot':a0_0xa4cb51['resolve'](_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)]),'model':_0x4c66f0(0x237)}},'stack_trace':_0x2af8fd?.[_0x4c66f0(0x226)]||undefined,'source':_0x4c66f0(0x23c)})[_0x4c66f0(0x272)](()=>{});}else _0x1f8874=_0x4c66f0(0x26d);}return{'content':[{'type':_0x4c66f0(0x299),'text':_0x1f8874}]};}catch(_0x4c6c00){const _0x4cfeee=handleMorphAPIError(_0x4c6c00);if(_0x4cfeee)return logger[_0x4c66f0(0x1f6)](_0x4c66f0(0x2e7),_0x4c66f0(0x2a0),{'tool':'codebase_search','error':_0x4c66f0(0x20c),'latency_ms':Date['now']()-_0x551b55}),_0x4cfeee;const _0x94f34d=_0x4c6c00 instanceof Error?_0x4c6c00['message']:String(_0x4c6c00);logger[_0x4c66f0(0x1f6)]('MCP',_0x4c66f0(0x2a0),{'tool':'codebase_search','error':_0x94f34d,'repo_path':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)],'query':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x2f2)],'latency_ms':Date['now']()-_0x551b55});const _0xfe50e6=_0x94f34d['toLowerCase']()[_0x4c66f0(0x235)]('timeout')||_0x94f34d['toLowerCase']()[_0x4c66f0(0x235)](_0x4c66f0(0x2d7))||_0x94f34d['toLowerCase']()[_0x4c66f0(0x235)](_0x4c66f0(0x1fd))||_0x4c6c00 instanceof Error&&_0x4c6c00['name']==='TimeoutError';return reportMorphError({'error_message':_0x94f34d,'error_type':_0xfe50e6?_0x4c66f0(0x2fe):_0x4c6c00 instanceof Error?_0x4c6c00['constructor'][_0x4c66f0(0x2ca)]:_0x4c66f0(0x206),'context':{'tool':_0x4c66f0(0x234),'repo_path':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)],'query':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x2f2)],'model':_0x4c66f0(0x237),'is_timeout':_0xfe50e6,'exception_phase':_0x4c66f0(0x258),'request_content':{'query':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x2f2)],'repo_path':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)],'repoRoot':a0_0xa4cb51[_0x4c66f0(0x2a1)](_0x48afe4['data']['repo_path']),'model':_0x4c66f0(0x237)}},'stack_trace':_0x4c6c00 instanceof Error?_0x4c6c00[_0x4c66f0(0x226)]:undefined,'source':_0x4c66f0(0x23c)})[_0x4c66f0(0x272)](()=>{}),{'content':[{'type':_0x4c66f0(0x299),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x94f34d}],'isError':![]};}}case TOOL_NAMES[_0x4c66f0(0x24c)]:{const _0x4a8be3=WarpGrepGitHubArgsSchema[_0x4c66f0(0x29b)](_0x21926f);if(!_0x4a8be3['success'])return{'content':[{'type':'text','text':_0x4c66f0(0x21b)+_0x4a8be3[_0x4c66f0(0x1f6)]}],'isError':!![]};const _0x3513ff=_0x4a8be3['data']['github_url']||_0x4a8be3[_0x4c66f0(0x28e)]['owner_repo'];if(!_0x3513ff)return{'content':[{'type':'text','text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x13477d=MORPH_API_KEY;if(!_0x13477d)throw new Error(_0x4c66f0(0x265));const _0x19c831=Date[_0x4c66f0(0x1ee)]();logger['debug'](_0x4c66f0(0x2e7),_0x4c66f0(0x23a),{'identifier':_0x3513ff,'query':_0x4a8be3[_0x4c66f0(0x28e)][_0x4c66f0(0x2f2)],'branch':_0x4a8be3[_0x4c66f0(0x28e)][_0x4c66f0(0x20f)]});try{const _0x5c1fc1=new WarpGrepClient({'morphApiKey':_0x13477d,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x1c6b9e=await _0x5c1fc1[_0x4c66f0(0x2d5)]({'searchTerm':_0x4a8be3['data'][_0x4c66f0(0x2f2)],'github':_0x3513ff,'branch':_0x4a8be3['data'][_0x4c66f0(0x20f)]}),_0x3483db=Date['now']()-_0x19c831;logMcpStderr(_0x4c66f0(0x246)+_0x3483db+_0x4c66f0(0x2dd)+_0x1c6b9e[_0x4c66f0(0x262)]);const _0x2a5260=formatResult(_0x1c6b9e);return{'content':[{'type':_0x4c66f0(0x299),'text':_0x2a5260}]};}catch(_0x6f11f8){const _0x1715b9=handleMorphAPIError(_0x6f11f8);if(_0x1715b9)return _0x1715b9;const _0x5db94e=Date['now']()-_0x19c831,_0x45f634=_0x6f11f8 instanceof Error?_0x6f11f8[_0x4c66f0(0x2ad)]:String(_0x6f11f8);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x5db94e+_0x4c66f0(0x2d4),_0x45f634),reportMorphError({'error_message':_0x45f634,'error_type':_0x6f11f8 instanceof Error?_0x6f11f8['constructor'][_0x4c66f0(0x2ca)]:'UnknownError','context':{'tool':_0x4c66f0(0x300),'github_url':_0x3513ff,'search_string':_0x4a8be3['data'][_0x4c66f0(0x2f2)],'branch':_0x4a8be3[_0x4c66f0(0x28e)][_0x4c66f0(0x20f)]},'stack_trace':_0x6f11f8 instanceof Error?_0x6f11f8[_0x4c66f0(0x226)]:undefined,'source':_0x4c66f0(0x23c),'tool':_0x4c66f0(0x300),'latency_ms':_0x5db94e})[_0x4c66f0(0x272)](()=>{}),{'content':[{'type':_0x4c66f0(0x299),'text':_0x4c66f0(0x1dd)+_0x45f634}],'isError':![]};}}default:throw new Error(_0x4c66f0(0x2ee)+_0x4170d1);}}catch(_0x39d300){const _0x56ebbb=_0x39d300 instanceof Error?_0x39d300[_0x4c66f0(0x2ad)]:String(_0x39d300);return reportMorphError({'error_message':_0x56ebbb,'error_type':_0x39d300 instanceof Error?_0x39d300[_0x4c66f0(0x304)][_0x4c66f0(0x2ca)]:'UnknownError','context':{'tool':_0x4170d1,'arguments':_0x21926f?JSON[_0x4c66f0(0x27c)](_0x21926f)[_0x4c66f0(0x21c)](0x0,0x1f4):undefined,'mcp_server_version':_0x4c66f0(0x215)},'stack_trace':_0x39d300 instanceof Error?_0x39d300['stack']:undefined,'source':_0x4c66f0(0x23c)})['catch'](()=>{}),{'content':[{'type':_0x4c66f0(0x299),'text':_0x4c66f0(0x250)+_0x56ebbb}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x57dae3){const _0x33e8bf=a0_0x510957,_0x52a679=await getValidRootDirectories(_0x57dae3);if(_0x52a679['length']>0x0)allowedDirectories=[..._0x52a679],logMcpStderr(_0x33e8bf(0x2df)+_0x52a679[_0x33e8bf(0x244)]+_0x33e8bf(0x1f1));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x38d0df=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x38d0df&&(allowedDirectories=[_0x38d0df],logMcpStderr(_0x33e8bf(0x2c4)+_0x38d0df));}catch(_0x4392f8){logMcpStderr(_0x33e8bf(0x23b)+_0x4392f8);}}}server[a0_0x510957(0x236)](RootsListChangedNotificationSchema,async()=>{const _0x32578d=a0_0x510957;try{const _0x462052=await server[_0x32578d(0x273)]();_0x462052&&_0x32578d(0x2aa)in _0x462052&&await updateAllowedDirectoriesFromRoots(_0x462052[_0x32578d(0x2aa)]);}catch(_0x3d8abd){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x3d8abd instanceof Error?_0x3d8abd[_0x32578d(0x2ad)]:String(_0x3d8abd));}}),server['oninitialized']=async()=>{const _0x17f33f=a0_0x510957,_0x2c80ad=server[_0x17f33f(0x1e8)]();if(_0x2c80ad?.[_0x17f33f(0x2aa)])try{const _0x1169e0=await server['listRoots']();_0x1169e0&&_0x17f33f(0x2aa)in _0x1169e0?await updateAllowedDirectoriesFromRoots(_0x1169e0[_0x17f33f(0x2aa)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x4029ca){logMcpStderr(_0x17f33f(0x2c7),_0x4029ca instanceof Error?_0x4029ca[_0x17f33f(0x2ad)]:String(_0x4029ca));}else{if(allowedDirectories['length']>0x0)logMcpStderr(_0x17f33f(0x233),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x17f33f(0x2d3));}}};async function runServer(){const _0x461eb1=a0_0x510957,_0x5e5b79=new StdioServerTransport();await server[_0x461eb1(0x2e3)](_0x5e5b79),logMcpStderr(_0x461eb1(0x2e2)),allowedDirectories[_0x461eb1(0x244)]===0x0&&logMcpStderr(_0x461eb1(0x2f6));}runServer()[a0_0x510957(0x272)](_0x40d508=>{const _0x221de7=a0_0x510957;logMcpStderr(_0x221de7(0x2a2),_0x40d508),process['exit'](0x1);});
package/dist/log-utils.js CHANGED
@@ -1 +1 @@
1
- function a1_0x3b13(){var _0x2abf50=['153330WCzDNU','linux','map','info','1825144btEaTs','32720699ZJTfUO','darwin','6658595WXoQVn','platform','672244sLQNVZ','1TWKXIk','length','5000qzXRaN','7sXPesA','Linux','Windows','9tkvRvb','Unknown','18540nKblff','331146HJwhuB'];a1_0x3b13=function(){return _0x2abf50;};return a1_0x3b13();}var a1_0x5803ce=a1_0x514a;(function(_0xcfa2ab,_0x875f4d){var _0x28cbc9=a1_0x514a,_0x426208=_0xcfa2ab();while(!![]){try{var _0x30baf7=-parseInt(_0x28cbc9(0x158))/0x1*(parseInt(_0x28cbc9(0x14d))/0x2)+parseInt(_0x28cbc9(0x14a))/0x3*(parseInt(_0x28cbc9(0x157))/0x4)+-parseInt(_0x28cbc9(0x155))/0x5+-parseInt(_0x28cbc9(0x14e))/0x6+parseInt(_0x28cbc9(0x147))/0x7*(-parseInt(_0x28cbc9(0x152))/0x8)+-parseInt(_0x28cbc9(0x14c))/0x9*(parseInt(_0x28cbc9(0x146))/0xa)+parseInt(_0x28cbc9(0x153))/0xb;if(_0x30baf7===_0x875f4d)break;else _0x426208['push'](_0x426208['shift']());}catch(_0x4b2496){_0x426208['push'](_0x426208['shift']());}}}(a1_0x3b13,0xaa5ca));import a1_0x422804 from'os';function a1_0x514a(_0x524669,_0x11942f){_0x524669=_0x524669-0x146;var _0x3b13c8=a1_0x3b13();var _0x514ab0=_0x3b13c8[_0x524669];return _0x514ab0;}import{logger}from'./logger.js';export function getOperatingSystemType(_0x26efdf=a1_0x422804[a1_0x5803ce(0x156)]()){var _0x5846e7=a1_0x5803ce;switch(_0x26efdf){case _0x5846e7(0x154):return'macOS';case'win32':return _0x5846e7(0x149);case _0x5846e7(0x14f):return _0x5846e7(0x148);default:return _0x5846e7(0x14b);}}export function formatMcpLogMessage(_0x47633f,_0x533ba1=a1_0x422804['platform']()){return'[os='+getOperatingSystemType(_0x533ba1)+']\x20'+_0x47633f;}export function logMcpStderr(_0x27a4cd,..._0x5dedab){var _0x465b0c=a1_0x5803ce;console['error'](formatMcpLogMessage(_0x27a4cd),..._0x5dedab),logger[_0x465b0c(0x151)]('MCP',_0x27a4cd,_0x5dedab[_0x465b0c(0x159)]?{'args':_0x5dedab[_0x465b0c(0x150)](_0x8e5706=>String(_0x8e5706))}:undefined);}
1
+ var a1_0xb1edfd=a1_0x1449;(function(_0x571dec,_0x2a241f){var _0x3f78a6=a1_0x1449,_0xf37a82=_0x571dec();while(!![]){try{var _0x740230=parseInt(_0x3f78a6(0xd9))/0x1+parseInt(_0x3f78a6(0xcd))/0x2+parseInt(_0x3f78a6(0xd6))/0x3*(parseInt(_0x3f78a6(0xd7))/0x4)+parseInt(_0x3f78a6(0xd3))/0x5*(parseInt(_0x3f78a6(0xd4))/0x6)+-parseInt(_0x3f78a6(0xdd))/0x7*(-parseInt(_0x3f78a6(0xda))/0x8)+-parseInt(_0x3f78a6(0xcc))/0x9*(-parseInt(_0x3f78a6(0xcf))/0xa)+-parseInt(_0x3f78a6(0xd5))/0xb;if(_0x740230===_0x2a241f)break;else _0xf37a82['push'](_0xf37a82['shift']());}catch(_0x58b765){_0xf37a82['push'](_0xf37a82['shift']());}}}(a1_0x8c4f,0x22d9b));import a1_0x553dbd from'os';import{logger}from'./logger.js';export function getOperatingSystemType(_0xaf6c6e=a1_0x553dbd[a1_0xb1edfd(0xdf)]()){var _0x474803=a1_0xb1edfd;switch(_0xaf6c6e){case'darwin':return _0x474803(0xd2);case _0x474803(0xcb):return _0x474803(0xd0);case _0x474803(0xdc):return _0x474803(0xd1);default:return'Unknown';}}export function formatMcpLogMessage(_0x18fd48,_0x12c315=a1_0x553dbd[a1_0xb1edfd(0xdf)]()){var _0x487008=a1_0xb1edfd;return _0x487008(0xde)+getOperatingSystemType(_0x12c315)+']\x20'+_0x18fd48;}function a1_0x1449(_0x36dbb2,_0x1df39d){_0x36dbb2=_0x36dbb2-0xcb;var _0x8c4fe4=a1_0x8c4f();var _0x1449ce=_0x8c4fe4[_0x36dbb2];return _0x1449ce;}function a1_0x8c4f(){var _0x771d4e=['win32','127359yciEiG','448202uiPjMg','MCP','190MsmNXY','Windows','Linux','macOS','30445wlayxE','48sNIVoG','10419178sGHdGz','894aSjwyT','3656krYWeN','error','271387BLYXNH','16grUkda','length','linux','15764ushSWo','[os=','platform'];a1_0x8c4f=function(){return _0x771d4e;};return a1_0x8c4f();}export function logMcpStderr(_0x2fd120,..._0x1cdf72){var _0x3ff7c5=a1_0xb1edfd;console[_0x3ff7c5(0xd8)](formatMcpLogMessage(_0x2fd120),..._0x1cdf72),logger['info'](_0x3ff7c5(0xce),_0x2fd120,_0x1cdf72[_0x3ff7c5(0xdb)]?{'args':_0x1cdf72['map'](_0xfe8b9c=>String(_0xfe8b9c))}:undefined);}
package/dist/logger.js CHANGED
@@ -1 +1 @@
1
- function a2_0x3ef0(){const _0x32f22f=['949105UIuqzt','write','1619412TQOYiO','env','error','enable','enabled','3334840tBTeUt','stringify','1638XMnZpK','info','debug','3005527gWmAeq','fileStream','isEnabled','6QkDTwY','MORPH_DEBUG','MORPH_LOG_FILE','924255VnZLzQ',']\x20[','692YRETFY','warn','_log','200SGwIgI','146277fZdLjb'];a2_0x3ef0=function(){return _0x32f22f;};return a2_0x3ef0();}const a2_0x1d118b=a2_0x3960;(function(_0x6ca4ed,_0x449c9c){const _0xb07bf7=a2_0x3960,_0x4823a9=_0x6ca4ed();while(!![]){try{const _0x7f255b=-parseInt(_0xb07bf7(0x16d))/0x1*(-parseInt(_0xb07bf7(0x162))/0x2)+parseInt(_0xb07bf7(0x16b))/0x3+-parseInt(_0xb07bf7(0x174))/0x4+-parseInt(_0xb07bf7(0x172))/0x5*(-parseInt(_0xb07bf7(0x168))/0x6)+-parseInt(_0xb07bf7(0x165))/0x7+-parseInt(_0xb07bf7(0x170))/0x8*(-parseInt(_0xb07bf7(0x171))/0x9)+-parseInt(_0xb07bf7(0x160))/0xa;if(_0x7f255b===_0x449c9c)break;else _0x4823a9['push'](_0x4823a9['shift']());}catch(_0x20d499){_0x4823a9['push'](_0x4823a9['shift']());}}}(a2_0x3ef0,0x4a0b1));function a2_0x3960(_0x26df71,_0x50ac04){_0x26df71=_0x26df71-0x15f;const _0x3ef095=a2_0x3ef0();let _0x39608f=_0x3ef095[_0x26df71];return _0x39608f;}import{createWriteStream}from'fs';class MorphLogger{[a2_0x1d118b(0x15f)];[a2_0x1d118b(0x166)];constructor(){const _0x13a3d0=a2_0x1d118b;this[_0x13a3d0(0x15f)]=process[_0x13a3d0(0x175)][_0x13a3d0(0x169)]==='1'||!!process['env'][_0x13a3d0(0x16a)];const _0x1aa961=process[_0x13a3d0(0x175)][_0x13a3d0(0x16a)];this[_0x13a3d0(0x166)]=_0x1aa961?createWriteStream(_0x1aa961,{'flags':'a'}):null;}['debug'](_0x489a51,_0x5225d4,_0x1ebc63){const _0x3b4dfc=a2_0x1d118b;this['_log'](_0x3b4dfc(0x164),_0x489a51,_0x5225d4,_0x1ebc63);}[a2_0x1d118b(0x163)](_0x55918a,_0x26c664,_0x3b84c4){const _0x352b9f=a2_0x1d118b;this[_0x352b9f(0x16f)](_0x352b9f(0x163),_0x55918a,_0x26c664,_0x3b84c4);}['warn'](_0x58a090,_0x3ef059,_0x73215d){const _0x373eba=a2_0x1d118b;this[_0x373eba(0x16f)](_0x373eba(0x16e),_0x58a090,_0x3ef059,_0x73215d);}[a2_0x1d118b(0x176)](_0x49c80a,_0x521921,_0x50eedc){const _0x314ece=a2_0x1d118b;this[_0x314ece(0x16f)](_0x314ece(0x176),_0x49c80a,_0x521921,_0x50eedc);}[a2_0x1d118b(0x177)](){const _0x170cef=a2_0x1d118b;this[_0x170cef(0x15f)]=!![];}get[a2_0x1d118b(0x167)](){const _0x9fe94e=a2_0x1d118b;return this[_0x9fe94e(0x15f)];}['_log'](_0x55d847,_0x49a10f,_0xf59050,_0x3e98d0){const _0x4bce05=a2_0x1d118b;if(_0x55d847!=='error'&&!this[_0x4bce05(0x15f)])return;const _0x29d295=new Date()['toISOString'](),_0x5735ce='['+_0x29d295+_0x4bce05(0x16c)+_0x55d847['toUpperCase']()+_0x4bce05(0x16c)+_0x49a10f+']';console[_0x4bce05(0x176)](_0x3e98d0?_0x5735ce+'\x20'+_0xf59050+'\x20'+JSON[_0x4bce05(0x161)](_0x3e98d0):_0x5735ce+'\x20'+_0xf59050),this['fileStream']?.[_0x4bce05(0x173)](JSON['stringify']({'ts':_0x29d295,'level':_0x55d847,'component':_0x49a10f,'msg':_0xf59050,..._0x3e98d0&&{'data':_0x3e98d0}})+'\x0a');}}export const logger=new MorphLogger();
1
+ function a2_0x226f(_0x252dba,_0x40c0b3){_0x252dba=_0x252dba-0x6f;const _0x131163=a2_0x1311();let _0x226fff=_0x131163[_0x252dba];return _0x226fff;}const a2_0x17f227=a2_0x226f;function a2_0x1311(){const _0x532c13=['info','stringify','777475poBPDh','toUpperCase','111536QanUCw','931880Nlsckv','25gSnmmX','66aUfnyQ','2235828OtHBBk','143109srtBZe','49veEExK','_log','isEnabled','36BgeXFh','env','enabled','455972lnELYY','enable','MORPH_DEBUG','write','error','warn','fileStream','debug','12zwaVoa','4706QeqMlY',']\x20[','MORPH_LOG_FILE'];a2_0x1311=function(){return _0x532c13;};return a2_0x1311();}(function(_0x3cb635,_0x4aea6a){const _0x29c62d=a2_0x226f,_0x33d3db=_0x3cb635();while(!![]){try{const _0x16389a=parseInt(_0x29c62d(0x80))/0x1*(-parseInt(_0x29c62d(0x77))/0x2)+parseInt(_0x29c62d(0x83))/0x3+-parseInt(_0x29c62d(0x8a))/0x4+parseInt(_0x29c62d(0x7c))/0x5*(-parseInt(_0x29c62d(0x76))/0x6)+-parseInt(_0x29c62d(0x84))/0x7*(parseInt(_0x29c62d(0x7e))/0x8)+-parseInt(_0x29c62d(0x87))/0x9*(parseInt(_0x29c62d(0x7f))/0xa)+parseInt(_0x29c62d(0x81))/0xb*(parseInt(_0x29c62d(0x82))/0xc);if(_0x16389a===_0x4aea6a)break;else _0x33d3db['push'](_0x33d3db['shift']());}catch(_0xbb66b4){_0x33d3db['push'](_0x33d3db['shift']());}}}(a2_0x1311,0x33a07));import{createWriteStream}from'fs';class MorphLogger{[a2_0x17f227(0x89)];[a2_0x17f227(0x74)];constructor(){const _0x397e8b=a2_0x17f227;this[_0x397e8b(0x89)]=process['env'][_0x397e8b(0x70)]==='1'||!!process['env'][_0x397e8b(0x79)];const _0x37b1d3=process[_0x397e8b(0x88)]['MORPH_LOG_FILE'];this[_0x397e8b(0x74)]=_0x37b1d3?createWriteStream(_0x37b1d3,{'flags':'a'}):null;}[a2_0x17f227(0x75)](_0x35e90f,_0x27e7c9,_0x2ab8fc){const _0x422150=a2_0x17f227;this[_0x422150(0x85)](_0x422150(0x75),_0x35e90f,_0x27e7c9,_0x2ab8fc);}[a2_0x17f227(0x7a)](_0x5a9725,_0x4158bd,_0x5ce550){const _0x61da31=a2_0x17f227;this[_0x61da31(0x85)](_0x61da31(0x7a),_0x5a9725,_0x4158bd,_0x5ce550);}['warn'](_0x485e83,_0x5d3f79,_0x3c3cb8){const _0x388d3f=a2_0x17f227;this['_log'](_0x388d3f(0x73),_0x485e83,_0x5d3f79,_0x3c3cb8);}[a2_0x17f227(0x72)](_0x58fa32,_0x18eaef,_0x1df5d7){const _0x315251=a2_0x17f227;this[_0x315251(0x85)](_0x315251(0x72),_0x58fa32,_0x18eaef,_0x1df5d7);}[a2_0x17f227(0x6f)](){const _0x4fbc42=a2_0x17f227;this[_0x4fbc42(0x89)]=!![];}get[a2_0x17f227(0x86)](){const _0x2c5867=a2_0x17f227;return this[_0x2c5867(0x89)];}[a2_0x17f227(0x85)](_0x21887e,_0x471ba8,_0x561bce,_0x3d89f2){const _0x3e035d=a2_0x17f227;if(_0x21887e!==_0x3e035d(0x72)&&!this[_0x3e035d(0x89)])return;const _0x24b130=new Date()['toISOString'](),_0x15c431='['+_0x24b130+']\x20['+_0x21887e[_0x3e035d(0x7d)]()+_0x3e035d(0x78)+_0x471ba8+']';console[_0x3e035d(0x72)](_0x3d89f2?_0x15c431+'\x20'+_0x561bce+'\x20'+JSON[_0x3e035d(0x7b)](_0x3d89f2):_0x15c431+'\x20'+_0x561bce),this[_0x3e035d(0x74)]?.[_0x3e035d(0x71)](JSON['stringify']({'ts':_0x24b130,'level':_0x21887e,'component':_0x471ba8,'msg':_0x561bce,..._0x3d89f2&&{'data':_0x3d89f2}})+'\x0a');}}export const logger=new MorphLogger();
@@ -1 +1 @@
1
- (function(_0x5b623d,_0x3ee95d){const _0x30b7b9=a3_0x411e,_0x7948c1=_0x5b623d();while(!![]){try{const _0x443181=parseInt(_0x30b7b9(0x13e))/0x1+parseInt(_0x30b7b9(0x143))/0x2+-parseInt(_0x30b7b9(0x13b))/0x3*(-parseInt(_0x30b7b9(0x142))/0x4)+parseInt(_0x30b7b9(0x137))/0x5*(parseInt(_0x30b7b9(0x12e))/0x6)+-parseInt(_0x30b7b9(0x135))/0x7*(-parseInt(_0x30b7b9(0x134))/0x8)+parseInt(_0x30b7b9(0x13f))/0x9+-parseInt(_0x30b7b9(0x131))/0xa*(parseInt(_0x30b7b9(0x139))/0xb);if(_0x443181===_0x3ee95d)break;else _0x7948c1['push'](_0x7948c1['shift']());}catch(_0xf4f613){_0x7948c1['push'](_0x7948c1['shift']());}}}(a3_0xe923,0x2a497));import a3_0x2f0cba from'path';function a3_0xe923(){const _0xad8254=['51594ccRzyx','homedir','42xJiNzR','replace','/mnt/','10hcZCPR','join','match','3272msEtrv','4613czaCFl','substring','205680mPvueH','toUpperCase','11076670yXqBCn','slice','99ypsTJN','trim','startsWith','140227wOBtOG','2251404mtNUDS','normalize','charAt','25032LXCLTR'];a3_0xe923=function(){return _0xad8254;};return a3_0xe923();}import a3_0x3717b0 from'os';export function convertToWindowsPath(_0xef912f){const _0x179da6=a3_0x411e;if(_0xef912f[_0x179da6(0x13d)](_0x179da6(0x130))){const _0x498834=_0xef912f[_0x179da6(0x141)](0x5)[_0x179da6(0x138)](),_0x533e2b=_0xef912f[_0x179da6(0x13a)](0x6)['replace'](/\//g,'\x5c');return _0x498834+':'+_0x533e2b;}if(_0xef912f[_0x179da6(0x133)](/^\/[a-zA-Z]\//)){const _0x3a826a=_0xef912f['charAt'](0x1)['toUpperCase'](),_0x293699=_0xef912f[_0x179da6(0x13a)](0x2)[_0x179da6(0x12f)](/\//g,'\x5c');return _0x3a826a+':'+_0x293699;}if(_0xef912f['match'](/^[a-zA-Z]:/))return _0xef912f[_0x179da6(0x12f)](/\//g,'\x5c');return _0xef912f;}function a3_0x411e(_0x5ce11c,_0x15b5f9){_0x5ce11c=_0x5ce11c-0x12e;const _0xe923f4=a3_0xe923();let _0x411e91=_0xe923f4[_0x5ce11c];return _0x411e91;}export function normalizePath(_0x593e3d){const _0x30254f=a3_0x411e;_0x593e3d=_0x593e3d[_0x30254f(0x13c)]()['replace'](/^["']|["']$/g,'');const _0x16ea09=_0x593e3d['startsWith']('/')&&!_0x593e3d[_0x30254f(0x133)](/^\/mnt\/[a-z]\//i)&&!_0x593e3d[_0x30254f(0x133)](/^\/[a-zA-Z]\//);if(_0x16ea09)return _0x593e3d[_0x30254f(0x12f)](/\/+/g,'/')[_0x30254f(0x12f)](/\/+$/,'');_0x593e3d=convertToWindowsPath(_0x593e3d);if(_0x593e3d['startsWith']('\x5c\x5c')){let _0x432dd1=_0x593e3d;_0x432dd1=_0x432dd1['replace'](/^\\{2,}/,'\x5c\x5c');const _0x119a05=_0x432dd1[_0x30254f(0x136)](0x2)[_0x30254f(0x12f)](/\\\\/g,'\x5c');_0x593e3d='\x5c\x5c'+_0x119a05;}else _0x593e3d=_0x593e3d[_0x30254f(0x12f)](/\\\\/g,'\x5c');let _0x568aa6=a3_0x2f0cba[_0x30254f(0x140)](_0x593e3d);_0x593e3d['startsWith']('\x5c\x5c')&&!_0x568aa6[_0x30254f(0x13d)]('\x5c\x5c')&&(_0x568aa6='\x5c'+_0x568aa6);if(_0x568aa6[_0x30254f(0x133)](/^[a-zA-Z]:/)){let _0x40cb91=_0x568aa6[_0x30254f(0x12f)](/\//g,'\x5c');return/^[a-z]:/['test'](_0x40cb91)&&(_0x40cb91=_0x40cb91[_0x30254f(0x141)](0x0)[_0x30254f(0x138)]()+_0x40cb91['slice'](0x1)),_0x40cb91;}return _0x568aa6['replace'](/\//g,'\x5c');}export function expandHome(_0x15c73b){const _0x4c78cc=a3_0x411e;if(_0x15c73b[_0x4c78cc(0x13d)]('~/')||_0x15c73b==='~')return a3_0x2f0cba[_0x4c78cc(0x132)](a3_0x3717b0[_0x4c78cc(0x144)](),_0x15c73b[_0x4c78cc(0x13a)](0x1));return _0x15c73b;}
1
+ (function(_0x341bd1,_0x36e350){const _0x54b19c=a3_0x1525,_0x114c16=_0x341bd1();while(!![]){try{const _0x5afd55=-parseInt(_0x54b19c(0x13e))/0x1*(-parseInt(_0x54b19c(0x12f))/0x2)+parseInt(_0x54b19c(0x131))/0x3*(parseInt(_0x54b19c(0x129))/0x4)+-parseInt(_0x54b19c(0x132))/0x5*(-parseInt(_0x54b19c(0x13b))/0x6)+parseInt(_0x54b19c(0x12e))/0x7*(-parseInt(_0x54b19c(0x13d))/0x8)+parseInt(_0x54b19c(0x136))/0x9+parseInt(_0x54b19c(0x13c))/0xa+parseInt(_0x54b19c(0x137))/0xb*(-parseInt(_0x54b19c(0x139))/0xc);if(_0x5afd55===_0x36e350)break;else _0x114c16['push'](_0x114c16['shift']());}catch(_0x32c2db){_0x114c16['push'](_0x114c16['shift']());}}}(a3_0x160a,0x3e397));import a3_0x151a0d from'path';import a3_0x4f7b5c from'os';export function convertToWindowsPath(_0x1a9642){const _0x30e2a5=a3_0x1525;if(_0x1a9642[_0x30e2a5(0x138)](_0x30e2a5(0x12a))){const _0x413dd8=_0x1a9642[_0x30e2a5(0x135)](0x5)[_0x30e2a5(0x12b)](),_0x2bc99a=_0x1a9642['slice'](0x6)['replace'](/\//g,'\x5c');return _0x413dd8+':'+_0x2bc99a;}if(_0x1a9642[_0x30e2a5(0x12c)](/^\/[a-zA-Z]\//)){const _0x2b038b=_0x1a9642[_0x30e2a5(0x135)](0x1)['toUpperCase'](),_0x443054=_0x1a9642[_0x30e2a5(0x134)](0x2)[_0x30e2a5(0x13a)](/\//g,'\x5c');return _0x2b038b+':'+_0x443054;}if(_0x1a9642[_0x30e2a5(0x12c)](/^[a-zA-Z]:/))return _0x1a9642['replace'](/\//g,'\x5c');return _0x1a9642;}export function normalizePath(_0x9d5380){const _0xe46d1a=a3_0x1525;_0x9d5380=_0x9d5380[_0xe46d1a(0x130)]()[_0xe46d1a(0x13a)](/^["']|["']$/g,'');const _0x262b05=_0x9d5380[_0xe46d1a(0x138)]('/')&&!_0x9d5380['match'](/^\/mnt\/[a-z]\//i)&&!_0x9d5380[_0xe46d1a(0x12c)](/^\/[a-zA-Z]\//);if(_0x262b05)return _0x9d5380['replace'](/\/+/g,'/')[_0xe46d1a(0x13a)](/\/+$/,'');_0x9d5380=convertToWindowsPath(_0x9d5380);if(_0x9d5380[_0xe46d1a(0x138)]('\x5c\x5c')){let _0xcf8267=_0x9d5380;_0xcf8267=_0xcf8267['replace'](/^\\{2,}/,'\x5c\x5c');const _0x28cd6d=_0xcf8267[_0xe46d1a(0x133)](0x2)[_0xe46d1a(0x13a)](/\\\\/g,'\x5c');_0x9d5380='\x5c\x5c'+_0x28cd6d;}else _0x9d5380=_0x9d5380[_0xe46d1a(0x13a)](/\\\\/g,'\x5c');let _0x1b782a=a3_0x151a0d['normalize'](_0x9d5380);_0x9d5380[_0xe46d1a(0x138)]('\x5c\x5c')&&!_0x1b782a['startsWith']('\x5c\x5c')&&(_0x1b782a='\x5c'+_0x1b782a);if(_0x1b782a['match'](/^[a-zA-Z]:/)){let _0x153181=_0x1b782a['replace'](/\//g,'\x5c');return/^[a-z]:/['test'](_0x153181)&&(_0x153181=_0x153181['charAt'](0x0)[_0xe46d1a(0x12b)]()+_0x153181['slice'](0x1)),_0x153181;}return _0x1b782a['replace'](/\//g,'\x5c');}function a3_0x1525(_0x4bf649,_0x5cbcf0){_0x4bf649=_0x4bf649-0x128;const _0x160ad1=a3_0x160a();let _0x15252e=_0x160ad1[_0x4bf649];return _0x15252e;}function a3_0x160a(){const _0x29181c=['1860xUXeBv','replace','6xQdkup','4745980niyhWS','8vmfxRz','10HWTJqu','join','4nUhgGj','/mnt/','toUpperCase','match','homedir','2948526SuIrHF','77218TMiBSX','trim','622527jmvRLr','1756385MBTiJu','substring','slice','charAt','99000ldgvCe','53537QdMayj','startsWith'];a3_0x160a=function(){return _0x29181c;};return a3_0x160a();}export function expandHome(_0xd971a9){const _0x48a89a=a3_0x1525;if(_0xd971a9['startsWith']('~/')||_0xd971a9==='~')return a3_0x151a0d[_0x48a89a(0x128)](a3_0x4f7b5c[_0x48a89a(0x12d)](),_0xd971a9[_0x48a89a(0x134)](0x1));return _0xd971a9;}
@@ -1 +1 @@
1
- (function(_0x2597ec,_0x93710b){const _0x248a4a=a4_0x4764,_0x4d82ab=_0x2597ec();while(!![]){try{const _0x224359=-parseInt(_0x248a4a(0x93))/0x1*(-parseInt(_0x248a4a(0x91))/0x2)+-parseInt(_0x248a4a(0x97))/0x3*(-parseInt(_0x248a4a(0x8d))/0x4)+-parseInt(_0x248a4a(0x8c))/0x5+parseInt(_0x248a4a(0x9a))/0x6*(-parseInt(_0x248a4a(0x90))/0x7)+-parseInt(_0x248a4a(0x85))/0x8*(-parseInt(_0x248a4a(0x88))/0x9)+parseInt(_0x248a4a(0x92))/0xa*(-parseInt(_0x248a4a(0x86))/0xb)+-parseInt(_0x248a4a(0x8f))/0xc*(-parseInt(_0x248a4a(0x98))/0xd);if(_0x224359===_0x93710b)break;else _0x4d82ab['push'](_0x4d82ab['shift']());}catch(_0xe47e6f){_0x4d82ab['push'](_0x4d82ab['shift']());}}}(a4_0x4332,0x474b8));import a4_0x56603b from'path';function a4_0x4332(){const _0x238001=['128558ZpmQsF','10JbEfey','2QfROMO','startsWith','string','isAbsolute','3OEMPIn','13ZECzai','resolve','54LRmZDf','length','33272yRKZos','1211771pxQiXQ','includes','738HUlDuE','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','isArray','sep','2366210Mrfwfe','1447228vKeeAE','normalize','3280668saLaPf','178395nsCylt'];a4_0x4332=function(){return _0x238001;};return a4_0x4332();}function a4_0x4764(_0x39c544,_0x675d00){_0x39c544=_0x39c544-0x84;const _0x4332a6=a4_0x4332();let _0x4764c7=_0x4332a6[_0x39c544];return _0x4764c7;}export function isPathWithinAllowedDirectories(_0x4e5402,_0x3ef550){const _0x2b61d3=a4_0x4764;if(typeof _0x4e5402!==_0x2b61d3(0x95)||!Array[_0x2b61d3(0x8a)](_0x3ef550))return![];if(!_0x4e5402||_0x3ef550[_0x2b61d3(0x84)]===0x0)return![];if(_0x4e5402[_0x2b61d3(0x87)]('\x00'))return![];let _0x2941d3;try{_0x2941d3=a4_0x56603b[_0x2b61d3(0x99)](a4_0x56603b[_0x2b61d3(0x8e)](_0x4e5402));}catch{return![];}if(!a4_0x56603b[_0x2b61d3(0x96)](_0x2941d3))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x3ef550['some'](_0x5441ea=>{const _0x3ff06e=_0x2b61d3;if(typeof _0x5441ea!==_0x3ff06e(0x95)||!_0x5441ea)return![];if(_0x5441ea[_0x3ff06e(0x87)]('\x00'))return![];let _0x1d44bc;try{_0x1d44bc=a4_0x56603b[_0x3ff06e(0x99)](a4_0x56603b['normalize'](_0x5441ea));}catch{return![];}if(!a4_0x56603b['isAbsolute'](_0x1d44bc))throw new Error(_0x3ff06e(0x89));if(_0x2941d3===_0x1d44bc)return!![];if(_0x1d44bc===a4_0x56603b[_0x3ff06e(0x8b)])return _0x2941d3[_0x3ff06e(0x94)](a4_0x56603b[_0x3ff06e(0x8b)]);return _0x2941d3['startsWith'](_0x1d44bc+a4_0x56603b[_0x3ff06e(0x8b)]);});}
1
+ (function(_0x55b880,_0xe8d60c){const _0x15712f=a4_0x95db,_0x508bf4=_0x55b880();while(!![]){try{const _0x556007=-parseInt(_0x15712f(0x1b9))/0x1+-parseInt(_0x15712f(0x1b3))/0x2*(parseInt(_0x15712f(0x1bf))/0x3)+parseInt(_0x15712f(0x1c0))/0x4*(parseInt(_0x15712f(0x1bd))/0x5)+parseInt(_0x15712f(0x1b6))/0x6*(-parseInt(_0x15712f(0x1c1))/0x7)+parseInt(_0x15712f(0x1be))/0x8*(-parseInt(_0x15712f(0x1b2))/0x9)+parseInt(_0x15712f(0x1b0))/0xa+parseInt(_0x15712f(0x1b5))/0xb;if(_0x556007===_0xe8d60c)break;else _0x508bf4['push'](_0x508bf4['shift']());}catch(_0xc5c739){_0x508bf4['push'](_0x508bf4['shift']());}}}(a4_0x4396,0x845d6));import a4_0x40d21b from'path';function a4_0x95db(_0x39f1f6,_0x14e440){_0x39f1f6=_0x39f1f6-0x1ae;const _0x439633=a4_0x4396();let _0x95dbf4=_0x439633[_0x39f1f6];return _0x95dbf4;}function a4_0x4396(){const _0x213563=['sep','isArray','1850570TlCDMq','some','3231qUtJHk','4120NbuLsZ','isAbsolute','30291261uhQWjP','399522zhUEeh','length','string','818178Aemmbn','normalize','startsWith','resolve','153985drpNhe','8152QzOnnd','789bbLgWR','8nFNGBV','77JKsKSi','includes'];a4_0x4396=function(){return _0x213563;};return a4_0x4396();}export function isPathWithinAllowedDirectories(_0x24e64c,_0x1e92d2){const _0x4a8885=a4_0x95db;if(typeof _0x24e64c!=='string'||!Array[_0x4a8885(0x1af)](_0x1e92d2))return![];if(!_0x24e64c||_0x1e92d2[_0x4a8885(0x1b7)]===0x0)return![];if(_0x24e64c[_0x4a8885(0x1c2)]('\x00'))return![];let _0x477365;try{_0x477365=a4_0x40d21b['resolve'](a4_0x40d21b['normalize'](_0x24e64c));}catch{return![];}if(!a4_0x40d21b[_0x4a8885(0x1b4)](_0x477365))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x1e92d2[_0x4a8885(0x1b1)](_0x38fe7b=>{const _0x2c92a3=_0x4a8885;if(typeof _0x38fe7b!==_0x2c92a3(0x1b8)||!_0x38fe7b)return![];if(_0x38fe7b[_0x2c92a3(0x1c2)]('\x00'))return![];let _0x4a3d55;try{_0x4a3d55=a4_0x40d21b[_0x2c92a3(0x1bc)](a4_0x40d21b[_0x2c92a3(0x1ba)](_0x38fe7b));}catch{return![];}if(!a4_0x40d21b[_0x2c92a3(0x1b4)](_0x4a3d55))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0x477365===_0x4a3d55)return!![];if(_0x4a3d55===a4_0x40d21b['sep'])return _0x477365[_0x2c92a3(0x1bb)](a4_0x40d21b[_0x2c92a3(0x1ae)]);return _0x477365[_0x2c92a3(0x1bb)](_0x4a3d55+a4_0x40d21b[_0x2c92a3(0x1ae)]);});}
@@ -1 +1 @@
1
- (function(_0x99be5d,_0x7957e2){const _0x3ad14c=a5_0x21c1,_0x2697b7=_0x99be5d();while(!![]){try{const _0x3e6eb8=-parseInt(_0x3ad14c(0x15d))/0x1+parseInt(_0x3ad14c(0x170))/0x2+-parseInt(_0x3ad14c(0x15f))/0x3*(-parseInt(_0x3ad14c(0x15e))/0x4)+parseInt(_0x3ad14c(0x160))/0x5+-parseInt(_0x3ad14c(0x168))/0x6+-parseInt(_0x3ad14c(0x169))/0x7+parseInt(_0x3ad14c(0x162))/0x8*(parseInt(_0x3ad14c(0x16f))/0x9);if(_0x3e6eb8===_0x7957e2)break;else _0x2697b7['push'](_0x2697b7['shift']());}catch(_0x4781b4){_0x2697b7['push'](_0x2697b7['shift']());}}}(a5_0x2d6f,0x36e6c));import{promises as a5_0x4a998d}from'fs';import a5_0x5716ed from'path';import a5_0x2faf23 from'os';function a5_0x2d6f(){const _0x4ea590=['\x20due\x20to\x20error:\x20','2926602YfBdKH','414572cfOdyo','Skipping\x20','realpath','198452KRihfX','172KYaxKx','20613HyfjyS','2078780qNyflX','uri','8UWaCWY','homedir','slice','join','invalid\x20path\x20or\x20inaccessible','non-directory\x20root','2474022KhATyb','2856056guouCr','isDirectory','push','resolve','startsWith'];a5_0x2d6f=function(){return _0x4ea590;};return a5_0x2d6f();}import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x409618){const _0xd20634=a5_0x21c1;try{const _0x18de23=_0x409618[_0xd20634(0x16d)]('file://')?_0x409618[_0xd20634(0x164)](0x7):_0x409618,_0x29bbc7=_0x18de23['startsWith']('~/')||_0x18de23==='~'?a5_0x5716ed[_0xd20634(0x165)](a5_0x2faf23[_0xd20634(0x163)](),_0x18de23[_0xd20634(0x164)](0x1)):_0x18de23,_0x2256af=a5_0x5716ed[_0xd20634(0x16c)](_0x29bbc7),_0x4836b1=await a5_0x4a998d[_0xd20634(0x172)](_0x2256af);return normalizePath(_0x4836b1);}catch{return null;}}function formatDirectoryError(_0x4ee7a7,_0x40fc7f,_0x31362e){const _0x5d06fa=a5_0x21c1;if(_0x31362e)return _0x5d06fa(0x171)+_0x31362e+':\x20'+_0x4ee7a7;const _0x311300=_0x40fc7f instanceof Error?_0x40fc7f['message']:String(_0x40fc7f);return'Skipping\x20invalid\x20directory:\x20'+_0x4ee7a7+_0x5d06fa(0x16e)+_0x311300;}function a5_0x21c1(_0x5b1da3,_0x1ce81b){_0x5b1da3=_0x5b1da3-0x15d;const _0x2d6ff9=a5_0x2d6f();let _0x21c1dc=_0x2d6ff9[_0x5b1da3];return _0x21c1dc;}export async function getValidRootDirectories(_0x5ca372){const _0x124d8a=a5_0x21c1,_0x3bf645=[];for(const _0x3554ee of _0x5ca372){const _0x2ead2a=await parseRootUri(_0x3554ee[_0x124d8a(0x161)]);if(!_0x2ead2a){logMcpStderr(formatDirectoryError(_0x3554ee[_0x124d8a(0x161)],undefined,_0x124d8a(0x166)));continue;}try{const _0x3036c7=await a5_0x4a998d['stat'](_0x2ead2a);_0x3036c7[_0x124d8a(0x16a)]()?_0x3bf645[_0x124d8a(0x16b)](_0x2ead2a):logMcpStderr(formatDirectoryError(_0x2ead2a,undefined,_0x124d8a(0x167)));}catch(_0x3023a4){logMcpStderr(formatDirectoryError(_0x2ead2a,_0x3023a4));}}return _0x3bf645;}
1
+ function a5_0x4ac0(_0x35db91,_0xdd7c1a){_0x35db91=_0x35db91-0x168;const _0x1d5047=a5_0x1d50();let _0x4ac07a=_0x1d5047[_0x35db91];return _0x4ac07a;}function a5_0x1d50(){const _0xdc71f7=['message','4932QPVEWp','non-directory\x20root','704cHDlIe','997350mnfPlL','85fXDoym','120gCNqUW','isDirectory','Skipping\x20','resolve','3973410agKTaJ','realpath','homedir','Skipping\x20invalid\x20directory:\x20','2929527mKvgol','startsWith','1733052bVFooD','228116OKjlsj','join','slice','uri','stat','11120WJGAZH'];a5_0x1d50=function(){return _0xdc71f7;};return a5_0x1d50();}(function(_0x2fca48,_0x7d5815){const _0x58f817=a5_0x4ac0,_0x47a825=_0x2fca48();while(!![]){try{const _0x116171=parseInt(_0x58f817(0x16d))/0x1*(parseInt(_0x58f817(0x17e))/0x2)+parseInt(_0x58f817(0x169))/0x3*(parseInt(_0x58f817(0x16b))/0x4)+-parseInt(_0x58f817(0x16c))/0x5+parseInt(_0x58f817(0x178))/0x6+-parseInt(_0x58f817(0x179))/0x7*(parseInt(_0x58f817(0x16e))/0x8)+parseInt(_0x58f817(0x176))/0x9+-parseInt(_0x58f817(0x172))/0xa;if(_0x116171===_0x7d5815)break;else _0x47a825['push'](_0x47a825['shift']());}catch(_0x5b917d){_0x47a825['push'](_0x47a825['shift']());}}}(a5_0x1d50,0x46f62));import{promises as a5_0x1a611f}from'fs';import a5_0x1b4b21 from'path';import a5_0x2d5c4d from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x37c5d7){const _0x1ea04e=a5_0x4ac0;try{const _0x1436bb=_0x37c5d7[_0x1ea04e(0x177)]('file://')?_0x37c5d7[_0x1ea04e(0x17b)](0x7):_0x37c5d7,_0x51dfa7=_0x1436bb[_0x1ea04e(0x177)]('~/')||_0x1436bb==='~'?a5_0x1b4b21[_0x1ea04e(0x17a)](a5_0x2d5c4d[_0x1ea04e(0x174)](),_0x1436bb[_0x1ea04e(0x17b)](0x1)):_0x1436bb,_0x4b70bf=a5_0x1b4b21[_0x1ea04e(0x171)](_0x51dfa7),_0x22de7d=await a5_0x1a611f[_0x1ea04e(0x173)](_0x4b70bf);return normalizePath(_0x22de7d);}catch{return null;}}function formatDirectoryError(_0x15b853,_0x36fa57,_0x3b436f){const _0x5d8a46=a5_0x4ac0;if(_0x3b436f)return _0x5d8a46(0x170)+_0x3b436f+':\x20'+_0x15b853;const _0x547bd5=_0x36fa57 instanceof Error?_0x36fa57[_0x5d8a46(0x168)]:String(_0x36fa57);return _0x5d8a46(0x175)+_0x15b853+'\x20due\x20to\x20error:\x20'+_0x547bd5;}export async function getValidRootDirectories(_0x467c6a){const _0x4d86e0=a5_0x4ac0,_0x16155e=[];for(const _0xe1abb of _0x467c6a){const _0x49617d=await parseRootUri(_0xe1abb[_0x4d86e0(0x17c)]);if(!_0x49617d){logMcpStderr(formatDirectoryError(_0xe1abb[_0x4d86e0(0x17c)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x2a3589=await a5_0x1a611f[_0x4d86e0(0x17d)](_0x49617d);_0x2a3589[_0x4d86e0(0x16f)]()?_0x16155e['push'](_0x49617d):logMcpStderr(formatDirectoryError(_0x49617d,undefined,_0x4d86e0(0x16a)));}catch(_0xbab4ee){logMcpStderr(formatDirectoryError(_0x49617d,_0xbab4ee));}}return _0x16155e;}
@@ -1 +1 @@
1
- function a6_0x2c86(){const _0x4b73e5=['402AFeSBh','values','472mTAZyG','13463892NfQUoB','11565jgRdzb','11BJbRWo','github_codebase_search','2170986JIebZe','edit_file','4AhdlGv','8742710JCHWCl','1pEXnPp','926566HSQjVN','892845PIukOP','9779Uspqaw','codebase_search'];a6_0x2c86=function(){return _0x4b73e5;};return a6_0x2c86();}const a6_0x31f936=a6_0x2538;(function(_0x404d0c,_0x284fa8){const _0x7654f5=a6_0x2538,_0x218428=_0x404d0c();while(!![]){try{const _0x30dc89=parseInt(_0x7654f5(0x132))/0x1*(-parseInt(_0x7654f5(0x133))/0x2)+-parseInt(_0x7654f5(0x13e))/0x3*(-parseInt(_0x7654f5(0x140))/0x4)+-parseInt(_0x7654f5(0x134))/0x5+parseInt(_0x7654f5(0x137))/0x6*(parseInt(_0x7654f5(0x135))/0x7)+parseInt(_0x7654f5(0x139))/0x8*(parseInt(_0x7654f5(0x13b))/0x9)+-parseInt(_0x7654f5(0x141))/0xa*(parseInt(_0x7654f5(0x13c))/0xb)+parseInt(_0x7654f5(0x13a))/0xc;if(_0x30dc89===_0x284fa8)break;else _0x218428['push'](_0x218428['shift']());}catch(_0x4ba8b2){_0x218428['push'](_0x218428['shift']());}}}(a6_0x2c86,0x79d00));export const TOOL_NAMES={'EDIT_FILE':a6_0x31f936(0x13f),'CODEBASE_SEARCH':a6_0x31f936(0x136),'GITHUB_CODEBASE_SEARCH':a6_0x31f936(0x13d)};function a6_0x2538(_0x30f8df,_0x5ba12e){_0x30f8df=_0x30f8df-0x132;const _0x2c86f4=a6_0x2c86();let _0x25380d=_0x2c86f4[_0x30f8df];return _0x25380d;}export const ALL_TOOL_NAMES=Object[a6_0x31f936(0x138)](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);
1
+ function a6_0x514f(_0x4d3732,_0xb4f928){_0x4d3732=_0x4d3732-0x156;const _0x1a3afe=a6_0x1a3a();let _0x514f48=_0x1a3afe[_0x4d3732];return _0x514f48;}const a6_0x5ec5ff=a6_0x514f;(function(_0x5b6180,_0x4eec6e){const _0x32724f=a6_0x514f,_0x5cb185=_0x5b6180();while(!![]){try{const _0x40ac4c=parseInt(_0x32724f(0x15d))/0x1+parseInt(_0x32724f(0x15e))/0x2+parseInt(_0x32724f(0x158))/0x3+parseInt(_0x32724f(0x15a))/0x4*(parseInt(_0x32724f(0x15c))/0x5)+-parseInt(_0x32724f(0x15f))/0x6+-parseInt(_0x32724f(0x156))/0x7*(parseInt(_0x32724f(0x159))/0x8)+-parseInt(_0x32724f(0x15b))/0x9;if(_0x40ac4c===_0x4eec6e)break;else _0x5cb185['push'](_0x5cb185['shift']());}catch(_0x537f3e){_0x5cb185['push'](_0x5cb185['shift']());}}}(a6_0x1a3a,0x97f4d));export const TOOL_NAMES={'EDIT_FILE':'edit_file','CODEBASE_SEARCH':a6_0x5ec5ff(0x160),'GITHUB_CODEBASE_SEARCH':a6_0x5ec5ff(0x157)};function a6_0x1a3a(){const _0x8d4ae7=['7zHvSWs','github_codebase_search','1212399HTLUJQ','6204408ryhuWm','2629804gwuoOg','2348847lBKLxJ','5jnoKZC','498678nMpfJo','1297380MTSxwr','3300030oLIcel','codebase_search'];a6_0x1a3a=function(){return _0x8d4ae7;};return a6_0x1a3a();}export const ALL_TOOL_NAMES=Object['values'](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.190",
3
+ "version": "0.8.192",
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.180",
38
+ "@morphllm/morphsdk": "0.2.182",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",