@morphllm/morphmcp 0.8.176 → 0.8.178
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_0x5a063c=a0_0x5bca;(function(_0x2e27f5,_0xa40f2f){const _0x34350b=a0_0x5bca,_0x47d6c0=_0x2e27f5();while(!![]){try{const _0x39c39b=-parseInt(_0x34350b(0xc4))/0x1*(parseInt(_0x34350b(0x110))/0x2)+parseInt(_0x34350b(0x10c))/0x3*(-parseInt(_0x34350b(0x16f))/0x4)+parseInt(_0x34350b(0x132))/0x5*(-parseInt(_0x34350b(0xad))/0x6)+parseInt(_0x34350b(0xd5))/0x7*(-parseInt(_0x34350b(0x1b4))/0x8)+-parseInt(_0x34350b(0x9d))/0x9+parseInt(_0x34350b(0xd6))/0xa+parseInt(_0x34350b(0xcc))/0xb;if(_0x39c39b===_0xa40f2f)break;else _0x47d6c0['push'](_0x47d6c0['shift']());}catch(_0x2c2a9a){_0x47d6c0['push'](_0x47d6c0['shift']());}}}(a0_0x3875,0x73784));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_0x7e6f8f from'fs/promises';import a0_0x4ae722 from'path';import a0_0x16ba9c 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_0x21ce90 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x4f1756){const _0x524a88=a0_0x5bca,_0x1e04a9=_0x4f1756[_0x524a88(0x152)](a0_0x4ae722['sep'])[_0x524a88(0x192)](Boolean);if(_0x1e04a9['length']<0x2)return null;for(let _0x393db6=Math[_0x524a88(0x148)](_0x1e04a9[_0x524a88(0x14a)]/0x2);_0x393db6>=0x1;_0x393db6--){for(let _0x29657f=0x0;_0x29657f<=_0x1e04a9[_0x524a88(0x14a)]-0x2*_0x393db6;_0x29657f++){const _0x50af0e=_0x1e04a9[_0x524a88(0xf5)](_0x29657f,_0x29657f+_0x393db6),_0x2d4076=_0x1e04a9[_0x524a88(0xf5)](_0x29657f+_0x393db6,_0x29657f+0x2*_0x393db6);if(_0x50af0e['every']((_0x42b68c,_0x4ffcb3)=>_0x42b68c===_0x2d4076[_0x4ffcb3])){const _0x459255=[..._0x1e04a9[_0x524a88(0xf5)](0x0,_0x29657f),..._0x1e04a9[_0x524a88(0xf5)](_0x29657f+_0x393db6)];return a0_0x4ae722[_0x524a88(0x116)]+_0x459255[_0x524a88(0x176)](a0_0x4ae722['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x2d4d3a=a0_0x5bca;try{const _0x48f01a=require(_0x2d4d3a(0x12c));return _0x48f01a['version']??_0x2d4d3a(0x195);}catch(_0x7bec4c){return logMcpStderr(_0x2d4d3a(0x133),_0x7bec4c),_0x2d4d3a(0x195);}}function printHelp(){const _0x5c27ae=a0_0x5bca;console[_0x5c27ae(0x109)](_0x5c27ae(0x102)+getPackageVersion()),console[_0x5c27ae(0x109)](_0x5c27ae(0x107)),console[_0x5c27ae(0x109)](_0x5c27ae(0x197)),console[_0x5c27ae(0x109)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x5c27ae(0x109)](_0x5c27ae(0x13c)),console[_0x5c27ae(0x109)](_0x5c27ae(0xb2)),console[_0x5c27ae(0x109)](_0x5c27ae(0xe0)),console[_0x5c27ae(0x109)]('\x20\x20morph-mcp'),console[_0x5c27ae(0x109)](_0x5c27ae(0x162));}const cliArgs=process['argv']['slice'](0x2),VERSION_FLAGS=new Set([a0_0x5a063c(0x160),'-v','-V']),HELP_FLAGS=new Set([a0_0x5a063c(0xd2),'-h']);cliArgs[a0_0x5a063c(0xcb)](_0x29f6f8=>VERSION_FLAGS[a0_0x5a063c(0x187)](_0x29f6f8))&&(console[a0_0x5a063c(0x109)]('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x5a063c(0xd1)](0x0));cliArgs[a0_0x5a063c(0xcb)](_0x32484e=>HELP_FLAGS[a0_0x5a063c(0x187)](_0x32484e))&&(printHelp(),process[a0_0x5a063c(0xd1)](0x0));function a0_0x5bca(_0xaa205c,_0x4d7092){_0xaa205c=_0xaa205c-0x85;const _0x38758a=a0_0x3875();let _0x5bca21=_0x38758a[_0xaa205c];return _0x5bca21;}function getCliArg(_0x411f5d){const _0xdccabd=a0_0x5a063c;for(let _0x5bf52c=0x0;_0x5bf52c<cliArgs[_0xdccabd(0x14a)];_0x5bf52c++){const _0x35255a=cliArgs[_0x5bf52c];if(_0x35255a['startsWith']('--'+_0x411f5d+'='))return _0x35255a[_0xdccabd(0xf5)](('--'+_0x411f5d+'=')['length']);if(_0x35255a==='--'+_0x411f5d&&_0x5bf52c+0x1<cliArgs[_0xdccabd(0x14a)])return cliArgs[_0x5bf52c+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x5a063c(0x14a)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x5a063c(0x187)](arg)||HELP_FLAGS[a0_0x5a063c(0x187)](arg))continue;if(arg[a0_0x5a063c(0x1ad)](a0_0x5a063c(0xce)))continue;if(arg===a0_0x5a063c(0x167)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process['env']['WORKSPACE_ROOT']||process[a0_0x5a063c(0xda)][a0_0x5a063c(0xe7)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x5a063c(0xda)][a0_0x5a063c(0x190)]!==a0_0x5a063c(0x12d),MORPH_API_KEY=getCliArg(a0_0x5a063c(0xdc))??process['env'][a0_0x5a063c(0x124)],MORPH_API_URL=process['env'][a0_0x5a063c(0x14d)],MORPH_LARGE_APPLY=process[a0_0x5a063c(0xda)]['MORPH_LARGE_APPLY']!=='false',MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x5a063c(0x16e)]?parseInt(process[a0_0x5a063c(0xda)][a0_0x5a063c(0x16e)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x5a063c(0xda)][a0_0x5a063c(0xb3)]?new Set(process['env'][a0_0x5a063c(0xb3)][a0_0x5a063c(0x152)](',')[a0_0x5a063c(0x165)](_0x4df1fa=>_0x4df1fa[a0_0x5a063c(0x161)]())['filter'](_0x191b0c=>_0x191b0c[a0_0x5a063c(0x14a)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS['size']>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x5a063c(0x172)](a0_0x5a063c(0x8c)+tool+a0_0x5a063c(0xa4)+[...KNOWN_TOOL_NAMES][a0_0x5a063c(0x176)](',\x20'));}console['error'](a0_0x5a063c(0xba)+[...DISABLED_TOOLS][a0_0x5a063c(0x176)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5a063c(0x1ad)](a0_0x5a063c(0x155))&&!MORPH_API_KEY[a0_0x5a063c(0x1ad)](a0_0x5a063c(0xb1))&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x1a7585){const _0x17137a=a0_0x5a063c;try{await a0_0x21ce90['post'](_0x17137a(0x17c),{..._0x1a7585,'timestamp':new Date()[_0x17137a(0x14f)](),'source':_0x1a7585[_0x17137a(0x115)]||_0x17137a(0x150),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x1a7585[_0x17137a(0x1a3)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x17137a(0x134),'Authorization':_0x17137a(0x149)+MORPH_API_KEY}});}catch{}}function a0_0x3875(){const _0x307d0c=['isArray','arguments','1025PZxSJk','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','application/json','completionId','tool_calls','Morph\x20Edit\x20','setNotificationHandler','\x20disabled\x20via\x20DISABLED_TOOLS','added\x20','Error\x20running\x20fast\x20context\x20search:\x20','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','params','UnknownError','string','.\x20Path:\x20','GitHub\x20search\x20failed:\x20','dryRun','number','default','tsconfig.json','object','github_codebase_search','floor','Bearer\x20','length','morph-mcp','Unknown\x20tool:\x20','MORPH_API_URL','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','toISOString','mcp-filesystem','edit_file','split','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','sk-','[github_codebase_search]\x20Failed\x20in\x20','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','linesAdded','linesModified','terminationReason','stack','optional','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','\x20error(s)','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','--version','trim','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','list_directory','lines','map','min','--api-key','warn','resolve','Warning:\x20','\x27\x20in\x20`','terminated','BinaryFile','MORPH_WARP_GREP_TIMEOUT','8404aYnNWM','GITHUB_CODEBASE_SEARCH','-\x20Glob\x20search\x20`','error','searchGitHub','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','SubToolError','join','Fallback:\x20Using\x20workspace\x20root\x20','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','ms:','oninitialized','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','https://morphllm.com/api/error-report','0.2.0','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','file_read_failed','PathError','Warning:\x20Workspace\x20fallback\x20failed:\x20','pattern','search_type','LocalRipgrepProvider','etimedout','morph-v3-large','has','now','RipgrepNotAvailable','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','TimeoutError','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','`\x20in\x20`','dirname','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','ENABLE_WORKSPACE_MODE','api_request_start','filter','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','unknown','-\x20Preserve\x20exact\x20indentation\x0a','\x0aOptions:','path_validation_failed','listRoots','.\x20Changes:\x20','description','package.json','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','linesRemoved','Specific\x20commit\x20hash\x20to\x20search','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','Error:\x20','boolean','context','\x22>\x0aError\x20reading\x20file:\x20','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','access','unknown\x20error','assistant','morph-warp-grep-v2.1','SymlinkError','status','errors','startsWith','MCP','message','instructions','includes','Max\x20results\x20to\x20return','glob\x20\x27','64lRwbms','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','read\x20','instruction','file','Workspace\x20mode\x20enabled:\x20Using\x20','stringify','inputSchema','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','Rules:\x0a','substring','changes','realpath','Tool\x20','catch','content','array','Parameters:\x0a','tool_call_id','WarpGrepError','ms.\x20Success:\x20','warp_grep_complete','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','8163162JOHuNi','go.mod','match','setRequestHandler','glob','github_url','ReadError','\x22.\x20Known\x20tools:\x20','function','codebase_search','command','messages','\x20(new\x20file)','completed_with_file_errors','-\x20Read\x20file\x20`','\x22>\x0a','21954sqFQFp','finish','success','branch','morph-','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','DISABLED_TOOLS','stat','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.','path','safeParse','Preview\x20changes\x20without\x20applying\x20them.','Disabled\x20tools:\x20','parse','enum','compaction_failed','roots','Cargo.toml','read','utf-8','File\x20read\x20error:','CODEBASE_SEARCH','29LpyFMD','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','list_directory\x20','name','github_search_start','Morph\x20FastApply\x20failed\x20without\x20error\x20message','composer.json','some','36199735hwvuVH','\x0a</file>','--api-key=','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','FileReadError','exit','--help','owner_repo','timings','292047awbWtC','5481120MDwspj','requiresApiKey','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','repo_path','env','indexOf','api-key','Here\x20is\x20the\x20content\x20of\x20files:\x0a','RipgrepError','payload','\x0aExamples:','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','grep','Example\x20format:\x0a','Unknown\x20error','node_modules','code','PWD','path_validation_resolved','\x20as\x20allowed\x20directory','<file\x20path=\x22','-\x20Grepped\x20\x27','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.','metadata','search_string','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','\x20-\x20','completed','normalize','tool_call_error','Invalid\x20arguments:\x20','slice','basename','grep\x20\x27','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','role','all','files','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20',',\x20removed\x20','user','grep_search','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20','@morphllm/morphmcp\x20','debug','timeout','text','.vscode','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]',',\x20modified\x20','log','\x0a...\x20(truncated,\x20total:\x20','tool_call_complete','1158qOOABm','FileNotFound','Relevant\x20context\x20found:','.cursor','38908CmcgXA','toLowerCase','.git','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','**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.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a','source','sep','Created\x20File','push','constructor','warp_grep_start','data','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','EDIT_FILE','Error\x20accessing\x20directory\x20','Tool\x20\x22','path_validation_start','Repository\x20identifier','ENOENT','pyproject.toml','MORPH_API_KEY','morph-v3-fast','code_edit','❌\x20Morph\x20Edit\x20Failed:\x20','getClientCapabilities','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','describe','homedir','../package.json','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.','edit'];a0_0x3875=function(){return _0x307d0c;};return a0_0x3875();}function extractStatusCode(_0x222cc1,_0x4cee4f){const _0x551899=a0_0x5a063c;if(_0x222cc1&&typeof _0x222cc1==='object'&&_0x551899(0x1ab)in _0x222cc1)return _0x222cc1[_0x551899(0x1ab)];if(_0x222cc1&&typeof _0x222cc1===_0x551899(0x146)&&_0x551899(0xb5)in _0x222cc1)return _0x222cc1['response']?.[_0x551899(0x1ab)];const _0x2fd60a=_0x4cee4f[_0x551899(0x9f)](/\b(401|429)\b/);return _0x2fd60a?parseInt(_0x2fd60a[0x1],0xa):null;}function handleMorphAPIError(_0x4fd38a){const _0x2c32f1=a0_0x5a063c,_0x151693=_0x4fd38a instanceof Error?_0x4fd38a[_0x2c32f1(0x1af)]:String(_0x4fd38a),_0x1254ec=extractStatusCode(_0x4fd38a,_0x151693);switch(_0x1254ec){case 0x191:return{'content':[{'type':'text','text':_0x2c32f1(0xb6)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x2c32f1(0x105),'text':_0x2c32f1(0x15d)}],'isError':!![]};default:return null;}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x5a063c(0x1a5)),logMcpStderr(a0_0x5a063c(0x194)),logMcpStderr(a0_0x5a063c(0xcf)),logMcpStderr(a0_0x5a063c(0x174)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x5a063c(0x15f)));function normalizePath(_0x5ab78e){const _0x1922fd=a0_0x5a063c;return a0_0x4ae722[_0x1922fd(0xf2)](_0x5ab78e);}function expandHome(_0x201cb4){const _0x49ab5e=a0_0x5a063c;if(_0x201cb4[_0x49ab5e(0x1ad)]('~/')||_0x201cb4==='~')return a0_0x4ae722[_0x49ab5e(0x176)](a0_0x16ba9c[_0x49ab5e(0x12b)](),_0x201cb4[_0x49ab5e(0xf5)](0x1));return _0x201cb4;}let allowedDirectories=await Promise['all'](args[a0_0x5a063c(0x165)](async _0x3df5fc=>{const _0x12064c=a0_0x5a063c,_0x450aab=expandHome(_0x3df5fc),_0x253a5e=a0_0x4ae722[_0x12064c(0x169)](_0x450aab);try{const _0x159b51=await a0_0x7e6f8f[_0x12064c(0x92)](_0x253a5e);return normalizePath(_0x159b51);}catch(_0x58d464){return normalizePath(_0x253a5e);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5a063c(0x14a)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5a063c(0x118)](workspaceDir),logMcpStderr(a0_0x5a063c(0x88)+workspaceDir+a0_0x5a063c(0xe9)));}catch(a0_0x28c55c){logMcpStderr(a0_0x5a063c(0xfc)+a0_0x28c55c);}async function detectWorkspaceRoot(_0x3ecd3f){const _0x2b387c=a0_0x5a063c;let _0x46f8a0=a0_0x4ae722[_0x2b387c(0x169)](_0x3ecd3f);const _0x18f2ca=[_0x2b387c(0x112),_0x2b387c(0x106),_0x2b387c(0x19c),_0x2b387c(0xbf),_0x2b387c(0x123),_0x2b387c(0x9e),_0x2b387c(0x10f),_0x2b387c(0x145),_0x2b387c(0xca)];while(_0x46f8a0!==a0_0x4ae722[_0x2b387c(0x18e)](_0x46f8a0)){for(const _0x3818d4 of _0x18f2ca){const _0xe7535d=a0_0x4ae722['join'](_0x46f8a0,_0x3818d4);try{return await a0_0x7e6f8f[_0x2b387c(0x1a6)](_0xe7535d),normalizePath(_0x46f8a0);}catch{}}_0x46f8a0=a0_0x4ae722[_0x2b387c(0x18e)](_0x46f8a0);}return normalizePath(_0x3ecd3f);}await Promise[a0_0x5a063c(0xfa)](args['map'](async _0x178cbb=>{const _0x237ed2=a0_0x5a063c;try{const _0x27f478=await a0_0x7e6f8f[_0x237ed2(0xb4)](expandHome(_0x178cbb));!_0x27f478['isDirectory']()&&(logMcpStderr(_0x237ed2(0x1a1)+_0x178cbb+'\x20is\x20not\x20a\x20directory'),process[_0x237ed2(0xd1)](0x1));}catch(_0x11d9d8){logMcpStderr(_0x237ed2(0x11e)+_0x178cbb+':',_0x11d9d8),process[_0x237ed2(0xd1)](0x1);}}));async function validatePath(_0x420137){const _0x4f0444=a0_0x5a063c,_0x203f65=expandHome(_0x420137),_0x2741bd=a0_0x4ae722[_0x4f0444(0x169)](_0x203f65);logger['debug'](_0x4f0444(0x1ae),_0x4f0444(0x120),{'raw_path':_0x420137,'absolute':_0x2741bd});try{const _0x2cc77d=await a0_0x7e6f8f[_0x4f0444(0x92)](_0x2741bd);return logger['debug']('MCP',_0x4f0444(0xe8),{'resolved':_0x2cc77d,'symlink':_0x2cc77d!==_0x2741bd}),_0x2cc77d;}catch(_0x2ab9be){if(_0x2ab9be['code']===_0x4f0444(0x122)){const _0x244106=a0_0x4ae722[_0x4f0444(0x18e)](_0x2741bd);try{const _0x904630=await a0_0x7e6f8f[_0x4f0444(0x92)](_0x244106),_0x4a1ed4=a0_0x4ae722[_0x4f0444(0x176)](_0x904630,a0_0x4ae722[_0x4f0444(0xf6)](_0x2741bd));return logger[_0x4f0444(0x103)]('MCP',_0x4f0444(0xe8),{'resolved':_0x4a1ed4,'new_file':!![]}),_0x4a1ed4;}catch{logger['error'](_0x4f0444(0x1ae),'path_validation_failed',{'raw_path':_0x420137,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x244106});throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x244106);}}logger['error']('MCP',_0x4f0444(0x198),{'raw_path':_0x420137,'error':_0x2ab9be[_0x4f0444(0x1af)]});throw _0x2ab9be;}}const MorphEditFileArgsSchema=z[a0_0x5a063c(0x146)]({'path':z[a0_0x5a063c(0x13f)](),'code_edit':z[a0_0x5a063c(0x13f)]()[a0_0x5a063c(0x12a)](a0_0x5a063c(0x193)),'instruction':z['string']()[a0_0x5a063c(0x12a)](a0_0x5a063c(0x113)),'dryRun':z[a0_0x5a063c(0x1a2)]()[a0_0x5a063c(0x144)](![])[a0_0x5a063c(0x12a)](a0_0x5a063c(0xb9))}),CODEBASE_SEARCH_QUERY_DESCRIPTION='Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.',WarpGrepArgsSchema=z[a0_0x5a063c(0x146)]({'search_string':z[a0_0x5a063c(0x13f)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x5a063c(0x13f)]()['describe'](a0_0x5a063c(0x9c)),'search_type':z[a0_0x5a063c(0xbc)](['default',a0_0x5a063c(0xe5)])[a0_0x5a063c(0x15c)]()[a0_0x5a063c(0x12a)](a0_0x5a063c(0x154))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z['string']()[a0_0x5a063c(0x12a)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x5a063c(0x13f)]()[a0_0x5a063c(0x15c)]()['describe']('GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'owner_repo':z[a0_0x5a063c(0x13f)]()[a0_0x5a063c(0x15c)]()[a0_0x5a063c(0x12a)](a0_0x5a063c(0x129)),'branch':z[a0_0x5a063c(0x13f)]()[a0_0x5a063c(0x15c)]()[a0_0x5a063c(0x12a)](a0_0x5a063c(0x17b))}),CodebaseSearchArgsSchema=z[a0_0x5a063c(0x146)]({'query':z[a0_0x5a063c(0x13f)]()[a0_0x5a063c(0x12a)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x5a063c(0x13f)]()[a0_0x5a063c(0x12a)](a0_0x5a063c(0x121)),'branch':z[a0_0x5a063c(0x13f)]()['optional']()[a0_0x5a063c(0x12a)](a0_0x5a063c(0x8b)),'commitHash':z[a0_0x5a063c(0x13f)]()['optional']()[a0_0x5a063c(0x12a)](a0_0x5a063c(0x19f)),'targetDirectories':z[a0_0x5a063c(0x96)](z[a0_0x5a063c(0x13f)]())['default']([])['describe']('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z[a0_0x5a063c(0x143)]()['optional']()['default'](0xa)['describe'](a0_0x5a063c(0x1b2))}),server=new Server({'name':a0_0x5a063c(0x14b),'version':a0_0x5a063c(0x17d)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x2ee167=a0_0x5a063c,_0xd43849=[{'name':TOOL_NAMES[_0x2ee167(0x11d)],'description':_0x2ee167(0x114)+_0x2ee167(0x97)+'-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a'+'-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a'+_0x2ee167(0x17e)+'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'+_0x2ee167(0xe3)+_0x2ee167(0x11c)+_0x2ee167(0x8f)+_0x2ee167(0xd8)+_0x2ee167(0x196)+'-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a'+_0x2ee167(0x100),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x2ee167(0xc3)],'description':_0x2ee167(0x101)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x2ee167(0x8e)+_0x2ee167(0x178)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x1c3258=_0xd43849['filter'](_0x21b039=>{const _0x291cfa=_0x2ee167;if(DISABLED_TOOLS[_0x291cfa(0x187)](_0x21b039[_0x291cfa(0xc7)]))return console[_0x291cfa(0x172)](_0x291cfa(0x93)+_0x21b039[_0x291cfa(0xc7)]+_0x291cfa(0x139)),![];if(_0x291cfa(0xd7)in _0x21b039&&_0x21b039[_0x291cfa(0xd7)]&&!MORPH_API_KEY)return logMcpStderr(_0x291cfa(0x16a)+_0x21b039[_0x291cfa(0xc7)]+_0x291cfa(0x8d)),![];return!![];});return{'tools':_0x1c3258[_0x2ee167(0x165)](_0x3c553b=>({'name':_0x3c553b[_0x2ee167(0xc7)],'description':_0x3c553b[_0x2ee167(0x19b)],'inputSchema':_0x3c553b[_0x2ee167(0x8a)]}))};}),server[a0_0x5a063c(0xa0)](CallToolRequestSchema,async _0x4b0e36=>{const _0x3ffdd6=a0_0x5a063c,{name:_0x3b7f6c,arguments:_0x2faf14}=_0x4b0e36[_0x3ffdd6(0x13d)],_0x3f2286=Date['now']();logger[_0x3ffdd6(0x103)](_0x3ffdd6(0x1ae),'tool_call_received',{'tool':_0x3b7f6c,'args':_0x3b7f6c===_0x3ffdd6(0x151)?{'path':_0x2faf14?.[_0x3ffdd6(0xb7)],'instruction':_0x2faf14?.[_0x3ffdd6(0x86)]||_0x2faf14?.[_0x3ffdd6(0x1b0)],'dryRun':_0x2faf14?.[_0x3ffdd6(0x142)]}:_0x2faf14});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x3ffdd6(0x105),'text':_0x3ffdd6(0x18f)}],'isError':!![]};if(!MORPH_API_KEY[_0x3ffdd6(0x1ad)](_0x3ffdd6(0x155))&&!MORPH_API_KEY['startsWith'](_0x3ffdd6(0xb1)))return{'content':[{'type':'text','text':_0x3ffdd6(0x12e)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0x3b7f6c))return{'content':[{'type':_0x3ffdd6(0x105),'text':_0x3ffdd6(0x11f)+_0x3b7f6c+_0x3ffdd6(0xc5)}],'isError':![]};switch(_0x3b7f6c){case TOOL_NAMES[_0x3ffdd6(0x11d)]:{let _0x374878=_0x2faf14;if(_0x374878&&typeof _0x374878===_0x3ffdd6(0x146)){if(!('path'in _0x374878)){const _0x3de60d=_0x374878['target_file']??_0x374878['filePath']??_0x374878['target_filepath']??_0x374878['file_path']??_0x374878[_0x3ffdd6(0x87)];if(_0x3de60d)_0x374878={..._0x374878,'path':_0x3de60d};}_0x3ffdd6(0x1b0)in _0x374878&&!(_0x3ffdd6(0x86)in _0x374878)&&(_0x374878={..._0x374878,'instruction':_0x374878[_0x3ffdd6(0x1b0)]});if(!(_0x3ffdd6(0x126)in _0x374878)){const _0x280dc6=_0x374878[_0x3ffdd6(0xe6)]??_0x374878['new_string']??_0x374878[_0x3ffdd6(0x95)]??_0x374878[_0x3ffdd6(0x12f)];if(_0x280dc6)_0x374878={..._0x374878,'code_edit':_0x280dc6};}}const _0x237015=MorphEditFileArgsSchema[_0x3ffdd6(0xb8)](_0x374878);if(!_0x237015['success'])throw new Error(_0x3ffdd6(0x18c)+_0x237015[_0x3ffdd6(0x172)]);const _0x5dbcac=await validatePath(_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0xb7)]);let _0x48c7be=null,_0x19dc53=!![],_0x539b96=null;try{_0x48c7be=await a0_0x7e6f8f['readFile'](_0x5dbcac,_0x3ffdd6(0xc1)),logger['debug']('MCP','file_read_complete',{'path':_0x5dbcac,'size_bytes':_0x48c7be[_0x3ffdd6(0x14a)]});}catch(_0x3947f9){const _0x53fdf9=_0x3947f9['code'];_0x53fdf9===_0x3ffdd6(0x122)?(_0x19dc53=![],_0x48c7be='',logger['debug'](_0x3ffdd6(0x1ae),'file_read_complete',{'path':_0x5dbcac,'exists':![]})):(_0x539b96='Failed\x20to\x20read\x20file:\x20'+(_0x53fdf9||'unknown')+_0x3ffdd6(0xf0)+(_0x3947f9 instanceof Error?_0x3947f9['message']:String(_0x3947f9)),logger['error'](_0x3ffdd6(0x1ae),_0x3ffdd6(0x17f),{'path':_0x5dbcac,'error':_0x539b96}),logMcpStderr(_0x3ffdd6(0x16a)+_0x539b96));}let _0x538298;try{const _0x32edf7=MORPH_API_KEY;if(!_0x32edf7)throw new Error(_0x3ffdd6(0x18a));const _0x227902=a0_0x4ae722[_0x3ffdd6(0x18e)](_0x5dbcac),_0x3b92e2=a0_0x4ae722['basename'](_0x5dbcac);logger[_0x3ffdd6(0x103)](_0x3ffdd6(0x1ae),_0x3ffdd6(0x191),{'model':_0x3ffdd6(0x125),'path':_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0xb7)],'instruction_len':_0x237015['data'][_0x3ffdd6(0x86)][_0x3ffdd6(0x14a)],'code_edit_len':_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0x126)][_0x3ffdd6(0x14a)],'original_code_len':_0x48c7be?.['length']??0x0,'dry_run':_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0x142)]});const _0x5c10e3=Date['now'](),_0x4986c1=await executeEditFile({'target_filepath':_0x3b92e2,'code_edit':_0x237015[_0x3ffdd6(0x11b)]['code_edit'],'instruction':_0x237015['data'][_0x3ffdd6(0x86)]},{'morphApiKey':_0x32edf7,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x227902,'autoWrite':!_0x237015[_0x3ffdd6(0x11b)]['dryRun'],'generateUdiff':![],'debug':![]}),_0x103fd9=Date[_0x3ffdd6(0x188)]()-_0x5c10e3;_0x538298=_0x4986c1[_0x3ffdd6(0x135)];if(!_0x4986c1[_0x3ffdd6(0xaf)])throw new Error(_0x4986c1[_0x3ffdd6(0x172)]||_0x3ffdd6(0xc9));const _0x4c8e74=_0x4986c1[_0x3ffdd6(0x91)],_0x230c9e=_0x3ffdd6(0x13a)+_0x4c8e74[_0x3ffdd6(0x158)]+_0x3ffdd6(0xfd)+_0x4c8e74['linesRemoved']+_0x3ffdd6(0x108)+_0x4c8e74[_0x3ffdd6(0x159)];logger[_0x3ffdd6(0x103)]('MCP',_0x3ffdd6(0x10b),{'tool':'edit_file','success':!![],'latency_ms':Date[_0x3ffdd6(0x188)]()-_0x3f2286,'edit_latency_ms':_0x103fd9,'changes':{'added':_0x4c8e74[_0x3ffdd6(0x158)],'removed':_0x4c8e74[_0x3ffdd6(0x19e)],'modified':_0x4c8e74[_0x3ffdd6(0x159)]},'completion_id':_0x538298});if(_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0x142)])return{'content':[{'type':_0x3ffdd6(0x105),'text':'Morph\x20Edit\x20Preview'+(_0x19dc53?'':_0x3ffdd6(0xa9))+':\x20'+_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0x86)]+_0x3ffdd6(0x19a)+_0x230c9e+'.\x20Path:\x20'+_0x237015[_0x3ffdd6(0x11b)]['path']+'.'}]};return{'content':[{'type':_0x3ffdd6(0x105),'text':_0x3ffdd6(0x137)+(_0x19dc53?'Applied':_0x3ffdd6(0x117))+':\x20'+_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0x86)]+_0x3ffdd6(0x19a)+_0x230c9e+_0x3ffdd6(0x140)+_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0xb7)]+'.'}]};}catch(_0x466b1f){const _0xa44538=handleMorphAPIError(_0x466b1f);if(_0xa44538)return logger[_0x3ffdd6(0x172)](_0x3ffdd6(0x1ae),'tool_call_error',{'tool':_0x3ffdd6(0x151),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x3ffdd6(0x188)]()-_0x3f2286}),_0xa44538;const _0x29bc09=_0x466b1f instanceof Error?_0x466b1f[_0x3ffdd6(0x1af)]:String(_0x466b1f);return logger['error']('MCP',_0x3ffdd6(0xf3),{'tool':_0x3ffdd6(0x151),'error':_0x29bc09,'path':_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0xb7)],'validated_path':_0x5dbcac,'latency_ms':Date[_0x3ffdd6(0x188)]()-_0x3f2286,'stack':_0x466b1f instanceof Error?_0x466b1f['stack']:undefined}),reportMorphError({'error_message':_0x29bc09,'error_type':_0x466b1f instanceof Error?_0x466b1f[_0x3ffdd6(0x119)]['name']:_0x3ffdd6(0x13e),'context':{'tool':_0x3ffdd6(0x151),'completion_id':_0x538298,'file_path':_0x237015[_0x3ffdd6(0x11b)]['path'],'validated_path':_0x5dbcac,'instruction':_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0x86)],'model':MORPH_LARGE_APPLY?_0x3ffdd6(0x186):_0x3ffdd6(0x125),'dry_run':_0x237015[_0x3ffdd6(0x11b)]['dryRun'],'file_exists':_0x19dc53,'file_read_error':_0x539b96,'file_readable':_0x48c7be!==null,'request_content':{'path':_0x237015['data'][_0x3ffdd6(0xb7)],'code_edit':_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0x126)],'instruction':_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0x86)],'original_code':_0x48c7be!==null?_0x48c7be[_0x3ffdd6(0x14a)]>0xc350?_0x48c7be['substring'](0x0,0xc350)+_0x3ffdd6(0x10a)+_0x48c7be[_0x3ffdd6(0x14a)]+'\x20chars)':_0x48c7be:'[could\x20not\x20read\x20file:\x20'+(_0x539b96||_0x3ffdd6(0x1a7))+']','original_code_length':_0x48c7be?.[_0x3ffdd6(0x14a)]??0x0,'model':MORPH_LARGE_APPLY?_0x3ffdd6(0x186):_0x3ffdd6(0x125),'dry_run':_0x237015['data']['dryRun']}},'stack_trace':_0x466b1f instanceof Error?_0x466b1f[_0x3ffdd6(0x15b)]:undefined,'source':_0x3ffdd6(0x150)})[_0x3ffdd6(0x94)](()=>{}),{'content':[{'type':_0x3ffdd6(0x105),'text':_0x3ffdd6(0x127)+_0x29bc09}],'isError':!![]};}}case TOOL_NAMES[_0x3ffdd6(0xc3)]:{const _0x1c0de1=WarpGrepArgsSchema[_0x3ffdd6(0xb8)](_0x2faf14);if(!_0x1c0de1[_0x3ffdd6(0xaf)])return{'content':[{'type':_0x3ffdd6(0x105),'text':_0x3ffdd6(0xf4)+_0x1c0de1[_0x3ffdd6(0x172)]}],'isError':!![]};const _0x10d0db=_0x1012ff=>{const _0x242502=_0x3ffdd6,_0x4d2a03=[];for(const _0x2a4210 of _0x1012ff||[]){if(_0x2a4210[_0x242502(0xf9)]==='assistant'&&Array[_0x242502(0x130)](_0x2a4210[_0x242502(0x136)]))for(const _0x332b01 of _0x2a4210[_0x242502(0x136)]){try{const _0x303463=_0x332b01['function']?.[_0x242502(0xc7)],_0x5bb028=JSON['parse'](_0x332b01[_0x242502(0xa5)]?.[_0x242502(0x131)]||'{}');if(_0x303463===_0x242502(0xff))_0x4d2a03[_0x242502(0x118)](_0x242502(0xf7)+_0x5bb028['pattern']+'\x27\x20'+(_0x5bb028['path']||'.'));else{if(_0x303463===_0x242502(0xc0))_0x4d2a03[_0x242502(0x118)](_0x242502(0x85)+_0x5bb028[_0x242502(0xb7)]);else{if(_0x303463===_0x242502(0x163))_0x4d2a03[_0x242502(0x118)](_0x242502(0xc6)+(_0x5bb028[_0x242502(0xa7)]||'.'));else{if(_0x303463===_0x242502(0xa1))_0x4d2a03[_0x242502(0x118)](_0x242502(0x1b3)+_0x5bb028[_0x242502(0x182)]+'\x27\x20'+(_0x5bb028[_0x242502(0xb7)]||'.'));else _0x303463===_0x242502(0xae)&&_0x4d2a03['push'](_0x242502(0xae));}}}}catch{}}}return _0x4d2a03;},_0x3a292a=_0x19dd8e=>{const _0x595205=_0x3ffdd6,_0x4b0c7b=[];if(!_0x19dd8e||!Array[_0x595205(0x130)](_0x19dd8e))return _0x4b0c7b;const _0x588cae=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x595205(0x10d),'tool':_0x595205(0xc0)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x595205(0x180),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x595205(0xa3),'tool':_0x595205(0xc0)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x595205(0x16d),'tool':_0x595205(0xc0)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x595205(0xde),'tool':_0x595205(0xe2)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x595205(0x189),'tool':_0x595205(0xe2)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x595205(0x16d),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x595205(0x1aa),'tool':_0x595205(0xc0)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':_0x595205(0xc0)},{'pattern':/symbolic link/,'error_type':_0x595205(0x1aa),'tool':_0x595205(0xc0)},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x595205(0xc0)},{'pattern':/status="error"/,'error_type':'ToolException','tool':_0x595205(0x195)}];let _0x38afe3=0x0;for(const _0x2a6cd2 of _0x19dd8e){_0x2a6cd2[_0x595205(0xf9)]===_0x595205(0x1a8)&&Array[_0x595205(0x130)](_0x2a6cd2[_0x595205(0x136)])&&_0x38afe3++;const _0x3f0181=_0x2a6cd2[_0x595205(0x95)];if((_0x2a6cd2[_0x595205(0xf9)]==='tool'||_0x2a6cd2[_0x595205(0xf9)]===_0x595205(0xfe))&&_0x3f0181&&typeof _0x3f0181===_0x595205(0x13f))for(const {pattern:_0x1600f5,error_type:_0x3f0597,tool:_0x3a9fdf}of _0x588cae){const _0x4c801a=_0x3f0181[_0x595205(0x9f)](new RegExp(_0x1600f5['source'],'g'));if(_0x4c801a)for(const _0x3c29ac of _0x4c801a){const _0x4df855=_0x3f0181[_0x595205(0xdb)](_0x3c29ac),_0x4f3131=_0x3f0181[_0x595205(0x90)](_0x4df855,Math[_0x595205(0x166)](_0x4df855+0xc8,_0x3f0181[_0x595205(0x14a)]));_0x4b0c7b[_0x595205(0x118)]({'tool':_0x3a9fdf,'error_type':_0x3f0597,'error_message':_0x4f3131[_0x595205(0x152)]('\x0a')[0x0],'turn':_0x38afe3});}}}return _0x4b0c7b;};try{const _0x32ed84=a0_0x4ae722[_0x3ffdd6(0x169)](_0x1c0de1['data'][_0x3ffdd6(0xd9)]),_0x1b3298=_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0x183)],_0x4edba8=_0x1b3298===_0x3ffdd6(0xe5)?{'allowNames':[_0x3ffdd6(0xe5)]}:undefined,_0x2606ae=new LocalRipgrepProvider(_0x32ed84,undefined,_0x4edba8);logger[_0x3ffdd6(0x103)](_0x3ffdd6(0x1ae),'provider_created',{'type':_0x3ffdd6(0x184),'repo_root':_0x32ed84,'search_type':_0x1b3298||_0x3ffdd6(0x144)}),logger[_0x3ffdd6(0x103)]('MCP',_0x3ffdd6(0x11a),{'query':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'repo_root':_0x32ed84,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x1a0410=Date[_0x3ffdd6(0x188)](),_0xf45fa9=await runWarpGrep({'searchTerm':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'repoRoot':_0x32ed84,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x2606ae,'search_type':_0x1b3298}),_0x2f5225=Date[_0x3ffdd6(0x188)]()-_0x1a0410,_0x38e8b5=_0xf45fa9[_0x3ffdd6(0xae)]?.[_0x3ffdd6(0xed)]?.[_0x3ffdd6(0xfb)]?.['length']??0x0;logger[_0x3ffdd6(0x103)]('MCP',_0x3ffdd6(0x9b),{'termination':_0xf45fa9[_0x3ffdd6(0x15a)],'turns':_0xf45fa9[_0x3ffdd6(0xd4)]?.['turns']??0x0,'files_found':_0x38e8b5,'latency_ms':_0x2f5225});const _0x23548c=_0x3a292a(_0xf45fa9[_0x3ffdd6(0xa8)]);_0x23548c[_0x3ffdd6(0x14a)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x23548c['length']+_0x3ffdd6(0x15e),'error_type':_0x3ffdd6(0x175),'level':_0x3ffdd6(0x168),'tool':'codebase_search','context':{'repo_path':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)],'query':_0x1c0de1['data'][_0x3ffdd6(0xee)],'model':_0x3ffdd6(0x1a9),'termination_reason':_0xf45fa9[_0x3ffdd6(0x15a)],'sub_tool_errors':_0x23548c,'timings':_0xf45fa9[_0x3ffdd6(0xd4)],'tool_calls':_0x10d0db(_0xf45fa9[_0x3ffdd6(0xa8)]),'messages':_0xf45fa9[_0x3ffdd6(0xa8)]?.[_0x3ffdd6(0x165)](_0x5bcfdf=>({'role':_0x5bcfdf[_0x3ffdd6(0xf9)],'content':_0x5bcfdf[_0x3ffdd6(0x95)],..._0x5bcfdf[_0x3ffdd6(0x136)]?{'tool_calls':_0x5bcfdf['tool_calls'][_0x3ffdd6(0x14a)]}:{},..._0x5bcfdf[_0x3ffdd6(0x98)]?{'tool_call_id':_0x5bcfdf[_0x3ffdd6(0x98)]}:{}}))},'source':_0x3ffdd6(0x150)})[_0x3ffdd6(0x94)](()=>{});let _0x25d76e='';if(_0xf45fa9[_0x3ffdd6(0x15a)]===_0x3ffdd6(0xf1)&&_0xf45fa9['finish']?.[_0x3ffdd6(0xed)]?.[_0x3ffdd6(0xfb)]){const _0x556f2a=_0xf45fa9[_0x3ffdd6(0xae)][_0x3ffdd6(0xed)][_0x3ffdd6(0xfb)];if(_0x556f2a[_0x3ffdd6(0x14a)]===0x0)return _0x25d76e=_0xf45fa9[_0x3ffdd6(0xae)][_0x3ffdd6(0xdf)]||_0x3ffdd6(0x157),{'content':[{'type':'text','text':_0x25d76e}]};const _0x1826b9=[],_0x236da1=[_0x3ffdd6(0x14e)];for(const _0x17b067 of _0xf45fa9[_0x3ffdd6(0xa8)]){if(_0x17b067[_0x3ffdd6(0xf9)]==='assistant'&&Array[_0x3ffdd6(0x130)](_0x17b067['tool_calls']))for(const _0x5a1255 of _0x17b067[_0x3ffdd6(0x136)]){try{const _0x587e41=_0x5a1255[_0x3ffdd6(0xa5)]?.[_0x3ffdd6(0xc7)],_0x2d1953=JSON[_0x3ffdd6(0xbb)](_0x5a1255[_0x3ffdd6(0xa5)]?.[_0x3ffdd6(0x131)]||'{}');if(_0x587e41===_0x3ffdd6(0xff))_0x236da1[_0x3ffdd6(0x118)](_0x3ffdd6(0xeb)+_0x2d1953[_0x3ffdd6(0x182)]+_0x3ffdd6(0x16b)+(_0x2d1953[_0x3ffdd6(0xb7)]||'.')+'`');else{if(_0x587e41===_0x3ffdd6(0xc0))_0x236da1['push'](_0x3ffdd6(0xab)+_0x2d1953['path']+'`');else{if(_0x587e41===_0x3ffdd6(0x163))_0x236da1[_0x3ffdd6(0x118)]('-\x20Listed\x20directory\x20`'+(_0x2d1953['command']||'.')+'`');else _0x587e41==='glob'&&_0x236da1[_0x3ffdd6(0x118)](_0x3ffdd6(0x171)+_0x2d1953[_0x3ffdd6(0x182)]+_0x3ffdd6(0x18d)+(_0x2d1953['path']||'.')+'`');}}}catch{}}}_0x1826b9[_0x3ffdd6(0x118)](_0x236da1[_0x3ffdd6(0x176)]('\x0a'));const _0x1109af=['',_0x3ffdd6(0x10e)];for(const _0x2aeffe of _0x556f2a){if(_0x2aeffe[_0x3ffdd6(0x164)]==='*')_0x1109af[_0x3ffdd6(0x118)]('-\x20'+_0x2aeffe[_0x3ffdd6(0xb7)]+':*');else{if(Array[_0x3ffdd6(0x130)](_0x2aeffe[_0x3ffdd6(0x164)])){const _0x4f36f5=_0x2aeffe[_0x3ffdd6(0x164)][_0x3ffdd6(0x165)](([_0x282eef,_0x26e5aa])=>{if(_0x282eef===_0x26e5aa)return''+_0x282eef;return _0x282eef+'-'+_0x26e5aa;});_0x1109af[_0x3ffdd6(0x118)]('-\x20'+_0x2aeffe[_0x3ffdd6(0xb7)]+':'+_0x4f36f5[_0x3ffdd6(0x176)](','));}else _0x1109af[_0x3ffdd6(0x118)]('-\x20'+_0x2aeffe[_0x3ffdd6(0xb7)]+':*');}}_0x1109af[_0x3ffdd6(0x118)](''),_0x1826b9['push'](_0x1109af[_0x3ffdd6(0x176)]('\x0a')),_0x1826b9[_0x3ffdd6(0x118)](_0x3ffdd6(0xdd));const _0x4d178b=[],_0x336e2c=[];for(const _0x3f8ab7 of _0x556f2a){let _0x5ac128=a0_0x4ae722['resolve'](_0x1c0de1['data'][_0x3ffdd6(0xd9)],_0x3f8ab7[_0x3ffdd6(0xb7)]),_0x531fc8=null,_0x4e997c=null;try{_0x531fc8=await a0_0x7e6f8f['readFile'](_0x5ac128,{'encoding':_0x3ffdd6(0xc1)});}catch(_0x8cd524){const _0x315153=fixPathRepetition(_0x5ac128);if(_0x315153)try{_0x531fc8=await a0_0x7e6f8f['readFile'](_0x315153,{'encoding':_0x3ffdd6(0xc1)}),_0x5ac128=_0x315153;}catch{_0x4e997c=_0x8cd524 instanceof Error?_0x8cd524:new Error(String(_0x8cd524));}else _0x4e997c=_0x8cd524 instanceof Error?_0x8cd524:new Error(String(_0x8cd524));}if(_0x531fc8!==null){const _0xa8cccb=_0x531fc8[_0x3ffdd6(0x152)](/\r?\n/),_0x285f65=[];if(_0x3f8ab7['lines']==='*'||!Array[_0x3ffdd6(0x130)](_0x3f8ab7[_0x3ffdd6(0x164)]))for(let _0x159252=0x1;_0x159252<=_0xa8cccb[_0x3ffdd6(0x14a)];_0x159252++){const _0x1defe7=_0xa8cccb[_0x159252-0x1];_0x285f65[_0x3ffdd6(0x118)](_0x159252+'|\x20'+_0x1defe7);}else for(const [_0x519a00,_0x1a8729]of _0x3f8ab7[_0x3ffdd6(0x164)]){_0x285f65[_0x3ffdd6(0x14a)]>0x0&&_0x285f65['push']('');for(let _0x5b0211=_0x519a00;_0x5b0211<=_0x1a8729&&_0x5b0211<=_0xa8cccb[_0x3ffdd6(0x14a)];_0x5b0211++){const _0x51914c=_0xa8cccb[_0x5b0211-0x1];_0x285f65['push'](_0x5b0211+'|\x20'+_0x51914c);}}_0x336e2c[_0x3ffdd6(0x118)]({'path':_0x3f8ab7[_0x3ffdd6(0xb7)],'content':_0x285f65[_0x3ffdd6(0x176)]('\x0a')});}else _0x4d178b[_0x3ffdd6(0x118)](_0x3ffdd6(0xea)+_0x3f8ab7[_0x3ffdd6(0xb7)]+_0x3ffdd6(0x1a4)+(_0x4e997c?.[_0x3ffdd6(0x1af)]||_0x3ffdd6(0xe4))+_0x3ffdd6(0xcd));}try{const _0x49a450=await compactFileContexts(_0x336e2c,_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],MORPH_API_KEY,MORPH_API_URL);for(const _0xd4abd4 of _0x49a450){_0x4d178b['push']('<file\x20path=\x22'+_0xd4abd4[_0x3ffdd6(0xb7)]+_0x3ffdd6(0xac)+_0xd4abd4[_0x3ffdd6(0x95)]+_0x3ffdd6(0xcd));}}catch(_0x359e08){logger[_0x3ffdd6(0x168)](_0x3ffdd6(0x1ae),_0x3ffdd6(0xbd),{'error':_0x359e08 instanceof Error?_0x359e08[_0x3ffdd6(0x1af)]:String(_0x359e08),'files_count':_0x336e2c[_0x3ffdd6(0x14a)]});for(const _0x2ae536 of _0x336e2c){_0x4d178b[_0x3ffdd6(0x118)]('<file\x20path=\x22'+_0x2ae536[_0x3ffdd6(0xb7)]+_0x3ffdd6(0xac)+_0x2ae536[_0x3ffdd6(0x95)]+_0x3ffdd6(0xcd));}}_0x1826b9[_0x3ffdd6(0x118)](_0x4d178b[_0x3ffdd6(0x176)]('\x0a\x0a')),_0x25d76e=_0x1826b9[_0x3ffdd6(0x176)]('\x0a');const _0x423ba5=_0xf45fa9[_0x3ffdd6(0x1ac)]?.[_0x3ffdd6(0x192)](_0x436c95=>_0x436c95['message']?.[_0x3ffdd6(0x1ad)](_0x3ffdd6(0xc2)))||[];if(_0x423ba5['length']>0x0){const _0x5a526c=_0x423ba5['map'](_0x94a614=>_0x94a614[_0x3ffdd6(0x1af)])[_0x3ffdd6(0x176)](';\x20');reportMorphError({'error_message':_0x5a526c,'error_type':_0x3ffdd6(0xd0),'context':{'tool':'codebase_search','repo_path':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)],'query':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'model':_0x3ffdd6(0x1a9),'termination_reason':_0x3ffdd6(0xaa),'error_count':_0x423ba5[_0x3ffdd6(0x14a)],'is_timeout':![],'timings':_0xf45fa9[_0x3ffdd6(0xd4)],'files_attempted':_0x556f2a[_0x3ffdd6(0x165)](_0x313496=>({'path':_0x313496[_0x3ffdd6(0xb7)],'lines':_0x313496['lines']})),'tool_calls':_0x10d0db(_0xf45fa9[_0x3ffdd6(0xa8)]),'messages':_0xf45fa9['messages']?.[_0x3ffdd6(0x165)](_0x5978ad=>({'role':_0x5978ad[_0x3ffdd6(0xf9)],'content':_0x5978ad['content'],..._0x5978ad[_0x3ffdd6(0x136)]?{'tool_calls':_0x5978ad[_0x3ffdd6(0x136)][_0x3ffdd6(0x14a)]}:{},..._0x5978ad[_0x3ffdd6(0x98)]?{'tool_call_id':_0x5978ad[_0x3ffdd6(0x98)]}:{}})),'request_content':{'query':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'repo_path':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)],'repoRoot':a0_0x4ae722[_0x3ffdd6(0x169)](_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)]),'model':_0x3ffdd6(0x1a9)}},'source':_0x3ffdd6(0x150)})[_0x3ffdd6(0x94)](()=>{});}}else{if(_0xf45fa9['terminationReason']===_0x3ffdd6(0x16c)&&_0xf45fa9[_0x3ffdd6(0x1ac)][_0x3ffdd6(0x14a)]>0x0){const _0x421fba=_0xf45fa9['errors'][_0x3ffdd6(0x165)](_0x3aa6e6=>_0x3aa6e6[_0x3ffdd6(0x1af)])[_0x3ffdd6(0x176)](';\x20');_0x25d76e=_0x3ffdd6(0x1a1)+_0x421fba;const _0x3696b7=_0x421fba[_0x3ffdd6(0x111)]()[_0x3ffdd6(0x1b1)](_0x3ffdd6(0x104))||_0x421fba[_0x3ffdd6(0x111)]()[_0x3ffdd6(0x1b1)]('timed\x20out')||_0x421fba['toLowerCase']()['includes'](_0x3ffdd6(0x185)),_0x218085=_0xf45fa9[_0x3ffdd6(0xae)]?.[_0x3ffdd6(0xed)]?.[_0x3ffdd6(0xfb)],_0x140cae=_0xf45fa9[_0x3ffdd6(0x1ac)][0x0];reportMorphError({'error_message':_0x421fba,'error_type':_0x3696b7?_0x3ffdd6(0x18b):_0x140cae?.[_0x3ffdd6(0x119)]?.['name']||_0x3ffdd6(0x99),'context':{'tool':'codebase_search','repo_path':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)],'query':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'model':_0x3ffdd6(0x1a9),'termination_reason':_0xf45fa9[_0x3ffdd6(0x15a)],'error_count':_0xf45fa9[_0x3ffdd6(0x1ac)][_0x3ffdd6(0x14a)],'is_timeout':_0x3696b7,'timings':_0xf45fa9[_0x3ffdd6(0xd4)],'files_attempted':_0x218085?.[_0x3ffdd6(0x165)](_0x4426b1=>({'path':_0x4426b1[_0x3ffdd6(0xb7)],'lines':_0x4426b1[_0x3ffdd6(0x164)]})),'tool_calls':_0x10d0db(_0xf45fa9[_0x3ffdd6(0xa8)]),'messages':_0xf45fa9[_0x3ffdd6(0xa8)]?.[_0x3ffdd6(0x165)](_0x49f312=>({'role':_0x49f312['role'],'content':_0x49f312[_0x3ffdd6(0x95)],..._0x49f312[_0x3ffdd6(0x136)]?{'tool_calls':_0x49f312[_0x3ffdd6(0x136)]['length']}:{},..._0x49f312[_0x3ffdd6(0x98)]?{'tool_call_id':_0x49f312[_0x3ffdd6(0x98)]}:{}})),'request_content':{'query':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'repo_path':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)],'repoRoot':a0_0x4ae722[_0x3ffdd6(0x169)](_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)]),'model':_0x3ffdd6(0x1a9)}},'stack_trace':_0x140cae?.[_0x3ffdd6(0x15b)]||undefined,'source':_0x3ffdd6(0x150)})[_0x3ffdd6(0x94)](()=>{});}else _0x25d76e=_0x3ffdd6(0xf8);}return{'content':[{'type':'text','text':_0x25d76e}]};}catch(_0x71547a){const _0x1e11a5=handleMorphAPIError(_0x71547a);if(_0x1e11a5)return logger[_0x3ffdd6(0x172)](_0x3ffdd6(0x1ae),'tool_call_error',{'tool':_0x3ffdd6(0xa6),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x3ffdd6(0x188)]()-_0x3f2286}),_0x1e11a5;const _0x368bab=_0x71547a instanceof Error?_0x71547a['message']:String(_0x71547a);logger['error'](_0x3ffdd6(0x1ae),_0x3ffdd6(0xf3),{'tool':'codebase_search','error':_0x368bab,'repo_path':_0x1c0de1['data'][_0x3ffdd6(0xd9)],'query':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'latency_ms':Date[_0x3ffdd6(0x188)]()-_0x3f2286});const _0x2bc55c=_0x368bab[_0x3ffdd6(0x111)]()[_0x3ffdd6(0x1b1)]('timeout')||_0x368bab[_0x3ffdd6(0x111)]()['includes']('timed\x20out')||_0x368bab[_0x3ffdd6(0x111)]()[_0x3ffdd6(0x1b1)](_0x3ffdd6(0x185))||_0x71547a instanceof Error&&_0x71547a[_0x3ffdd6(0xc7)]===_0x3ffdd6(0x18b);return reportMorphError({'error_message':_0x368bab,'error_type':_0x2bc55c?_0x3ffdd6(0x18b):_0x71547a instanceof Error?_0x71547a[_0x3ffdd6(0x119)]['name']:_0x3ffdd6(0x13e),'context':{'tool':_0x3ffdd6(0xa6),'repo_path':_0x1c0de1['data'][_0x3ffdd6(0xd9)],'query':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'model':_0x3ffdd6(0x1a9),'is_timeout':_0x2bc55c,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x1c0de1[_0x3ffdd6(0x11b)]['search_string'],'repo_path':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)],'repoRoot':a0_0x4ae722[_0x3ffdd6(0x169)](_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x71547a instanceof Error?_0x71547a[_0x3ffdd6(0x15b)]:undefined,'source':_0x3ffdd6(0x150)})[_0x3ffdd6(0x94)](()=>{}),{'content':[{'type':'text','text':_0x3ffdd6(0x13b)+_0x368bab}],'isError':![]};}}case TOOL_NAMES[_0x3ffdd6(0x170)]:{const _0x589bf1=WarpGrepGitHubArgsSchema[_0x3ffdd6(0xb8)](_0x2faf14);if(!_0x589bf1['success'])return{'content':[{'type':_0x3ffdd6(0x105),'text':'Invalid\x20arguments:\x20'+_0x589bf1['error']}],'isError':!![]};const _0x251c0d=_0x589bf1['data'][_0x3ffdd6(0xa2)]||_0x589bf1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd3)];if(!_0x251c0d)return{'content':[{'type':_0x3ffdd6(0x105),'text':_0x3ffdd6(0xe1)}],'isError':!![]};const _0x5a94e3=MORPH_API_KEY;if(!_0x5a94e3)throw new Error(_0x3ffdd6(0x18a));const _0x5daecb=Date['now']();logger[_0x3ffdd6(0x103)]('MCP',_0x3ffdd6(0xc8),{'identifier':_0x251c0d,'query':_0x589bf1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'branch':_0x589bf1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xb0)]});try{const _0x222c8b=new WarpGrepClient({'morphApiKey':_0x5a94e3,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x2a9589=await _0x222c8b[_0x3ffdd6(0x173)]({'searchTerm':_0x589bf1[_0x3ffdd6(0x11b)]['search_string'],'github':_0x251c0d,'branch':_0x589bf1[_0x3ffdd6(0x11b)]['branch']}),_0x13cb9d=Date['now']()-_0x5daecb;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x13cb9d+_0x3ffdd6(0x9a)+_0x2a9589[_0x3ffdd6(0xaf)]);const _0x54c515=formatResult(_0x2a9589);return{'content':[{'type':_0x3ffdd6(0x105),'text':_0x54c515}]};}catch(_0x4bd685){const _0x3f1fca=handleMorphAPIError(_0x4bd685);if(_0x3f1fca)return _0x3f1fca;const _0x54babf=Date[_0x3ffdd6(0x188)]()-_0x5daecb,_0x23758c=_0x4bd685 instanceof Error?_0x4bd685[_0x3ffdd6(0x1af)]:String(_0x4bd685);return logMcpStderr(_0x3ffdd6(0x156)+_0x54babf+_0x3ffdd6(0x179),_0x23758c),reportMorphError({'error_message':_0x23758c,'error_type':_0x4bd685 instanceof Error?_0x4bd685[_0x3ffdd6(0x119)][_0x3ffdd6(0xc7)]:_0x3ffdd6(0x13e),'context':{'tool':_0x3ffdd6(0x147),'github_url':_0x251c0d,'search_string':_0x589bf1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'branch':_0x589bf1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xb0)]},'stack_trace':_0x4bd685 instanceof Error?_0x4bd685[_0x3ffdd6(0x15b)]:undefined,'source':_0x3ffdd6(0x150),'tool':_0x3ffdd6(0x147),'latency_ms':_0x54babf})[_0x3ffdd6(0x94)](()=>{}),{'content':[{'type':_0x3ffdd6(0x105),'text':_0x3ffdd6(0x141)+_0x23758c}],'isError':![]};}}default:throw new Error(_0x3ffdd6(0x14c)+_0x3b7f6c);}}catch(_0x51bab9){const _0x164d2d=_0x51bab9 instanceof Error?_0x51bab9[_0x3ffdd6(0x1af)]:String(_0x51bab9);return reportMorphError({'error_message':_0x164d2d,'error_type':_0x51bab9 instanceof Error?_0x51bab9[_0x3ffdd6(0x119)][_0x3ffdd6(0xc7)]:_0x3ffdd6(0x13e),'context':{'tool':_0x3b7f6c,'arguments':_0x2faf14?JSON[_0x3ffdd6(0x89)](_0x2faf14)[_0x3ffdd6(0x90)](0x0,0x1f4):undefined,'mcp_server_version':_0x3ffdd6(0x17d)},'stack_trace':_0x51bab9 instanceof Error?_0x51bab9[_0x3ffdd6(0x15b)]:undefined,'source':_0x3ffdd6(0x150)})[_0x3ffdd6(0x94)](()=>{}),{'content':[{'type':_0x3ffdd6(0x105),'text':_0x3ffdd6(0x1a1)+_0x164d2d}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x3f1e57){const _0x36383e=a0_0x5a063c,_0x314db6=await getValidRootDirectories(_0x3f1e57);if(_0x314db6[_0x36383e(0x14a)]>0x0)allowedDirectories=[..._0x314db6],logMcpStderr(_0x36383e(0x1a0)+_0x314db6[_0x36383e(0x14a)]+'\x20valid\x20directories');else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x5d5387=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x5d5387&&(allowedDirectories=[_0x5d5387],logMcpStderr(_0x36383e(0x177)+_0x5d5387));}catch(_0x5756cb){logMcpStderr(_0x36383e(0x181)+_0x5756cb);}}}server[a0_0x5a063c(0x138)](RootsListChangedNotificationSchema,async()=>{const _0x3100dc=a0_0x5a063c;try{const _0x5f46f7=await server['listRoots']();_0x5f46f7&&_0x3100dc(0xbe)in _0x5f46f7&&await updateAllowedDirectoriesFromRoots(_0x5f46f7['roots']);}catch(_0x13a367){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x13a367 instanceof Error?_0x13a367[_0x3100dc(0x1af)]:String(_0x13a367));}}),server[a0_0x5a063c(0x17a)]=async()=>{const _0x53d064=a0_0x5a063c,_0x491167=server[_0x53d064(0x128)]();if(_0x491167?.[_0x53d064(0xbe)])try{const _0x1c1aac=await server[_0x53d064(0x199)]();_0x1c1aac&&'roots'in _0x1c1aac?await updateAllowedDirectoriesFromRoots(_0x1c1aac[_0x53d064(0xbe)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x5a0982){logMcpStderr(_0x53d064(0xef),_0x5a0982 instanceof Error?_0x5a0982[_0x53d064(0x1af)]:String(_0x5a0982));}else{if(allowedDirectories[_0x53d064(0x14a)]>0x0)logMcpStderr(_0x53d064(0x1b5),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x53d064(0x19d));else throw new Error(_0x53d064(0xec));}}};async function runServer(){const _0x390257=a0_0x5a063c,_0x444d03=new StdioServerTransport();await server['connect'](_0x444d03),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x390257(0x14a)]===0x0&&logMcpStderr(_0x390257(0x153));}runServer()['catch'](_0x5dff0a=>{const _0x58b3bc=a0_0x5a063c;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x5dff0a),process[_0x58b3bc(0xd1)](0x1);});
|
|
2
|
+
const a0_0x16ed94=a0_0x7395;(function(_0x2fc6a1,_0x599e73){const _0x35f16b=a0_0x7395,_0x378041=_0x2fc6a1();while(!![]){try{const _0xe9f43=-parseInt(_0x35f16b(0x192))/0x1+-parseInt(_0x35f16b(0x18b))/0x2*(parseInt(_0x35f16b(0x1e2))/0x3)+-parseInt(_0x35f16b(0x1fe))/0x4*(parseInt(_0x35f16b(0x114))/0x5)+-parseInt(_0x35f16b(0xfa))/0x6+parseInt(_0x35f16b(0x19c))/0x7*(parseInt(_0x35f16b(0x120))/0x8)+parseInt(_0x35f16b(0x156))/0x9*(parseInt(_0x35f16b(0x180))/0xa)+parseInt(_0x35f16b(0x1ad))/0xb;if(_0xe9f43===_0x599e73)break;else _0x378041['push'](_0x378041['shift']());}catch(_0x56bca1){_0x378041['push'](_0x378041['shift']());}}}(a0_0x50c8,0xa0ef5));import{Server}from'@modelcontextprotocol/sdk/server/index.js';function a0_0x50c8(){const _0x3f3e0a=['\x20\x20morph-mcp','target_file','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','requiresApiKey','message','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','basename','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','Morph\x20Edit\x20Preview','Unknown\x20error','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','BinaryFile','morph-warp-grep-v2.1','some','tool_call_complete','constructor','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','describe','response','api_request_start','FileReadError','UnknownError','<file\x20path=\x22','[github_codebase_search]\x20Done\x20in\x20','file_read_complete','description','lines','ReadError','\x20is\x20not\x20a\x20directory','\x22.\x20Known\x20tools:\x20','readFile','github_search_start','finish','0.2.0','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','warn','Fatal\x20error\x20running\x20server:','content','../package.json','424420JurlbK','-\x20Read\x20file\x20`','dirname','SymlinkError','Parent\x20directory\x20does\x20not\x20exist:\x20','tool_call_received','glob','stack','MORPH_API_KEY','Rules:\x0a','Disabled\x20tools:\x20','394eTkicn','LocalRipgrepProvider','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.',',\x20removed\x20','optional','read','compaction_failed','327272tCyHJE','slice','includes','data','isArray','timeout','min','false','-\x20Grepped\x20\x27','completionId','1217090daRRUh','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.','function','**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','cwd','sep','exit','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','list_directory','timed\x20out','Created\x20File','morph-v3-fast','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.','Morph\x20FastApply\x20failed\x20without\x20error\x20message','warp_grep_complete','stringify','9573982VrGtYG','path_validation_resolved','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','MORPH_WARP_GREP_TIMEOUT','trim','user','Unknown\x20tool:\x20','EDIT_FILE','tool_call_id','realpath','path','debug','search_type','-\x20Preserve\x20exact\x20indentation\x0a','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','inputSchema','setRequestHandler','Warning:\x20Workspace\x20fallback\x20failed:\x20','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Relevant\x20context\x20found:','join','api-key','\x0a...\x20(truncated,\x20total:\x20','SubToolError','split','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','[github_codebase_search]\x20Failed\x20in\x20','.\x20Changes:\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','PWD','metadata','TimeoutError','Bearer\x20','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','morph-v3-large','push','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','post','instruction','--api-key=','completed_with_file_errors','Tool\x20\x22','resolve','API\x20error\x20(auth/rate-limit)','package.json','file_path','branch','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','code','ENABLE_WORKSPACE_MODE','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','[could\x20not\x20read\x20file:\x20','tool_calls','2355mYOQjn','text','ToolException','ms.\x20Success:\x20','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','turns','files','RipgrepError','codebase_search','Workspace\x20mode\x20enabled:\x20Using\x20','Error:\x20','now','\x20chars)','new_string','unknown\x20error','file','dryRun','connect','filter','safeParse','\x20valid\x20directories','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','Error\x20accessing\x20directory\x20','\x0aExamples:','catch','\x20(new\x20file)','startsWith','Parameters:\x0a','104OeTfFs','ms:','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','tsconfig.json','match','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','grep','node_modules','--api-key','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','argv','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','.cursor','unknown','etimedout','arguments','toLowerCase','linesModified','GITHUB_CODEBASE_SEARCH','stat','grep_search','context','searchGitHub','number','Warning:\x20','terminationReason','error','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','\x0a</file>','default','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','sk-','MORPH_LARGE_APPLY','`\x20in\x20`','read\x20','pattern','env','linesRemoved','instructions','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','\x22>\x0aError\x20reading\x20file:\x20','roots','success','922368GsugcS','string','added\x20','status','edit','\x20-\x20','.vscode','every','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','messages','all','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','isDirectory','name','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','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.','Here\x20is\x20the\x20content\x20of\x20files:\x0a','length','Failed\x20to\x20read\x20file:\x20','github_url','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','pyproject.toml','assistant','DISABLED_TOOLS','225095eBCNxU','File\x20read\x20error:','@morphllm/morphmcp\x20','PathError','owner_repo','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','provider_created','composer.json','Tool\x20','search_string','morph-','mcp-filesystem','48jruWLh','Example\x20format:\x0a','FileNotFound','path_validation_start','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','repo_path','--version','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','code_edit','linesAdded','completed','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','MCP','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','tool','command','Max\x20results\x20to\x20return','role','getClientCapabilities','\x20as\x20allowed\x20directory','payload','path_validation_failed','errors','object','Applied','has','parse','-\x20Glob\x20search\x20`','file_read_failed','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','utf-8','.\x20Path:\x20','.git','listRoots','timings','log','edit_file','\x22>\x0a',',\x20modified\x20','github_codebase_search','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.','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','map','Preview\x20changes\x20without\x20applying\x20them.','Fallback:\x20Using\x20workspace\x20root\x20','GitHub\x20search\x20failed:\x20','application/json','runWarpGrep_call','changes','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','enum','size','WarpGrepError','tool_call_error','117chrZzc','\x0aOptions:','MORPH_API_URL'];a0_0x50c8=function(){return _0x3f3e0a;};return a0_0x50c8();}import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x38b0cc from'fs/promises';import a0_0x37f788 from'path';import a0_0x5afb28 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_0x30afef from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x193ee6){const _0x59749a=a0_0x7395,_0xec1203=_0x193ee6[_0x59749a(0x1c5)](a0_0x37f788[_0x59749a(0x1a1)])['filter'](Boolean);if(_0xec1203[_0x59749a(0x10c)]<0x2)return null;for(let _0x225f53=Math['floor'](_0xec1203['length']/0x2);_0x225f53>=0x1;_0x225f53--){for(let _0x255ff3=0x0;_0x255ff3<=_0xec1203[_0x59749a(0x10c)]-0x2*_0x225f53;_0x255ff3++){const _0x4e8fe5=_0xec1203[_0x59749a(0x193)](_0x255ff3,_0x255ff3+_0x225f53),_0x92299f=_0xec1203[_0x59749a(0x193)](_0x255ff3+_0x225f53,_0x255ff3+0x2*_0x225f53);if(_0x4e8fe5[_0x59749a(0x101)]((_0x11a781,_0x49f09f)=>_0x11a781===_0x92299f[_0x49f09f])){const _0x4de80a=[..._0xec1203[_0x59749a(0x193)](0x0,_0x255ff3),..._0xec1203[_0x59749a(0x193)](_0x255ff3+_0x225f53)];return a0_0x37f788['sep']+_0x4de80a[_0x59749a(0x1c1)](a0_0x37f788[_0x59749a(0x1a1)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x4081ef=a0_0x7395;try{const _0x3a31c8=require(_0x4081ef(0x17f));return _0x3a31c8['version']??'unknown';}catch(_0xa176ea){return logMcpStderr(_0x4081ef(0x1af),_0xa176ea),_0x4081ef(0x20b);}}function printHelp(){const _0x259e42=a0_0x7395;console[_0x259e42(0x143)](_0x259e42(0x116)+getPackageVersion()),console['log']('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x259e42(0x143)](_0x259e42(0x157)),console[_0x259e42(0x143)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x259e42(0x143)](_0x259e42(0x119)),console[_0x259e42(0x143)](_0x259e42(0x12b)),console[_0x259e42(0x143)](_0x259e42(0x1f9)),console[_0x259e42(0x143)](_0x259e42(0x159)),console[_0x259e42(0x143)](_0x259e42(0x10f));}const cliArgs=process[a0_0x16ed94(0x208)][a0_0x16ed94(0x193)](0x2),VERSION_FLAGS=new Set([a0_0x16ed94(0x126),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);function a0_0x7395(_0x27fade,_0xa201a2){_0x27fade=_0x27fade-0xde;const _0x50c8e1=a0_0x50c8();let _0x73953c=_0x50c8e1[_0x27fade];return _0x73953c;}cliArgs[a0_0x16ed94(0x166)](_0x68aa60=>VERSION_FLAGS[a0_0x16ed94(0x139)](_0x68aa60))&&(console[a0_0x16ed94(0x143)]('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x16ed94(0x1a2)](0x0));cliArgs[a0_0x16ed94(0x166)](_0x3f5598=>HELP_FLAGS['has'](_0x3f5598))&&(printHelp(),process[a0_0x16ed94(0x1a2)](0x0));function getCliArg(_0x1ac624){const _0x585664=a0_0x16ed94;for(let _0x15d3ea=0x0;_0x15d3ea<cliArgs[_0x585664(0x10c)];_0x15d3ea++){const _0x52d6be=cliArgs[_0x15d3ea];if(_0x52d6be['startsWith']('--'+_0x1ac624+'='))return _0x52d6be[_0x585664(0x193)](('--'+_0x1ac624+'=')[_0x585664(0x10c)]);if(_0x52d6be==='--'+_0x1ac624&&_0x15d3ea+0x1<cliArgs[_0x585664(0x10c)])return cliArgs[_0x15d3ea+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x16ed94(0x10c)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x16ed94(0x139)](arg)||HELP_FLAGS['has'](arg))continue;if(arg[a0_0x16ed94(0x1fc)](a0_0x16ed94(0x1d4)))continue;if(arg===a0_0x16ed94(0x206)){i++;continue;}args[a0_0x16ed94(0x1d0)](arg);}const WORKSPACE_ROOT=process[a0_0x16ed94(0xf3)]['WORKSPACE_ROOT']||process[a0_0x16ed94(0xf3)][a0_0x16ed94(0x1ca)]||process[a0_0x16ed94(0x1a0)](),ENABLE_WORKSPACE_MODE=process[a0_0x16ed94(0xf3)][a0_0x16ed94(0x1de)]!=='false',MORPH_API_KEY=getCliArg(a0_0x16ed94(0x1c2))??process[a0_0x16ed94(0xf3)][a0_0x16ed94(0x188)],MORPH_API_URL=process[a0_0x16ed94(0xf3)][a0_0x16ed94(0x158)],MORPH_LARGE_APPLY=process['env'][a0_0x16ed94(0xef)]!==a0_0x16ed94(0x199),MORPH_WARP_GREP_TIMEOUT=process[a0_0x16ed94(0xf3)][a0_0x16ed94(0x1b0)]?parseInt(process['env'][a0_0x16ed94(0x1b0)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x16ed94(0xf3)][a0_0x16ed94(0x113)]?new Set(process[a0_0x16ed94(0xf3)]['DISABLED_TOOLS'][a0_0x16ed94(0x1c5)](',')[a0_0x16ed94(0x14a)](_0x440f82=>_0x440f82[a0_0x16ed94(0x1b1)]())[a0_0x16ed94(0x1f4)](_0x4502cd=>_0x4502cd['length']>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x16ed94(0x153)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x16ed94(0x139)](tool)&&console[a0_0x16ed94(0xe9)](a0_0x16ed94(0xf6)+tool+a0_0x16ed94(0x176)+[...KNOWN_TOOL_NAMES][a0_0x16ed94(0x1c1)](',\x20'));}console[a0_0x16ed94(0xe9)](a0_0x16ed94(0x18a)+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x16ed94(0x1fc)](a0_0x16ed94(0xee))&&!MORPH_API_KEY[a0_0x16ed94(0x1fc)](a0_0x16ed94(0x11e))&&logMcpStderr(a0_0x16ed94(0x124));async function reportMorphError(_0x15429b){const _0x137816=a0_0x16ed94;try{await a0_0x30afef[_0x137816(0x1d2)]('https://morphllm.com/api/error-report',{..._0x15429b,'timestamp':new Date()['toISOString'](),'source':_0x15429b['source']||_0x137816(0x11f),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x15429b[_0x137816(0xe4)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x137816(0x14e),'Authorization':_0x137816(0x1cd)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x56fd8a,_0x897e95){const _0x3cd348=a0_0x16ed94;if(_0x56fd8a&&typeof _0x56fd8a==='object'&&'status'in _0x56fd8a)return _0x56fd8a['status'];if(_0x56fd8a&&typeof _0x56fd8a===_0x3cd348(0x137)&&'response'in _0x56fd8a)return _0x56fd8a[_0x3cd348(0x16b)]?.[_0x3cd348(0xfd)];const _0x933e72=_0x897e95[_0x3cd348(0x202)](/\b(401|429)\b/);return _0x933e72?parseInt(_0x933e72[0x1],0xa):null;}function handleMorphAPIError(_0x487e0b){const _0x131355=a0_0x16ed94,_0x30ab0c=_0x487e0b instanceof Error?_0x487e0b[_0x131355(0x15d)]:String(_0x487e0b),_0x3c7f38=extractStatusCode(_0x487e0b,_0x30ab0c);switch(_0x3c7f38){case 0x191:return{'content':[{'type':'text','text':'Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.'}],'isError':!![]};case 0x1ad:return{'content':[{'type':'text','text':_0x131355(0x1a4)}],'isError':!![]};default:return null;}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr(a0_0x16ed94(0xea)),logMcpStderr(a0_0x16ed94(0x209)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x16ed94(0x15e)),logMcpStderr(a0_0x16ed94(0x102)));function normalizePath(_0x6896e8){return a0_0x37f788['normalize'](_0x6896e8);}function expandHome(_0x5d8e90){const _0x52435f=a0_0x16ed94;if(_0x5d8e90[_0x52435f(0x1fc)]('~/')||_0x5d8e90==='~')return a0_0x37f788['join'](a0_0x5afb28['homedir'](),_0x5d8e90['slice'](0x1));return _0x5d8e90;}let allowedDirectories=await Promise[a0_0x16ed94(0x105)](args['map'](async _0xa3e7d1=>{const _0x397974=a0_0x16ed94,_0x24150c=expandHome(_0xa3e7d1),_0x2f86a8=a0_0x37f788[_0x397974(0x1d7)](_0x24150c);try{const _0x2f050b=await a0_0x38b0cc['realpath'](_0x2f86a8);return normalizePath(_0x2f050b);}catch(_0x7079ba){return normalizePath(_0x2f86a8);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x16ed94(0x10c)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x16ed94(0x1d0)](workspaceDir),logMcpStderr(a0_0x16ed94(0x1eb)+workspaceDir+a0_0x16ed94(0x133)));}catch(a0_0x56c65c){logMcpStderr(a0_0x16ed94(0x160)+a0_0x56c65c);}async function detectWorkspaceRoot(_0x41da66){const _0x1b8582=a0_0x16ed94;let _0x332bec=a0_0x37f788[_0x1b8582(0x1d7)](_0x41da66);const _0x5d53a6=[_0x1b8582(0x140),_0x1b8582(0x100),_0x1b8582(0x1d9),'Cargo.toml',_0x1b8582(0x111),'go.mod',_0x1b8582(0x20a),_0x1b8582(0x201),_0x1b8582(0x11b)];while(_0x332bec!==a0_0x37f788[_0x1b8582(0x182)](_0x332bec)){for(const _0x7b01b8 of _0x5d53a6){const _0x1b6a04=a0_0x37f788['join'](_0x332bec,_0x7b01b8);try{return await a0_0x38b0cc['access'](_0x1b6a04),normalizePath(_0x332bec);}catch{}}_0x332bec=a0_0x37f788[_0x1b8582(0x182)](_0x332bec);}return normalizePath(_0x41da66);}await Promise[a0_0x16ed94(0x105)](args[a0_0x16ed94(0x14a)](async _0x19c514=>{const _0x2c0c5b=a0_0x16ed94;try{const _0x2ca649=await a0_0x38b0cc[_0x2c0c5b(0xe2)](expandHome(_0x19c514));!_0x2ca649[_0x2c0c5b(0x107)]()&&(logMcpStderr(_0x2c0c5b(0x1ec)+_0x19c514+_0x2c0c5b(0x175)),process[_0x2c0c5b(0x1a2)](0x1));}catch(_0x1d64df){logMcpStderr(_0x2c0c5b(0x1f8)+_0x19c514+':',_0x1d64df),process[_0x2c0c5b(0x1a2)](0x1);}}));async function validatePath(_0x30d4d7){const _0x2830ec=a0_0x16ed94,_0x40ea0b=expandHome(_0x30d4d7),_0x36251b=a0_0x37f788[_0x2830ec(0x1d7)](_0x40ea0b);logger[_0x2830ec(0x1b8)](_0x2830ec(0x12c),_0x2830ec(0x123),{'raw_path':_0x30d4d7,'absolute':_0x36251b});try{const _0x58298f=await a0_0x38b0cc[_0x2830ec(0x1b6)](_0x36251b);return logger['debug'](_0x2830ec(0x12c),_0x2830ec(0x1ae),{'resolved':_0x58298f,'symlink':_0x58298f!==_0x36251b}),_0x58298f;}catch(_0x409c09){if(_0x409c09[_0x2830ec(0x1dd)]==='ENOENT'){const _0xad2201=a0_0x37f788[_0x2830ec(0x182)](_0x36251b);try{const _0x885fe5=await a0_0x38b0cc['realpath'](_0xad2201),_0x21a7b2=a0_0x37f788['join'](_0x885fe5,a0_0x37f788[_0x2830ec(0x15f)](_0x36251b));return logger[_0x2830ec(0x1b8)](_0x2830ec(0x12c),_0x2830ec(0x1ae),{'resolved':_0x21a7b2,'new_file':!![]}),_0x21a7b2;}catch{logger['error'](_0x2830ec(0x12c),_0x2830ec(0x135),{'raw_path':_0x30d4d7,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0xad2201});throw new Error(_0x2830ec(0x184)+_0xad2201);}}logger[_0x2830ec(0xe9)](_0x2830ec(0x12c),'path_validation_failed',{'raw_path':_0x30d4d7,'error':_0x409c09['message']});throw _0x409c09;}}const MorphEditFileArgsSchema=z[a0_0x16ed94(0x137)]({'path':z['string'](),'code_edit':z['string']()[a0_0x16ed94(0x16a)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z['string']()['describe'](a0_0x16ed94(0x18d)),'dryRun':z['boolean']()['default'](![])['describe'](a0_0x16ed94(0x14b))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x16ed94(0x10a),WarpGrepArgsSchema=z[a0_0x16ed94(0x137)]({'search_string':z['string']()[a0_0x16ed94(0x16a)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x16ed94(0x16a)]('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'),'search_type':z[a0_0x16ed94(0x152)](['default',a0_0x16ed94(0x205)])['optional']()['describe'](a0_0x16ed94(0x127))}),WarpGrepGitHubArgsSchema=z[a0_0x16ed94(0x137)]({'search_string':z[a0_0x16ed94(0xfb)]()[a0_0x16ed94(0x16a)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x16ed94(0xfb)]()[a0_0x16ed94(0x18f)]()[a0_0x16ed94(0x16a)](a0_0x16ed94(0x148)),'owner_repo':z[a0_0x16ed94(0xfb)]()[a0_0x16ed94(0x18f)]()['describe']('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x16ed94(0xfb)]()[a0_0x16ed94(0x18f)]()[a0_0x16ed94(0x16a)](a0_0x16ed94(0x1bf))}),CodebaseSearchArgsSchema=z[a0_0x16ed94(0x137)]({'query':z['string']()[a0_0x16ed94(0x16a)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x16ed94(0x16a)]('Repository\x20identifier'),'branch':z['string']()['optional']()[a0_0x16ed94(0x16a)](a0_0x16ed94(0x106)),'commitHash':z['string']()[a0_0x16ed94(0x18f)]()[a0_0x16ed94(0x16a)]('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z['array'](z[a0_0x16ed94(0xfb)]())[a0_0x16ed94(0xec)]([])['describe'](a0_0x16ed94(0x1bb)),'limit':z[a0_0x16ed94(0xe6)]()['optional']()[a0_0x16ed94(0xec)](0xa)['describe'](a0_0x16ed94(0x130))}),server=new Server({'name':'morph-mcp','version':a0_0x16ed94(0x17a)},{'capabilities':{'tools':{}}});server[a0_0x16ed94(0x1bd)](ListToolsRequestSchema,async()=>{const _0x58531d=a0_0x16ed94,_0x5e5d06=[{'name':TOOL_NAMES[_0x58531d(0x1b4)],'description':_0x58531d(0x19f)+_0x58531d(0x1fd)+_0x58531d(0xed)+_0x58531d(0x15b)+_0x58531d(0x1a3)+_0x58531d(0x1df)+_0x58531d(0x121)+_0x58531d(0x203)+_0x58531d(0x189)+'-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a'+_0x58531d(0x1ba)+'-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a'+_0x58531d(0x1e6),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES['CODEBASE_SEARCH'],'description':_0x58531d(0x1dc)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20'+_0x58531d(0x1f7)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x3839b8=_0x5e5d06[_0x58531d(0x1f4)](_0x42723d=>{const _0x4f92f=_0x58531d;if(DISABLED_TOOLS[_0x4f92f(0x139)](_0x42723d[_0x4f92f(0x108)]))return console[_0x4f92f(0xe9)](_0x4f92f(0x11c)+_0x42723d[_0x4f92f(0x108)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x4f92f(0x15c)in _0x42723d&&_0x42723d[_0x4f92f(0x15c)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x42723d[_0x4f92f(0x108)]+_0x4f92f(0x13d)),![];return!![];});return{'tools':_0x3839b8[_0x58531d(0x14a)](_0x4a4981=>({'name':_0x4a4981[_0x58531d(0x108)],'description':_0x4a4981[_0x58531d(0x172)],'inputSchema':_0x4a4981[_0x58531d(0x1bc)]}))};}),server[a0_0x16ed94(0x1bd)](CallToolRequestSchema,async _0x18caa7=>{const _0x5d3319=a0_0x16ed94,{name:_0x49f5bf,arguments:_0x44f402}=_0x18caa7['params'],_0x5244ad=Date[_0x5d3319(0x1ed)]();logger['debug'](_0x5d3319(0x12c),_0x5d3319(0x185),{'tool':_0x49f5bf,'args':_0x49f5bf==='edit_file'?{'path':_0x44f402?.[_0x5d3319(0x1b7)],'instruction':_0x44f402?.[_0x5d3319(0x1d3)]||_0x44f402?.[_0x5d3319(0xf5)],'dryRun':_0x44f402?.[_0x5d3319(0x1f2)]}:_0x44f402});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x5d3319(0x1e3),'text':_0x5d3319(0x163)}],'isError':!![]};if(!MORPH_API_KEY[_0x5d3319(0x1fc)](_0x5d3319(0xee))&&!MORPH_API_KEY[_0x5d3319(0x1fc)]('morph-'))return{'content':[{'type':_0x5d3319(0x1e3),'text':_0x5d3319(0x1a9)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0x49f5bf))return{'content':[{'type':_0x5d3319(0x1e3),'text':_0x5d3319(0x1d6)+_0x49f5bf+_0x5d3319(0x12d)}],'isError':![]};switch(_0x49f5bf){case TOOL_NAMES[_0x5d3319(0x1b4)]:{let _0x209dd4=_0x44f402;if(_0x209dd4&&typeof _0x209dd4===_0x5d3319(0x137)){if(!(_0x5d3319(0x1b7)in _0x209dd4)){const _0x499ec6=_0x209dd4[_0x5d3319(0x15a)]??_0x209dd4['filePath']??_0x209dd4['target_filepath']??_0x209dd4[_0x5d3319(0x1da)]??_0x209dd4[_0x5d3319(0x1f1)];if(_0x499ec6)_0x209dd4={..._0x209dd4,'path':_0x499ec6};}'instructions'in _0x209dd4&&!(_0x5d3319(0x1d3)in _0x209dd4)&&(_0x209dd4={..._0x209dd4,'instruction':_0x209dd4[_0x5d3319(0xf5)]});if(!('code_edit'in _0x209dd4)){const _0x5d437e=_0x209dd4['code']??_0x209dd4[_0x5d3319(0x1ef)]??_0x209dd4['content']??_0x209dd4[_0x5d3319(0xfe)];if(_0x5d437e)_0x209dd4={..._0x209dd4,'code_edit':_0x5d437e};}}const _0xaf107c=MorphEditFileArgsSchema[_0x5d3319(0x1f5)](_0x209dd4);if(!_0xaf107c[_0x5d3319(0xf9)])throw new Error(_0x5d3319(0x1c6)+_0xaf107c['error']);const _0x427038=await validatePath(_0xaf107c[_0x5d3319(0x195)]['path']);let _0x3e9517=null,_0x4a5b59=!![],_0x2f2a0d=null;try{_0x3e9517=await a0_0x38b0cc[_0x5d3319(0x177)](_0x427038,_0x5d3319(0x13e)),logger['debug'](_0x5d3319(0x12c),_0x5d3319(0x171),{'path':_0x427038,'size_bytes':_0x3e9517[_0x5d3319(0x10c)]});}catch(_0x1a1216){const _0x341425=_0x1a1216[_0x5d3319(0x1dd)];_0x341425==='ENOENT'?(_0x4a5b59=![],_0x3e9517='',logger['debug'](_0x5d3319(0x12c),_0x5d3319(0x171),{'path':_0x427038,'exists':![]})):(_0x2f2a0d=_0x5d3319(0x10d)+(_0x341425||'unknown')+_0x5d3319(0xff)+(_0x1a1216 instanceof Error?_0x1a1216['message']:String(_0x1a1216)),logger[_0x5d3319(0xe9)]('MCP',_0x5d3319(0x13c),{'path':_0x427038,'error':_0x2f2a0d}),logMcpStderr(_0x5d3319(0xe7)+_0x2f2a0d));}let _0x1189f0;try{const _0x3c4d0e=MORPH_API_KEY;if(!_0x3c4d0e)throw new Error(_0x5d3319(0x103));const _0x240acf=a0_0x37f788[_0x5d3319(0x182)](_0x427038),_0x4132ad=a0_0x37f788[_0x5d3319(0x15f)](_0x427038);logger[_0x5d3319(0x1b8)]('MCP',_0x5d3319(0x16c),{'model':_0x5d3319(0x1a8),'path':_0xaf107c[_0x5d3319(0x195)][_0x5d3319(0x1b7)],'instruction_len':_0xaf107c['data']['instruction'][_0x5d3319(0x10c)],'code_edit_len':_0xaf107c[_0x5d3319(0x195)][_0x5d3319(0x128)][_0x5d3319(0x10c)],'original_code_len':_0x3e9517?.[_0x5d3319(0x10c)]??0x0,'dry_run':_0xaf107c['data'][_0x5d3319(0x1f2)]});const _0xdcbfd5=Date[_0x5d3319(0x1ed)](),_0x219493=await executeEditFile({'target_filepath':_0x4132ad,'code_edit':_0xaf107c[_0x5d3319(0x195)][_0x5d3319(0x128)],'instruction':_0xaf107c[_0x5d3319(0x195)][_0x5d3319(0x1d3)]},{'morphApiKey':_0x3c4d0e,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x240acf,'autoWrite':!_0xaf107c[_0x5d3319(0x195)][_0x5d3319(0x1f2)],'generateUdiff':![],'debug':![]}),_0x193162=Date['now']()-_0xdcbfd5;_0x1189f0=_0x219493[_0x5d3319(0x19b)];if(!_0x219493[_0x5d3319(0xf9)])throw new Error(_0x219493[_0x5d3319(0xe9)]||_0x5d3319(0x1aa));const _0x5df242=_0x219493[_0x5d3319(0x150)],_0x51cc80=_0x5d3319(0xfc)+_0x5df242[_0x5d3319(0x129)]+_0x5d3319(0x18e)+_0x5df242[_0x5d3319(0xf4)]+_0x5d3319(0x146)+_0x5df242[_0x5d3319(0xe0)];logger[_0x5d3319(0x1b8)](_0x5d3319(0x12c),_0x5d3319(0x167),{'tool':_0x5d3319(0x144),'success':!![],'latency_ms':Date[_0x5d3319(0x1ed)]()-_0x5244ad,'edit_latency_ms':_0x193162,'changes':{'added':_0x5df242['linesAdded'],'removed':_0x5df242[_0x5d3319(0xf4)],'modified':_0x5df242[_0x5d3319(0xe0)]},'completion_id':_0x1189f0});if(_0xaf107c['data']['dryRun'])return{'content':[{'type':_0x5d3319(0x1e3),'text':_0x5d3319(0x161)+(_0x4a5b59?'':_0x5d3319(0x1fb))+':\x20'+_0xaf107c[_0x5d3319(0x195)][_0x5d3319(0x1d3)]+_0x5d3319(0x1c8)+_0x51cc80+_0x5d3319(0x13f)+_0xaf107c[_0x5d3319(0x195)]['path']+'.'}]};return{'content':[{'type':_0x5d3319(0x1e3),'text':'Morph\x20Edit\x20'+(_0x4a5b59?_0x5d3319(0x138):_0x5d3319(0x1a7))+':\x20'+_0xaf107c[_0x5d3319(0x195)][_0x5d3319(0x1d3)]+_0x5d3319(0x1c8)+_0x51cc80+_0x5d3319(0x13f)+_0xaf107c['data'][_0x5d3319(0x1b7)]+'.'}]};}catch(_0x909e70){const _0x43bfe0=handleMorphAPIError(_0x909e70);if(_0x43bfe0)return logger['error'](_0x5d3319(0x12c),_0x5d3319(0x155),{'tool':'edit_file','error':_0x5d3319(0x1d8),'latency_ms':Date[_0x5d3319(0x1ed)]()-_0x5244ad}),_0x43bfe0;const _0x5b87a2=_0x909e70 instanceof Error?_0x909e70['message']:String(_0x909e70);return logger[_0x5d3319(0xe9)](_0x5d3319(0x12c),'tool_call_error',{'tool':_0x5d3319(0x144),'error':_0x5b87a2,'path':_0xaf107c['data']['path'],'validated_path':_0x427038,'latency_ms':Date[_0x5d3319(0x1ed)]()-_0x5244ad,'stack':_0x909e70 instanceof Error?_0x909e70[_0x5d3319(0x187)]:undefined}),reportMorphError({'error_message':_0x5b87a2,'error_type':_0x909e70 instanceof Error?_0x909e70[_0x5d3319(0x168)][_0x5d3319(0x108)]:'UnknownError','context':{'tool':_0x5d3319(0x144),'completion_id':_0x1189f0,'file_path':_0xaf107c[_0x5d3319(0x195)][_0x5d3319(0x1b7)],'validated_path':_0x427038,'instruction':_0xaf107c[_0x5d3319(0x195)][_0x5d3319(0x1d3)],'model':MORPH_LARGE_APPLY?_0x5d3319(0x1cf):_0x5d3319(0x1a8),'dry_run':_0xaf107c[_0x5d3319(0x195)][_0x5d3319(0x1f2)],'file_exists':_0x4a5b59,'file_read_error':_0x2f2a0d,'file_readable':_0x3e9517!==null,'request_content':{'path':_0xaf107c[_0x5d3319(0x195)][_0x5d3319(0x1b7)],'code_edit':_0xaf107c[_0x5d3319(0x195)][_0x5d3319(0x128)],'instruction':_0xaf107c[_0x5d3319(0x195)]['instruction'],'original_code':_0x3e9517!==null?_0x3e9517[_0x5d3319(0x10c)]>0xc350?_0x3e9517['substring'](0x0,0xc350)+_0x5d3319(0x1c3)+_0x3e9517[_0x5d3319(0x10c)]+_0x5d3319(0x1ee):_0x3e9517:_0x5d3319(0x1e0)+(_0x2f2a0d||_0x5d3319(0x1f0))+']','original_code_length':_0x3e9517?.[_0x5d3319(0x10c)]??0x0,'model':MORPH_LARGE_APPLY?'morph-v3-large':'morph-v3-fast','dry_run':_0xaf107c[_0x5d3319(0x195)][_0x5d3319(0x1f2)]}},'stack_trace':_0x909e70 instanceof Error?_0x909e70[_0x5d3319(0x187)]:undefined,'source':_0x5d3319(0x11f)})[_0x5d3319(0x1fa)](()=>{}),{'content':[{'type':'text','text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x5b87a2}],'isError':!![]};}}case TOOL_NAMES['CODEBASE_SEARCH']:{const _0x11a1f3=WarpGrepArgsSchema[_0x5d3319(0x1f5)](_0x44f402);if(!_0x11a1f3[_0x5d3319(0xf9)])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x11a1f3[_0x5d3319(0xe9)]}],'isError':!![]};const _0x2bd82e=_0x509d74=>{const _0x2faa20=_0x5d3319,_0x79c10=[];for(const _0x391ac0 of _0x509d74||[]){if(_0x391ac0[_0x2faa20(0x131)]===_0x2faa20(0x112)&&Array[_0x2faa20(0x196)](_0x391ac0[_0x2faa20(0x1e1)]))for(const _0x57caca of _0x391ac0['tool_calls']){try{const _0x39e13d=_0x57caca[_0x2faa20(0x19e)]?.[_0x2faa20(0x108)],_0x5b826e=JSON[_0x2faa20(0x13a)](_0x57caca['function']?.[_0x2faa20(0xde)]||'{}');if(_0x39e13d===_0x2faa20(0xe3))_0x79c10[_0x2faa20(0x1d0)]('grep\x20\x27'+_0x5b826e['pattern']+'\x27\x20'+(_0x5b826e[_0x2faa20(0x1b7)]||'.'));else{if(_0x39e13d===_0x2faa20(0x190))_0x79c10[_0x2faa20(0x1d0)](_0x2faa20(0xf1)+_0x5b826e[_0x2faa20(0x1b7)]);else{if(_0x39e13d===_0x2faa20(0x1a5))_0x79c10[_0x2faa20(0x1d0)]('list_directory\x20'+(_0x5b826e[_0x2faa20(0x12f)]||'.'));else{if(_0x39e13d===_0x2faa20(0x186))_0x79c10[_0x2faa20(0x1d0)]('glob\x20\x27'+_0x5b826e[_0x2faa20(0xf2)]+'\x27\x20'+(_0x5b826e[_0x2faa20(0x1b7)]||'.'));else _0x39e13d==='finish'&&_0x79c10[_0x2faa20(0x1d0)](_0x2faa20(0x179));}}}}catch{}}}return _0x79c10;},_0x433f07=_0x3835f0=>{const _0x11c92d=_0x5d3319,_0x268008=[];if(!_0x3835f0||!Array[_0x11c92d(0x196)](_0x3835f0))return _0x268008;const _0x2efc4c=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x11c92d(0x122),'tool':_0x11c92d(0x190)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x11c92d(0x117),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x11c92d(0x174),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x11c92d(0x164),'tool':_0x11c92d(0x190)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x11c92d(0x1e9),'tool':_0x11c92d(0x204)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x11c92d(0x204)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x11c92d(0x164),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x11c92d(0x183),'tool':'read'},{'pattern':/not a text file/,'error_type':_0x11c92d(0x164),'tool':_0x11c92d(0x190)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x11c92d(0x190)},{'pattern':/Error reading file:/,'error_type':_0x11c92d(0x174),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x11c92d(0x1e4),'tool':_0x11c92d(0x20b)}];let _0x384e62=0x0;for(const _0x1956f1 of _0x3835f0){_0x1956f1['role']==='assistant'&&Array['isArray'](_0x1956f1[_0x11c92d(0x1e1)])&&_0x384e62++;const _0x16ac97=_0x1956f1['content'];if((_0x1956f1[_0x11c92d(0x131)]===_0x11c92d(0x12e)||_0x1956f1[_0x11c92d(0x131)]===_0x11c92d(0x1b2))&&_0x16ac97&&typeof _0x16ac97===_0x11c92d(0xfb))for(const {pattern:_0x177727,error_type:_0x4b0191,tool:_0x846ad2}of _0x2efc4c){const _0x2baeff=_0x16ac97[_0x11c92d(0x202)](new RegExp(_0x177727['source'],'g'));if(_0x2baeff)for(const _0xb7d7d3 of _0x2baeff){const _0x3e9411=_0x16ac97['indexOf'](_0xb7d7d3),_0x1706f3=_0x16ac97['substring'](_0x3e9411,Math[_0x11c92d(0x198)](_0x3e9411+0xc8,_0x16ac97['length']));_0x268008['push']({'tool':_0x846ad2,'error_type':_0x4b0191,'error_message':_0x1706f3['split']('\x0a')[0x0],'turn':_0x384e62});}}}return _0x268008;};try{const _0x5c8da4=a0_0x37f788[_0x5d3319(0x1d7)](_0x11a1f3['data'][_0x5d3319(0x125)]),_0x63485e=_0x11a1f3[_0x5d3319(0x195)][_0x5d3319(0x1b9)],_0x4b18a3=_0x63485e===_0x5d3319(0x205)?{'allowNames':[_0x5d3319(0x205)]}:undefined,_0x2a867e=new LocalRipgrepProvider(_0x5c8da4,undefined,_0x4b18a3);logger['debug']('MCP',_0x5d3319(0x11a),{'type':_0x5d3319(0x18c),'repo_root':_0x5c8da4,'search_type':_0x63485e||'default'}),logger[_0x5d3319(0x1b8)](_0x5d3319(0x12c),'warp_grep_start',{'query':_0x11a1f3[_0x5d3319(0x195)]['search_string'],'repo_root':_0x5c8da4,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x3a37ff=Date[_0x5d3319(0x1ed)](),_0x2bc555=await runWarpGrep({'searchTerm':_0x11a1f3[_0x5d3319(0x195)][_0x5d3319(0x11d)],'repoRoot':_0x5c8da4,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x2a867e,'search_type':_0x63485e}),_0x3b444e=Date['now']()-_0x3a37ff,_0x532607=_0x2bc555['finish']?.[_0x5d3319(0x1cb)]?.['files']?.[_0x5d3319(0x10c)]??0x0;logger[_0x5d3319(0x1b8)](_0x5d3319(0x12c),_0x5d3319(0x1ab),{'termination':_0x2bc555[_0x5d3319(0xe8)],'turns':_0x2bc555[_0x5d3319(0x142)]?.[_0x5d3319(0x1e7)]??0x0,'files_found':_0x532607,'latency_ms':_0x3b444e});const _0x2b2e4e=_0x433f07(_0x2bc555[_0x5d3319(0x104)]);_0x2b2e4e[_0x5d3319(0x10c)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x2b2e4e[_0x5d3319(0x10c)]+'\x20error(s)','error_type':_0x5d3319(0x1c4),'level':_0x5d3319(0x17c),'tool':_0x5d3319(0x1ea),'context':{'repo_path':_0x11a1f3[_0x5d3319(0x195)][_0x5d3319(0x125)],'query':_0x11a1f3[_0x5d3319(0x195)]['search_string'],'model':_0x5d3319(0x165),'termination_reason':_0x2bc555['terminationReason'],'sub_tool_errors':_0x2b2e4e,'timings':_0x2bc555[_0x5d3319(0x142)],'tool_calls':_0x2bd82e(_0x2bc555['messages']),'messages':_0x2bc555['messages']?.['map'](_0x55b824=>({'role':_0x55b824['role'],'content':_0x55b824[_0x5d3319(0x17e)],..._0x55b824[_0x5d3319(0x1e1)]?{'tool_calls':_0x55b824[_0x5d3319(0x1e1)]['length']}:{},..._0x55b824[_0x5d3319(0x1b5)]?{'tool_call_id':_0x55b824[_0x5d3319(0x1b5)]}:{}}))},'source':_0x5d3319(0x11f)})['catch'](()=>{});let _0x6d1d9e='';if(_0x2bc555[_0x5d3319(0xe8)]===_0x5d3319(0x12a)&&_0x2bc555[_0x5d3319(0x179)]?.[_0x5d3319(0x1cb)]?.[_0x5d3319(0x1e8)]){const _0x5b636c=_0x2bc555[_0x5d3319(0x179)][_0x5d3319(0x1cb)][_0x5d3319(0x1e8)];if(_0x5b636c['length']===0x0)return _0x6d1d9e=_0x2bc555[_0x5d3319(0x179)][_0x5d3319(0x134)]||_0x5d3319(0x1d1),{'content':[{'type':_0x5d3319(0x1e3),'text':_0x6d1d9e}]};const _0x3cf235=[],_0x4b8a1f=[_0x5d3319(0x149)];for(const _0x14621f of _0x2bc555['messages']){if(_0x14621f[_0x5d3319(0x131)]===_0x5d3319(0x112)&&Array['isArray'](_0x14621f[_0x5d3319(0x1e1)]))for(const _0xd60e17 of _0x14621f['tool_calls']){try{const _0x150eb7=_0xd60e17[_0x5d3319(0x19e)]?.[_0x5d3319(0x108)],_0xa41761=JSON[_0x5d3319(0x13a)](_0xd60e17['function']?.[_0x5d3319(0xde)]||'{}');if(_0x150eb7===_0x5d3319(0xe3))_0x4b8a1f[_0x5d3319(0x1d0)](_0x5d3319(0x19a)+_0xa41761[_0x5d3319(0xf2)]+'\x27\x20in\x20`'+(_0xa41761['path']||'.')+'`');else{if(_0x150eb7===_0x5d3319(0x190))_0x4b8a1f[_0x5d3319(0x1d0)](_0x5d3319(0x181)+_0xa41761[_0x5d3319(0x1b7)]+'`');else{if(_0x150eb7===_0x5d3319(0x1a5))_0x4b8a1f['push']('-\x20Listed\x20directory\x20`'+(_0xa41761[_0x5d3319(0x12f)]||'.')+'`');else _0x150eb7===_0x5d3319(0x186)&&_0x4b8a1f[_0x5d3319(0x1d0)](_0x5d3319(0x13b)+_0xa41761[_0x5d3319(0xf2)]+_0x5d3319(0xf0)+(_0xa41761[_0x5d3319(0x1b7)]||'.')+'`');}}}catch{}}}_0x3cf235[_0x5d3319(0x1d0)](_0x4b8a1f[_0x5d3319(0x1c1)]('\x0a'));const _0x152368=['',_0x5d3319(0x1c0)];for(const _0x561d70 of _0x5b636c){if(_0x561d70[_0x5d3319(0x173)]==='*')_0x152368[_0x5d3319(0x1d0)]('-\x20'+_0x561d70[_0x5d3319(0x1b7)]+':*');else{if(Array['isArray'](_0x561d70['lines'])){const _0x5c3fb8=_0x561d70[_0x5d3319(0x173)][_0x5d3319(0x14a)](([_0x3eb15e,_0x3bd6f8])=>{if(_0x3eb15e===_0x3bd6f8)return''+_0x3eb15e;return _0x3eb15e+'-'+_0x3bd6f8;});_0x152368[_0x5d3319(0x1d0)]('-\x20'+_0x561d70[_0x5d3319(0x1b7)]+':'+_0x5c3fb8[_0x5d3319(0x1c1)](','));}else _0x152368[_0x5d3319(0x1d0)]('-\x20'+_0x561d70[_0x5d3319(0x1b7)]+':*');}}_0x152368[_0x5d3319(0x1d0)](''),_0x3cf235[_0x5d3319(0x1d0)](_0x152368[_0x5d3319(0x1c1)]('\x0a')),_0x3cf235['push'](_0x5d3319(0x10b));const _0x2d1f68=[],_0x4b6233=[];for(const _0x2ee2c1 of _0x5b636c){let _0x24928e=a0_0x37f788[_0x5d3319(0x1d7)](_0x11a1f3[_0x5d3319(0x195)][_0x5d3319(0x125)],_0x2ee2c1[_0x5d3319(0x1b7)]),_0x1aeee3=null,_0x5483ad=null;try{_0x1aeee3=await a0_0x38b0cc[_0x5d3319(0x177)](_0x24928e,{'encoding':_0x5d3319(0x13e)});}catch(_0x2a64ba){const _0x490a40=fixPathRepetition(_0x24928e);if(_0x490a40)try{_0x1aeee3=await a0_0x38b0cc[_0x5d3319(0x177)](_0x490a40,{'encoding':'utf-8'}),_0x24928e=_0x490a40;}catch{_0x5483ad=_0x2a64ba instanceof Error?_0x2a64ba:new Error(String(_0x2a64ba));}else _0x5483ad=_0x2a64ba instanceof Error?_0x2a64ba:new Error(String(_0x2a64ba));}if(_0x1aeee3!==null){const _0x3a8bc6=_0x1aeee3[_0x5d3319(0x1c5)](/\r?\n/),_0x2149dd=[];if(_0x2ee2c1['lines']==='*'||!Array['isArray'](_0x2ee2c1[_0x5d3319(0x173)]))for(let _0x580a7f=0x1;_0x580a7f<=_0x3a8bc6[_0x5d3319(0x10c)];_0x580a7f++){const _0x7e776e=_0x3a8bc6[_0x580a7f-0x1];_0x2149dd[_0x5d3319(0x1d0)](_0x580a7f+'|\x20'+_0x7e776e);}else for(const [_0x3d72c1,_0x11abdd]of _0x2ee2c1[_0x5d3319(0x173)]){_0x2149dd[_0x5d3319(0x10c)]>0x0&&_0x2149dd[_0x5d3319(0x1d0)]('');for(let _0x11f9d0=_0x3d72c1;_0x11f9d0<=_0x11abdd&&_0x11f9d0<=_0x3a8bc6[_0x5d3319(0x10c)];_0x11f9d0++){const _0x2d1c9b=_0x3a8bc6[_0x11f9d0-0x1];_0x2149dd[_0x5d3319(0x1d0)](_0x11f9d0+'|\x20'+_0x2d1c9b);}}_0x4b6233[_0x5d3319(0x1d0)]({'path':_0x2ee2c1[_0x5d3319(0x1b7)],'content':_0x2149dd[_0x5d3319(0x1c1)]('\x0a')});}else _0x2d1f68[_0x5d3319(0x1d0)](_0x5d3319(0x16f)+_0x2ee2c1[_0x5d3319(0x1b7)]+_0x5d3319(0xf7)+(_0x5483ad?.[_0x5d3319(0x15d)]||_0x5d3319(0x162))+_0x5d3319(0xeb));}try{const _0x206530=await compactFileContexts(_0x4b6233,_0x11a1f3[_0x5d3319(0x195)][_0x5d3319(0x11d)],MORPH_API_KEY,MORPH_API_URL);for(const _0x24519c of _0x206530){_0x2d1f68['push'](_0x5d3319(0x16f)+_0x24519c[_0x5d3319(0x1b7)]+'\x22>\x0a'+_0x24519c['content']+'\x0a</file>');}}catch(_0x4e2ac2){logger[_0x5d3319(0x17c)](_0x5d3319(0x12c),_0x5d3319(0x191),{'error':_0x4e2ac2 instanceof Error?_0x4e2ac2[_0x5d3319(0x15d)]:String(_0x4e2ac2),'files_count':_0x4b6233[_0x5d3319(0x10c)]});for(const _0x1c1608 of _0x4b6233){_0x2d1f68[_0x5d3319(0x1d0)](_0x5d3319(0x16f)+_0x1c1608[_0x5d3319(0x1b7)]+_0x5d3319(0x145)+_0x1c1608[_0x5d3319(0x17e)]+_0x5d3319(0xeb));}}_0x3cf235[_0x5d3319(0x1d0)](_0x2d1f68['join']('\x0a\x0a')),_0x6d1d9e=_0x3cf235[_0x5d3319(0x1c1)]('\x0a');const _0x53ee64=_0x2bc555[_0x5d3319(0x136)]?.[_0x5d3319(0x1f4)](_0x49d236=>_0x49d236['message']?.['startsWith'](_0x5d3319(0x115)))||[];if(_0x53ee64[_0x5d3319(0x10c)]>0x0){const _0x4d9f53=_0x53ee64['map'](_0x4b1416=>_0x4b1416[_0x5d3319(0x15d)])[_0x5d3319(0x1c1)](';\x20');reportMorphError({'error_message':_0x4d9f53,'error_type':_0x5d3319(0x16d),'context':{'tool':_0x5d3319(0x1ea),'repo_path':_0x11a1f3[_0x5d3319(0x195)][_0x5d3319(0x125)],'query':_0x11a1f3[_0x5d3319(0x195)]['search_string'],'model':_0x5d3319(0x165),'termination_reason':_0x5d3319(0x1d5),'error_count':_0x53ee64[_0x5d3319(0x10c)],'is_timeout':![],'timings':_0x2bc555[_0x5d3319(0x142)],'files_attempted':_0x5b636c['map'](_0x23e307=>({'path':_0x23e307[_0x5d3319(0x1b7)],'lines':_0x23e307[_0x5d3319(0x173)]})),'tool_calls':_0x2bd82e(_0x2bc555[_0x5d3319(0x104)]),'messages':_0x2bc555[_0x5d3319(0x104)]?.[_0x5d3319(0x14a)](_0x203c4a=>({'role':_0x203c4a[_0x5d3319(0x131)],'content':_0x203c4a['content'],..._0x203c4a[_0x5d3319(0x1e1)]?{'tool_calls':_0x203c4a[_0x5d3319(0x1e1)]['length']}:{},..._0x203c4a['tool_call_id']?{'tool_call_id':_0x203c4a[_0x5d3319(0x1b5)]}:{}})),'request_content':{'query':_0x11a1f3[_0x5d3319(0x195)][_0x5d3319(0x11d)],'repo_path':_0x11a1f3[_0x5d3319(0x195)][_0x5d3319(0x125)],'repoRoot':a0_0x37f788['resolve'](_0x11a1f3['data'][_0x5d3319(0x125)]),'model':_0x5d3319(0x165)}},'source':_0x5d3319(0x11f)})[_0x5d3319(0x1fa)](()=>{});}}else{if(_0x2bc555[_0x5d3319(0xe8)]==='terminated'&&_0x2bc555[_0x5d3319(0x136)][_0x5d3319(0x10c)]>0x0){const _0x3e0176=_0x2bc555[_0x5d3319(0x136)]['map'](_0x448807=>_0x448807[_0x5d3319(0x15d)])['join'](';\x20');_0x6d1d9e=_0x5d3319(0x1ec)+_0x3e0176;const _0x212a09=_0x3e0176[_0x5d3319(0xdf)]()[_0x5d3319(0x194)]('timeout')||_0x3e0176[_0x5d3319(0xdf)]()[_0x5d3319(0x194)](_0x5d3319(0x1a6))||_0x3e0176[_0x5d3319(0xdf)]()[_0x5d3319(0x194)](_0x5d3319(0x20c)),_0x48293b=_0x2bc555[_0x5d3319(0x179)]?.[_0x5d3319(0x1cb)]?.[_0x5d3319(0x1e8)],_0x1be8cd=_0x2bc555[_0x5d3319(0x136)][0x0];reportMorphError({'error_message':_0x3e0176,'error_type':_0x212a09?_0x5d3319(0x1cc):_0x1be8cd?.[_0x5d3319(0x168)]?.[_0x5d3319(0x108)]||_0x5d3319(0x154),'context':{'tool':_0x5d3319(0x1ea),'repo_path':_0x11a1f3[_0x5d3319(0x195)][_0x5d3319(0x125)],'query':_0x11a1f3[_0x5d3319(0x195)][_0x5d3319(0x11d)],'model':_0x5d3319(0x165),'termination_reason':_0x2bc555[_0x5d3319(0xe8)],'error_count':_0x2bc555[_0x5d3319(0x136)][_0x5d3319(0x10c)],'is_timeout':_0x212a09,'timings':_0x2bc555[_0x5d3319(0x142)],'files_attempted':_0x48293b?.[_0x5d3319(0x14a)](_0x462c38=>({'path':_0x462c38[_0x5d3319(0x1b7)],'lines':_0x462c38[_0x5d3319(0x173)]})),'tool_calls':_0x2bd82e(_0x2bc555[_0x5d3319(0x104)]),'messages':_0x2bc555[_0x5d3319(0x104)]?.['map'](_0x4ca49e=>({'role':_0x4ca49e[_0x5d3319(0x131)],'content':_0x4ca49e[_0x5d3319(0x17e)],..._0x4ca49e[_0x5d3319(0x1e1)]?{'tool_calls':_0x4ca49e[_0x5d3319(0x1e1)][_0x5d3319(0x10c)]}:{},..._0x4ca49e['tool_call_id']?{'tool_call_id':_0x4ca49e['tool_call_id']}:{}})),'request_content':{'query':_0x11a1f3['data'][_0x5d3319(0x11d)],'repo_path':_0x11a1f3[_0x5d3319(0x195)]['repo_path'],'repoRoot':a0_0x37f788[_0x5d3319(0x1d7)](_0x11a1f3[_0x5d3319(0x195)][_0x5d3319(0x125)]),'model':_0x5d3319(0x165)}},'stack_trace':_0x1be8cd?.[_0x5d3319(0x187)]||undefined,'source':_0x5d3319(0x11f)})[_0x5d3319(0x1fa)](()=>{});}else _0x6d1d9e=_0x5d3319(0x207);}return{'content':[{'type':_0x5d3319(0x1e3),'text':_0x6d1d9e}]};}catch(_0x1de53b){const _0x3c71dd=handleMorphAPIError(_0x1de53b);if(_0x3c71dd)return logger['error'](_0x5d3319(0x12c),_0x5d3319(0x155),{'tool':_0x5d3319(0x1ea),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x5d3319(0x1ed)]()-_0x5244ad}),_0x3c71dd;const _0x44cd7a=_0x1de53b instanceof Error?_0x1de53b[_0x5d3319(0x15d)]:String(_0x1de53b);logger['error'](_0x5d3319(0x12c),'tool_call_error',{'tool':_0x5d3319(0x1ea),'error':_0x44cd7a,'repo_path':_0x11a1f3['data']['repo_path'],'query':_0x11a1f3[_0x5d3319(0x195)][_0x5d3319(0x11d)],'latency_ms':Date[_0x5d3319(0x1ed)]()-_0x5244ad});const _0x1b10d5=_0x44cd7a['toLowerCase']()['includes'](_0x5d3319(0x197))||_0x44cd7a[_0x5d3319(0xdf)]()[_0x5d3319(0x194)](_0x5d3319(0x1a6))||_0x44cd7a[_0x5d3319(0xdf)]()[_0x5d3319(0x194)]('etimedout')||_0x1de53b instanceof Error&&_0x1de53b[_0x5d3319(0x108)]===_0x5d3319(0x1cc);return reportMorphError({'error_message':_0x44cd7a,'error_type':_0x1b10d5?_0x5d3319(0x1cc):_0x1de53b instanceof Error?_0x1de53b[_0x5d3319(0x168)][_0x5d3319(0x108)]:_0x5d3319(0x16e),'context':{'tool':_0x5d3319(0x1ea),'repo_path':_0x11a1f3[_0x5d3319(0x195)][_0x5d3319(0x125)],'query':_0x11a1f3['data'][_0x5d3319(0x11d)],'model':_0x5d3319(0x165),'is_timeout':_0x1b10d5,'exception_phase':_0x5d3319(0x14f),'request_content':{'query':_0x11a1f3['data']['search_string'],'repo_path':_0x11a1f3[_0x5d3319(0x195)]['repo_path'],'repoRoot':a0_0x37f788[_0x5d3319(0x1d7)](_0x11a1f3[_0x5d3319(0x195)][_0x5d3319(0x125)]),'model':_0x5d3319(0x165)}},'stack_trace':_0x1de53b instanceof Error?_0x1de53b[_0x5d3319(0x187)]:undefined,'source':_0x5d3319(0x11f)})[_0x5d3319(0x1fa)](()=>{}),{'content':[{'type':_0x5d3319(0x1e3),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x44cd7a}],'isError':![]};}}case TOOL_NAMES[_0x5d3319(0xe1)]:{const _0x33c141=WarpGrepGitHubArgsSchema[_0x5d3319(0x1f5)](_0x44f402);if(!_0x33c141[_0x5d3319(0xf9)])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x33c141['error']}],'isError':!![]};const _0x1593d4=_0x33c141[_0x5d3319(0x195)][_0x5d3319(0x10e)]||_0x33c141['data'][_0x5d3319(0x118)];if(!_0x1593d4)return{'content':[{'type':_0x5d3319(0x1e3),'text':_0x5d3319(0x110)}],'isError':!![]};const _0x5d08ef=MORPH_API_KEY;if(!_0x5d08ef)throw new Error(_0x5d3319(0x103));const _0x54f954=Date[_0x5d3319(0x1ed)]();logger['debug'](_0x5d3319(0x12c),_0x5d3319(0x178),{'identifier':_0x1593d4,'query':_0x33c141[_0x5d3319(0x195)][_0x5d3319(0x11d)],'branch':_0x33c141['data'][_0x5d3319(0x1db)]});try{const _0x515fdb=new WarpGrepClient({'morphApiKey':_0x5d08ef,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x165fc5=await _0x515fdb[_0x5d3319(0xe5)]({'searchTerm':_0x33c141[_0x5d3319(0x195)]['search_string'],'github':_0x1593d4,'branch':_0x33c141[_0x5d3319(0x195)][_0x5d3319(0x1db)]}),_0x2bb5c1=Date[_0x5d3319(0x1ed)]()-_0x54f954;logMcpStderr(_0x5d3319(0x170)+_0x2bb5c1+_0x5d3319(0x1e5)+_0x165fc5[_0x5d3319(0xf9)]);const _0x2bd24d=formatResult(_0x165fc5);return{'content':[{'type':_0x5d3319(0x1e3),'text':_0x2bd24d}]};}catch(_0x3e4fcc){const _0x96e822=handleMorphAPIError(_0x3e4fcc);if(_0x96e822)return _0x96e822;const _0x4cd364=Date[_0x5d3319(0x1ed)]()-_0x54f954,_0x4fa035=_0x3e4fcc instanceof Error?_0x3e4fcc[_0x5d3319(0x15d)]:String(_0x3e4fcc);return logMcpStderr(_0x5d3319(0x1c7)+_0x4cd364+_0x5d3319(0x1ff),_0x4fa035),reportMorphError({'error_message':_0x4fa035,'error_type':_0x3e4fcc instanceof Error?_0x3e4fcc[_0x5d3319(0x168)][_0x5d3319(0x108)]:_0x5d3319(0x16e),'context':{'tool':_0x5d3319(0x147),'github_url':_0x1593d4,'search_string':_0x33c141[_0x5d3319(0x195)][_0x5d3319(0x11d)],'branch':_0x33c141[_0x5d3319(0x195)]['branch']},'stack_trace':_0x3e4fcc instanceof Error?_0x3e4fcc['stack']:undefined,'source':'mcp-filesystem','tool':_0x5d3319(0x147),'latency_ms':_0x4cd364})['catch'](()=>{}),{'content':[{'type':_0x5d3319(0x1e3),'text':_0x5d3319(0x14d)+_0x4fa035}],'isError':![]};}}default:throw new Error(_0x5d3319(0x1b3)+_0x49f5bf);}}catch(_0x58c33c){const _0x1c7da0=_0x58c33c instanceof Error?_0x58c33c[_0x5d3319(0x15d)]:String(_0x58c33c);return reportMorphError({'error_message':_0x1c7da0,'error_type':_0x58c33c instanceof Error?_0x58c33c[_0x5d3319(0x168)][_0x5d3319(0x108)]:_0x5d3319(0x16e),'context':{'tool':_0x49f5bf,'arguments':_0x44f402?JSON[_0x5d3319(0x1ac)](_0x44f402)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x5d3319(0x17a)},'stack_trace':_0x58c33c instanceof Error?_0x58c33c[_0x5d3319(0x187)]:undefined,'source':_0x5d3319(0x11f)})[_0x5d3319(0x1fa)](()=>{}),{'content':[{'type':_0x5d3319(0x1e3),'text':_0x5d3319(0x1ec)+_0x1c7da0}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x49fc92){const _0x4cbba7=a0_0x16ed94,_0x517068=await getValidRootDirectories(_0x49fc92);if(_0x517068['length']>0x0)allowedDirectories=[..._0x517068],logMcpStderr(_0x4cbba7(0x151)+_0x517068[_0x4cbba7(0x10c)]+_0x4cbba7(0x1f6));else{logMcpStderr(_0x4cbba7(0x169));if(ENABLE_WORKSPACE_MODE)try{const _0x311fe6=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x311fe6&&(allowedDirectories=[_0x311fe6],logMcpStderr(_0x4cbba7(0x14c)+_0x311fe6));}catch(_0x5efd1e){logMcpStderr(_0x4cbba7(0x1be)+_0x5efd1e);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x49d578=a0_0x16ed94;try{const _0x40992e=await server[_0x49d578(0x141)]();_0x40992e&&_0x49d578(0xf8)in _0x40992e&&await updateAllowedDirectoriesFromRoots(_0x40992e[_0x49d578(0xf8)]);}catch(_0x3c91ee){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x3c91ee instanceof Error?_0x3c91ee[_0x49d578(0x15d)]:String(_0x3c91ee));}}),server['oninitialized']=async()=>{const _0x480997=a0_0x16ed94,_0x261325=server[_0x480997(0x132)]();if(_0x261325?.['roots'])try{const _0x2ef554=await server['listRoots']();_0x2ef554&&_0x480997(0xf8)in _0x2ef554?await updateAllowedDirectoriesFromRoots(_0x2ef554['roots']):logMcpStderr(_0x480997(0x200));}catch(_0x3c7d0a){logMcpStderr(_0x480997(0x109),_0x3c7d0a instanceof Error?_0x3c7d0a[_0x480997(0x15d)]:String(_0x3c7d0a));}else{if(allowedDirectories[_0x480997(0x10c)]>0x0)logMcpStderr(_0x480997(0x1c9),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x480997(0x17b));else throw new Error(_0x480997(0x19d));}}};async function runServer(){const _0x3e71e7=a0_0x16ed94,_0x11442f=new StdioServerTransport();await server[_0x3e71e7(0x1f3)](_0x11442f),logMcpStderr(_0x3e71e7(0x1ce)),allowedDirectories[_0x3e71e7(0x10c)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x16ed94(0x1fa)](_0x3b6706=>{const _0xddeef0=a0_0x16ed94;logMcpStderr(_0xddeef0(0x17d),_0x3b6706),process[_0xddeef0(0x1a2)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x292728,_0x22c8f8){var _0x140f2=a1_0x1a92,_0x562c1d=_0x292728();while(!![]){try{var _0x48c985=parseInt(_0x140f2(0x1ba))/0x1*(-parseInt(_0x140f2(0x1ad))/0x2)+parseInt(_0x140f2(0x1b6))/0x3*(parseInt(_0x140f2(0x1bb))/0x4)+parseInt(_0x140f2(0x1ac))/0x5+-parseInt(_0x140f2(0x1b5))/0x6+-parseInt(_0x140f2(0x1b3))/0x7+parseInt(_0x140f2(0x1bd))/0x8*(parseInt(_0x140f2(0x1b1))/0x9)+parseInt(_0x140f2(0x1b0))/0xa*(parseInt(_0x140f2(0x1b2))/0xb);if(_0x48c985===_0x22c8f8)break;else _0x562c1d['push'](_0x562c1d['shift']());}catch(_0x2f80f0){_0x562c1d['push'](_0x562c1d['shift']());}}}(a1_0x13a0,0x86d56));import a1_0x257fda from'os';import{logger}from'./logger.js';function a1_0x1a92(_0xed4d65,_0x4b6014){_0xed4d65=_0xed4d65-0x1ab;var _0x13a0db=a1_0x13a0();var _0x1a92a4=_0x13a0db[_0xed4d65];return _0x1a92a4;}function a1_0x13a0(){var _0x3f6ef1=['linux','20887nBELcg','2872WXygzl','Linux','1363792vlRzXy','MCP','Unknown','info','3685605btblzd','54hcrATu','Windows','macOS','389590WYdawP','54Jmvuqx','88zqJdmi','6071457lbgvTn','error','3914442YNZFaz','2358noeVbS','darwin','map'];a1_0x13a0=function(){return _0x3f6ef1;};return a1_0x13a0();}export function getOperatingSystemType(_0x3d2a42=a1_0x257fda['platform']()){var _0x27ea38=a1_0x1a92;switch(_0x3d2a42){case _0x27ea38(0x1b7):return _0x27ea38(0x1af);case'win32':return _0x27ea38(0x1ae);case _0x27ea38(0x1b9):return _0x27ea38(0x1bc);default:return _0x27ea38(0x1bf);}}export function formatMcpLogMessage(_0x5cba72,_0x459ecc=a1_0x257fda['platform']()){return'[os='+getOperatingSystemType(_0x459ecc)+']\x20'+_0x5cba72;}export function logMcpStderr(_0x52698a,..._0x2b7c12){var _0x28afe8=a1_0x1a92;console[_0x28afe8(0x1b4)](formatMcpLogMessage(_0x52698a),..._0x2b7c12),logger[_0x28afe8(0x1ab)](_0x28afe8(0x1be),_0x52698a,_0x2b7c12['length']?{'args':_0x2b7c12[_0x28afe8(0x1b8)](_0x59dc0f=>String(_0x59dc0f))}:undefined);}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a2_0x49193f=a2_0xf4c8;(function(_0x25fdba,_0x4f2c59){const _0x298c01=a2_0xf4c8,_0x394bd6=_0x25fdba();while(!![]){try{const _0x4535b7=-parseInt(_0x298c01(0x94))/0x1*(parseInt(_0x298c01(0x97))/0x2)+parseInt(_0x298c01(0x99))/0x3+parseInt(_0x298c01(0x9e))/0x4*(parseInt(_0x298c01(0xa4))/0x5)+-parseInt(_0x298c01(0xa7))/0x6*(-parseInt(_0x298c01(0xa8))/0x7)+parseInt(_0x298c01(0xa0))/0x8*(parseInt(_0x298c01(0x9d))/0x9)+parseInt(_0x298c01(0x93))/0xa*(parseInt(_0x298c01(0x96))/0xb)+-parseInt(_0x298c01(0x98))/0xc;if(_0x4535b7===_0x4f2c59)break;else _0x394bd6['push'](_0x394bd6['shift']());}catch(_0x2847cc){_0x394bd6['push'](_0x394bd6['shift']());}}}(a2_0xa7ae,0x52bdd));function a2_0xa7ae(){const _0x5578bd=['902vznzAA','1113814wZfQrL','14336244SvBmtF','906483MoDbKk','toISOString','error','write','27EPJJuO','3868YXEzCj','warn','290760CmyLlh','enable','fileStream','MORPH_LOG_FILE','3415uQHawc','_log','isEnabled','3707196NSPcbL','7ZvPVcY','debug','env','enabled',']\x20[','info','48900ggyGhx','1nYYtCH','toUpperCase'];a2_0xa7ae=function(){return _0x5578bd;};return a2_0xa7ae();}function a2_0xf4c8(_0x4ddec7,_0x1383a4){_0x4ddec7=_0x4ddec7-0x93;const _0xa7aeab=a2_0xa7ae();let _0xf4c89e=_0xa7aeab[_0x4ddec7];return _0xf4c89e;}import{createWriteStream}from'fs';class MorphLogger{[a2_0x49193f(0xab)];[a2_0x49193f(0xa2)];constructor(){const _0x291ff0=a2_0x49193f;this[_0x291ff0(0xab)]=process[_0x291ff0(0xaa)]['MORPH_DEBUG']==='1'||!!process[_0x291ff0(0xaa)][_0x291ff0(0xa3)];const _0x280801=process[_0x291ff0(0xaa)]['MORPH_LOG_FILE'];this[_0x291ff0(0xa2)]=_0x280801?createWriteStream(_0x280801,{'flags':'a'}):null;}[a2_0x49193f(0xa9)](_0x3f7c25,_0x5e5be1,_0x233662){const _0x35f839=a2_0x49193f;this[_0x35f839(0xa5)](_0x35f839(0xa9),_0x3f7c25,_0x5e5be1,_0x233662);}[a2_0x49193f(0xad)](_0x1438f1,_0x3d5658,_0x18e387){const _0x253f1c=a2_0x49193f;this[_0x253f1c(0xa5)]('info',_0x1438f1,_0x3d5658,_0x18e387);}[a2_0x49193f(0x9f)](_0x4ac425,_0x5c7e0a,_0x473a57){const _0xcfeaf3=a2_0x49193f;this[_0xcfeaf3(0xa5)](_0xcfeaf3(0x9f),_0x4ac425,_0x5c7e0a,_0x473a57);}[a2_0x49193f(0x9b)](_0x491a36,_0x3e9180,_0x24e65f){const _0x2f8234=a2_0x49193f;this[_0x2f8234(0xa5)](_0x2f8234(0x9b),_0x491a36,_0x3e9180,_0x24e65f);}[a2_0x49193f(0xa1)](){const _0x468d86=a2_0x49193f;this[_0x468d86(0xab)]=!![];}get[a2_0x49193f(0xa6)](){const _0x2e4143=a2_0x49193f;return this[_0x2e4143(0xab)];}['_log'](_0x3ee542,_0x2e23cb,_0x41df9d,_0x2afca3){const _0x362caf=a2_0x49193f;if(_0x3ee542!=='error'&&!this['enabled'])return;const _0x677905=new Date()[_0x362caf(0x9a)](),_0x132ee9='['+_0x677905+']\x20['+_0x3ee542[_0x362caf(0x95)]()+_0x362caf(0xac)+_0x2e23cb+']';console[_0x362caf(0x9b)](_0x2afca3?_0x132ee9+'\x20'+_0x41df9d+'\x20'+JSON['stringify'](_0x2afca3):_0x132ee9+'\x20'+_0x41df9d),this['fileStream']?.[_0x362caf(0x9c)](JSON['stringify']({'ts':_0x677905,'level':_0x3ee542,'component':_0x2e23cb,'msg':_0x41df9d,..._0x2afca3&&{'data':_0x2afca3}})+'\x0a');}}export const logger=new MorphLogger();
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a3_0xeac1(_0x756e51,_0xab016d){_0x756e51=_0x756e51-0x1a6;const _0x3444bd=a3_0x3444();let _0xeac17c=_0x3444bd[_0x756e51];return _0xeac17c;}(function(_0xe7bc0f,_0x38e0ea){const _0x1a1028=a3_0xeac1,_0x38b894=_0xe7bc0f();while(!![]){try{const _0x305cb8=parseInt(_0x1a1028(0x1b1))/0x1+-parseInt(_0x1a1028(0x1b8))/0x2*(-parseInt(_0x1a1028(0x1b3))/0x3)+-parseInt(_0x1a1028(0x1b5))/0x4+-parseInt(_0x1a1028(0x1a6))/0x5+parseInt(_0x1a1028(0x1b9))/0x6+-parseInt(_0x1a1028(0x1b7))/0x7*(-parseInt(_0x1a1028(0x1b4))/0x8)+parseInt(_0x1a1028(0x1ab))/0x9*(-parseInt(_0x1a1028(0x1aa))/0xa);if(_0x305cb8===_0x38e0ea)break;else _0x38b894['push'](_0x38b894['shift']());}catch(_0x2dec00){_0x38b894['push'](_0x38b894['shift']());}}}(a3_0x3444,0xa3934));import a3_0x2886d8 from'path';import a3_0x2c389e from'os';export function convertToWindowsPath(_0x57078b){const _0x4b501f=a3_0xeac1;if(_0x57078b[_0x4b501f(0x1b6)](_0x4b501f(0x1b0))){const _0x5ee6af=_0x57078b['charAt'](0x5)[_0x4b501f(0x1af)](),_0x4e411c=_0x57078b[_0x4b501f(0x1a9)](0x6)[_0x4b501f(0x1ad)](/\//g,'\x5c');return _0x5ee6af+':'+_0x4e411c;}if(_0x57078b[_0x4b501f(0x1b2)](/^\/[a-zA-Z]\//)){const _0x26e4fe=_0x57078b[_0x4b501f(0x1a8)](0x1)['toUpperCase'](),_0x4a4990=_0x57078b[_0x4b501f(0x1a9)](0x2)['replace'](/\//g,'\x5c');return _0x26e4fe+':'+_0x4a4990;}if(_0x57078b[_0x4b501f(0x1b2)](/^[a-zA-Z]:/))return _0x57078b[_0x4b501f(0x1ad)](/\//g,'\x5c');return _0x57078b;}export function normalizePath(_0x1eb069){const _0xdc6939=a3_0xeac1;_0x1eb069=_0x1eb069[_0xdc6939(0x1a7)]()[_0xdc6939(0x1ad)](/^["']|["']$/g,'');const _0x535bc=_0x1eb069[_0xdc6939(0x1b6)]('/')&&!_0x1eb069['match'](/^\/mnt\/[a-z]\//i)&&!_0x1eb069['match'](/^\/[a-zA-Z]\//);if(_0x535bc)return _0x1eb069[_0xdc6939(0x1ad)](/\/+/g,'/')[_0xdc6939(0x1ad)](/\/+$/,'');_0x1eb069=convertToWindowsPath(_0x1eb069);if(_0x1eb069[_0xdc6939(0x1b6)]('\x5c\x5c')){let _0x3ae92b=_0x1eb069;_0x3ae92b=_0x3ae92b[_0xdc6939(0x1ad)](/^\\{2,}/,'\x5c\x5c');const _0x548919=_0x3ae92b[_0xdc6939(0x1ac)](0x2)[_0xdc6939(0x1ad)](/\\\\/g,'\x5c');_0x1eb069='\x5c\x5c'+_0x548919;}else _0x1eb069=_0x1eb069[_0xdc6939(0x1ad)](/\\\\/g,'\x5c');let _0x49dbf9=a3_0x2886d8['normalize'](_0x1eb069);_0x1eb069[_0xdc6939(0x1b6)]('\x5c\x5c')&&!_0x49dbf9['startsWith']('\x5c\x5c')&&(_0x49dbf9='\x5c'+_0x49dbf9);if(_0x49dbf9[_0xdc6939(0x1b2)](/^[a-zA-Z]:/)){let _0x9ac206=_0x49dbf9[_0xdc6939(0x1ad)](/\//g,'\x5c');return/^[a-z]:/[_0xdc6939(0x1ba)](_0x9ac206)&&(_0x9ac206=_0x9ac206[_0xdc6939(0x1a8)](0x0)[_0xdc6939(0x1af)]()+_0x9ac206['slice'](0x1)),_0x9ac206;}return _0x49dbf9[_0xdc6939(0x1ad)](/\//g,'\x5c');}export function expandHome(_0x14444f){const _0x54cb3f=a3_0xeac1;if(_0x14444f[_0x54cb3f(0x1b6)]('~/')||_0x14444f==='~')return a3_0x2886d8['join'](a3_0x2c389e[_0x54cb3f(0x1ae)](),_0x14444f[_0x54cb3f(0x1a9)](0x1));return _0x14444f;}function a3_0x3444(){const _0x1f3f37=['homedir','toUpperCase','/mnt/','1089089GXmSxo','match','1014SkrwsK','8MzEBiJ','750232JpxNVg','startsWith','8027488gsRMhc','3146qsqsxO','7509150vBIHyF','test','2214980axMfkJ','trim','charAt','slice','83390JgzUfO','2934pZdrdR','substring','replace'];a3_0x3444=function(){return _0x1f3f37;};return a3_0x3444();}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x2b3bde,_0x44b25c){const _0x2b056c=a4_0x2e99,_0x1453f6=_0x2b3bde();while(!![]){try{const _0x332ee5=parseInt(_0x2b056c(0x19a))/0x1*(parseInt(_0x2b056c(0x19f))/0x2)+-parseInt(_0x2b056c(0x191))/0x3+parseInt(_0x2b056c(0x19e))/0x4*(parseInt(_0x2b056c(0x1a4))/0x5)+-parseInt(_0x2b056c(0x1a3))/0x6+parseInt(_0x2b056c(0x19b))/0x7*(-parseInt(_0x2b056c(0x196))/0x8)+-parseInt(_0x2b056c(0x193))/0x9+parseInt(_0x2b056c(0x195))/0xa;if(_0x332ee5===_0x44b25c)break;else _0x1453f6['push'](_0x1453f6['shift']());}catch(_0x151ba8){_0x1453f6['push'](_0x1453f6['shift']());}}}(a4_0x5c71,0xf055b));function a4_0x2e99(_0x282b9b,_0xaf4435){_0x282b9b=_0x282b9b-0x191;const _0x5c71f8=a4_0x5c71();let _0x2e99dd=_0x5c71f8[_0x282b9b];return _0x2e99dd;}function a4_0x5c71(){const _0x6c18ae=['startsWith','resolve','isAbsolute','130839kTAypV','7hOpOoe','string','includes','8tivkju','22gPcoza','some','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','sep','4410828XStRrE','4503065aUisxC','4106880WWRDjD','normalize','718506bTULSx','length','17411800GDRFjf','14506336lLSQvJ'];a4_0x5c71=function(){return _0x6c18ae;};return a4_0x5c71();}import a4_0x3f11a3 from'path';export function isPathWithinAllowedDirectories(_0x223a4e,_0x140aab){const _0x3129e4=a4_0x2e99;if(typeof _0x223a4e!==_0x3129e4(0x19c)||!Array['isArray'](_0x140aab))return![];if(!_0x223a4e||_0x140aab[_0x3129e4(0x194)]===0x0)return![];if(_0x223a4e[_0x3129e4(0x19d)]('\x00'))return![];let _0x5bb00d;try{_0x5bb00d=a4_0x3f11a3[_0x3129e4(0x198)](a4_0x3f11a3[_0x3129e4(0x192)](_0x223a4e));}catch{return![];}if(!a4_0x3f11a3[_0x3129e4(0x199)](_0x5bb00d))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x140aab[_0x3129e4(0x1a0)](_0x3ff61f=>{const _0x49c5db=_0x3129e4;if(typeof _0x3ff61f!=='string'||!_0x3ff61f)return![];if(_0x3ff61f[_0x49c5db(0x19d)]('\x00'))return![];let _0x3a0d2a;try{_0x3a0d2a=a4_0x3f11a3[_0x49c5db(0x198)](a4_0x3f11a3[_0x49c5db(0x192)](_0x3ff61f));}catch{return![];}if(!a4_0x3f11a3['isAbsolute'](_0x3a0d2a))throw new Error(_0x49c5db(0x1a1));if(_0x5bb00d===_0x3a0d2a)return!![];if(_0x3a0d2a===a4_0x3f11a3[_0x49c5db(0x1a2)])return _0x5bb00d[_0x49c5db(0x197)](a4_0x3f11a3[_0x49c5db(0x1a2)]);return _0x5bb00d[_0x49c5db(0x197)](_0x3a0d2a+a4_0x3f11a3[_0x49c5db(0x1a2)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x708074,_0x18cb28){const _0x415745=a5_0x56ed,_0x3cb31c=_0x708074();while(!![]){try{const _0xac9e5b=-parseInt(_0x415745(0xae))/0x1+parseInt(_0x415745(0xa5))/0x2*(parseInt(_0x415745(0xa6))/0x3)+-parseInt(_0x415745(0xab))/0x4*(parseInt(_0x415745(0xaa))/0x5)+-parseInt(_0x415745(0xa4))/0x6*(-parseInt(_0x415745(0xb2))/0x7)+parseInt(_0x415745(0x9e))/0x8+-parseInt(_0x415745(0xac))/0x9+-parseInt(_0x415745(0xa8))/0xa*(-parseInt(_0x415745(0xad))/0xb);if(_0xac9e5b===_0x18cb28)break;else _0x3cb31c['push'](_0x3cb31c['shift']());}catch(_0x1e1e90){_0x3cb31c['push'](_0x3cb31c['shift']());}}}(a5_0x5cc6,0x294fe));import{promises as a5_0x35b73a}from'fs';import a5_0x1ac471 from'path';import a5_0x4b8494 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';function a5_0x56ed(_0x59a294,_0x3ab824){_0x59a294=_0x59a294-0x9c;const _0x5cc608=a5_0x5cc6();let _0x56ed2e=_0x5cc608[_0x59a294];return _0x56ed2e;}async function parseRootUri(_0x3d282a){const _0x34bb86=a5_0x56ed;try{const _0x1c7d6e=_0x3d282a[_0x34bb86(0xa9)](_0x34bb86(0xb1))?_0x3d282a[_0x34bb86(0xa0)](0x7):_0x3d282a,_0x457a35=_0x1c7d6e[_0x34bb86(0xa9)]('~/')||_0x1c7d6e==='~'?a5_0x1ac471[_0x34bb86(0xa7)](a5_0x4b8494[_0x34bb86(0x9d)](),_0x1c7d6e['slice'](0x1)):_0x1c7d6e,_0x3e5ca9=a5_0x1ac471[_0x34bb86(0x9f)](_0x457a35),_0x402fee=await a5_0x35b73a[_0x34bb86(0xb0)](_0x3e5ca9);return normalizePath(_0x402fee);}catch{return null;}}function a5_0x5cc6(){const _0xea0894=['uri','realpath','file://','446866EhCpDj','Skipping\x20','message','homedir','2236232iFYuIY','resolve','slice','isDirectory','\x20due\x20to\x20error:\x20','non-directory\x20root','12dSSayg','165950EDsagS','9HTTMpB','join','2060dQGbuH','startsWith','1170wxWFsr','2896oFHBxL','1731402bnTNSZ','4367cmJjsO','206904WdOoNN'];a5_0x5cc6=function(){return _0xea0894;};return a5_0x5cc6();}function formatDirectoryError(_0x4151c1,_0x4ef49d,_0x4741fd){const _0x392dbf=a5_0x56ed;if(_0x4741fd)return _0x392dbf(0xb3)+_0x4741fd+':\x20'+_0x4151c1;const _0xb6b370=_0x4ef49d instanceof Error?_0x4ef49d[_0x392dbf(0x9c)]:String(_0x4ef49d);return'Skipping\x20invalid\x20directory:\x20'+_0x4151c1+_0x392dbf(0xa2)+_0xb6b370;}export async function getValidRootDirectories(_0x107886){const _0x237b32=a5_0x56ed,_0x7aefb3=[];for(const _0x11e3db of _0x107886){const _0xdab8ba=await parseRootUri(_0x11e3db[_0x237b32(0xaf)]);if(!_0xdab8ba){logMcpStderr(formatDirectoryError(_0x11e3db[_0x237b32(0xaf)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x26ab8c=await a5_0x35b73a['stat'](_0xdab8ba);_0x26ab8c[_0x237b32(0xa1)]()?_0x7aefb3['push'](_0xdab8ba):logMcpStderr(formatDirectoryError(_0xdab8ba,undefined,_0x237b32(0xa3)));}catch(_0x212083){logMcpStderr(formatDirectoryError(_0xdab8ba,_0x212083));}}return _0x7aefb3;}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a6_0x257a6c=a6_0x90ae;function a6_0x90ae(_0x3f703c,_0x3cf165){_0x3f703c=_0x3f703c-0x14f;const _0x31d32b=a6_0x31d3();let _0x90ae43=_0x31d32b[_0x3f703c];return _0x90ae43;}(function(_0x827d6f,_0x5ba224){const _0x1a416e=a6_0x90ae,_0x4a83b4=_0x827d6f();while(!![]){try{const _0x57ae5a=parseInt(_0x1a416e(0x15a))/0x1*(-parseInt(_0x1a416e(0x155))/0x2)+-parseInt(_0x1a416e(0x150))/0x3+parseInt(_0x1a416e(0x151))/0x4+-parseInt(_0x1a416e(0x158))/0x5*(-parseInt(_0x1a416e(0x153))/0x6)+-parseInt(_0x1a416e(0x156))/0x7+-parseInt(_0x1a416e(0x152))/0x8*(parseInt(_0x1a416e(0x15b))/0x9)+parseInt(_0x1a416e(0x157))/0xa;if(_0x57ae5a===_0x5ba224)break;else _0x4a83b4['push'](_0x4a83b4['shift']());}catch(_0x379b1c){_0x4a83b4['push'](_0x4a83b4['shift']());}}}(a6_0x31d3,0x8866c));export const TOOL_NAMES={'EDIT_FILE':'edit_file','CODEBASE_SEARCH':a6_0x257a6c(0x154),'GITHUB_CODEBASE_SEARCH':a6_0x257a6c(0x159)};function a6_0x31d3(){const _0x19f789=['7622482NhlXmN','26451870jOwThH','42510prALfx','github_codebase_search','1889hwjtIn','9814743KBnzUb','values','2916930jBRYqk','2496004QrRpga','8QTNSFr','774EoaeVw','codebase_search','694dwbNog'];a6_0x31d3=function(){return _0x19f789;};return a6_0x31d3();}export const ALL_TOOL_NAMES=Object[a6_0x257a6c(0x14f)](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.178",
|
|
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.169",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|