@morphllm/morphmcp 0.8.186 → 0.8.188
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/log-utils.js +1 -1
- package/dist/logger.js +1 -1
- package/dist/path-utils.js +1 -1
- package/dist/path-validation.js +1 -1
- package/dist/roots-utils.js +1 -1
- package/dist/tool-definitions.js +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x5a8a3f=a0_0x5275;(function(_0x552a5d,_0x4dcad9){const _0x1a5076=a0_0x5275,_0x23912b=_0x552a5d();while(!![]){try{const _0x3b7e97=-parseInt(_0x1a5076(0x10e))/0x1*(parseInt(_0x1a5076(0xa6))/0x2)+parseInt(_0x1a5076(0xc0))/0x3*(parseInt(_0x1a5076(0x9d))/0x4)+parseInt(_0x1a5076(0x119))/0x5*(-parseInt(_0x1a5076(0x14a))/0x6)+-parseInt(_0x1a5076(0x133))/0x7+parseInt(_0x1a5076(0x15e))/0x8+parseInt(_0x1a5076(0x112))/0x9*(parseInt(_0x1a5076(0x134))/0xa)+parseInt(_0x1a5076(0x129))/0xb;if(_0x3b7e97===_0x4dcad9)break;else _0x23912b['push'](_0x23912b['shift']());}catch(_0x2e6ea0){_0x23912b['push'](_0x23912b['shift']());}}}(a0_0x330b,0x8866b));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x3e6463 from'fs/promises';import a0_0x562446 from'path';import a0_0x58d0fe from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{logger}from'./logger.js';function a0_0x5275(_0x2e0be7,_0x347a57){_0x2e0be7=_0x2e0be7-0x9a;const _0x330bdc=a0_0x330b();let _0x52759a=_0x330bdc[_0x2e0be7];return _0x52759a;}import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x1c6535 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x4b03f2){const _0x412a0a=a0_0x5275,_0x370b9d=_0x4b03f2[_0x412a0a(0x115)](a0_0x562446[_0x412a0a(0x15c)])[_0x412a0a(0x182)](Boolean);if(_0x370b9d[_0x412a0a(0x142)]<0x2)return null;for(let _0x4620a5=Math[_0x412a0a(0x18d)](_0x370b9d[_0x412a0a(0x142)]/0x2);_0x4620a5>=0x1;_0x4620a5--){for(let _0x183f9b=0x0;_0x183f9b<=_0x370b9d[_0x412a0a(0x142)]-0x2*_0x4620a5;_0x183f9b++){const _0x1a8aa9=_0x370b9d[_0x412a0a(0xff)](_0x183f9b,_0x183f9b+_0x4620a5),_0x3792a7=_0x370b9d['slice'](_0x183f9b+_0x4620a5,_0x183f9b+0x2*_0x4620a5);if(_0x1a8aa9[_0x412a0a(0xc5)]((_0x328a20,_0x4982b3)=>_0x328a20===_0x3792a7[_0x4982b3])){const _0x4ffcad=[..._0x370b9d[_0x412a0a(0xff)](0x0,_0x183f9b),..._0x370b9d['slice'](_0x183f9b+_0x4620a5)];return a0_0x562446[_0x412a0a(0x15c)]+_0x4ffcad['join'](a0_0x562446[_0x412a0a(0x15c)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x2bca67=a0_0x5275;try{const _0x5eefe9=require(_0x2bca67(0xea));return _0x5eefe9[_0x2bca67(0x1c5)]??_0x2bca67(0xfd);}catch(_0x169c35){return logMcpStderr(_0x2bca67(0xad),_0x169c35),_0x2bca67(0xfd);}}function printHelp(){const _0x269fd5=a0_0x5275;console[_0x269fd5(0xd9)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x269fd5(0xd9)](_0x269fd5(0x122)),console[_0x269fd5(0xd9)](_0x269fd5(0x153)),console[_0x269fd5(0xd9)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x269fd5(0xd9)](_0x269fd5(0xa4)),console[_0x269fd5(0xd9)](_0x269fd5(0x1c6)),console[_0x269fd5(0xd9)](_0x269fd5(0x186)),console[_0x269fd5(0xd9)](_0x269fd5(0xcc)),console[_0x269fd5(0xd9)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x5a8a3f(0x191)][a0_0x5a8a3f(0xff)](0x2),VERSION_FLAGS=new Set([a0_0x5a8a3f(0x16d),'-v','-V']),HELP_FLAGS=new Set([a0_0x5a8a3f(0x1bf),'-h']);cliArgs[a0_0x5a8a3f(0x127)](_0x283d86=>VERSION_FLAGS[a0_0x5a8a3f(0x1b2)](_0x283d86))&&(console[a0_0x5a8a3f(0xd9)](a0_0x5a8a3f(0xfb)+getPackageVersion()),process[a0_0x5a8a3f(0x167)](0x0));cliArgs['some'](_0x4059f3=>HELP_FLAGS[a0_0x5a8a3f(0x1b2)](_0x4059f3))&&(printHelp(),process[a0_0x5a8a3f(0x167)](0x0));function getCliArg(_0x23d0f8){const _0x1b1673=a0_0x5a8a3f;for(let _0xec0dd1=0x0;_0xec0dd1<cliArgs[_0x1b1673(0x142)];_0xec0dd1++){const _0x2ded5a=cliArgs[_0xec0dd1];if(_0x2ded5a[_0x1b1673(0x166)]('--'+_0x23d0f8+'='))return _0x2ded5a['slice'](('--'+_0x23d0f8+'=')['length']);if(_0x2ded5a==='--'+_0x23d0f8&&_0xec0dd1+0x1<cliArgs[_0x1b1673(0x142)])return cliArgs[_0xec0dd1+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x5a8a3f(0x142)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x5a8a3f(0x1b2)](arg)||HELP_FLAGS[a0_0x5a8a3f(0x1b2)](arg))continue;if(arg[a0_0x5a8a3f(0x166)]('--api-key='))continue;if(arg===a0_0x5a8a3f(0x16a)){i++;continue;}args[a0_0x5a8a3f(0xb1)](arg);}const WORKSPACE_ROOT=process[a0_0x5a8a3f(0xbc)][a0_0x5a8a3f(0x13a)]||process[a0_0x5a8a3f(0xbc)][a0_0x5a8a3f(0x13e)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x5a8a3f(0xbc)][a0_0x5a8a3f(0x103)]!==a0_0x5a8a3f(0x18b),MORPH_API_KEY=getCliArg(a0_0x5a8a3f(0x1b6))??process[a0_0x5a8a3f(0xbc)][a0_0x5a8a3f(0x1ba)],MORPH_API_URL=process['env'][a0_0x5a8a3f(0xe4)],MORPH_LARGE_APPLY=process['env']['MORPH_LARGE_APPLY']!==a0_0x5a8a3f(0x18b),MORPH_WARP_GREP_TIMEOUT=process[a0_0x5a8a3f(0xbc)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x5a8a3f(0xbc)][a0_0x5a8a3f(0x1b5)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x5a8a3f(0xbc)][a0_0x5a8a3f(0x1b8)]?new Set(process[a0_0x5a8a3f(0xbc)]['DISABLED_TOOLS']['split'](',')['map'](_0xad7a7b=>_0xad7a7b[a0_0x5a8a3f(0x137)]())['filter'](_0x182bf4=>_0x182bf4[a0_0x5a8a3f(0x142)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x5a8a3f(0x10a)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x5a8a3f(0xda)](a0_0x5a8a3f(0x18e)+tool+a0_0x5a8a3f(0x1ac)+[...KNOWN_TOOL_NAMES][a0_0x5a8a3f(0x110)](',\x20'));}console[a0_0x5a8a3f(0xda)](a0_0x5a8a3f(0xaf)+[...DISABLED_TOOLS][a0_0x5a8a3f(0x110)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5a8a3f(0x166)](a0_0x5a8a3f(0xa9))&&!MORPH_API_KEY[a0_0x5a8a3f(0x166)](a0_0x5a8a3f(0xc3))&&logMcpStderr(a0_0x5a8a3f(0xef));async function reportMorphError(_0x3d6200){const _0x1eb8b5=a0_0x5a8a3f;try{await a0_0x1c6535[_0x1eb8b5(0x189)](_0x1eb8b5(0x117),{..._0x3d6200,'timestamp':new Date()[_0x1eb8b5(0x17d)](),'source':_0x3d6200['source']||_0x1eb8b5(0x11e),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x3d6200[_0x1eb8b5(0x175)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x1eb8b5(0xd7)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x1b78fa,_0x587587){const _0x3920df=a0_0x5a8a3f;if(_0x1b78fa&&typeof _0x1b78fa===_0x3920df(0x178)&&_0x3920df(0xdc)in _0x1b78fa)return _0x1b78fa[_0x3920df(0xdc)];if(_0x1b78fa&&typeof _0x1b78fa===_0x3920df(0x178)&&_0x3920df(0xbe)in _0x1b78fa)return _0x1b78fa['response']?.[_0x3920df(0xdc)];const _0x3fba44=_0x587587[_0x3920df(0x1ce)](/\b(401|429)\b/);return _0x3fba44?parseInt(_0x3fba44[0x1],0xa):null;}function handleMorphAPIError(_0x4a1064){const _0x1605b8=a0_0x5a8a3f,_0x24b381=_0x4a1064 instanceof Error?_0x4a1064[_0x1605b8(0x140)]:String(_0x4a1064),_0x217447=extractStatusCode(_0x4a1064,_0x24b381);switch(_0x217447){case 0x191:return{'content':[{'type':_0x1605b8(0x19e),'text':_0x1605b8(0x152)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x1605b8(0x19e),'text':'Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.'}],'isError':!![]};default:return null;}}args[a0_0x5a8a3f(0x142)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x5a8a3f(0x12f)),logMcpStderr(a0_0x5a8a3f(0x1cf)),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr(a0_0x5a8a3f(0xbd)),logMcpStderr(a0_0x5a8a3f(0x1ad)),logMcpStderr('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x5bf2a0){const _0x3bbc26=a0_0x5a8a3f;return a0_0x562446[_0x3bbc26(0x145)](_0x5bf2a0);}function expandHome(_0x43bb47){const _0x201313=a0_0x5a8a3f;if(_0x43bb47[_0x201313(0x166)]('~/')||_0x43bb47==='~')return a0_0x562446[_0x201313(0x110)](a0_0x58d0fe[_0x201313(0x150)](),_0x43bb47[_0x201313(0xff)](0x1));return _0x43bb47;}let allowedDirectories=await Promise[a0_0x5a8a3f(0x1b1)](args[a0_0x5a8a3f(0xa8)](async _0x5110b4=>{const _0x4f5808=a0_0x5a8a3f,_0x4fa606=expandHome(_0x5110b4),_0x59c74a=a0_0x562446['resolve'](_0x4fa606);try{const _0x406b51=await a0_0x3e6463[_0x4f5808(0xc7)](_0x59c74a);return normalizePath(_0x406b51);}catch(_0x443a28){return normalizePath(_0x59c74a);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5a8a3f(0x142)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5a8a3f(0xb1)](workspaceDir),logMcpStderr(a0_0x5a8a3f(0x192)+workspaceDir+a0_0x5a8a3f(0x144)));}catch(a0_0x16cf49){logMcpStderr(a0_0x5a8a3f(0x17c)+a0_0x16cf49);}async function detectWorkspaceRoot(_0x1249c2){const _0x4c7a93=a0_0x5a8a3f;let _0x1b27e0=a0_0x562446[_0x4c7a93(0x100)](_0x1249c2);const _0x34ba08=[_0x4c7a93(0x132),_0x4c7a93(0x1b4),_0x4c7a93(0x15f),'Cargo.toml',_0x4c7a93(0xab),_0x4c7a93(0x125),_0x4c7a93(0x16f),_0x4c7a93(0x190),'composer.json'];while(_0x1b27e0!==a0_0x562446[_0x4c7a93(0xb8)](_0x1b27e0)){for(const _0x19af4f of _0x34ba08){const _0x51013d=a0_0x562446[_0x4c7a93(0x110)](_0x1b27e0,_0x19af4f);try{return await a0_0x3e6463[_0x4c7a93(0x1cd)](_0x51013d),normalizePath(_0x1b27e0);}catch{}}_0x1b27e0=a0_0x562446[_0x4c7a93(0xb8)](_0x1b27e0);}return normalizePath(_0x1249c2);}await Promise[a0_0x5a8a3f(0x1b1)](args[a0_0x5a8a3f(0xa8)](async _0x4bec70=>{const _0x2e0a22=a0_0x5a8a3f;try{const _0x1c12ff=await a0_0x3e6463[_0x2e0a22(0x9f)](expandHome(_0x4bec70));!_0x1c12ff['isDirectory']()&&(logMcpStderr(_0x2e0a22(0x165)+_0x4bec70+_0x2e0a22(0x102)),process[_0x2e0a22(0x167)](0x1));}catch(_0x289846){logMcpStderr(_0x2e0a22(0xa1)+_0x4bec70+':',_0x289846),process[_0x2e0a22(0x167)](0x1);}}));async function validatePath(_0xca3b13){const _0x33b7a4=a0_0x5a8a3f,_0x305959=expandHome(_0xca3b13),_0x1bde64=a0_0x562446[_0x33b7a4(0x100)](_0x305959);logger[_0x33b7a4(0x13f)]('MCP',_0x33b7a4(0xc1),{'raw_path':_0xca3b13,'absolute':_0x1bde64});try{const _0xe78872=await a0_0x3e6463[_0x33b7a4(0xc7)](_0x1bde64);return logger[_0x33b7a4(0x13f)](_0x33b7a4(0x105),_0x33b7a4(0x16b),{'resolved':_0xe78872,'symlink':_0xe78872!==_0x1bde64}),_0xe78872;}catch(_0x485a3d){if(_0x485a3d[_0x33b7a4(0xde)]===_0x33b7a4(0x1ae)){const _0x25477c=a0_0x562446[_0x33b7a4(0xb8)](_0x1bde64);try{const _0x10b6ba=await a0_0x3e6463[_0x33b7a4(0xc7)](_0x25477c),_0x5a9e45=a0_0x562446['join'](_0x10b6ba,a0_0x562446[_0x33b7a4(0x141)](_0x1bde64));return logger[_0x33b7a4(0x13f)](_0x33b7a4(0x105),_0x33b7a4(0x16b),{'resolved':_0x5a9e45,'new_file':!![]}),_0x5a9e45;}catch{logger[_0x33b7a4(0xda)]('MCP',_0x33b7a4(0xf7),{'raw_path':_0xca3b13,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x25477c});throw new Error(_0x33b7a4(0x1a0)+_0x25477c);}}logger['error'](_0x33b7a4(0x105),_0x33b7a4(0xf7),{'raw_path':_0xca3b13,'error':_0x485a3d['message']});throw _0x485a3d;}}function a0_0x330b(){const _0x389009=['code','WarpGrepError','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','[could\x20not\x20read\x20file:\x20','Fatal\x20error\x20running\x20server:','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','MORPH_API_URL','provider_created','role','grep_search','Preview\x20changes\x20without\x20applying\x20them.','-\x20Preserve\x20exact\x20indentation\x0a','../package.json','success','file_read_complete','morph-v3-fast','inputSchema','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','timed\x20out','code_edit','\x20valid\x20directories','content','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','path_validation_failed','Max\x20results\x20to\x20return','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','-\x20Read\x20file\x20`','@morphllm/morphmcp\x20','tool_call_error','unknown','Morph\x20Edit\x20Preview','slice','resolve','glob\x20\x27','\x20is\x20not\x20a\x20directory','ENABLE_WORKSPACE_MODE','tool','MCP','Here\x20is\x20the\x20content\x20of\x20files:\x0a','-\x20Glob\x20search\x20`','[github_codebase_search]\x20Failed\x20in\x20','\x27\x20in\x20`','size','stack','function','string','1poZXXj','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','join','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','24777DzUGmH','warp_grep_start','requiresApiKey','split','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','https://morphllm.com/api/error-report','read','7195jGztyt','setRequestHandler','TimeoutError','Warning:\x20','<file\x20path=\x22','mcp-filesystem','-\x20Grepped\x20\x27','errors','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','ToolException','tool_calls','go.mod','etimedout','some','min','19519995MlWsWd','\x0a...\x20(truncated,\x20total:\x20','Invalid\x20arguments:\x20','setNotificationHandler','linesRemoved','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','roots','edit_file','.git','2996595aEvjyq','1420yRqAWY','morph-v3-large','Specific\x20commit\x20hash\x20to\x20search','trim','finish','BinaryFile','WORKSPACE_ROOT','GitHub\x20search\x20failed:\x20','command','Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.','PWD','debug','message','basename','length','github_codebase_search','\x20as\x20allowed\x20directory','normalize','optional','timeout','EDIT_FILE','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','2118rrIJLq','indexOf','filePath','A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20','ms.\x20Success:\x20','default','homedir','\x20-\x20','Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.','\x0aOptions:','\x22>\x0aError\x20reading\x20file:\x20','Applied','ReadError','pattern','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','API\x20error\x20(auth/rate-limit)','searchGitHub','dryRun','sep','timings','604632mYinpZ','package.json','Example\x20format:\x0a','Unknown\x20error','edit','files','SymlinkError','Error:\x20','startsWith','exit','substring','ms:','--api-key','path_validation_resolved','warn','--version','Morph\x20Edit\x20','.cursor','array','parse','0.2.0','linesAdded','messages','context','list_directory','list_directory\x20','object','utf-8','\x0a</file>','Tool\x20\x22','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','toISOString','read\x20','linesModified','\x20chars)','api_request_start','filter','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','describe','\x0aExamples:','node_modules','Morph\x20FastApply\x20failed\x20without\x20error\x20message','post','codebase_search','false','toLowerCase','floor','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','branch','tsconfig.json','argv','Workspace\x20mode\x20enabled:\x20Using\x20','lines','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES.**\x20Fast,\x20accurate,\x20and\x20prevents\x20context\x20pollution.\x20Especially\x20useful\x20when\x20making\x20multiple\x20edits\x20in\x20one\x20file:\x20describe\x20all\x20changes\x20in\x20a\x20single\x20call\x20and\x20the\x20semantic\x20edit\x20applies\x20them\x20all\x20at\x20once,\x20more\x20accurately\x20and\x20faster\x20than\x20sequential\x20edits.\x20Unlike\x20search-and-replace\x20or\x20patch\x20edits\x20which\x20do\x20narrow\x20edits\x20one\x20at\x20a\x20time,\x20with\x20this\x20tool\x20you\x20should\x20do\x20all\x20your\x20code\x20changes\x20in\x20one\x20go\x20separated\x20by\x20`//\x20...\x20existing\x20code\x20...`\x20markers.\x20This\x20saves\x20tokens\x20and\x20improves\x20performance\x20because\x20you\x20do\x20not\x20need\x20to\x20reread\x20files\x20before\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a','repo_path','catch','Failed\x20to\x20read\x20file:\x20','safeParse','tool_call_id','now','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos','path','text','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Parent\x20directory\x20does\x20not\x20exist:\x20','readFile','instruction','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','target_file','data','isArray','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','UnknownError','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','\x22>\x0a','\x22.\x20Known\x20tools:\x20','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','ENOENT','owner_repo','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','all','has','number','.vscode','MORPH_WARP_GREP_TIMEOUT','api-key','grep\x20\x27','DISABLED_TOOLS','FileNotFound','MORPH_API_KEY','new_string','warp_grep_complete','description','Error\x20running\x20fast\x20context\x20search:\x20','--help','listRoots','completed','includes','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.',',\x20modified\x20','version','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','completed_with_file_errors','-\x20Listed\x20directory\x20`','Parameters:\x0a','turns','added\x20','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','access','match','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','.\x20Changes:\x20','changes','getClientCapabilities','380372KePsMu','search_string','stat','[github_codebase_search]\x20Done\x20in\x20','Error\x20accessing\x20directory\x20','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','constructor','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','SubToolError','2063156tHPgfx','.\x20Path:\x20','map','sk-','unknown\x20error','pyproject.toml','tool_call_complete','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','grep','Disabled\x20tools:\x20','terminated','push','RipgrepNotAvailable','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','Repository\x20identifier','metadata','Failed\x20to\x20request\x20roots\x20from\x20client:','connect','dirname','stringify','terminationReason','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','env','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','response','LocalRipgrepProvider','9iyElLz','path_validation_start','user','morph-','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','every','File\x20read\x20error:','realpath','completionId','assistant','FileReadError','name','\x20\x20morph-mcp','PathError','Rules:\x0a','instructions','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','\x20error(s)','morph-warp-grep-v2.1',',\x20removed\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','Bearer\x20','WarpGrep\x20sub-tool\x20errors:\x20','log','error','glob','status','Warning:\x20Workspace\x20fallback\x20failed:\x20'];a0_0x330b=function(){return _0x389009;};return a0_0x330b();}const MorphEditFileArgsSchema=z[a0_0x5a8a3f(0x178)]({'path':z[a0_0x5a8a3f(0x10d)](),'code_edit':z[a0_0x5a8a3f(0x10d)]()[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0x116)),'instruction':z[a0_0x5a8a3f(0x10d)]()[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0x1c3)),'dryRun':z['boolean']()[a0_0x5a8a3f(0x14f)](![])['describe'](a0_0x5a8a3f(0xe8))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x5a8a3f(0x1a9),WarpGrepArgsSchema=z[a0_0x5a8a3f(0x178)]({'search_string':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x5a8a3f(0x10d)]()[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0x19c)),'search_type':z['enum']([a0_0x5a8a3f(0x14f),a0_0x5a8a3f(0x187)])[a0_0x5a8a3f(0x146)]()[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0xbb))}),WarpGrepGitHubArgsSchema=z[a0_0x5a8a3f(0x178)]({'search_string':z[a0_0x5a8a3f(0x10d)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x5a8a3f(0x10d)]()['optional']()['describe'](a0_0x5a8a3f(0x149)),'owner_repo':z[a0_0x5a8a3f(0x10d)]()['optional']()[a0_0x5a8a3f(0x185)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x5a8a3f(0x10d)]()[a0_0x5a8a3f(0x146)]()[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0x184))}),CodebaseSearchArgsSchema=z[a0_0x5a8a3f(0x178)]({'query':z[a0_0x5a8a3f(0x10d)]()[a0_0x5a8a3f(0x185)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0xb4)),'branch':z['string']()[a0_0x5a8a3f(0x146)]()[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0x1cc)),'commitHash':z[a0_0x5a8a3f(0x10d)]()['optional']()['describe'](a0_0x5a8a3f(0x136)),'targetDirectories':z[a0_0x5a8a3f(0x170)](z[a0_0x5a8a3f(0x10d)]())[a0_0x5a8a3f(0x14f)]([])[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0x19f)),'limit':z[a0_0x5a8a3f(0x1b3)]()['optional']()[a0_0x5a8a3f(0x14f)](0xa)[a0_0x5a8a3f(0x185)](a0_0x5a8a3f(0xf8))}),server=new Server({'name':'morph-mcp','version':a0_0x5a8a3f(0x172)},{'capabilities':{'tools':{}}});server[a0_0x5a8a3f(0x11a)](ListToolsRequestSchema,async()=>{const _0x223754=a0_0x5a8a3f,_0x194ce5=[{'name':TOOL_NAMES[_0x223754(0x148)],'description':_0x223754(0x194)+_0x223754(0x1c9)+_0x223754(0xf5)+_0x223754(0x1b0)+'-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a'+'Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a'+_0x223754(0x160)+_0x223754(0xb3)+_0x223754(0xce)+_0x223754(0xf6)+_0x223754(0xe9)+_0x223754(0xc4)+_0x223754(0x1aa),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES['CODEBASE_SEARCH'],'description':_0x223754(0x14d)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x223754(0x1a3)+_0x223754(0xa2)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x2e9b38=_0x194ce5[_0x223754(0x182)](_0x5a451b=>{const _0x2b3ce5=_0x223754;if(DISABLED_TOOLS[_0x2b3ce5(0x1b2)](_0x5a451b[_0x2b3ce5(0xcb)]))return console[_0x2b3ce5(0xda)]('Tool\x20'+_0x5a451b[_0x2b3ce5(0xcb)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x2b3ce5(0x114)in _0x5a451b&&_0x5a451b[_0x2b3ce5(0x114)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x5a451b[_0x2b3ce5(0xcb)]+_0x2b3ce5(0x1a7)),![];return!![];});return{'tools':_0x2e9b38['map'](_0x148c57=>({'name':_0x148c57[_0x223754(0xcb)],'description':_0x148c57[_0x223754(0x1bd)],'inputSchema':_0x148c57[_0x223754(0xee)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x2274b2=>{const _0x134562=a0_0x5a8a3f,{name:_0x5e4754,arguments:_0x5b4ef4}=_0x2274b2['params'],_0x2ada35=Date['now']();logger['debug']('MCP','tool_call_received',{'tool':_0x5e4754,'args':_0x5e4754===_0x134562(0x131)?{'path':_0x5b4ef4?.[_0x134562(0x19d)],'instruction':_0x5b4ef4?.[_0x134562(0x1a2)]||_0x5b4ef4?.[_0x134562(0xcf)],'dryRun':_0x5b4ef4?.[_0x134562(0x15b)]}:_0x5b4ef4});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x134562(0x19e),'text':'No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.'}],'isError':!![]};if(!MORPH_API_KEY[_0x134562(0x166)](_0x134562(0xa9))&&!MORPH_API_KEY[_0x134562(0x166)](_0x134562(0xc3)))return{'content':[{'type':_0x134562(0x19e),'text':_0x134562(0x13d)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0x5e4754))return{'content':[{'type':_0x134562(0x19e),'text':_0x134562(0x17b)+_0x5e4754+_0x134562(0x10f)}],'isError':![]};switch(_0x5e4754){case TOOL_NAMES['EDIT_FILE']:{let _0x347688=_0x5b4ef4;if(_0x347688&&typeof _0x347688===_0x134562(0x178)){if(!(_0x134562(0x19d)in _0x347688)){const _0x31ffd2=_0x347688[_0x134562(0x1a4)]??_0x347688[_0x134562(0x14c)]??_0x347688['target_filepath']??_0x347688['file_path']??_0x347688['file'];if(_0x31ffd2)_0x347688={..._0x347688,'path':_0x31ffd2};}_0x134562(0xcf)in _0x347688&&!('instruction'in _0x347688)&&(_0x347688={..._0x347688,'instruction':_0x347688['instructions']});if(!(_0x134562(0xf1)in _0x347688)){const _0x48d75f=_0x347688['code']??_0x347688[_0x134562(0x1bb)]??_0x347688[_0x134562(0xf3)]??_0x347688[_0x134562(0x162)];if(_0x48d75f)_0x347688={..._0x347688,'code_edit':_0x48d75f};}}const _0x3555af=MorphEditFileArgsSchema[_0x134562(0x198)](_0x347688);if(!_0x3555af['success'])throw new Error(_0x134562(0xd2)+_0x3555af[_0x134562(0xda)]);const _0x5e8494=await validatePath(_0x3555af[_0x134562(0x1a5)]['path']);let _0x44c297=null,_0x398c16=!![],_0x2e3bd1=null;try{_0x44c297=await a0_0x3e6463['readFile'](_0x5e8494,_0x134562(0x179)),logger[_0x134562(0x13f)](_0x134562(0x105),_0x134562(0xec),{'path':_0x5e8494,'size_bytes':_0x44c297[_0x134562(0x142)]});}catch(_0x2dee63){const _0x84d451=_0x2dee63[_0x134562(0xde)];_0x84d451===_0x134562(0x1ae)?(_0x398c16=![],_0x44c297='',logger[_0x134562(0x13f)](_0x134562(0x105),'file_read_complete',{'path':_0x5e8494,'exists':![]})):(_0x2e3bd1=_0x134562(0x197)+(_0x84d451||'unknown')+_0x134562(0x151)+(_0x2dee63 instanceof Error?_0x2dee63[_0x134562(0x140)]:String(_0x2dee63)),logger[_0x134562(0xda)](_0x134562(0x105),'file_read_failed',{'path':_0x5e8494,'error':_0x2e3bd1}),logMcpStderr(_0x134562(0x11c)+_0x2e3bd1));}let _0x2aee46;try{const _0x11f7df=MORPH_API_KEY;if(!_0x11f7df)throw new Error(_0x134562(0xd1));const _0x124903=a0_0x562446[_0x134562(0xb8)](_0x5e8494),_0x55b2f6=a0_0x562446[_0x134562(0x141)](_0x5e8494);logger['debug'](_0x134562(0x105),_0x134562(0x181),{'model':'morph-v3-fast','path':_0x3555af[_0x134562(0x1a5)][_0x134562(0x19d)],'instruction_len':_0x3555af[_0x134562(0x1a5)]['instruction'][_0x134562(0x142)],'code_edit_len':_0x3555af[_0x134562(0x1a5)][_0x134562(0xf1)][_0x134562(0x142)],'original_code_len':_0x44c297?.[_0x134562(0x142)]??0x0,'dry_run':_0x3555af['data'][_0x134562(0x15b)]});const _0x3940ce=Date['now'](),_0x59a086=await executeEditFile({'target_filepath':_0x55b2f6,'code_edit':_0x3555af[_0x134562(0x1a5)]['code_edit'],'instruction':_0x3555af[_0x134562(0x1a5)][_0x134562(0x1a2)]},{'morphApiKey':_0x11f7df,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x124903,'autoWrite':!_0x3555af[_0x134562(0x1a5)][_0x134562(0x15b)],'generateUdiff':![],'debug':![]}),_0x4aae0f=Date[_0x134562(0x19a)]()-_0x3940ce;_0x2aee46=_0x59a086[_0x134562(0xc8)];if(!_0x59a086[_0x134562(0xeb)])throw new Error(_0x59a086[_0x134562(0xda)]||_0x134562(0x188));const _0x5e6db3=_0x59a086[_0x134562(0x9b)],_0x18215a=_0x134562(0x1cb)+_0x5e6db3[_0x134562(0x173)]+_0x134562(0xd5)+_0x5e6db3[_0x134562(0x12d)]+_0x134562(0x1c4)+_0x5e6db3[_0x134562(0x17f)];logger[_0x134562(0x13f)](_0x134562(0x105),_0x134562(0xac),{'tool':_0x134562(0x131),'success':!![],'latency_ms':Date[_0x134562(0x19a)]()-_0x2ada35,'edit_latency_ms':_0x4aae0f,'changes':{'added':_0x5e6db3[_0x134562(0x173)],'removed':_0x5e6db3[_0x134562(0x12d)],'modified':_0x5e6db3[_0x134562(0x17f)]},'completion_id':_0x2aee46});if(_0x3555af[_0x134562(0x1a5)][_0x134562(0x15b)])return{'content':[{'type':_0x134562(0x19e),'text':_0x134562(0xfe)+(_0x398c16?'':'\x20(new\x20file)')+':\x20'+_0x3555af[_0x134562(0x1a5)][_0x134562(0x1a2)]+_0x134562(0x9a)+_0x18215a+_0x134562(0xa7)+_0x3555af[_0x134562(0x1a5)][_0x134562(0x19d)]+'.'}]};return{'content':[{'type':'text','text':_0x134562(0x16e)+(_0x398c16?_0x134562(0x155):'Created\x20File')+':\x20'+_0x3555af[_0x134562(0x1a5)]['instruction']+'.\x20Changes:\x20'+_0x18215a+_0x134562(0xa7)+_0x3555af[_0x134562(0x1a5)]['path']+'.'}]};}catch(_0x2e4d09){const _0xaaffd0=handleMorphAPIError(_0x2e4d09);if(_0xaaffd0)return logger[_0x134562(0xda)](_0x134562(0x105),_0x134562(0xfc),{'tool':_0x134562(0x131),'error':_0x134562(0x159),'latency_ms':Date[_0x134562(0x19a)]()-_0x2ada35}),_0xaaffd0;const _0x22f3ea=_0x2e4d09 instanceof Error?_0x2e4d09['message']:String(_0x2e4d09);return logger['error']('MCP',_0x134562(0xfc),{'tool':_0x134562(0x131),'error':_0x22f3ea,'path':_0x3555af[_0x134562(0x1a5)]['path'],'validated_path':_0x5e8494,'latency_ms':Date['now']()-_0x2ada35,'stack':_0x2e4d09 instanceof Error?_0x2e4d09[_0x134562(0x10b)]:undefined}),reportMorphError({'error_message':_0x22f3ea,'error_type':_0x2e4d09 instanceof Error?_0x2e4d09[_0x134562(0xa3)][_0x134562(0xcb)]:_0x134562(0x1a8),'context':{'tool':_0x134562(0x131),'completion_id':_0x2aee46,'file_path':_0x3555af[_0x134562(0x1a5)][_0x134562(0x19d)],'validated_path':_0x5e8494,'instruction':_0x3555af[_0x134562(0x1a5)][_0x134562(0x1a2)],'model':MORPH_LARGE_APPLY?_0x134562(0x135):_0x134562(0xed),'dry_run':_0x3555af[_0x134562(0x1a5)][_0x134562(0x15b)],'file_exists':_0x398c16,'file_read_error':_0x2e3bd1,'file_readable':_0x44c297!==null,'request_content':{'path':_0x3555af['data'][_0x134562(0x19d)],'code_edit':_0x3555af['data']['code_edit'],'instruction':_0x3555af[_0x134562(0x1a5)]['instruction'],'original_code':_0x44c297!==null?_0x44c297['length']>0xc350?_0x44c297['substring'](0x0,0xc350)+_0x134562(0x12a)+_0x44c297[_0x134562(0x142)]+_0x134562(0x180):_0x44c297:_0x134562(0xe1)+(_0x2e3bd1||_0x134562(0xaa))+']','original_code_length':_0x44c297?.[_0x134562(0x142)]??0x0,'model':MORPH_LARGE_APPLY?_0x134562(0x135):_0x134562(0xed),'dry_run':_0x3555af[_0x134562(0x1a5)][_0x134562(0x15b)]}},'stack_trace':_0x2e4d09 instanceof Error?_0x2e4d09[_0x134562(0x10b)]:undefined,'source':_0x134562(0x11e)})[_0x134562(0x196)](()=>{}),{'content':[{'type':_0x134562(0x19e),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x22f3ea}],'isError':!![]};}}case TOOL_NAMES['CODEBASE_SEARCH']:{const _0x592e0f=WarpGrepArgsSchema['safeParse'](_0x5b4ef4);if(!_0x592e0f['success'])return{'content':[{'type':_0x134562(0x19e),'text':_0x134562(0x12b)+_0x592e0f[_0x134562(0xda)]}],'isError':!![]};const _0x2ccf68=_0xc2c047=>{const _0xef0301=_0x134562,_0xbf8ff1=[];for(const _0x16c903 of _0xc2c047||[]){if(_0x16c903[_0xef0301(0xe6)]===_0xef0301(0xc9)&&Array[_0xef0301(0x1a6)](_0x16c903['tool_calls']))for(const _0x718e8f of _0x16c903[_0xef0301(0x124)]){try{const _0x34e2af=_0x718e8f[_0xef0301(0x10c)]?.[_0xef0301(0xcb)],_0x2a731f=JSON[_0xef0301(0x171)](_0x718e8f[_0xef0301(0x10c)]?.['arguments']||'{}');if(_0x34e2af===_0xef0301(0xe7))_0xbf8ff1[_0xef0301(0xb1)](_0xef0301(0x1b7)+_0x2a731f['pattern']+'\x27\x20'+(_0x2a731f[_0xef0301(0x19d)]||'.'));else{if(_0x34e2af===_0xef0301(0x118))_0xbf8ff1[_0xef0301(0xb1)](_0xef0301(0x17e)+_0x2a731f[_0xef0301(0x19d)]);else{if(_0x34e2af===_0xef0301(0x176))_0xbf8ff1[_0xef0301(0xb1)](_0xef0301(0x177)+(_0x2a731f[_0xef0301(0x13c)]||'.'));else{if(_0x34e2af===_0xef0301(0xdb))_0xbf8ff1[_0xef0301(0xb1)](_0xef0301(0x101)+_0x2a731f['pattern']+'\x27\x20'+(_0x2a731f[_0xef0301(0x19d)]||'.'));else _0x34e2af===_0xef0301(0x138)&&_0xbf8ff1['push'](_0xef0301(0x138));}}}}catch{}}}return _0xbf8ff1;},_0x176d4e=_0x1b794b=>{const _0x10ff1e=_0x134562,_0xc7b994=[];if(!_0x1b794b||!Array['isArray'](_0x1b794b))return _0xc7b994;const _0x132d9d=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x10ff1e(0x1b9),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x10ff1e(0xcd),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':_0x10ff1e(0x118)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':_0x10ff1e(0x118)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x10ff1e(0xb2),'tool':_0x10ff1e(0xae)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x10ff1e(0x139),'tool':_0x10ff1e(0x118)},{'pattern':/\[SYMLINK\]/,'error_type':_0x10ff1e(0x164),'tool':_0x10ff1e(0x118)},{'pattern':/not a text file/,'error_type':_0x10ff1e(0x139),'tool':_0x10ff1e(0x118)},{'pattern':/symbolic link/,'error_type':_0x10ff1e(0x164),'tool':_0x10ff1e(0x118)},{'pattern':/Error reading file:/,'error_type':_0x10ff1e(0x156),'tool':_0x10ff1e(0x118)},{'pattern':/status="error"/,'error_type':_0x10ff1e(0x123),'tool':_0x10ff1e(0xfd)}];let _0x5ca5b9=0x0;for(const _0x34e00d of _0x1b794b){_0x34e00d[_0x10ff1e(0xe6)]===_0x10ff1e(0xc9)&&Array[_0x10ff1e(0x1a6)](_0x34e00d[_0x10ff1e(0x124)])&&_0x5ca5b9++;const _0x56f331=_0x34e00d[_0x10ff1e(0xf3)];if((_0x34e00d['role']===_0x10ff1e(0x104)||_0x34e00d['role']===_0x10ff1e(0xc2))&&_0x56f331&&typeof _0x56f331===_0x10ff1e(0x10d))for(const {pattern:_0x25d9c6,error_type:_0x5bef89,tool:_0x3c0969}of _0x132d9d){const _0x24c84e=_0x56f331['match'](new RegExp(_0x25d9c6['source'],'g'));if(_0x24c84e)for(const _0x43490b of _0x24c84e){const _0x4eff15=_0x56f331[_0x10ff1e(0x14b)](_0x43490b),_0x265260=_0x56f331[_0x10ff1e(0x168)](_0x4eff15,Math[_0x10ff1e(0x128)](_0x4eff15+0xc8,_0x56f331[_0x10ff1e(0x142)]));_0xc7b994[_0x10ff1e(0xb1)]({'tool':_0x3c0969,'error_type':_0x5bef89,'error_message':_0x265260[_0x10ff1e(0x115)]('\x0a')[0x0],'turn':_0x5ca5b9});}}}return _0xc7b994;};try{const _0x5210ba=a0_0x562446['resolve'](_0x592e0f['data'][_0x134562(0x195)]),_0x288633=_0x592e0f[_0x134562(0x1a5)]['search_type'],_0x1920c5=_0x288633===_0x134562(0x187)?{'allowNames':[_0x134562(0x187)]}:undefined,_0x21b276=new LocalRipgrepProvider(_0x5210ba,undefined,_0x1920c5);logger[_0x134562(0x13f)](_0x134562(0x105),_0x134562(0xe5),{'type':_0x134562(0xbf),'repo_root':_0x5210ba,'search_type':_0x288633||_0x134562(0x14f)}),logger['debug'](_0x134562(0x105),_0x134562(0x113),{'query':_0x592e0f['data'][_0x134562(0x9e)],'repo_root':_0x5210ba,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x28d5f4=Date[_0x134562(0x19a)](),_0x2a71c8=await runWarpGrep({'searchTerm':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x9e)],'repoRoot':_0x5210ba,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x21b276,'search_type':_0x288633}),_0x55de3a=Date[_0x134562(0x19a)]()-_0x28d5f4,_0xc3c3=_0x2a71c8[_0x134562(0x138)]?.[_0x134562(0xb5)]?.[_0x134562(0x163)]?.[_0x134562(0x142)]??0x0;logger[_0x134562(0x13f)](_0x134562(0x105),_0x134562(0x1bc),{'termination':_0x2a71c8[_0x134562(0xba)],'turns':_0x2a71c8[_0x134562(0x15d)]?.[_0x134562(0x1ca)]??0x0,'files_found':_0xc3c3,'latency_ms':_0x55de3a});const _0x3b830f=_0x176d4e(_0x2a71c8['messages']);_0x3b830f[_0x134562(0x142)]>0x0&&reportMorphError({'error_message':_0x134562(0xd8)+_0x3b830f[_0x134562(0x142)]+_0x134562(0xd3),'error_type':_0x134562(0xa5),'level':_0x134562(0x16c),'tool':_0x134562(0x18a),'context':{'repo_path':_0x592e0f['data'][_0x134562(0x195)],'query':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x9e)],'model':_0x134562(0xd4),'termination_reason':_0x2a71c8[_0x134562(0xba)],'sub_tool_errors':_0x3b830f,'timings':_0x2a71c8['timings'],'tool_calls':_0x2ccf68(_0x2a71c8[_0x134562(0x174)]),'messages':_0x2a71c8['messages']?.['map'](_0x29e73c=>({'role':_0x29e73c[_0x134562(0xe6)],'content':_0x29e73c['content'],..._0x29e73c[_0x134562(0x124)]?{'tool_calls':_0x29e73c[_0x134562(0x124)]['length']}:{},..._0x29e73c[_0x134562(0x199)]?{'tool_call_id':_0x29e73c[_0x134562(0x199)]}:{}}))},'source':_0x134562(0x11e)})[_0x134562(0x196)](()=>{});let _0x1cec87='';if(_0x2a71c8[_0x134562(0xba)]===_0x134562(0x1c1)&&_0x2a71c8[_0x134562(0x138)]?.[_0x134562(0xb5)]?.[_0x134562(0x163)]){const _0x43564f=_0x2a71c8['finish']['metadata'][_0x134562(0x163)];if(_0x43564f[_0x134562(0x142)]===0x0)return _0x1cec87=_0x2a71c8[_0x134562(0x138)]['payload']||_0x134562(0xf9),{'content':[{'type':_0x134562(0x19e),'text':_0x1cec87}]};const _0x25174c=[],_0x3f8146=[_0x134562(0x183)];for(const _0x3c64af of _0x2a71c8[_0x134562(0x174)]){if(_0x3c64af['role']==='assistant'&&Array['isArray'](_0x3c64af[_0x134562(0x124)]))for(const _0x2aed54 of _0x3c64af[_0x134562(0x124)]){try{const _0x55a5ff=_0x2aed54[_0x134562(0x10c)]?.['name'],_0x395cae=JSON['parse'](_0x2aed54[_0x134562(0x10c)]?.['arguments']||'{}');if(_0x55a5ff===_0x134562(0xe7))_0x3f8146['push'](_0x134562(0x11f)+_0x395cae[_0x134562(0x157)]+_0x134562(0x109)+(_0x395cae['path']||'.')+'`');else{if(_0x55a5ff===_0x134562(0x118))_0x3f8146[_0x134562(0xb1)](_0x134562(0xfa)+_0x395cae[_0x134562(0x19d)]+'`');else{if(_0x55a5ff===_0x134562(0x176))_0x3f8146['push'](_0x134562(0x1c8)+(_0x395cae[_0x134562(0x13c)]||'.')+'`');else _0x55a5ff===_0x134562(0xdb)&&_0x3f8146[_0x134562(0xb1)](_0x134562(0x107)+_0x395cae[_0x134562(0x157)]+'`\x20in\x20`'+(_0x395cae['path']||'.')+'`');}}}catch{}}}_0x25174c['push'](_0x3f8146[_0x134562(0x110)]('\x0a'));const _0x436979=['','Relevant\x20context\x20found:'];for(const _0x4ebba3 of _0x43564f){if(_0x4ebba3['lines']==='*')_0x436979[_0x134562(0xb1)]('-\x20'+_0x4ebba3[_0x134562(0x19d)]+':*');else{if(Array['isArray'](_0x4ebba3[_0x134562(0x193)])){const _0x16c98f=_0x4ebba3[_0x134562(0x193)]['map'](([_0x32b2e5,_0x51e0b0])=>{if(_0x32b2e5===_0x51e0b0)return''+_0x32b2e5;return _0x32b2e5+'-'+_0x51e0b0;});_0x436979[_0x134562(0xb1)]('-\x20'+_0x4ebba3[_0x134562(0x19d)]+':'+_0x16c98f[_0x134562(0x110)](','));}else _0x436979[_0x134562(0xb1)]('-\x20'+_0x4ebba3[_0x134562(0x19d)]+':*');}}_0x436979[_0x134562(0xb1)](''),_0x25174c['push'](_0x436979[_0x134562(0x110)]('\x0a')),_0x25174c[_0x134562(0xb1)](_0x134562(0x106));const _0x472f49=[],_0x4292ff=[];for(const _0x38d96e of _0x43564f){let _0x30f7b6=a0_0x562446[_0x134562(0x100)](_0x592e0f['data'][_0x134562(0x195)],_0x38d96e['path']),_0x288228=null,_0x30f084=null;try{_0x288228=await a0_0x3e6463[_0x134562(0x1a1)](_0x30f7b6,{'encoding':'utf-8'});}catch(_0xf52d05){const _0x4fd754=fixPathRepetition(_0x30f7b6);if(_0x4fd754)try{_0x288228=await a0_0x3e6463[_0x134562(0x1a1)](_0x4fd754,{'encoding':_0x134562(0x179)}),_0x30f7b6=_0x4fd754;}catch{_0x30f084=_0xf52d05 instanceof Error?_0xf52d05:new Error(String(_0xf52d05));}else _0x30f084=_0xf52d05 instanceof Error?_0xf52d05:new Error(String(_0xf52d05));}if(_0x288228!==null){const _0x3800fd=_0x288228['split'](/\r?\n/),_0x40538d=[];if(_0x38d96e[_0x134562(0x193)]==='*'||!Array[_0x134562(0x1a6)](_0x38d96e[_0x134562(0x193)]))for(let _0x276ebd=0x1;_0x276ebd<=_0x3800fd['length'];_0x276ebd++){const _0x224225=_0x3800fd[_0x276ebd-0x1];_0x40538d['push'](_0x276ebd+'|\x20'+_0x224225);}else for(const [_0x5d7fb6,_0x3a050f]of _0x38d96e[_0x134562(0x193)]){_0x40538d[_0x134562(0x142)]>0x0&&_0x40538d['push']('');for(let _0x2e3e93=_0x5d7fb6;_0x2e3e93<=_0x3a050f&&_0x2e3e93<=_0x3800fd['length'];_0x2e3e93++){const _0x592ae1=_0x3800fd[_0x2e3e93-0x1];_0x40538d[_0x134562(0xb1)](_0x2e3e93+'|\x20'+_0x592ae1);}}_0x4292ff['push']({'path':_0x38d96e[_0x134562(0x19d)],'content':_0x40538d[_0x134562(0x110)]('\x0a')});}else _0x472f49['push'](_0x134562(0x11d)+_0x38d96e[_0x134562(0x19d)]+_0x134562(0x154)+(_0x30f084?.['message']||_0x134562(0x161))+_0x134562(0x17a));}try{const _0x5724d6=await compactFileContexts(_0x4292ff,_0x592e0f[_0x134562(0x1a5)][_0x134562(0x9e)],MORPH_API_KEY,MORPH_API_URL);for(const _0x500c28 of _0x5724d6){_0x472f49[_0x134562(0xb1)](_0x134562(0x11d)+_0x500c28[_0x134562(0x19d)]+_0x134562(0x1ab)+_0x500c28[_0x134562(0xf3)]+_0x134562(0x17a));}}catch(_0x1f4c91){logger[_0x134562(0x16c)](_0x134562(0x105),'compaction_failed',{'error':_0x1f4c91 instanceof Error?_0x1f4c91[_0x134562(0x140)]:String(_0x1f4c91),'files_count':_0x4292ff[_0x134562(0x142)]});for(const _0x14a868 of _0x4292ff){_0x472f49[_0x134562(0xb1)](_0x134562(0x11d)+_0x14a868[_0x134562(0x19d)]+'\x22>\x0a'+_0x14a868[_0x134562(0xf3)]+_0x134562(0x17a));}}_0x25174c[_0x134562(0xb1)](_0x472f49['join']('\x0a\x0a')),_0x1cec87=_0x25174c[_0x134562(0x110)]('\x0a');const _0x5920ca=_0x2a71c8[_0x134562(0x120)]?.[_0x134562(0x182)](_0xf7d290=>_0xf7d290[_0x134562(0x140)]?.['startsWith'](_0x134562(0xc6)))||[];if(_0x5920ca['length']>0x0){const _0x568b17=_0x5920ca[_0x134562(0xa8)](_0x23237a=>_0x23237a[_0x134562(0x140)])['join'](';\x20');reportMorphError({'error_message':_0x568b17,'error_type':_0x134562(0xca),'context':{'tool':'codebase_search','repo_path':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x195)],'query':_0x592e0f['data'][_0x134562(0x9e)],'model':_0x134562(0xd4),'termination_reason':_0x134562(0x1c7),'error_count':_0x5920ca[_0x134562(0x142)],'is_timeout':![],'timings':_0x2a71c8[_0x134562(0x15d)],'files_attempted':_0x43564f['map'](_0x120f74=>({'path':_0x120f74[_0x134562(0x19d)],'lines':_0x120f74[_0x134562(0x193)]})),'tool_calls':_0x2ccf68(_0x2a71c8[_0x134562(0x174)]),'messages':_0x2a71c8[_0x134562(0x174)]?.['map'](_0x24da11=>({'role':_0x24da11[_0x134562(0xe6)],'content':_0x24da11['content'],..._0x24da11[_0x134562(0x124)]?{'tool_calls':_0x24da11[_0x134562(0x124)][_0x134562(0x142)]}:{},..._0x24da11[_0x134562(0x199)]?{'tool_call_id':_0x24da11[_0x134562(0x199)]}:{}})),'request_content':{'query':_0x592e0f[_0x134562(0x1a5)]['search_string'],'repo_path':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x195)],'repoRoot':a0_0x562446[_0x134562(0x100)](_0x592e0f[_0x134562(0x1a5)][_0x134562(0x195)]),'model':'morph-warp-grep-v2.1'}},'source':_0x134562(0x11e)})[_0x134562(0x196)](()=>{});}}else{if(_0x2a71c8[_0x134562(0xba)]===_0x134562(0xb0)&&_0x2a71c8[_0x134562(0x120)][_0x134562(0x142)]>0x0){const _0x7c3929=_0x2a71c8[_0x134562(0x120)]['map'](_0x41dbe8=>_0x41dbe8['message'])['join'](';\x20');_0x1cec87='Error:\x20'+_0x7c3929;const _0x8d2966=_0x7c3929[_0x134562(0x18c)]()['includes']('timeout')||_0x7c3929[_0x134562(0x18c)]()[_0x134562(0x1c2)](_0x134562(0xf0))||_0x7c3929[_0x134562(0x18c)]()[_0x134562(0x1c2)](_0x134562(0x126)),_0xe0c907=_0x2a71c8['finish']?.[_0x134562(0xb5)]?.[_0x134562(0x163)],_0x2844ef=_0x2a71c8[_0x134562(0x120)][0x0];reportMorphError({'error_message':_0x7c3929,'error_type':_0x8d2966?_0x134562(0x11b):_0x2844ef?.[_0x134562(0xa3)]?.['name']||_0x134562(0xdf),'context':{'tool':'codebase_search','repo_path':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x195)],'query':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x9e)],'model':_0x134562(0xd4),'termination_reason':_0x2a71c8[_0x134562(0xba)],'error_count':_0x2a71c8[_0x134562(0x120)]['length'],'is_timeout':_0x8d2966,'timings':_0x2a71c8[_0x134562(0x15d)],'files_attempted':_0xe0c907?.[_0x134562(0xa8)](_0x57064a=>({'path':_0x57064a[_0x134562(0x19d)],'lines':_0x57064a[_0x134562(0x193)]})),'tool_calls':_0x2ccf68(_0x2a71c8[_0x134562(0x174)]),'messages':_0x2a71c8[_0x134562(0x174)]?.[_0x134562(0xa8)](_0x598b7d=>({'role':_0x598b7d[_0x134562(0xe6)],'content':_0x598b7d[_0x134562(0xf3)],..._0x598b7d[_0x134562(0x124)]?{'tool_calls':_0x598b7d[_0x134562(0x124)][_0x134562(0x142)]}:{},..._0x598b7d[_0x134562(0x199)]?{'tool_call_id':_0x598b7d[_0x134562(0x199)]}:{}})),'request_content':{'query':_0x592e0f['data'][_0x134562(0x9e)],'repo_path':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x195)],'repoRoot':a0_0x562446['resolve'](_0x592e0f[_0x134562(0x1a5)]['repo_path']),'model':_0x134562(0xd4)}},'stack_trace':_0x2844ef?.[_0x134562(0x10b)]||undefined,'source':'mcp-filesystem'})[_0x134562(0x196)](()=>{});}else _0x1cec87=_0x134562(0x111);}return{'content':[{'type':_0x134562(0x19e),'text':_0x1cec87}]};}catch(_0x1217fc){const _0x3ca99c=handleMorphAPIError(_0x1217fc);if(_0x3ca99c)return logger[_0x134562(0xda)](_0x134562(0x105),_0x134562(0xfc),{'tool':_0x134562(0x18a),'error':_0x134562(0x159),'latency_ms':Date[_0x134562(0x19a)]()-_0x2ada35}),_0x3ca99c;const _0x505e83=_0x1217fc instanceof Error?_0x1217fc['message']:String(_0x1217fc);logger['error'](_0x134562(0x105),_0x134562(0xfc),{'tool':_0x134562(0x18a),'error':_0x505e83,'repo_path':_0x592e0f['data'][_0x134562(0x195)],'query':_0x592e0f[_0x134562(0x1a5)]['search_string'],'latency_ms':Date[_0x134562(0x19a)]()-_0x2ada35});const _0xd183b9=_0x505e83[_0x134562(0x18c)]()[_0x134562(0x1c2)](_0x134562(0x147))||_0x505e83[_0x134562(0x18c)]()[_0x134562(0x1c2)](_0x134562(0xf0))||_0x505e83[_0x134562(0x18c)]()[_0x134562(0x1c2)](_0x134562(0x126))||_0x1217fc instanceof Error&&_0x1217fc[_0x134562(0xcb)]===_0x134562(0x11b);return reportMorphError({'error_message':_0x505e83,'error_type':_0xd183b9?_0x134562(0x11b):_0x1217fc instanceof Error?_0x1217fc['constructor']['name']:_0x134562(0x1a8),'context':{'tool':_0x134562(0x18a),'repo_path':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x195)],'query':_0x592e0f[_0x134562(0x1a5)]['search_string'],'model':_0x134562(0xd4),'is_timeout':_0xd183b9,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x592e0f[_0x134562(0x1a5)]['search_string'],'repo_path':_0x592e0f[_0x134562(0x1a5)][_0x134562(0x195)],'repoRoot':a0_0x562446[_0x134562(0x100)](_0x592e0f[_0x134562(0x1a5)][_0x134562(0x195)]),'model':_0x134562(0xd4)}},'stack_trace':_0x1217fc instanceof Error?_0x1217fc['stack']:undefined,'source':_0x134562(0x11e)})[_0x134562(0x196)](()=>{}),{'content':[{'type':'text','text':_0x134562(0x1be)+_0x505e83}],'isError':![]};}}case TOOL_NAMES['GITHUB_CODEBASE_SEARCH']:{const _0x486861=WarpGrepGitHubArgsSchema[_0x134562(0x198)](_0x5b4ef4);if(!_0x486861[_0x134562(0xeb)])return{'content':[{'type':_0x134562(0x19e),'text':'Invalid\x20arguments:\x20'+_0x486861[_0x134562(0xda)]}],'isError':!![]};const _0xd17405=_0x486861[_0x134562(0x1a5)]['github_url']||_0x486861[_0x134562(0x1a5)][_0x134562(0x1af)];if(!_0xd17405)return{'content':[{'type':_0x134562(0x19e),'text':_0x134562(0xf4)}],'isError':!![]};const _0x32827e=MORPH_API_KEY;if(!_0x32827e)throw new Error(_0x134562(0xd1));const _0x1cb960=Date[_0x134562(0x19a)]();logger[_0x134562(0x13f)](_0x134562(0x105),'github_search_start',{'identifier':_0xd17405,'query':_0x486861[_0x134562(0x1a5)]['search_string'],'branch':_0x486861['data'][_0x134562(0x18f)]});try{const _0x48abb1=new WarpGrepClient({'morphApiKey':_0x32827e,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x290ea8=await _0x48abb1[_0x134562(0x15a)]({'searchTerm':_0x486861[_0x134562(0x1a5)][_0x134562(0x9e)],'github':_0xd17405,'branch':_0x486861[_0x134562(0x1a5)][_0x134562(0x18f)]}),_0x3816fe=Date[_0x134562(0x19a)]()-_0x1cb960;logMcpStderr(_0x134562(0xa0)+_0x3816fe+_0x134562(0x14e)+_0x290ea8[_0x134562(0xeb)]);const _0x3b84f6=formatResult(_0x290ea8);return{'content':[{'type':_0x134562(0x19e),'text':_0x3b84f6}]};}catch(_0x295b79){const _0x320280=handleMorphAPIError(_0x295b79);if(_0x320280)return _0x320280;const _0x3781c1=Date[_0x134562(0x19a)]()-_0x1cb960,_0x2a34ab=_0x295b79 instanceof Error?_0x295b79['message']:String(_0x295b79);return logMcpStderr(_0x134562(0x108)+_0x3781c1+_0x134562(0x169),_0x2a34ab),reportMorphError({'error_message':_0x2a34ab,'error_type':_0x295b79 instanceof Error?_0x295b79[_0x134562(0xa3)][_0x134562(0xcb)]:_0x134562(0x1a8),'context':{'tool':_0x134562(0x143),'github_url':_0xd17405,'search_string':_0x486861[_0x134562(0x1a5)][_0x134562(0x9e)],'branch':_0x486861[_0x134562(0x1a5)][_0x134562(0x18f)]},'stack_trace':_0x295b79 instanceof Error?_0x295b79[_0x134562(0x10b)]:undefined,'source':_0x134562(0x11e),'tool':_0x134562(0x143),'latency_ms':_0x3781c1})[_0x134562(0x196)](()=>{}),{'content':[{'type':'text','text':_0x134562(0x13b)+_0x2a34ab}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x5e4754);}}catch(_0x341e40){const _0x332ad3=_0x341e40 instanceof Error?_0x341e40['message']:String(_0x341e40);return reportMorphError({'error_message':_0x332ad3,'error_type':_0x341e40 instanceof Error?_0x341e40[_0x134562(0xa3)]['name']:_0x134562(0x1a8),'context':{'tool':_0x5e4754,'arguments':_0x5b4ef4?JSON[_0x134562(0xb9)](_0x5b4ef4)[_0x134562(0x168)](0x0,0x1f4):undefined,'mcp_server_version':_0x134562(0x172)},'stack_trace':_0x341e40 instanceof Error?_0x341e40[_0x134562(0x10b)]:undefined,'source':_0x134562(0x11e)})['catch'](()=>{}),{'content':[{'type':'text','text':_0x134562(0x165)+_0x332ad3}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x5eef20){const _0x18775e=a0_0x5a8a3f,_0x27cc5c=await getValidRootDirectories(_0x5eef20);if(_0x27cc5c[_0x18775e(0x142)]>0x0)allowedDirectories=[..._0x27cc5c],logMcpStderr(_0x18775e(0xd0)+_0x27cc5c[_0x18775e(0x142)]+_0x18775e(0xf2));else{logMcpStderr(_0x18775e(0x121));if(ENABLE_WORKSPACE_MODE)try{const _0x24a7af=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x24a7af&&(allowedDirectories=[_0x24a7af],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x24a7af));}catch(_0xa02be0){logMcpStderr(_0x18775e(0xdd)+_0xa02be0);}}}server[a0_0x5a8a3f(0x12c)](RootsListChangedNotificationSchema,async()=>{const _0x24c976=a0_0x5a8a3f;try{const _0x5acf0a=await server[_0x24c976(0x1c0)]();_0x5acf0a&&_0x24c976(0x130)in _0x5acf0a&&await updateAllowedDirectoriesFromRoots(_0x5acf0a['roots']);}catch(_0x36f69b){logMcpStderr(_0x24c976(0xb6),_0x36f69b instanceof Error?_0x36f69b[_0x24c976(0x140)]:String(_0x36f69b));}}),server['oninitialized']=async()=>{const _0x2dbb21=a0_0x5a8a3f,_0x4db2ee=server[_0x2dbb21(0x9c)]();if(_0x4db2ee?.[_0x2dbb21(0x130)])try{const _0x274932=await server[_0x2dbb21(0x1c0)]();_0x274932&&_0x2dbb21(0x130)in _0x274932?await updateAllowedDirectoriesFromRoots(_0x274932[_0x2dbb21(0x130)]):logMcpStderr(_0x2dbb21(0xe0));}catch(_0x541abe){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x541abe instanceof Error?_0x541abe[_0x2dbb21(0x140)]:String(_0x541abe));}else{if(allowedDirectories['length']>0x0)logMcpStderr(_0x2dbb21(0xd6),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x2dbb21(0x19b));else throw new Error(_0x2dbb21(0xe3));}}};async function runServer(){const _0x13de52=a0_0x5a8a3f,_0x2b8a92=new StdioServerTransport();await server[_0x13de52(0xb7)](_0x2b8a92),logMcpStderr(_0x13de52(0x12e)),allowedDirectories['length']===0x0&&logMcpStderr(_0x13de52(0x158));}runServer()['catch'](_0x1841e9=>{const _0x6e4f49=a0_0x5a8a3f;logMcpStderr(_0x6e4f49(0xe2),_0x1841e9),process[_0x6e4f49(0x167)](0x1);});
|
|
2
|
+
const a0_0x227abc=a0_0x2127;(function(_0x3ca447,_0x1d39b8){const _0x531fbe=a0_0x2127,_0x1da6be=_0x3ca447();while(!![]){try{const _0x31ca05=-parseInt(_0x531fbe(0x315))/0x1+parseInt(_0x531fbe(0x309))/0x2+-parseInt(_0x531fbe(0x206))/0x3*(-parseInt(_0x531fbe(0x222))/0x4)+-parseInt(_0x531fbe(0x308))/0x5*(-parseInt(_0x531fbe(0x21b))/0x6)+-parseInt(_0x531fbe(0x2e0))/0x7*(-parseInt(_0x531fbe(0x2da))/0x8)+parseInt(_0x531fbe(0x2b7))/0x9*(parseInt(_0x531fbe(0x216))/0xa)+-parseInt(_0x531fbe(0x26a))/0xb;if(_0x31ca05===_0x1d39b8)break;else _0x1da6be['push'](_0x1da6be['shift']());}catch(_0x1f0f63){_0x1da6be['push'](_0x1da6be['shift']());}}}(a0_0x5757,0x7a28d));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_0x4e40e0 from'fs/promises';import a0_0x123294 from'path';import a0_0x51281c 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_0x4e35e1 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x13d3d2){const _0x5311c6=a0_0x2127,_0x53a581=_0x13d3d2['split'](a0_0x123294[_0x5311c6(0x295)])[_0x5311c6(0x242)](Boolean);if(_0x53a581['length']<0x2)return null;for(let _0x494e71=Math[_0x5311c6(0x31c)](_0x53a581[_0x5311c6(0x2de)]/0x2);_0x494e71>=0x1;_0x494e71--){for(let _0xa72741=0x0;_0xa72741<=_0x53a581[_0x5311c6(0x2de)]-0x2*_0x494e71;_0xa72741++){const _0x1b73d7=_0x53a581[_0x5311c6(0x21d)](_0xa72741,_0xa72741+_0x494e71),_0x53da20=_0x53a581[_0x5311c6(0x21d)](_0xa72741+_0x494e71,_0xa72741+0x2*_0x494e71);if(_0x1b73d7[_0x5311c6(0x284)]((_0x362770,_0x228ee5)=>_0x362770===_0x53da20[_0x228ee5])){const _0x182fd5=[..._0x53a581[_0x5311c6(0x21d)](0x0,_0xa72741),..._0x53a581[_0x5311c6(0x21d)](_0xa72741+_0x494e71)];return a0_0x123294['sep']+_0x182fd5['join'](a0_0x123294[_0x5311c6(0x295)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x1ce701=a0_0x2127;try{const _0x49651e=require(_0x1ce701(0x1f3));return _0x49651e[_0x1ce701(0x2cb)]??_0x1ce701(0x249);}catch(_0x466d13){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x466d13),'unknown';}}function printHelp(){const _0x5bea69=a0_0x2127;console[_0x5bea69(0x1f5)](_0x5bea69(0x235)+getPackageVersion()),console[_0x5bea69(0x1f5)](_0x5bea69(0x299)),console[_0x5bea69(0x1f5)](_0x5bea69(0x2e3)),console[_0x5bea69(0x1f5)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x5bea69(0x1f5)](_0x5bea69(0x30f)),console[_0x5bea69(0x1f5)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console['log'](_0x5bea69(0x1f9)),console['log'](_0x5bea69(0x300)),console[_0x5bea69(0x1f5)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x227abc(0x2fd)][a0_0x227abc(0x21d)](0x2),VERSION_FLAGS=new Set([a0_0x227abc(0x2c5),'-v','-V']),HELP_FLAGS=new Set([a0_0x227abc(0x223),'-h']);cliArgs['some'](_0x40e1ee=>VERSION_FLAGS['has'](_0x40e1ee))&&(console[a0_0x227abc(0x1f5)](a0_0x227abc(0x235)+getPackageVersion()),process[a0_0x227abc(0x22e)](0x0));cliArgs['some'](_0x3ede24=>HELP_FLAGS[a0_0x227abc(0x317)](_0x3ede24))&&(printHelp(),process[a0_0x227abc(0x22e)](0x0));function getCliArg(_0x4b62d0){const _0x4a1bbb=a0_0x227abc;for(let _0x44a85b=0x0;_0x44a85b<cliArgs[_0x4a1bbb(0x2de)];_0x44a85b++){const _0x1d61aa=cliArgs[_0x44a85b];if(_0x1d61aa[_0x4a1bbb(0x23c)]('--'+_0x4b62d0+'='))return _0x1d61aa[_0x4a1bbb(0x21d)](('--'+_0x4b62d0+'=')[_0x4a1bbb(0x2de)]);if(_0x1d61aa==='--'+_0x4b62d0&&_0x44a85b+0x1<cliArgs[_0x4a1bbb(0x2de)])return cliArgs[_0x44a85b+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x227abc(0x2de)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x227abc(0x317)](arg)||HELP_FLAGS[a0_0x227abc(0x317)](arg))continue;if(arg[a0_0x227abc(0x23c)](a0_0x227abc(0x220)))continue;if(arg===a0_0x227abc(0x226)){i++;continue;}args[a0_0x227abc(0x282)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x227abc(0x229)]||process['env'][a0_0x227abc(0x2c1)]||process[a0_0x227abc(0x23a)](),ENABLE_WORKSPACE_MODE=process['env'][a0_0x227abc(0x2f2)]!==a0_0x227abc(0x274),MORPH_API_KEY=getCliArg(a0_0x227abc(0x28b))??process[a0_0x227abc(0x25e)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x227abc(0x25e)][a0_0x227abc(0x2be)],MORPH_LARGE_APPLY=process[a0_0x227abc(0x25e)]['MORPH_LARGE_APPLY']!=='false',MORPH_WARP_GREP_TIMEOUT=process['env']['MORPH_WARP_GREP_TIMEOUT']?parseInt(process['env'][a0_0x227abc(0x2f1)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x227abc(0x25e)][a0_0x227abc(0x263)]?new Set(process[a0_0x227abc(0x25e)][a0_0x227abc(0x263)][a0_0x227abc(0x22f)](',')['map'](_0x178d7d=>_0x178d7d['trim']())[a0_0x227abc(0x242)](_0x276ac6=>_0x276ac6['length']>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x227abc(0x245)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x227abc(0x317)](tool)&&console[a0_0x227abc(0x318)](a0_0x227abc(0x2f3)+tool+a0_0x227abc(0x233)+[...KNOWN_TOOL_NAMES][a0_0x227abc(0x27e)](',\x20'));}console[a0_0x227abc(0x318)]('Disabled\x20tools:\x20'+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x227abc(0x211))&&!MORPH_API_KEY[a0_0x227abc(0x23c)](a0_0x227abc(0x25a))&&logMcpStderr(a0_0x227abc(0x28a));function a0_0x2127(_0x23585b,_0x3a2208){_0x23585b=_0x23585b-0x1f3;const _0x5757e9=a0_0x5757();let _0x2127cc=_0x5757e9[_0x23585b];return _0x2127cc;}async function reportMorphError(_0x2708b2){const _0x593dd6=a0_0x227abc;try{await a0_0x4e35e1[_0x593dd6(0x2ec)](_0x593dd6(0x221),{..._0x2708b2,'timestamp':new Date()[_0x593dd6(0x28f)](),'source':_0x2708b2['source']||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x2708b2[_0x593dd6(0x20c)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x593dd6(0x2e7),'Authorization':_0x593dd6(0x294)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x8d2e91,_0x133642){const _0x4efe7e=a0_0x227abc;if(_0x8d2e91&&typeof _0x8d2e91===_0x4efe7e(0x277)&&'status'in _0x8d2e91)return _0x8d2e91['status'];if(_0x8d2e91&&typeof _0x8d2e91===_0x4efe7e(0x277)&&_0x4efe7e(0x1f7)in _0x8d2e91)return _0x8d2e91[_0x4efe7e(0x1f7)]?.[_0x4efe7e(0x289)];const _0x3d3623=_0x133642[_0x4efe7e(0x1fc)](/\b(401|429)\b/);return _0x3d3623?parseInt(_0x3d3623[0x1],0xa):null;}function handleMorphAPIError(_0x336b52){const _0x2cb757=a0_0x227abc,_0x32e944=_0x336b52 instanceof Error?_0x336b52['message']:String(_0x336b52),_0x24f01a=extractStatusCode(_0x336b52,_0x32e944);switch(_0x24f01a){case 0x191:return{'content':[{'type':_0x2cb757(0x290),'text':_0x2cb757(0x1f8)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x2cb757(0x290),'text':_0x2cb757(0x251)}],'isError':!![]};default:return null;}}args[a0_0x227abc(0x2de)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x227abc(0x30e)),logMcpStderr(a0_0x227abc(0x279)),logMcpStderr(a0_0x227abc(0x26d)),logMcpStderr(a0_0x227abc(0x240)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x227abc(0x2fa)));function normalizePath(_0x17bb85){return a0_0x123294['normalize'](_0x17bb85);}function expandHome(_0x22c3db){const _0x59dc75=a0_0x227abc;if(_0x22c3db[_0x59dc75(0x23c)]('~/')||_0x22c3db==='~')return a0_0x123294['join'](a0_0x51281c[_0x59dc75(0x2b2)](),_0x22c3db['slice'](0x1));return _0x22c3db;}let allowedDirectories=await Promise[a0_0x227abc(0x2ff)](args[a0_0x227abc(0x2c4)](async _0x2b5ebe=>{const _0x4f5f70=a0_0x227abc,_0x1f4597=expandHome(_0x2b5ebe),_0xa7b249=a0_0x123294[_0x4f5f70(0x268)](_0x1f4597);try{const _0x3cf9e6=await a0_0x4e40e0[_0x4f5f70(0x2ca)](_0xa7b249);return normalizePath(_0x3cf9e6);}catch(_0x242cd1){return normalizePath(_0xa7b249);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x227abc(0x2de)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),logMcpStderr(a0_0x227abc(0x285)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x2e962b){logMcpStderr(a0_0x227abc(0x246)+a0_0x2e962b);}async function detectWorkspaceRoot(_0x52d65b){const _0x445c2e=a0_0x227abc;let _0x59d6fe=a0_0x123294[_0x445c2e(0x268)](_0x52d65b);const _0x5c8430=[_0x445c2e(0x314),_0x445c2e(0x256),'package.json',_0x445c2e(0x2ad),_0x445c2e(0x24e),'go.mod',_0x445c2e(0x310),_0x445c2e(0x283),_0x445c2e(0x306)];while(_0x59d6fe!==a0_0x123294['dirname'](_0x59d6fe)){for(const _0x313ba3 of _0x5c8430){const _0x4a6f34=a0_0x123294[_0x445c2e(0x27e)](_0x59d6fe,_0x313ba3);try{return await a0_0x4e40e0[_0x445c2e(0x292)](_0x4a6f34),normalizePath(_0x59d6fe);}catch{}}_0x59d6fe=a0_0x123294['dirname'](_0x59d6fe);}return normalizePath(_0x52d65b);}await Promise[a0_0x227abc(0x2ff)](args['map'](async _0x1c205b=>{const _0x1af700=a0_0x227abc;try{const _0x3acb0f=await a0_0x4e40e0['stat'](expandHome(_0x1c205b));!_0x3acb0f['isDirectory']()&&(logMcpStderr(_0x1af700(0x2b9)+_0x1c205b+'\x20is\x20not\x20a\x20directory'),process[_0x1af700(0x22e)](0x1));}catch(_0x2e077c){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x1c205b+':',_0x2e077c),process['exit'](0x1);}}));function a0_0x5757(){const _0x5439a4=['-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','arguments','stringify','ms:','read\x20','[github_codebase_search]\x20Done\x20in\x20','messages','describe','WarpGrepError','8SfuInY','\x20valid\x20directories','getClientCapabilities','repo_path','length','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','4860205roqTil','Morph\x20Edit\x20','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','\x0aOptions:','listRoots','api_request_start','min','application/json','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','basename','linesAdded','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','post','command','searchGitHub','safeParse','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','MORPH_WARP_GREP_TIMEOUT','ENABLE_WORKSPACE_MODE','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','\x22>\x0a','Fallback:\x20Using\x20workspace\x20root\x20','read','node_modules','Here\x20is\x20the\x20content\x20of\x20files:\x0a','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','-\x20Preserve\x20exact\x20indentation\x0a','array','argv','grep_search','all','\x20\x20morph-mcp','LocalRipgrepProvider','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','filePath','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','codebase_search','composer.json','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','130FNJRbN','1241760rEjZaq','utf-8','MCP','path_validation_start','metadata','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','.cursor','message','edit_file','File\x20read\x20error:','.git','110303mkexwL','file','has','error','setRequestHandler','FileNotFound','Fatal\x20error\x20running\x20server:','floor','ReadError','../package.json','GITHUB_CODEBASE_SEARCH','log',',\x20removed\x20','response','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.','\x0aExamples:','glob\x20\x27','Preview\x20changes\x20without\x20applying\x20them.','match','isArray','runWarpGrep_call','path_validation_resolved','instruction','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','Specific\x20commit\x20hash\x20to\x20search','lines','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','instructions','210ereqaM','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','tool_call_id','search_type','terminated','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','context','search_string','Morph\x20Edit\x20Preview','ENOENT','timeout','sk-','**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','Max\x20results\x20to\x20return','tool_call_received','list_directory\x20','6295130eIMSRB','❌\x20Morph\x20Edit\x20Failed:\x20','RipgrepError','source','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','45510yyYdvs','code_edit','slice','.\x20Changes:\x20','enum','--api-key=','https://morphllm.com/api/error-report','31676fsMzWS','--help','compaction_failed','linesModified','--api-key','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','string','WORKSPACE_ROOT','linesRemoved','constructor','Error\x20running\x20fast\x20context\x20search:\x20','oninitialized','exit','split','optional','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','[github_codebase_search]\x20Failed\x20in\x20','\x22.\x20Known\x20tools:\x20','Created\x20File','@morphllm/morphmcp\x20','includes','github_url','API\x20error\x20(auth/rate-limit)','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','cwd','assistant','startsWith','tool_calls','\x20disabled\x20via\x20DISABLED_TOOLS','BinaryFile','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','code','filter','grep','Repository\x20identifier','size','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','path','unknown','params','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','etimedout','pyproject.toml','morph-warp-grep-v2.1','warp_grep_complete','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','success','ToolException','EDIT_FILE','content','.vscode','provider_created','-\x20Glob\x20search\x20`','files','morph-','completed_with_file_errors','terminationReason','.\x20Path:\x20','env','CODEBASE_SEARCH','github_codebase_search','RipgrepNotAvailable','catch','DISABLED_TOOLS','[could\x20not\x20read\x20file:\x20','indexOf','list_directory','stack','resolve','Morph\x20FastApply\x20failed\x20without\x20error\x20message','22941380jTjoCE','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','Parent\x20directory\x20does\x20not\x20exist:\x20','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','new_string','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','warn','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','Warning:\x20','UnknownError','false','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.','name','object','target_filepath','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','\x20error(s)','tool_call_complete','added\x20','timings','join','parse','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.','dirname','push','tsconfig.json','every','Workspace\x20mode\x20enabled:\x20Using\x20','Parameters:\x0a','\x27\x20in\x20`','0.2.0','status','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','api-key','Unknown\x20tool:\x20','<file\x20path=\x22','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.','toISOString','text','number','access','branch','Bearer\x20','sep','tool_call_error','requiresApiKey','\x20(new\x20file)','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','Failed\x20to\x20read\x20file:\x20','morph-mcp','Tool\x20','TimeoutError','roots','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Tool\x20\x22','debug','dryRun','readFile','path_validation_failed','unknown\x20error','glob','file_read_failed','target_file','\x0a</file>','toLowerCase','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','Example\x20format:\x0a','Cargo.toml','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','`\x20in\x20`','SymlinkError','substring','homedir','now','function','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','setNotificationHandler','9EhFrsT','data','Error:\x20','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','default','warp_grep_start','errors','MORPH_API_URL','role','morph-v3-large','PWD','boolean','completionId','map','--version','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','mcp-filesystem','-\x20Listed\x20directory\x20`','file_read_complete','realpath','version','grep\x20\x27','finish','pattern','morph-v3-fast','ms.\x20Success:\x20'];a0_0x5757=function(){return _0x5439a4;};return a0_0x5757();}async function validatePath(_0x3165a1){const _0x59c0d7=a0_0x227abc,_0x42081b=expandHome(_0x3165a1),_0x3e6d05=a0_0x123294['resolve'](_0x42081b);logger[_0x59c0d7(0x2a1)]('MCP',_0x59c0d7(0x30c),{'raw_path':_0x3165a1,'absolute':_0x3e6d05});try{const _0x55a5cc=await a0_0x4e40e0['realpath'](_0x3e6d05);return logger[_0x59c0d7(0x2a1)](_0x59c0d7(0x30b),_0x59c0d7(0x1ff),{'resolved':_0x55a5cc,'symlink':_0x55a5cc!==_0x3e6d05}),_0x55a5cc;}catch(_0x1d2796){if(_0x1d2796[_0x59c0d7(0x241)]===_0x59c0d7(0x20f)){const _0x4be0fc=a0_0x123294[_0x59c0d7(0x281)](_0x3e6d05);try{const _0x329e85=await a0_0x4e40e0['realpath'](_0x4be0fc),_0x76938c=a0_0x123294[_0x59c0d7(0x27e)](_0x329e85,a0_0x123294[_0x59c0d7(0x2e9)](_0x3e6d05));return logger['debug'](_0x59c0d7(0x30b),_0x59c0d7(0x1ff),{'resolved':_0x76938c,'new_file':!![]}),_0x76938c;}catch{logger[_0x59c0d7(0x318)](_0x59c0d7(0x30b),_0x59c0d7(0x2a4),{'raw_path':_0x3165a1,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x4be0fc});throw new Error(_0x59c0d7(0x26c)+_0x4be0fc);}}logger[_0x59c0d7(0x318)]('MCP',_0x59c0d7(0x2a4),{'raw_path':_0x3165a1,'error':_0x1d2796[_0x59c0d7(0x311)]});throw _0x1d2796;}}const MorphEditFileArgsSchema=z[a0_0x227abc(0x277)]({'path':z[a0_0x227abc(0x228)](),'code_edit':z[a0_0x227abc(0x228)]()['describe'](a0_0x227abc(0x26b)),'instruction':z['string']()[a0_0x227abc(0x2d8)](a0_0x227abc(0x247)),'dryRun':z[a0_0x227abc(0x2c2)]()[a0_0x227abc(0x2bb)](![])['describe'](a0_0x227abc(0x1fb))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x227abc(0x28e),WarpGrepArgsSchema=z[a0_0x227abc(0x277)]({'search_string':z['string']()[a0_0x227abc(0x2d8)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x227abc(0x228)]()[a0_0x227abc(0x2d8)](a0_0x227abc(0x271)),'search_type':z[a0_0x227abc(0x21f)](['default',a0_0x227abc(0x2f8)])['optional']()['describe'](a0_0x227abc(0x26f))}),WarpGrepGitHubArgsSchema=z[a0_0x227abc(0x277)]({'search_string':z['string']()[a0_0x227abc(0x2d8)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()[a0_0x227abc(0x230)]()[a0_0x227abc(0x2d8)](a0_0x227abc(0x280)),'owner_repo':z[a0_0x227abc(0x228)]()[a0_0x227abc(0x230)]()['describe'](a0_0x227abc(0x2ab)),'branch':z[a0_0x227abc(0x228)]()[a0_0x227abc(0x230)]()[a0_0x227abc(0x2d8)](a0_0x227abc(0x207))}),CodebaseSearchArgsSchema=z[a0_0x227abc(0x277)]({'query':z[a0_0x227abc(0x228)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x227abc(0x2d8)](a0_0x227abc(0x244)),'branch':z[a0_0x227abc(0x228)]()[a0_0x227abc(0x230)]()[a0_0x227abc(0x2d8)](a0_0x227abc(0x2f0)),'commitHash':z[a0_0x227abc(0x228)]()[a0_0x227abc(0x230)]()[a0_0x227abc(0x2d8)](a0_0x227abc(0x202)),'targetDirectories':z[a0_0x227abc(0x2fc)](z[a0_0x227abc(0x228)]())[a0_0x227abc(0x2bb)]([])[a0_0x227abc(0x2d8)]('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z[a0_0x227abc(0x291)]()['optional']()['default'](0xa)['describe'](a0_0x227abc(0x213))}),server=new Server({'name':a0_0x227abc(0x29b),'version':'0.2.0'},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x48ac60=a0_0x227abc,_0x3adb4b=[{'name':TOOL_NAMES[_0x48ac60(0x254)],'description':_0x48ac60(0x212)+_0x48ac60(0x286)+'-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a'+_0x48ac60(0x307)+_0x48ac60(0x239)+'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'+_0x48ac60(0x2ac)+_0x48ac60(0x302)+'Rules:\x0a'+_0x48ac60(0x2ae)+_0x48ac60(0x2fb)+_0x48ac60(0x201)+_0x48ac60(0x2d1),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x48ac60(0x25f)],'description':_0x48ac60(0x21a)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x48ac60(0x2eb)+_0x48ac60(0x231)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x33a065=_0x3adb4b[_0x48ac60(0x242)](_0x60b70=>{const _0x564424=_0x48ac60;if(DISABLED_TOOLS[_0x564424(0x317)](_0x60b70[_0x564424(0x276)]))return console[_0x564424(0x318)](_0x564424(0x29c)+_0x60b70[_0x564424(0x276)]+_0x564424(0x23e)),![];if('requiresApiKey'in _0x60b70&&_0x60b70[_0x564424(0x297)]&&!MORPH_API_KEY)return logMcpStderr(_0x564424(0x272)+_0x60b70[_0x564424(0x276)]+_0x564424(0x2df)),![];return!![];});return{'tools':_0x33a065[_0x48ac60(0x2c4)](_0x4d93a4=>({'name':_0x4d93a4[_0x48ac60(0x276)],'description':_0x4d93a4['description'],'inputSchema':_0x4d93a4['inputSchema']}))};}),server[a0_0x227abc(0x319)](CallToolRequestSchema,async _0x525907=>{const _0x24010d=a0_0x227abc,{name:_0x3d0a42,arguments:_0x35e2fe}=_0x525907[_0x24010d(0x24a)],_0x56f1d9=Date[_0x24010d(0x2b3)]();logger[_0x24010d(0x2a1)](_0x24010d(0x30b),_0x24010d(0x214),{'tool':_0x3d0a42,'args':_0x3d0a42==='edit_file'?{'path':_0x35e2fe?.[_0x24010d(0x248)],'instruction':_0x35e2fe?.[_0x24010d(0x200)]||_0x35e2fe?.[_0x24010d(0x205)],'dryRun':_0x35e2fe?.[_0x24010d(0x2a2)]}:_0x35e2fe});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x24010d(0x290),'text':_0x24010d(0x20b)}],'isError':!![]};if(!MORPH_API_KEY[_0x24010d(0x23c)](_0x24010d(0x211))&&!MORPH_API_KEY['startsWith']('morph-'))return{'content':[{'type':'text','text':_0x24010d(0x275)}],'isError':!![]};if(DISABLED_TOOLS[_0x24010d(0x317)](_0x3d0a42))return{'content':[{'type':_0x24010d(0x290),'text':_0x24010d(0x2a0)+_0x3d0a42+'\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.'}],'isError':![]};switch(_0x3d0a42){case TOOL_NAMES[_0x24010d(0x254)]:{let _0x1848de=_0x35e2fe;if(_0x1848de&&typeof _0x1848de===_0x24010d(0x277)){if(!(_0x24010d(0x248)in _0x1848de)){const _0x2e854f=_0x1848de[_0x24010d(0x2a8)]??_0x1848de[_0x24010d(0x303)]??_0x1848de[_0x24010d(0x278)]??_0x1848de['file_path']??_0x1848de[_0x24010d(0x316)];if(_0x2e854f)_0x1848de={..._0x1848de,'path':_0x2e854f};}_0x24010d(0x205)in _0x1848de&&!(_0x24010d(0x200)in _0x1848de)&&(_0x1848de={..._0x1848de,'instruction':_0x1848de['instructions']});if(!('code_edit'in _0x1848de)){const _0x2658a2=_0x1848de[_0x24010d(0x241)]??_0x1848de[_0x24010d(0x26e)]??_0x1848de[_0x24010d(0x255)]??_0x1848de['edit'];if(_0x2658a2)_0x1848de={..._0x1848de,'code_edit':_0x2658a2};}}const _0x244de8=MorphEditFileArgsSchema[_0x24010d(0x2ef)](_0x1848de);if(!_0x244de8[_0x24010d(0x252)])throw new Error(_0x24010d(0x204)+_0x244de8[_0x24010d(0x318)]);const _0x150a28=await validatePath(_0x244de8['data']['path']);let _0x3e3315=null,_0x469663=!![],_0x1d124a=null;try{_0x3e3315=await a0_0x4e40e0['readFile'](_0x150a28,'utf-8'),logger[_0x24010d(0x2a1)](_0x24010d(0x30b),_0x24010d(0x2c9),{'path':_0x150a28,'size_bytes':_0x3e3315['length']});}catch(_0x5200c9){const _0x3a068c=_0x5200c9[_0x24010d(0x241)];_0x3a068c===_0x24010d(0x20f)?(_0x469663=![],_0x3e3315='',logger[_0x24010d(0x2a1)](_0x24010d(0x30b),_0x24010d(0x2c9),{'path':_0x150a28,'exists':![]})):(_0x1d124a=_0x24010d(0x29a)+(_0x3a068c||_0x24010d(0x249))+'\x20-\x20'+(_0x5200c9 instanceof Error?_0x5200c9['message']:String(_0x5200c9)),logger[_0x24010d(0x318)](_0x24010d(0x30b),_0x24010d(0x2a7),{'path':_0x150a28,'error':_0x1d124a}),logMcpStderr(_0x24010d(0x272)+_0x1d124a));}let _0x5476ef;try{const _0x8e0376=MORPH_API_KEY;if(!_0x8e0376)throw new Error(_0x24010d(0x227));const _0x26c28b=a0_0x123294['dirname'](_0x150a28),_0x5981c0=a0_0x123294[_0x24010d(0x2e9)](_0x150a28);logger['debug'](_0x24010d(0x30b),_0x24010d(0x2e5),{'model':_0x24010d(0x2cf),'path':_0x244de8[_0x24010d(0x2b8)][_0x24010d(0x248)],'instruction_len':_0x244de8['data'][_0x24010d(0x200)]['length'],'code_edit_len':_0x244de8[_0x24010d(0x2b8)][_0x24010d(0x21c)][_0x24010d(0x2de)],'original_code_len':_0x3e3315?.[_0x24010d(0x2de)]??0x0,'dry_run':_0x244de8[_0x24010d(0x2b8)][_0x24010d(0x2a2)]});const _0x481e96=Date['now'](),_0x5b34e1=await executeEditFile({'target_filepath':_0x5981c0,'code_edit':_0x244de8[_0x24010d(0x2b8)]['code_edit'],'instruction':_0x244de8[_0x24010d(0x2b8)][_0x24010d(0x200)]},{'morphApiKey':_0x8e0376,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x26c28b,'autoWrite':!_0x244de8[_0x24010d(0x2b8)][_0x24010d(0x2a2)],'generateUdiff':![],'debug':![]}),_0x1fc1bb=Date[_0x24010d(0x2b3)]()-_0x481e96;_0x5476ef=_0x5b34e1[_0x24010d(0x2c3)];if(!_0x5b34e1['success'])throw new Error(_0x5b34e1['error']||_0x24010d(0x269));const _0x374f3=_0x5b34e1['changes'],_0x176170=_0x24010d(0x27c)+_0x374f3[_0x24010d(0x2ea)]+_0x24010d(0x1f6)+_0x374f3[_0x24010d(0x22a)]+',\x20modified\x20'+_0x374f3[_0x24010d(0x225)];logger[_0x24010d(0x2a1)](_0x24010d(0x30b),_0x24010d(0x27b),{'tool':'edit_file','success':!![],'latency_ms':Date['now']()-_0x56f1d9,'edit_latency_ms':_0x1fc1bb,'changes':{'added':_0x374f3[_0x24010d(0x2ea)],'removed':_0x374f3['linesRemoved'],'modified':_0x374f3[_0x24010d(0x225)]},'completion_id':_0x5476ef});if(_0x244de8[_0x24010d(0x2b8)]['dryRun'])return{'content':[{'type':'text','text':_0x24010d(0x20e)+(_0x469663?'':_0x24010d(0x298))+':\x20'+_0x244de8['data']['instruction']+'.\x20Changes:\x20'+_0x176170+_0x24010d(0x25d)+_0x244de8['data'][_0x24010d(0x248)]+'.'}]};return{'content':[{'type':_0x24010d(0x290),'text':_0x24010d(0x2e1)+(_0x469663?'Applied':_0x24010d(0x234))+':\x20'+_0x244de8['data']['instruction']+_0x24010d(0x21e)+_0x176170+'.\x20Path:\x20'+_0x244de8[_0x24010d(0x2b8)][_0x24010d(0x248)]+'.'}]};}catch(_0x8f2193){const _0x59f41a=handleMorphAPIError(_0x8f2193);if(_0x59f41a)return logger['error']('MCP',_0x24010d(0x296),{'tool':'edit_file','error':_0x24010d(0x238),'latency_ms':Date[_0x24010d(0x2b3)]()-_0x56f1d9}),_0x59f41a;const _0x3b5702=_0x8f2193 instanceof Error?_0x8f2193[_0x24010d(0x311)]:String(_0x8f2193);return logger[_0x24010d(0x318)](_0x24010d(0x30b),_0x24010d(0x296),{'tool':_0x24010d(0x312),'error':_0x3b5702,'path':_0x244de8[_0x24010d(0x2b8)][_0x24010d(0x248)],'validated_path':_0x150a28,'latency_ms':Date[_0x24010d(0x2b3)]()-_0x56f1d9,'stack':_0x8f2193 instanceof Error?_0x8f2193[_0x24010d(0x267)]:undefined}),reportMorphError({'error_message':_0x3b5702,'error_type':_0x8f2193 instanceof Error?_0x8f2193['constructor']['name']:'UnknownError','context':{'tool':'edit_file','completion_id':_0x5476ef,'file_path':_0x244de8[_0x24010d(0x2b8)][_0x24010d(0x248)],'validated_path':_0x150a28,'instruction':_0x244de8[_0x24010d(0x2b8)][_0x24010d(0x200)],'model':MORPH_LARGE_APPLY?_0x24010d(0x2c0):_0x24010d(0x2cf),'dry_run':_0x244de8[_0x24010d(0x2b8)]['dryRun'],'file_exists':_0x469663,'file_read_error':_0x1d124a,'file_readable':_0x3e3315!==null,'request_content':{'path':_0x244de8[_0x24010d(0x2b8)][_0x24010d(0x248)],'code_edit':_0x244de8['data'][_0x24010d(0x21c)],'instruction':_0x244de8[_0x24010d(0x2b8)][_0x24010d(0x200)],'original_code':_0x3e3315!==null?_0x3e3315[_0x24010d(0x2de)]>0xc350?_0x3e3315[_0x24010d(0x2b1)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x3e3315[_0x24010d(0x2de)]+'\x20chars)':_0x3e3315:_0x24010d(0x264)+(_0x1d124a||_0x24010d(0x2a5))+']','original_code_length':_0x3e3315?.[_0x24010d(0x2de)]??0x0,'model':MORPH_LARGE_APPLY?_0x24010d(0x2c0):_0x24010d(0x2cf),'dry_run':_0x244de8['data']['dryRun']}},'stack_trace':_0x8f2193 instanceof Error?_0x8f2193[_0x24010d(0x267)]:undefined,'source':_0x24010d(0x2c7)})[_0x24010d(0x262)](()=>{}),{'content':[{'type':'text','text':_0x24010d(0x217)+_0x3b5702}],'isError':!![]};}}case TOOL_NAMES[_0x24010d(0x25f)]:{const _0x3078f4=WarpGrepArgsSchema[_0x24010d(0x2ef)](_0x35e2fe);if(!_0x3078f4[_0x24010d(0x252)])return{'content':[{'type':_0x24010d(0x290),'text':'Invalid\x20arguments:\x20'+_0x3078f4[_0x24010d(0x318)]}],'isError':!![]};const _0x55d002=_0x511c74=>{const _0x44a017=_0x24010d,_0x21b3c3=[];for(const _0x2005c0 of _0x511c74||[]){if(_0x2005c0[_0x44a017(0x2bf)]===_0x44a017(0x23b)&&Array[_0x44a017(0x1fd)](_0x2005c0[_0x44a017(0x23d)]))for(const _0x1ca0db of _0x2005c0[_0x44a017(0x23d)]){try{const _0x172d03=_0x1ca0db['function']?.[_0x44a017(0x276)],_0x50ef64=JSON[_0x44a017(0x27f)](_0x1ca0db['function']?.[_0x44a017(0x2d2)]||'{}');if(_0x172d03===_0x44a017(0x2fe))_0x21b3c3[_0x44a017(0x282)](_0x44a017(0x2cc)+_0x50ef64[_0x44a017(0x2ce)]+'\x27\x20'+(_0x50ef64['path']||'.'));else{if(_0x172d03===_0x44a017(0x2f7))_0x21b3c3[_0x44a017(0x282)](_0x44a017(0x2d5)+_0x50ef64[_0x44a017(0x248)]);else{if(_0x172d03===_0x44a017(0x266))_0x21b3c3[_0x44a017(0x282)](_0x44a017(0x215)+(_0x50ef64[_0x44a017(0x2ed)]||'.'));else{if(_0x172d03===_0x44a017(0x2a6))_0x21b3c3[_0x44a017(0x282)](_0x44a017(0x1fa)+_0x50ef64[_0x44a017(0x2ce)]+'\x27\x20'+(_0x50ef64['path']||'.'));else _0x172d03==='finish'&&_0x21b3c3['push'](_0x44a017(0x2cd));}}}}catch{}}}return _0x21b3c3;},_0x1744f0=_0x23a021=>{const _0x407189=_0x24010d,_0x1703a7=[];if(!_0x23a021||!Array[_0x407189(0x1fd)](_0x23a021))return _0x1703a7;const _0x5ab0d8=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x407189(0x31a),'tool':_0x407189(0x2f7)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x407189(0x2f7)},{'pattern':/\[READ ERROR\]/,'error_type':_0x407189(0x31d),'tool':_0x407189(0x2f7)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x407189(0x23f),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x407189(0x218),'tool':_0x407189(0x243)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x407189(0x261),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':_0x407189(0x23f),'tool':_0x407189(0x2f7)},{'pattern':/\[SYMLINK\]/,'error_type':_0x407189(0x2b0),'tool':_0x407189(0x2f7)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':'read'},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x407189(0x2f7)},{'pattern':/Error reading file:/,'error_type':_0x407189(0x31d),'tool':_0x407189(0x2f7)},{'pattern':/status="error"/,'error_type':_0x407189(0x253),'tool':_0x407189(0x249)}];let _0x1481ed=0x0;for(const _0x5e1ea3 of _0x23a021){_0x5e1ea3['role']===_0x407189(0x23b)&&Array[_0x407189(0x1fd)](_0x5e1ea3[_0x407189(0x23d)])&&_0x1481ed++;const _0x3e4970=_0x5e1ea3[_0x407189(0x255)];if((_0x5e1ea3['role']==='tool'||_0x5e1ea3[_0x407189(0x2bf)]==='user')&&_0x3e4970&&typeof _0x3e4970===_0x407189(0x228))for(const {pattern:_0x2861be,error_type:_0x24ad6d,tool:_0xa51491}of _0x5ab0d8){const _0xebdbde=_0x3e4970[_0x407189(0x1fc)](new RegExp(_0x2861be[_0x407189(0x219)],'g'));if(_0xebdbde)for(const _0x4927b6 of _0xebdbde){const _0x37c3b1=_0x3e4970[_0x407189(0x265)](_0x4927b6),_0xdf641c=_0x3e4970['substring'](_0x37c3b1,Math[_0x407189(0x2e6)](_0x37c3b1+0xc8,_0x3e4970[_0x407189(0x2de)]));_0x1703a7[_0x407189(0x282)]({'tool':_0xa51491,'error_type':_0x24ad6d,'error_message':_0xdf641c[_0x407189(0x22f)]('\x0a')[0x0],'turn':_0x1481ed});}}}return _0x1703a7;};try{const _0x21c93e=a0_0x123294[_0x24010d(0x268)](_0x3078f4[_0x24010d(0x2b8)][_0x24010d(0x2dd)]),_0x701b20=_0x3078f4[_0x24010d(0x2b8)][_0x24010d(0x209)],_0x105d0f=_0x701b20===_0x24010d(0x2f8)?{'allowNames':[_0x24010d(0x2f8)]}:undefined,_0x25f353=new LocalRipgrepProvider(_0x21c93e,undefined,_0x105d0f);logger[_0x24010d(0x2a1)](_0x24010d(0x30b),_0x24010d(0x257),{'type':_0x24010d(0x301),'repo_root':_0x21c93e,'search_type':_0x701b20||_0x24010d(0x2bb)}),logger[_0x24010d(0x2a1)](_0x24010d(0x30b),_0x24010d(0x2bc),{'query':_0x3078f4[_0x24010d(0x2b8)][_0x24010d(0x20d)],'repo_root':_0x21c93e,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x493240=Date['now'](),_0x4e434f=await runWarpGrep({'searchTerm':_0x3078f4['data']['search_string'],'repoRoot':_0x21c93e,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x25f353,'search_type':_0x701b20}),_0x3e0b64=Date[_0x24010d(0x2b3)]()-_0x493240,_0x48e035=_0x4e434f[_0x24010d(0x2cd)]?.[_0x24010d(0x30d)]?.[_0x24010d(0x259)]?.[_0x24010d(0x2de)]??0x0;logger[_0x24010d(0x2a1)](_0x24010d(0x30b),_0x24010d(0x250),{'termination':_0x4e434f['terminationReason'],'turns':_0x4e434f[_0x24010d(0x27d)]?.['turns']??0x0,'files_found':_0x48e035,'latency_ms':_0x3e0b64});const _0x2741fe=_0x1744f0(_0x4e434f[_0x24010d(0x2d7)]);_0x2741fe[_0x24010d(0x2de)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x2741fe[_0x24010d(0x2de)]+_0x24010d(0x27a),'error_type':'SubToolError','level':'warn','tool':_0x24010d(0x305),'context':{'repo_path':_0x3078f4['data'][_0x24010d(0x2dd)],'query':_0x3078f4[_0x24010d(0x2b8)][_0x24010d(0x20d)],'model':_0x24010d(0x24f),'termination_reason':_0x4e434f[_0x24010d(0x25c)],'sub_tool_errors':_0x2741fe,'timings':_0x4e434f['timings'],'tool_calls':_0x55d002(_0x4e434f[_0x24010d(0x2d7)]),'messages':_0x4e434f['messages']?.[_0x24010d(0x2c4)](_0x2a12ba=>({'role':_0x2a12ba[_0x24010d(0x2bf)],'content':_0x2a12ba['content'],..._0x2a12ba[_0x24010d(0x23d)]?{'tool_calls':_0x2a12ba[_0x24010d(0x23d)][_0x24010d(0x2de)]}:{},..._0x2a12ba[_0x24010d(0x208)]?{'tool_call_id':_0x2a12ba['tool_call_id']}:{}}))},'source':_0x24010d(0x2c7)})[_0x24010d(0x262)](()=>{});let _0x59f995='';if(_0x4e434f[_0x24010d(0x25c)]==='completed'&&_0x4e434f[_0x24010d(0x2cd)]?.['metadata']?.['files']){const _0x388271=_0x4e434f[_0x24010d(0x2cd)][_0x24010d(0x30d)]['files'];if(_0x388271[_0x24010d(0x2de)]===0x0)return _0x59f995=_0x4e434f[_0x24010d(0x2cd)]['payload']||_0x24010d(0x2e8),{'content':[{'type':_0x24010d(0x290),'text':_0x59f995}]};const _0x1888ab=[],_0xd25be7=[_0x24010d(0x24c)];for(const _0x16f788 of _0x4e434f[_0x24010d(0x2d7)]){if(_0x16f788['role']===_0x24010d(0x23b)&&Array[_0x24010d(0x1fd)](_0x16f788[_0x24010d(0x23d)]))for(const _0x4c11ea of _0x16f788[_0x24010d(0x23d)]){try{const _0x4ff881=_0x4c11ea['function']?.[_0x24010d(0x276)],_0x1a4d0f=JSON[_0x24010d(0x27f)](_0x4c11ea[_0x24010d(0x2b4)]?.[_0x24010d(0x2d2)]||'{}');if(_0x4ff881===_0x24010d(0x2fe))_0xd25be7[_0x24010d(0x282)]('-\x20Grepped\x20\x27'+_0x1a4d0f['pattern']+_0x24010d(0x287)+(_0x1a4d0f[_0x24010d(0x248)]||'.')+'`');else{if(_0x4ff881===_0x24010d(0x2f7))_0xd25be7[_0x24010d(0x282)]('-\x20Read\x20file\x20`'+_0x1a4d0f['path']+'`');else{if(_0x4ff881===_0x24010d(0x266))_0xd25be7[_0x24010d(0x282)](_0x24010d(0x2c8)+(_0x1a4d0f[_0x24010d(0x2ed)]||'.')+'`');else _0x4ff881==='glob'&&_0xd25be7[_0x24010d(0x282)](_0x24010d(0x258)+_0x1a4d0f[_0x24010d(0x2ce)]+_0x24010d(0x2af)+(_0x1a4d0f['path']||'.')+'`');}}}catch{}}}_0x1888ab[_0x24010d(0x282)](_0xd25be7['join']('\x0a'));const _0x4b1e6d=['','Relevant\x20context\x20found:'];for(const _0x50209d of _0x388271){if(_0x50209d['lines']==='*')_0x4b1e6d['push']('-\x20'+_0x50209d[_0x24010d(0x248)]+':*');else{if(Array['isArray'](_0x50209d[_0x24010d(0x203)])){const _0x2a6f75=_0x50209d[_0x24010d(0x203)]['map'](([_0x29db15,_0x29cd71])=>{if(_0x29db15===_0x29cd71)return''+_0x29db15;return _0x29db15+'-'+_0x29cd71;});_0x4b1e6d[_0x24010d(0x282)]('-\x20'+_0x50209d[_0x24010d(0x248)]+':'+_0x2a6f75[_0x24010d(0x27e)](','));}else _0x4b1e6d['push']('-\x20'+_0x50209d['path']+':*');}}_0x4b1e6d[_0x24010d(0x282)](''),_0x1888ab[_0x24010d(0x282)](_0x4b1e6d['join']('\x0a')),_0x1888ab[_0x24010d(0x282)](_0x24010d(0x2f9));const _0x51227a=[],_0x18dc09=[];for(const _0x2883b5 of _0x388271){let _0x2e9587=a0_0x123294[_0x24010d(0x268)](_0x3078f4[_0x24010d(0x2b8)][_0x24010d(0x2dd)],_0x2883b5[_0x24010d(0x248)]),_0xccddb9=null,_0x107d0a=null;try{_0xccddb9=await a0_0x4e40e0[_0x24010d(0x2a3)](_0x2e9587,{'encoding':'utf-8'});}catch(_0x2d90fc){const _0x2441f6=fixPathRepetition(_0x2e9587);if(_0x2441f6)try{_0xccddb9=await a0_0x4e40e0[_0x24010d(0x2a3)](_0x2441f6,{'encoding':_0x24010d(0x30a)}),_0x2e9587=_0x2441f6;}catch{_0x107d0a=_0x2d90fc instanceof Error?_0x2d90fc:new Error(String(_0x2d90fc));}else _0x107d0a=_0x2d90fc instanceof Error?_0x2d90fc:new Error(String(_0x2d90fc));}if(_0xccddb9!==null){const _0x125467=_0xccddb9[_0x24010d(0x22f)](/\r?\n/),_0x206525=[];if(_0x2883b5[_0x24010d(0x203)]==='*'||!Array['isArray'](_0x2883b5[_0x24010d(0x203)]))for(let _0xc18542=0x1;_0xc18542<=_0x125467[_0x24010d(0x2de)];_0xc18542++){const _0x4a74df=_0x125467[_0xc18542-0x1];_0x206525['push'](_0xc18542+'|\x20'+_0x4a74df);}else for(const [_0x5cca63,_0x1bc4d7]of _0x2883b5[_0x24010d(0x203)]){_0x206525[_0x24010d(0x2de)]>0x0&&_0x206525[_0x24010d(0x282)]('');for(let _0x39d71c=_0x5cca63;_0x39d71c<=_0x1bc4d7&&_0x39d71c<=_0x125467['length'];_0x39d71c++){const _0x3c9a01=_0x125467[_0x39d71c-0x1];_0x206525[_0x24010d(0x282)](_0x39d71c+'|\x20'+_0x3c9a01);}}_0x18dc09[_0x24010d(0x282)]({'path':_0x2883b5['path'],'content':_0x206525[_0x24010d(0x27e)]('\x0a')});}else _0x51227a[_0x24010d(0x282)](_0x24010d(0x28d)+_0x2883b5['path']+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x107d0a?.[_0x24010d(0x311)]||'Unknown\x20error')+_0x24010d(0x2a9));}try{const _0x3277cc=await compactFileContexts(_0x18dc09,_0x3078f4['data'][_0x24010d(0x20d)],MORPH_API_KEY,MORPH_API_URL);for(const _0x3c63e9 of _0x3277cc){_0x51227a[_0x24010d(0x282)]('<file\x20path=\x22'+_0x3c63e9['path']+_0x24010d(0x2f5)+_0x3c63e9['content']+_0x24010d(0x2a9));}}catch(_0x1f8d2d){logger[_0x24010d(0x270)](_0x24010d(0x30b),_0x24010d(0x224),{'error':_0x1f8d2d instanceof Error?_0x1f8d2d[_0x24010d(0x311)]:String(_0x1f8d2d),'files_count':_0x18dc09[_0x24010d(0x2de)]});for(const _0x3f1ff7 of _0x18dc09){_0x51227a[_0x24010d(0x282)](_0x24010d(0x28d)+_0x3f1ff7[_0x24010d(0x248)]+_0x24010d(0x2f5)+_0x3f1ff7[_0x24010d(0x255)]+_0x24010d(0x2a9));}}_0x1888ab['push'](_0x51227a[_0x24010d(0x27e)]('\x0a\x0a')),_0x59f995=_0x1888ab[_0x24010d(0x27e)]('\x0a');const _0x41fa2e=_0x4e434f[_0x24010d(0x2bd)]?.[_0x24010d(0x242)](_0x1d486d=>_0x1d486d['message']?.[_0x24010d(0x23c)](_0x24010d(0x313)))||[];if(_0x41fa2e[_0x24010d(0x2de)]>0x0){const _0x34e326=_0x41fa2e[_0x24010d(0x2c4)](_0x352dfa=>_0x352dfa['message'])[_0x24010d(0x27e)](';\x20');reportMorphError({'error_message':_0x34e326,'error_type':'FileReadError','context':{'tool':'codebase_search','repo_path':_0x3078f4[_0x24010d(0x2b8)]['repo_path'],'query':_0x3078f4['data']['search_string'],'model':_0x24010d(0x24f),'termination_reason':_0x24010d(0x25b),'error_count':_0x41fa2e[_0x24010d(0x2de)],'is_timeout':![],'timings':_0x4e434f['timings'],'files_attempted':_0x388271[_0x24010d(0x2c4)](_0x319a93=>({'path':_0x319a93['path'],'lines':_0x319a93['lines']})),'tool_calls':_0x55d002(_0x4e434f[_0x24010d(0x2d7)]),'messages':_0x4e434f['messages']?.[_0x24010d(0x2c4)](_0x4c5e6c=>({'role':_0x4c5e6c[_0x24010d(0x2bf)],'content':_0x4c5e6c[_0x24010d(0x255)],..._0x4c5e6c['tool_calls']?{'tool_calls':_0x4c5e6c[_0x24010d(0x23d)][_0x24010d(0x2de)]}:{},..._0x4c5e6c[_0x24010d(0x208)]?{'tool_call_id':_0x4c5e6c[_0x24010d(0x208)]}:{}})),'request_content':{'query':_0x3078f4[_0x24010d(0x2b8)][_0x24010d(0x20d)],'repo_path':_0x3078f4[_0x24010d(0x2b8)][_0x24010d(0x2dd)],'repoRoot':a0_0x123294[_0x24010d(0x268)](_0x3078f4[_0x24010d(0x2b8)][_0x24010d(0x2dd)]),'model':_0x24010d(0x24f)}},'source':_0x24010d(0x2c7)})[_0x24010d(0x262)](()=>{});}}else{if(_0x4e434f[_0x24010d(0x25c)]===_0x24010d(0x20a)&&_0x4e434f[_0x24010d(0x2bd)][_0x24010d(0x2de)]>0x0){const _0x479c44=_0x4e434f[_0x24010d(0x2bd)][_0x24010d(0x2c4)](_0x2cfb4c=>_0x2cfb4c['message'])['join'](';\x20');_0x59f995=_0x24010d(0x2b9)+_0x479c44;const _0x942340=_0x479c44[_0x24010d(0x2aa)]()[_0x24010d(0x236)]('timeout')||_0x479c44['toLowerCase']()[_0x24010d(0x236)]('timed\x20out')||_0x479c44[_0x24010d(0x2aa)]()['includes'](_0x24010d(0x24d)),_0x23307e=_0x4e434f[_0x24010d(0x2cd)]?.[_0x24010d(0x30d)]?.[_0x24010d(0x259)],_0x557b82=_0x4e434f[_0x24010d(0x2bd)][0x0];reportMorphError({'error_message':_0x479c44,'error_type':_0x942340?_0x24010d(0x29d):_0x557b82?.[_0x24010d(0x22b)]?.[_0x24010d(0x276)]||_0x24010d(0x2d9),'context':{'tool':_0x24010d(0x305),'repo_path':_0x3078f4['data'][_0x24010d(0x2dd)],'query':_0x3078f4[_0x24010d(0x2b8)]['search_string'],'model':_0x24010d(0x24f),'termination_reason':_0x4e434f['terminationReason'],'error_count':_0x4e434f[_0x24010d(0x2bd)][_0x24010d(0x2de)],'is_timeout':_0x942340,'timings':_0x4e434f['timings'],'files_attempted':_0x23307e?.[_0x24010d(0x2c4)](_0xf091cb=>({'path':_0xf091cb[_0x24010d(0x248)],'lines':_0xf091cb[_0x24010d(0x203)]})),'tool_calls':_0x55d002(_0x4e434f['messages']),'messages':_0x4e434f[_0x24010d(0x2d7)]?.[_0x24010d(0x2c4)](_0xfddd46=>({'role':_0xfddd46[_0x24010d(0x2bf)],'content':_0xfddd46[_0x24010d(0x255)],..._0xfddd46[_0x24010d(0x23d)]?{'tool_calls':_0xfddd46['tool_calls'][_0x24010d(0x2de)]}:{},..._0xfddd46['tool_call_id']?{'tool_call_id':_0xfddd46[_0x24010d(0x208)]}:{}})),'request_content':{'query':_0x3078f4[_0x24010d(0x2b8)][_0x24010d(0x20d)],'repo_path':_0x3078f4[_0x24010d(0x2b8)]['repo_path'],'repoRoot':a0_0x123294[_0x24010d(0x268)](_0x3078f4['data']['repo_path']),'model':_0x24010d(0x24f)}},'stack_trace':_0x557b82?.['stack']||undefined,'source':_0x24010d(0x2c7)})[_0x24010d(0x262)](()=>{});}else _0x59f995=_0x24010d(0x2b5);}return{'content':[{'type':_0x24010d(0x290),'text':_0x59f995}]};}catch(_0x5975e3){const _0xc20980=handleMorphAPIError(_0x5975e3);if(_0xc20980)return logger[_0x24010d(0x318)](_0x24010d(0x30b),_0x24010d(0x296),{'tool':_0x24010d(0x305),'error':_0x24010d(0x238),'latency_ms':Date[_0x24010d(0x2b3)]()-_0x56f1d9}),_0xc20980;const _0x2577fa=_0x5975e3 instanceof Error?_0x5975e3[_0x24010d(0x311)]:String(_0x5975e3);logger['error'](_0x24010d(0x30b),_0x24010d(0x296),{'tool':_0x24010d(0x305),'error':_0x2577fa,'repo_path':_0x3078f4[_0x24010d(0x2b8)][_0x24010d(0x2dd)],'query':_0x3078f4[_0x24010d(0x2b8)][_0x24010d(0x20d)],'latency_ms':Date[_0x24010d(0x2b3)]()-_0x56f1d9});const _0x372204=_0x2577fa['toLowerCase']()[_0x24010d(0x236)](_0x24010d(0x210))||_0x2577fa[_0x24010d(0x2aa)]()[_0x24010d(0x236)]('timed\x20out')||_0x2577fa['toLowerCase']()['includes'](_0x24010d(0x24d))||_0x5975e3 instanceof Error&&_0x5975e3[_0x24010d(0x276)]===_0x24010d(0x29d);return reportMorphError({'error_message':_0x2577fa,'error_type':_0x372204?'TimeoutError':_0x5975e3 instanceof Error?_0x5975e3[_0x24010d(0x22b)][_0x24010d(0x276)]:_0x24010d(0x273),'context':{'tool':_0x24010d(0x305),'repo_path':_0x3078f4['data'][_0x24010d(0x2dd)],'query':_0x3078f4[_0x24010d(0x2b8)]['search_string'],'model':_0x24010d(0x24f),'is_timeout':_0x372204,'exception_phase':_0x24010d(0x1fe),'request_content':{'query':_0x3078f4['data'][_0x24010d(0x20d)],'repo_path':_0x3078f4[_0x24010d(0x2b8)]['repo_path'],'repoRoot':a0_0x123294[_0x24010d(0x268)](_0x3078f4[_0x24010d(0x2b8)][_0x24010d(0x2dd)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x5975e3 instanceof Error?_0x5975e3['stack']:undefined,'source':_0x24010d(0x2c7)})['catch'](()=>{}),{'content':[{'type':_0x24010d(0x290),'text':_0x24010d(0x22c)+_0x2577fa}],'isError':![]};}}case TOOL_NAMES[_0x24010d(0x1f4)]:{const _0x370873=WarpGrepGitHubArgsSchema[_0x24010d(0x2ef)](_0x35e2fe);if(!_0x370873[_0x24010d(0x252)])return{'content':[{'type':_0x24010d(0x290),'text':'Invalid\x20arguments:\x20'+_0x370873[_0x24010d(0x318)]}],'isError':!![]};const _0x39c838=_0x370873[_0x24010d(0x2b8)][_0x24010d(0x237)]||_0x370873[_0x24010d(0x2b8)]['owner_repo'];if(!_0x39c838)return{'content':[{'type':_0x24010d(0x290),'text':_0x24010d(0x24b)}],'isError':!![]};const _0x52dbd2=MORPH_API_KEY;if(!_0x52dbd2)throw new Error(_0x24010d(0x227));const _0x400df7=Date[_0x24010d(0x2b3)]();logger['debug'](_0x24010d(0x30b),'github_search_start',{'identifier':_0x39c838,'query':_0x370873[_0x24010d(0x2b8)][_0x24010d(0x20d)],'branch':_0x370873[_0x24010d(0x2b8)][_0x24010d(0x293)]});try{const _0x56f27e=new WarpGrepClient({'morphApiKey':_0x52dbd2,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x113cee=await _0x56f27e[_0x24010d(0x2ee)]({'searchTerm':_0x370873[_0x24010d(0x2b8)]['search_string'],'github':_0x39c838,'branch':_0x370873['data'][_0x24010d(0x293)]}),_0x1b730a=Date['now']()-_0x400df7;logMcpStderr(_0x24010d(0x2d6)+_0x1b730a+_0x24010d(0x2d0)+_0x113cee['success']);const _0x391c70=formatResult(_0x113cee);return{'content':[{'type':_0x24010d(0x290),'text':_0x391c70}]};}catch(_0x491ec9){const _0x3e4e0f=handleMorphAPIError(_0x491ec9);if(_0x3e4e0f)return _0x3e4e0f;const _0x482555=Date[_0x24010d(0x2b3)]()-_0x400df7,_0x2c615e=_0x491ec9 instanceof Error?_0x491ec9[_0x24010d(0x311)]:String(_0x491ec9);return logMcpStderr(_0x24010d(0x232)+_0x482555+_0x24010d(0x2d4),_0x2c615e),reportMorphError({'error_message':_0x2c615e,'error_type':_0x491ec9 instanceof Error?_0x491ec9[_0x24010d(0x22b)]['name']:_0x24010d(0x273),'context':{'tool':_0x24010d(0x260),'github_url':_0x39c838,'search_string':_0x370873[_0x24010d(0x2b8)][_0x24010d(0x20d)],'branch':_0x370873[_0x24010d(0x2b8)][_0x24010d(0x293)]},'stack_trace':_0x491ec9 instanceof Error?_0x491ec9[_0x24010d(0x267)]:undefined,'source':'mcp-filesystem','tool':'github_codebase_search','latency_ms':_0x482555})[_0x24010d(0x262)](()=>{}),{'content':[{'type':_0x24010d(0x290),'text':'GitHub\x20search\x20failed:\x20'+_0x2c615e}],'isError':![]};}}default:throw new Error(_0x24010d(0x28c)+_0x3d0a42);}}catch(_0x3679db){const _0x4149b8=_0x3679db instanceof Error?_0x3679db[_0x24010d(0x311)]:String(_0x3679db);return reportMorphError({'error_message':_0x4149b8,'error_type':_0x3679db instanceof Error?_0x3679db[_0x24010d(0x22b)][_0x24010d(0x276)]:_0x24010d(0x273),'context':{'tool':_0x3d0a42,'arguments':_0x35e2fe?JSON[_0x24010d(0x2d3)](_0x35e2fe)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x24010d(0x288)},'stack_trace':_0x3679db instanceof Error?_0x3679db['stack']:undefined,'source':_0x24010d(0x2c7)})[_0x24010d(0x262)](()=>{}),{'content':[{'type':'text','text':_0x24010d(0x2b9)+_0x4149b8}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x60784b){const _0x312af5=a0_0x227abc,_0x2702c7=await getValidRootDirectories(_0x60784b);if(_0x2702c7[_0x312af5(0x2de)]>0x0)allowedDirectories=[..._0x2702c7],logMcpStderr(_0x312af5(0x2e2)+_0x2702c7['length']+_0x312af5(0x2db));else{logMcpStderr(_0x312af5(0x2f4));if(ENABLE_WORKSPACE_MODE)try{const _0x200fa0=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x200fa0&&(allowedDirectories=[_0x200fa0],logMcpStderr(_0x312af5(0x2f6)+_0x200fa0));}catch(_0x336fc1){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x336fc1);}}}server[a0_0x227abc(0x2b6)](RootsListChangedNotificationSchema,async()=>{const _0x55d1a0=a0_0x227abc;try{const _0x57b94d=await server[_0x55d1a0(0x2e4)]();_0x57b94d&&_0x55d1a0(0x29e)in _0x57b94d&&await updateAllowedDirectoriesFromRoots(_0x57b94d['roots']);}catch(_0x13530d){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x13530d instanceof Error?_0x13530d[_0x55d1a0(0x311)]:String(_0x13530d));}}),server[a0_0x227abc(0x22d)]=async()=>{const _0x3211a3=a0_0x227abc,_0x266d4e=server[_0x3211a3(0x2dc)]();if(_0x266d4e?.['roots'])try{const _0x17c385=await server['listRoots']();_0x17c385&&_0x3211a3(0x29e)in _0x17c385?await updateAllowedDirectoriesFromRoots(_0x17c385[_0x3211a3(0x29e)]):logMcpStderr(_0x3211a3(0x2ba));}catch(_0x162cc4){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x162cc4 instanceof Error?_0x162cc4[_0x3211a3(0x311)]:String(_0x162cc4));}else{if(allowedDirectories[_0x3211a3(0x2de)]>0x0)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x3211a3(0x29f));else throw new Error('Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.');}}};async function runServer(){const _0x4e511e=a0_0x227abc,_0x335149=new StdioServerTransport();await server['connect'](_0x335149),logMcpStderr(_0x4e511e(0x2c6)),allowedDirectories[_0x4e511e(0x2de)]===0x0&&logMcpStderr(_0x4e511e(0x304));}runServer()[a0_0x227abc(0x262)](_0x39aaa0=>{const _0x2d44e3=a0_0x227abc;logMcpStderr(_0x2d44e3(0x31b),_0x39aaa0),process[_0x2d44e3(0x22e)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a1_0x4a1c(_0x455748,_0x3c0601){_0x455748=_0x455748-0x1bd;var _0x544434=a1_0x5444();var _0x4a1cf9=_0x544434[_0x455748];return _0x4a1cf9;}var a1_0xcfa1e6=a1_0x4a1c;(function(_0x156c9d,_0x4a0195){var _0x3e661c=a1_0x4a1c,_0x1d4765=_0x156c9d();while(!![]){try{var _0x1f0255=parseInt(_0x3e661c(0x1c1))/0x1+parseInt(_0x3e661c(0x1c2))/0x2+parseInt(_0x3e661c(0x1c6))/0x3+parseInt(_0x3e661c(0x1c3))/0x4+-parseInt(_0x3e661c(0x1cb))/0x5+-parseInt(_0x3e661c(0x1cf))/0x6*(-parseInt(_0x3e661c(0x1bd))/0x7)+-parseInt(_0x3e661c(0x1ce))/0x8*(parseInt(_0x3e661c(0x1c4))/0x9);if(_0x1f0255===_0x4a0195)break;else _0x1d4765['push'](_0x1d4765['shift']());}catch(_0x5f2e66){_0x1d4765['push'](_0x1d4765['shift']());}}}(a1_0x5444,0x7af87));import a1_0x567204 from'os';import{logger}from'./logger.js';function a1_0x5444(){var _0x5e3f04=['map','Linux','platform','539529oPfvJl','1838506SqOTBU','894984LcHUiT','1005174eIWjZj','info','2773632IXsyvg','[os=','linux','length','Unknown','1109640sPtxCD','error','MCP','184YRRHxN','54kxXqOR','534583Kozbcf'];a1_0x5444=function(){return _0x5e3f04;};return a1_0x5444();}export function getOperatingSystemType(_0x38f7d5=a1_0x567204[a1_0xcfa1e6(0x1c0)]()){var _0x44f91b=a1_0xcfa1e6;switch(_0x38f7d5){case'darwin':return'macOS';case'win32':return'Windows';case _0x44f91b(0x1c8):return _0x44f91b(0x1bf);default:return _0x44f91b(0x1ca);}}export function formatMcpLogMessage(_0x255ced,_0x6ba00a=a1_0x567204[a1_0xcfa1e6(0x1c0)]()){var _0x310371=a1_0xcfa1e6;return _0x310371(0x1c7)+getOperatingSystemType(_0x6ba00a)+']\x20'+_0x255ced;}export function logMcpStderr(_0x2509a1,..._0x563016){var _0x57b3c8=a1_0xcfa1e6;console[_0x57b3c8(0x1cc)](formatMcpLogMessage(_0x2509a1),..._0x563016),logger[_0x57b3c8(0x1c5)](_0x57b3c8(0x1cd),_0x2509a1,_0x563016[_0x57b3c8(0x1c9)]?{'args':_0x563016[_0x57b3c8(0x1be)](_0x41eb1b=>String(_0x41eb1b))}:undefined);}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
function a2_0xe49f(_0x5bc438,_0x4e5319){_0x5bc438=_0x5bc438-0x77;const _0x3a5386=a2_0x3a53();let _0xe49f55=_0x3a5386[_0x5bc438];return _0xe49f55;}const a2_0x22628d=a2_0xe49f;(function(_0x68f63b,_0x44b422){const _0x98057d=a2_0xe49f,_0x25e111=_0x68f63b();while(!![]){try{const _0x3f1241=parseInt(_0x98057d(0x7a))/0x1+-parseInt(_0x98057d(0x8e))/0x2*(-parseInt(_0x98057d(0x88))/0x3)+-parseInt(_0x98057d(0x7e))/0x4*(-parseInt(_0x98057d(0x90))/0x5)+parseInt(_0x98057d(0x77))/0x6*(-parseInt(_0x98057d(0x7f))/0x7)+-parseInt(_0x98057d(0x8f))/0x8*(-parseInt(_0x98057d(0x8c))/0x9)+-parseInt(_0x98057d(0x86))/0xa+-parseInt(_0x98057d(0x89))/0xb;if(_0x3f1241===_0x44b422)break;else _0x25e111['push'](_0x25e111['shift']());}catch(_0x53e76d){_0x25e111['push'](_0x25e111['shift']());}}}(a2_0x3a53,0x32d35));import{createWriteStream}from'fs';function a2_0x3a53(){const _0x37d40d=['info','MORPH_DEBUG','113897oVpHkv','write','debug','toUpperCase','4QOSNbR','2299003MHtBcC','MORPH_LOG_FILE','enabled','warn','enable','fileStream','error','1352240CZCsWV','_log','14376uNaxpv','312664GMNlFh',']\x20[','stringify','9aISvqj','env','134bVslwr','1129400WINPAE','620610haVpOI','6NTPxhL'];a2_0x3a53=function(){return _0x37d40d;};return a2_0x3a53();}class MorphLogger{[a2_0x22628d(0x81)];[a2_0x22628d(0x84)];constructor(){const _0x12ce52=a2_0x22628d;this['enabled']=process[_0x12ce52(0x8d)][_0x12ce52(0x79)]==='1'||!!process[_0x12ce52(0x8d)][_0x12ce52(0x80)];const _0x39ff8f=process[_0x12ce52(0x8d)]['MORPH_LOG_FILE'];this[_0x12ce52(0x84)]=_0x39ff8f?createWriteStream(_0x39ff8f,{'flags':'a'}):null;}['debug'](_0x2986e9,_0x1bb067,_0x549c95){const _0x32412d=a2_0x22628d;this[_0x32412d(0x87)](_0x32412d(0x7c),_0x2986e9,_0x1bb067,_0x549c95);}[a2_0x22628d(0x78)](_0x312369,_0x455cac,_0x4d06b1){const _0x3fb8c9=a2_0x22628d;this[_0x3fb8c9(0x87)](_0x3fb8c9(0x78),_0x312369,_0x455cac,_0x4d06b1);}['warn'](_0x748f55,_0x1c6dd6,_0x45d1f6){const _0x1606af=a2_0x22628d;this['_log'](_0x1606af(0x82),_0x748f55,_0x1c6dd6,_0x45d1f6);}[a2_0x22628d(0x85)](_0x43dbe7,_0x3aac8b,_0x34e8ac){this['_log']('error',_0x43dbe7,_0x3aac8b,_0x34e8ac);}[a2_0x22628d(0x83)](){const _0x2b8023=a2_0x22628d;this[_0x2b8023(0x81)]=!![];}get['isEnabled'](){const _0x1342bf=a2_0x22628d;return this[_0x1342bf(0x81)];}[a2_0x22628d(0x87)](_0x14b0fe,_0x4bce80,_0x26aa7f,_0x278bf9){const _0x13ba5b=a2_0x22628d;if(_0x14b0fe!=='error'&&!this[_0x13ba5b(0x81)])return;const _0x1bcd0e=new Date()['toISOString'](),_0x534a79='['+_0x1bcd0e+_0x13ba5b(0x8a)+_0x14b0fe[_0x13ba5b(0x7d)]()+_0x13ba5b(0x8a)+_0x4bce80+']';console[_0x13ba5b(0x85)](_0x278bf9?_0x534a79+'\x20'+_0x26aa7f+'\x20'+JSON[_0x13ba5b(0x8b)](_0x278bf9):_0x534a79+'\x20'+_0x26aa7f),this[_0x13ba5b(0x84)]?.[_0x13ba5b(0x7b)](JSON['stringify']({'ts':_0x1bcd0e,'level':_0x14b0fe,'component':_0x4bce80,'msg':_0x26aa7f,..._0x278bf9&&{'data':_0x278bf9}})+'\x0a');}}export const logger=new MorphLogger();
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a3_0x3e5d(){const _0x5081a6=['homedir','1405bBSeYU','startsWith','slice','substring','222943ADhOdK','replace','join','normalize','match','84601icAmJj','5452QmLjtp','2BCpIKM','174304ApfQZj','toUpperCase','trim','102OyrrCU','1354344tQTSSs','charAt','10175715PRnipg','4065660loKDGV','198FyjDaH'];a3_0x3e5d=function(){return _0x5081a6;};return a3_0x3e5d();}(function(_0x30de78,_0x5bf1d2){const _0x57003f=a3_0xa8b1,_0x3fa0b4=_0x30de78();while(!![]){try{const _0x45c970=parseInt(_0x57003f(0x1d7))/0x1*(-parseInt(_0x57003f(0x1d9))/0x2)+-parseInt(_0x57003f(0x1de))/0x3+parseInt(_0x57003f(0x1d8))/0x4*(parseInt(_0x57003f(0x1e4))/0x5)+-parseInt(_0x57003f(0x1dd))/0x6*(-parseInt(_0x57003f(0x1e8))/0x7)+parseInt(_0x57003f(0x1da))/0x8*(parseInt(_0x57003f(0x1e2))/0x9)+parseInt(_0x57003f(0x1e1))/0xa+-parseInt(_0x57003f(0x1e0))/0xb;if(_0x45c970===_0x5bf1d2)break;else _0x3fa0b4['push'](_0x3fa0b4['shift']());}catch(_0x21c803){_0x3fa0b4['push'](_0x3fa0b4['shift']());}}}(a3_0x3e5d,0x55428));import a3_0x1fdefa from'path';function a3_0xa8b1(_0x2d2946,_0x409174){_0x2d2946=_0x2d2946-0x1d7;const _0x3e5d7e=a3_0x3e5d();let _0xa8b116=_0x3e5d7e[_0x2d2946];return _0xa8b116;}import a3_0x1a9c1e from'os';export function convertToWindowsPath(_0x47d12a){const _0x10863a=a3_0xa8b1;if(_0x47d12a[_0x10863a(0x1e5)]('/mnt/')){const _0x4126c6=_0x47d12a['charAt'](0x5)[_0x10863a(0x1db)](),_0x36bd75=_0x47d12a[_0x10863a(0x1e6)](0x6)['replace'](/\//g,'\x5c');return _0x4126c6+':'+_0x36bd75;}if(_0x47d12a[_0x10863a(0x1ec)](/^\/[a-zA-Z]\//)){const _0x238ca2=_0x47d12a[_0x10863a(0x1df)](0x1)[_0x10863a(0x1db)](),_0x305c26=_0x47d12a[_0x10863a(0x1e6)](0x2)[_0x10863a(0x1e9)](/\//g,'\x5c');return _0x238ca2+':'+_0x305c26;}if(_0x47d12a[_0x10863a(0x1ec)](/^[a-zA-Z]:/))return _0x47d12a[_0x10863a(0x1e9)](/\//g,'\x5c');return _0x47d12a;}export function normalizePath(_0x1b8b1d){const _0xac7915=a3_0xa8b1;_0x1b8b1d=_0x1b8b1d[_0xac7915(0x1dc)]()['replace'](/^["']|["']$/g,'');const _0x4b1a22=_0x1b8b1d[_0xac7915(0x1e5)]('/')&&!_0x1b8b1d[_0xac7915(0x1ec)](/^\/mnt\/[a-z]\//i)&&!_0x1b8b1d[_0xac7915(0x1ec)](/^\/[a-zA-Z]\//);if(_0x4b1a22)return _0x1b8b1d[_0xac7915(0x1e9)](/\/+/g,'/')[_0xac7915(0x1e9)](/\/+$/,'');_0x1b8b1d=convertToWindowsPath(_0x1b8b1d);if(_0x1b8b1d['startsWith']('\x5c\x5c')){let _0x2a868f=_0x1b8b1d;_0x2a868f=_0x2a868f[_0xac7915(0x1e9)](/^\\{2,}/,'\x5c\x5c');const _0x50a5a2=_0x2a868f[_0xac7915(0x1e7)](0x2)['replace'](/\\\\/g,'\x5c');_0x1b8b1d='\x5c\x5c'+_0x50a5a2;}else _0x1b8b1d=_0x1b8b1d[_0xac7915(0x1e9)](/\\\\/g,'\x5c');let _0x2bbd61=a3_0x1fdefa[_0xac7915(0x1eb)](_0x1b8b1d);_0x1b8b1d[_0xac7915(0x1e5)]('\x5c\x5c')&&!_0x2bbd61[_0xac7915(0x1e5)]('\x5c\x5c')&&(_0x2bbd61='\x5c'+_0x2bbd61);if(_0x2bbd61[_0xac7915(0x1ec)](/^[a-zA-Z]:/)){let _0x1edd50=_0x2bbd61[_0xac7915(0x1e9)](/\//g,'\x5c');return/^[a-z]:/['test'](_0x1edd50)&&(_0x1edd50=_0x1edd50[_0xac7915(0x1df)](0x0)[_0xac7915(0x1db)]()+_0x1edd50[_0xac7915(0x1e6)](0x1)),_0x1edd50;}return _0x2bbd61[_0xac7915(0x1e9)](/\//g,'\x5c');}export function expandHome(_0x98e824){const _0x276f5d=a3_0xa8b1;if(_0x98e824[_0x276f5d(0x1e5)]('~/')||_0x98e824==='~')return a3_0x1fdefa[_0x276f5d(0x1ea)](a3_0x1a9c1e[_0x276f5d(0x1e3)](),_0x98e824['slice'](0x1));return _0x98e824;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x346ac5,_0x22e176){const _0x3be59a=a4_0x5bb4,_0x192e22=_0x346ac5();while(!![]){try{const _0x21ef6d=parseInt(_0x3be59a(0x1ee))/0x1*(parseInt(_0x3be59a(0x1e5))/0x2)+-parseInt(_0x3be59a(0x1e2))/0x3+-parseInt(_0x3be59a(0x1eb))/0x4*(-parseInt(_0x3be59a(0x1e6))/0x5)+-parseInt(_0x3be59a(0x1e9))/0x6+-parseInt(_0x3be59a(0x1f5))/0x7*(parseInt(_0x3be59a(0x1e4))/0x8)+parseInt(_0x3be59a(0x1ed))/0x9+-parseInt(_0x3be59a(0x1f0))/0xa;if(_0x21ef6d===_0x22e176)break;else _0x192e22['push'](_0x192e22['shift']());}catch(_0x12ba69){_0x192e22['push'](_0x192e22['shift']());}}}(a4_0x55cb,0xa1112));import a4_0x2609d9 from'path';function a4_0x5bb4(_0x26080e,_0x397f37){_0x26080e=_0x26080e-0x1e0;const _0x55cba0=a4_0x55cb();let _0x5bb4e6=_0x55cba0[_0x26080e];return _0x5bb4e6;}export function isPathWithinAllowedDirectories(_0x58cd1e,_0x1af294){const _0x1fc48d=a4_0x5bb4;if(typeof _0x58cd1e!==_0x1fc48d(0x1f4)||!Array[_0x1fc48d(0x1e7)](_0x1af294))return![];if(!_0x58cd1e||_0x1af294[_0x1fc48d(0x1f2)]===0x0)return![];if(_0x58cd1e[_0x1fc48d(0x1f3)]('\x00'))return![];let _0x57ad72;try{_0x57ad72=a4_0x2609d9[_0x1fc48d(0x1e8)](a4_0x2609d9[_0x1fc48d(0x1e3)](_0x58cd1e));}catch{return![];}if(!a4_0x2609d9['isAbsolute'](_0x57ad72))throw new Error(_0x1fc48d(0x1e1));return _0x1af294[_0x1fc48d(0x1ef)](_0x3b497d=>{const _0xe1feec=_0x1fc48d;if(typeof _0x3b497d!==_0xe1feec(0x1f4)||!_0x3b497d)return![];if(_0x3b497d['includes']('\x00'))return![];let _0x35da08;try{_0x35da08=a4_0x2609d9['resolve'](a4_0x2609d9[_0xe1feec(0x1e3)](_0x3b497d));}catch{return![];}if(!a4_0x2609d9[_0xe1feec(0x1ea)](_0x35da08))throw new Error(_0xe1feec(0x1ec));if(_0x57ad72===_0x35da08)return!![];if(_0x35da08===a4_0x2609d9[_0xe1feec(0x1f1)])return _0x57ad72[_0xe1feec(0x1e0)](a4_0x2609d9['sep']);return _0x57ad72[_0xe1feec(0x1e0)](_0x35da08+a4_0x2609d9[_0xe1feec(0x1f1)]);});}function a4_0x55cb(){const _0x33140b=['resolve','388116zZEekd','isAbsolute','44CjZDik','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','3575421dLZPfZ','22oqoucG','some','5611940GsxYgG','sep','length','includes','string','12523JInwKY','startsWith','Path\x20must\x20be\x20absolute\x20after\x20normalization','465024iOLPvJ','normalize','2704wyWtpy','106462vBrwDR','216795nWIvkt','isArray'];a4_0x55cb=function(){return _0x33140b;};return a4_0x55cb();}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x116d70,_0x42843f){const _0x40a4a4=a5_0x4c00,_0x361ab5=_0x116d70();while(!![]){try{const _0x13063b=parseInt(_0x40a4a4(0x1aa))/0x1+parseInt(_0x40a4a4(0x1a6))/0x2*(-parseInt(_0x40a4a4(0x19c))/0x3)+parseInt(_0x40a4a4(0x19e))/0x4*(parseInt(_0x40a4a4(0x1af))/0x5)+parseInt(_0x40a4a4(0x1a8))/0x6+parseInt(_0x40a4a4(0x1b1))/0x7+-parseInt(_0x40a4a4(0x1ad))/0x8*(parseInt(_0x40a4a4(0x1b0))/0x9)+parseInt(_0x40a4a4(0x19f))/0xa*(-parseInt(_0x40a4a4(0x199))/0xb);if(_0x13063b===_0x42843f)break;else _0x361ab5['push'](_0x361ab5['shift']());}catch(_0x4216ca){_0x361ab5['push'](_0x361ab5['shift']());}}}(a5_0x2ca6,0xb5da8));function a5_0x2ca6(){const _0x59b6f8=['uri','isDirectory','invalid\x20path\x20or\x20inaccessible','startsWith','non-directory\x20root','resolve','24558htrvbZ','slice','610224KqZjar','\x20due\x20to\x20error:\x20','355470DJvjGy','push','message','8fKQDVH','homedir','100BHpGdg','5956866WIlIqf','9248862liPMqf','Skipping\x20invalid\x20directory:\x20','1261821loArbU','file://','stat','9dvNKJl','Skipping\x20','93624clJJiP','70yppsGp'];a5_0x2ca6=function(){return _0x59b6f8;};return a5_0x2ca6();}import{promises as a5_0x4c6e04}from'fs';function a5_0x4c00(_0xc539ea,_0x16a9d4){_0xc539ea=_0xc539ea-0x199;const _0x2ca6ca=a5_0x2ca6();let _0x4c00ba=_0x2ca6ca[_0xc539ea];return _0x4c00ba;}import a5_0x4e1693 from'path';import a5_0x18398e from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x1489d8){const _0x42e114=a5_0x4c00;try{const _0x4fff79=_0x1489d8['startsWith'](_0x42e114(0x19a))?_0x1489d8[_0x42e114(0x1a7)](0x7):_0x1489d8,_0x33bd3a=_0x4fff79[_0x42e114(0x1a3)]('~/')||_0x4fff79==='~'?a5_0x4e1693['join'](a5_0x18398e[_0x42e114(0x1ae)](),_0x4fff79['slice'](0x1)):_0x4fff79,_0x5b5dd7=a5_0x4e1693[_0x42e114(0x1a5)](_0x33bd3a),_0x2b8e7f=await a5_0x4c6e04['realpath'](_0x5b5dd7);return normalizePath(_0x2b8e7f);}catch{return null;}}function formatDirectoryError(_0x1440de,_0x22869b,_0x493698){const _0x3d63ee=a5_0x4c00;if(_0x493698)return _0x3d63ee(0x19d)+_0x493698+':\x20'+_0x1440de;const _0x3420c0=_0x22869b instanceof Error?_0x22869b[_0x3d63ee(0x1ac)]:String(_0x22869b);return _0x3d63ee(0x1b2)+_0x1440de+_0x3d63ee(0x1a9)+_0x3420c0;}export async function getValidRootDirectories(_0x3c6f0e){const _0xe1d8a8=a5_0x4c00,_0x10b2e2=[];for(const _0x476efc of _0x3c6f0e){const _0x55bf89=await parseRootUri(_0x476efc[_0xe1d8a8(0x1a0)]);if(!_0x55bf89){logMcpStderr(formatDirectoryError(_0x476efc[_0xe1d8a8(0x1a0)],undefined,_0xe1d8a8(0x1a2)));continue;}try{const _0x59e6f4=await a5_0x4c6e04[_0xe1d8a8(0x19b)](_0x55bf89);_0x59e6f4[_0xe1d8a8(0x1a1)]()?_0x10b2e2[_0xe1d8a8(0x1ab)](_0x55bf89):logMcpStderr(formatDirectoryError(_0x55bf89,undefined,_0xe1d8a8(0x1a4)));}catch(_0x14a39e){logMcpStderr(formatDirectoryError(_0x55bf89,_0x14a39e));}}return _0x10b2e2;}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
function a6_0x239b(){const _0x150a49=['899346ggmZbi','values','2297670TksBWm','edit_file','2165184loFbsv','129739CDahHB','3467272xnpKFq','codebase_search','425240VsbrGm','6570676ggGMLi'];a6_0x239b=function(){return _0x150a49;};return a6_0x239b();}const a6_0x38f817=a6_0x41b2;(function(_0x294db1,_0x1a8acc){const _0x30b211=a6_0x41b2,_0x376942=_0x294db1();while(!![]){try{const _0x2e5695=-parseInt(_0x30b211(0x102))/0x1+parseInt(_0x30b211(0xff))/0x2+-parseInt(_0x30b211(0x101))/0x3+-parseInt(_0x30b211(0x103))/0x4+parseInt(_0x30b211(0xfb))/0x5+parseInt(_0x30b211(0xfd))/0x6+parseInt(_0x30b211(0xfc))/0x7;if(_0x2e5695===_0x1a8acc)break;else _0x376942['push'](_0x376942['shift']());}catch(_0x3cd5b3){_0x376942['push'](_0x376942['shift']());}}}(a6_0x239b,0x937fd));export const TOOL_NAMES={'EDIT_FILE':a6_0x38f817(0x100),'CODEBASE_SEARCH':a6_0x38f817(0xfa),'GITHUB_CODEBASE_SEARCH':'github_codebase_search'};function a6_0x41b2(_0x35f97a,_0x1e03d8){_0x35f97a=_0x35f97a-0xfa;const _0x239bfd=a6_0x239b();let _0x41b266=_0x239bfd[_0x35f97a];return _0x41b266;}export const ALL_TOOL_NAMES=Object[a6_0x38f817(0xfe)](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.
|
|
3
|
+
"version": "0.8.188",
|
|
4
4
|
"description": "Fast & accurate MCP server with AI-powered file editing and intelligent code search. Prevents context pollution and saves time for a better user experience.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Morph (https://morphllm.com)",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@google/generative-ai": "^0.21.0",
|
|
37
37
|
"@modelcontextprotocol/sdk": "^1.12.3",
|
|
38
|
-
"@morphllm/morphsdk": "0.2.
|
|
38
|
+
"@morphllm/morphsdk": "0.2.178",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|