@morphllm/morphmcp 0.8.177 → 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_0x53ab07=a0_0x43f6;(function(_0x5cb303,_0x2788ac){const _0x4b1613=a0_0x43f6,_0x32198a=_0x5cb303();while(!![]){try{const _0x3de9c8=-parseInt(_0x4b1613(0x1ad))/0x1+-parseInt(_0x4b1613(0x15a))/0x2*(parseInt(_0x4b1613(0x227))/0x3)+parseInt(_0x4b1613(0x19c))/0x4+parseInt(_0x4b1613(0x232))/0x5+parseInt(_0x4b1613(0x1aa))/0x6+-parseInt(_0x4b1613(0x1b0))/0x7+parseInt(_0x4b1613(0x205))/0x8;if(_0x3de9c8===_0x2788ac)break;else _0x32198a['push'](_0x32198a['shift']());}catch(_0x1f653a){_0x32198a['push'](_0x32198a['shift']());}}}(a0_0x29da,0xa9f1b));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_0x51e440 from'fs/promises';import a0_0x57f824 from'path';import a0_0x18f233 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_0x163a69 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x271eb1){const _0x1df6f0=a0_0x43f6,_0x46deff=_0x271eb1[_0x1df6f0(0x1c5)](a0_0x57f824[_0x1df6f0(0x25f)])['filter'](Boolean);if(_0x46deff[_0x1df6f0(0x219)]<0x2)return null;for(let _0x2a2a5f=Math[_0x1df6f0(0x196)](_0x46deff[_0x1df6f0(0x219)]/0x2);_0x2a2a5f>=0x1;_0x2a2a5f--){for(let _0x20c0ab=0x0;_0x20c0ab<=_0x46deff[_0x1df6f0(0x219)]-0x2*_0x2a2a5f;_0x20c0ab++){const _0x507efd=_0x46deff[_0x1df6f0(0x19e)](_0x20c0ab,_0x20c0ab+_0x2a2a5f),_0x42fe38=_0x46deff[_0x1df6f0(0x19e)](_0x20c0ab+_0x2a2a5f,_0x20c0ab+0x2*_0x2a2a5f);if(_0x507efd[_0x1df6f0(0x21d)]((_0x7205a8,_0x55ebb0)=>_0x7205a8===_0x42fe38[_0x55ebb0])){const _0x1dfa9e=[..._0x46deff[_0x1df6f0(0x19e)](0x0,_0x20c0ab),..._0x46deff['slice'](_0x20c0ab+_0x2a2a5f)];return a0_0x57f824['sep']+_0x1dfa9e['join'](a0_0x57f824[_0x1df6f0(0x25f)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x38ac1f=a0_0x43f6;try{const _0x57b2d9=require(_0x38ac1f(0x1bb));return _0x57b2d9[_0x38ac1f(0x1f0)]??_0x38ac1f(0x266);}catch(_0x291173){return logMcpStderr(_0x38ac1f(0x15c),_0x291173),_0x38ac1f(0x266);}}function printHelp(){const _0x2f6847=a0_0x43f6;console[_0x2f6847(0x1fa)](_0x2f6847(0x24d)+getPackageVersion()),console[_0x2f6847(0x1fa)](_0x2f6847(0x24e)),console['log'](_0x2f6847(0x155)),console[_0x2f6847(0x1fa)](_0x2f6847(0x213)),console[_0x2f6847(0x1fa)](_0x2f6847(0x21c)),console['log'](_0x2f6847(0x199)),console[_0x2f6847(0x1fa)]('\x0aExamples:'),console['log']('\x20\x20morph-mcp'),console['log']('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}function a0_0x29da(){const _0x3e1097=['[github_codebase_search]\x20Done\x20in\x20','morph-v3-fast','describe','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','2487312VDCpPn','LocalRipgrepProvider','Tool\x20\x22','1148007BOlaly','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','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','7122374LuGwUh','\x20as\x20allowed\x20directory','Workspace\x20mode\x20enabled:\x20Using\x20','grep_search','mcp-filesystem','grep','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','content','files','File\x20read\x20error:','SubToolError','../package.json','Warning:\x20','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','sk-','grep\x20\x27','lines','node_modules','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','added\x20','array','split','messages','terminated','object','status','debug','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','\x22>\x0a','Parent\x20directory\x20does\x20not\x20exist:\x20','env','exit','path','normalize','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','UnknownError','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','homedir','path_validation_resolved','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','response','tool_call_complete','timed\x20out','[github_codebase_search]\x20Failed\x20in\x20','application/json','Fatal\x20error\x20running\x20server:','ms:','Tool\x20','optional','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','startsWith','payload','command','completed_with_file_errors','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','codebase_search','enum','pyproject.toml','-\x20Read\x20file\x20`','post','ReadError','errors','ENOENT','context','version','ENABLE_WORKSPACE_MODE','instructions','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','\x20disabled\x20via\x20DISABLED_TOOLS','unknown\x20error','morph-v3-large','description','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','safeParse','log','isDirectory','Fallback:\x20Using\x20workspace\x20root\x20','Failed\x20to\x20read\x20file:\x20','finish','**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','join','CODEBASE_SEARCH','has','GITHUB_CODEBASE_SEARCH','MORPH_API_KEY','13180728BYRyQW','resolve','turns','--api-key','go.mod','https://morphllm.com/api/error-report','MORPH_LARGE_APPLY',',\x20removed\x20','api_request_start','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','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.','Disabled\x20tools:\x20','linesRemoved','.git','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','searchGitHub','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','Rules:\x0a','getClientCapabilities','warp_grep_complete','length','MCP','\x20error(s)','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','every','string','.cursor','MORPH_WARP_GREP_TIMEOUT','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','dryRun','Cargo.toml','WORKSPACE_ROOT','roots','Error\x20accessing\x20directory\x20','27uzTBvc','success','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','github_codebase_search','EDIT_FILE','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','setNotificationHandler','\x20chars)','Parameters:\x0a','repo_path','timings','4313505PFAnvU','DISABLED_TOOLS','RipgrepNotAvailable','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','changes','pattern','constructor','compaction_failed','stack','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','file_path','Morph\x20Edit\x20Preview','user','Warning:\x20Workspace\x20fallback\x20failed:\x20','some','catch','false','timeout','terminationReason','name','Preview\x20changes\x20without\x20applying\x20them.','edit_file','filePath','params','--version','etimedout','SymlinkError','@morphllm/morphmcp\x20','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','path_validation_start','file_read_complete','owner_repo','PathError','Created\x20File','requiresApiKey','MORPH_API_URL','function','match','toISOString','Invalid\x20arguments:\x20','path_validation_failed','morph-','Failed\x20to\x20request\x20roots\x20from\x20client:','branch','isArray','sep','github_url','`\x20in\x20`','filter','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','WarpGrep\x20sub-tool\x20errors:\x20','indexOf','unknown','Unknown\x20tool:\x20','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','instruction','all','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','list_directory','\x20valid\x20directories','now','\x27\x20in\x20`','source','search_type','code','message','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','push','map','Error:\x20','GitHub\x20search\x20failed:\x20','argv','completionId','readFile','data','Relevant\x20context\x20found:','boolean','\x0a</file>','read','tool_calls','\x0aOptions:','role','package.json','runWarpGrep_call','text','169930KwnfhK','\x20-\x20','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','basename','realpath','WarpGrepError','❌\x20Morph\x20Edit\x20Failed:\x20','assistant','Morph\x20FastApply\x20failed\x20without\x20error\x20message','utf-8','\x20is\x20not\x20a\x20directory','arguments','.\x20Path:\x20','completed','number','Applied','listRoots','tool_call_error','<file\x20path=\x22','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.','FileReadError','parse','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','cwd','RipgrepError','Here\x20is\x20the\x20content\x20of\x20files:\x0a','default','connect','morph-warp-grep-v2.1','code_edit','API\x20error\x20(auth/rate-limit)','metadata','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','warn','glob','\x0a...\x20(truncated,\x20total:\x20','includes','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','0.2.0','file','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','setRequestHandler','linesAdded','tool_call_id','composer.json','ToolException','TimeoutError','morph-mcp','search_string','Max\x20results\x20to\x20return','Unknown\x20error','BinaryFile','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.','trim','.vscode','substring','glob\x20\x27','Error\x20running\x20fast\x20context\x20search:\x20','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','new_string','floor','error','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','Bearer\x20','linesModified','2805684zdXeHR','toLowerCase','slice','size','file_read_failed','.\x20Changes:\x20','-\x20Listed\x20directory\x20`','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','dirname','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.'];a0_0x29da=function(){return _0x3e1097;};return a0_0x29da();}const cliArgs=process[a0_0x53ab07(0x279)][a0_0x53ab07(0x19e)](0x2),VERSION_FLAGS=new Set([a0_0x53ab07(0x24a),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0x53ab07(0x240)](_0x30c866=>VERSION_FLAGS[a0_0x53ab07(0x202)](_0x30c866))&&(console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x53ab07(0x1cf)](0x0));cliArgs[a0_0x53ab07(0x240)](_0x5a5452=>HELP_FLAGS[a0_0x53ab07(0x202)](_0x5a5452))&&(printHelp(),process[a0_0x53ab07(0x1cf)](0x0));function getCliArg(_0x141c0f){const _0x2107b0=a0_0x53ab07;for(let _0x13209c=0x0;_0x13209c<cliArgs['length'];_0x13209c++){const _0x386b62=cliArgs[_0x13209c];if(_0x386b62[_0x2107b0(0x1e2)]('--'+_0x141c0f+'='))return _0x386b62[_0x2107b0(0x19e)](('--'+_0x141c0f+'=')['length']);if(_0x386b62==='--'+_0x141c0f&&_0x13209c+0x1<cliArgs['length'])return cliArgs[_0x13209c+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x53ab07(0x202)](arg)||HELP_FLAGS[a0_0x53ab07(0x202)](arg))continue;if(arg['startsWith']('--api-key='))continue;if(arg===a0_0x53ab07(0x208)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x53ab07(0x1ce)][a0_0x53ab07(0x224)]||process[a0_0x53ab07(0x1ce)]['PWD']||process[a0_0x53ab07(0x171)](),ENABLE_WORKSPACE_MODE=process[a0_0x53ab07(0x1ce)][a0_0x53ab07(0x1f1)]!=='false',MORPH_API_KEY=getCliArg('api-key')??process['env'][a0_0x53ab07(0x204)],MORPH_API_URL=process[a0_0x53ab07(0x1ce)][a0_0x53ab07(0x255)],MORPH_LARGE_APPLY=process[a0_0x53ab07(0x1ce)][a0_0x53ab07(0x20b)]!==a0_0x53ab07(0x242),MORPH_WARP_GREP_TIMEOUT=process[a0_0x53ab07(0x1ce)][a0_0x53ab07(0x220)]?parseInt(process[a0_0x53ab07(0x1ce)][a0_0x53ab07(0x220)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x53ab07(0x1ce)][a0_0x53ab07(0x233)]?new Set(process[a0_0x53ab07(0x1ce)][a0_0x53ab07(0x233)][a0_0x53ab07(0x1c5)](',')[a0_0x53ab07(0x276)](_0x887128=>_0x887128[a0_0x53ab07(0x18f)]())['filter'](_0x3a43fe=>_0x3a43fe[a0_0x53ab07(0x219)]>0x0)):DEFAULT_DISABLED_TOOLS;function a0_0x43f6(_0x2f2233,_0x5db5e7){_0x2f2233=_0x2f2233-0x14d;const _0x29da25=a0_0x29da();let _0x43f606=_0x29da25[_0x2f2233];return _0x43f606;}if(DISABLED_TOOLS[a0_0x53ab07(0x19f)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x53ab07(0x202)](tool)&&console['error'](a0_0x53ab07(0x1e6)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES][a0_0x53ab07(0x200)](',\x20'));}console[a0_0x53ab07(0x197)](a0_0x53ab07(0x210)+[...DISABLED_TOOLS][a0_0x53ab07(0x200)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x53ab07(0x1e2)](a0_0x53ab07(0x1be))&&!MORPH_API_KEY[a0_0x53ab07(0x1e2)](a0_0x53ab07(0x25b))&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x41bd43){const _0x4baf02=a0_0x53ab07;try{await a0_0x163a69[_0x4baf02(0x1eb)](_0x4baf02(0x20a),{..._0x41bd43,'timestamp':new Date()[_0x4baf02(0x258)](),'source':_0x41bd43['source']||_0x4baf02(0x1b4),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x41bd43[_0x4baf02(0x1ef)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x4baf02(0x1dc),'Authorization':_0x4baf02(0x19a)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x38c2fc,_0xc8001f){const _0x44d0d6=a0_0x53ab07;if(_0x38c2fc&&typeof _0x38c2fc===_0x44d0d6(0x1c8)&&_0x44d0d6(0x1c9)in _0x38c2fc)return _0x38c2fc['status'];if(_0x38c2fc&&typeof _0x38c2fc===_0x44d0d6(0x1c8)&&_0x44d0d6(0x1d8)in _0x38c2fc)return _0x38c2fc[_0x44d0d6(0x1d8)]?.[_0x44d0d6(0x1c9)];const _0x3c7033=_0xc8001f[_0x44d0d6(0x257)](/\b(401|429)\b/);return _0x3c7033?parseInt(_0x3c7033[0x1],0xa):null;}function handleMorphAPIError(_0x2db8b5){const _0x5ec1b5=a0_0x53ab07,_0x1cabbb=_0x2db8b5 instanceof Error?_0x2db8b5['message']:String(_0x2db8b5),_0x514046=extractStatusCode(_0x2db8b5,_0x1cabbb);switch(_0x514046){case 0x191:return{'content':[{'type':_0x5ec1b5(0x159),'text':_0x5ec1b5(0x18e)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x5ec1b5(0x159),'text':_0x5ec1b5(0x263)}],'isError':!![]};default:return null;}}args[a0_0x53ab07(0x219)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x53ab07(0x170)),logMcpStderr(a0_0x53ab07(0x1af)),logMcpStderr(a0_0x53ab07(0x23b)),logMcpStderr(a0_0x53ab07(0x1a3)),logMcpStderr(a0_0x53ab07(0x1c2)),logMcpStderr(a0_0x53ab07(0x17a)));function normalizePath(_0xf64dc3){const _0x563273=a0_0x53ab07;return a0_0x57f824[_0x563273(0x1d1)](_0xf64dc3);}function expandHome(_0x73f815){const _0xa614b=a0_0x53ab07;if(_0x73f815['startsWith']('~/')||_0x73f815==='~')return a0_0x57f824[_0xa614b(0x200)](a0_0x18f233[_0xa614b(0x1d5)](),_0x73f815[_0xa614b(0x19e)](0x1));return _0x73f815;}let allowedDirectories=await Promise['all'](args['map'](async _0x4a78c4=>{const _0x164a07=expandHome(_0x4a78c4),_0xa2a9b2=a0_0x57f824['resolve'](_0x164a07);try{const _0x476cb0=await a0_0x51e440['realpath'](_0xa2a9b2);return normalizePath(_0x476cb0);}catch(_0x49a1a8){return normalizePath(_0xa2a9b2);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x53ab07(0x219)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),logMcpStderr(a0_0x53ab07(0x1b2)+workspaceDir+a0_0x53ab07(0x1b1)));}catch(a0_0x1f01c9){logMcpStderr(a0_0x53ab07(0x22c)+a0_0x1f01c9);}async function detectWorkspaceRoot(_0x53f73e){const _0x47e453=a0_0x53ab07;let _0x5147ca=a0_0x57f824[_0x47e453(0x206)](_0x53f73e);const _0x8daad0=[_0x47e453(0x212),_0x47e453(0x190),_0x47e453(0x157),_0x47e453(0x223),_0x47e453(0x1e9),_0x47e453(0x209),_0x47e453(0x21f),'tsconfig.json',_0x47e453(0x186)];while(_0x5147ca!==a0_0x57f824[_0x47e453(0x1a4)](_0x5147ca)){for(const _0x1b9bc4 of _0x8daad0){const _0x2bedc4=a0_0x57f824[_0x47e453(0x200)](_0x5147ca,_0x1b9bc4);try{return await a0_0x51e440['access'](_0x2bedc4),normalizePath(_0x5147ca);}catch{}}_0x5147ca=a0_0x57f824[_0x47e453(0x1a4)](_0x5147ca);}return normalizePath(_0x53f73e);}await Promise[a0_0x53ab07(0x26a)](args['map'](async _0x4273fa=>{const _0x57f105=a0_0x53ab07;try{const _0x597d44=await a0_0x51e440['stat'](expandHome(_0x4273fa));!_0x597d44[_0x57f105(0x1fb)]()&&(logMcpStderr(_0x57f105(0x277)+_0x4273fa+_0x57f105(0x164)),process[_0x57f105(0x1cf)](0x1));}catch(_0x492fbd){logMcpStderr(_0x57f105(0x226)+_0x4273fa+':',_0x492fbd),process[_0x57f105(0x1cf)](0x1);}}));async function validatePath(_0x1ddfdb){const _0x3c5851=a0_0x53ab07,_0x2cceb4=expandHome(_0x1ddfdb),_0x358d81=a0_0x57f824[_0x3c5851(0x206)](_0x2cceb4);logger[_0x3c5851(0x1ca)](_0x3c5851(0x21a),_0x3c5851(0x24f),{'raw_path':_0x1ddfdb,'absolute':_0x358d81});try{const _0x4e5a30=await a0_0x51e440[_0x3c5851(0x15e)](_0x358d81);return logger['debug']('MCP',_0x3c5851(0x1d6),{'resolved':_0x4e5a30,'symlink':_0x4e5a30!==_0x358d81}),_0x4e5a30;}catch(_0x42ad7c){if(_0x42ad7c[_0x3c5851(0x272)]===_0x3c5851(0x1ee)){const _0x53c869=a0_0x57f824[_0x3c5851(0x1a4)](_0x358d81);try{const _0x472cd4=await a0_0x51e440['realpath'](_0x53c869),_0x2b7841=a0_0x57f824[_0x3c5851(0x200)](_0x472cd4,a0_0x57f824[_0x3c5851(0x15d)](_0x358d81));return logger[_0x3c5851(0x1ca)]('MCP',_0x3c5851(0x1d6),{'resolved':_0x2b7841,'new_file':!![]}),_0x2b7841;}catch{logger[_0x3c5851(0x197)](_0x3c5851(0x21a),_0x3c5851(0x25a),{'raw_path':_0x1ddfdb,'error':_0x3c5851(0x1cd)+_0x53c869});throw new Error(_0x3c5851(0x1cd)+_0x53c869);}}logger['error']('MCP',_0x3c5851(0x25a),{'raw_path':_0x1ddfdb,'error':_0x42ad7c[_0x3c5851(0x273)]});throw _0x42ad7c;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x53ab07(0x21e)](),'code_edit':z[a0_0x53ab07(0x21e)]()[a0_0x53ab07(0x1a8)](a0_0x53ab07(0x20e)),'instruction':z[a0_0x53ab07(0x21e)]()[a0_0x53ab07(0x1a8)](a0_0x53ab07(0x1bd)),'dryRun':z[a0_0x53ab07(0x151)]()[a0_0x53ab07(0x174)](![])[a0_0x53ab07(0x1a8)](a0_0x53ab07(0x246))}),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_0x53ab07(0x1c8)]({'search_string':z[a0_0x53ab07(0x21e)]()[a0_0x53ab07(0x1a8)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x53ab07(0x1a8)]('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_0x53ab07(0x1e8)](['default','node_modules'])[a0_0x53ab07(0x1e0)]()[a0_0x53ab07(0x1a8)](a0_0x53ab07(0x1cb))}),WarpGrepGitHubArgsSchema=z[a0_0x53ab07(0x1c8)]({'search_string':z[a0_0x53ab07(0x21e)]()[a0_0x53ab07(0x1a8)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x53ab07(0x21e)]()[a0_0x53ab07(0x1e0)]()[a0_0x53ab07(0x1a8)](a0_0x53ab07(0x1a5)),'owner_repo':z['string']()[a0_0x53ab07(0x1e0)]()[a0_0x53ab07(0x1a8)](a0_0x53ab07(0x182)),'branch':z[a0_0x53ab07(0x21e)]()[a0_0x53ab07(0x1e0)]()[a0_0x53ab07(0x1a8)](a0_0x53ab07(0x1a9))}),CodebaseSearchArgsSchema=z[a0_0x53ab07(0x1c8)]({'query':z['string']()[a0_0x53ab07(0x1a8)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x53ab07(0x21e)]()[a0_0x53ab07(0x1a8)]('Repository\x20identifier'),'branch':z[a0_0x53ab07(0x21e)]()[a0_0x53ab07(0x1e0)]()[a0_0x53ab07(0x1a8)](a0_0x53ab07(0x235)),'commitHash':z[a0_0x53ab07(0x21e)]()[a0_0x53ab07(0x1e0)]()[a0_0x53ab07(0x1a8)]('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x53ab07(0x1c4)](z['string']())['default']([])[a0_0x53ab07(0x1a8)]('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z[a0_0x53ab07(0x168)]()[a0_0x53ab07(0x1e0)]()['default'](0xa)['describe'](a0_0x53ab07(0x18b))}),server=new Server({'name':a0_0x53ab07(0x189),'version':a0_0x53ab07(0x180)},{'capabilities':{'tools':{}}});server[a0_0x53ab07(0x183)](ListToolsRequestSchema,async()=>{const _0x3550ee=a0_0x53ab07,_0x3d2197=[{'name':TOOL_NAMES[_0x3550ee(0x22b)],'description':_0x3550ee(0x1ff)+_0x3550ee(0x22f)+_0x3550ee(0x194)+'-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a'+'-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a'+'Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a'+'Example\x20format:\x0a'+_0x3550ee(0x198)+_0x3550ee(0x216)+_0x3550ee(0x268)+'-\x20Preserve\x20exact\x20indentation\x0a'+'-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a'+_0x3550ee(0x274),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x3550ee(0x201)],'description':_0x3550ee(0x1ae)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x3550ee(0x1e1)+_0x3550ee(0x215)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x23a7e9=_0x3d2197[_0x3550ee(0x262)](_0x50cede=>{const _0x5a6f3a=_0x3550ee;if(DISABLED_TOOLS[_0x5a6f3a(0x202)](_0x50cede[_0x5a6f3a(0x245)]))return console[_0x5a6f3a(0x197)](_0x5a6f3a(0x1df)+_0x50cede['name']+_0x5a6f3a(0x1f4)),![];if('requiresApiKey'in _0x50cede&&_0x50cede[_0x5a6f3a(0x254)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x50cede[_0x5a6f3a(0x245)]+_0x5a6f3a(0x1d4)),![];return!![];});return{'tools':_0x23a7e9[_0x3550ee(0x276)](_0x1af41a=>({'name':_0x1af41a[_0x3550ee(0x245)],'description':_0x1af41a[_0x3550ee(0x1f7)],'inputSchema':_0x1af41a['inputSchema']}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x57af30=>{const _0x55ead5=a0_0x53ab07,{name:_0x281680,arguments:_0x14e355}=_0x57af30[_0x55ead5(0x249)],_0x78a7b6=Date[_0x55ead5(0x26e)]();logger[_0x55ead5(0x1ca)](_0x55ead5(0x21a),'tool_call_received',{'tool':_0x281680,'args':_0x281680===_0x55ead5(0x247)?{'path':_0x14e355?.['path'],'instruction':_0x14e355?.[_0x55ead5(0x269)]||_0x14e355?.[_0x55ead5(0x1f2)],'dryRun':_0x14e355?.['dryRun']}:_0x14e355});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x55ead5(0x159),'text':_0x55ead5(0x221)}],'isError':!![]};if(!MORPH_API_KEY[_0x55ead5(0x1e2)](_0x55ead5(0x1be))&&!MORPH_API_KEY['startsWith'](_0x55ead5(0x25b)))return{'content':[{'type':_0x55ead5(0x159),'text':_0x55ead5(0x20f)}],'isError':!![]};if(DISABLED_TOOLS[_0x55ead5(0x202)](_0x281680))return{'content':[{'type':_0x55ead5(0x159),'text':_0x55ead5(0x1ac)+_0x281680+_0x55ead5(0x1f8)}],'isError':![]};switch(_0x281680){case TOOL_NAMES[_0x55ead5(0x22b)]:{let _0x2250d0=_0x14e355;if(_0x2250d0&&typeof _0x2250d0===_0x55ead5(0x1c8)){if(!(_0x55ead5(0x1d0)in _0x2250d0)){const _0x1e693e=_0x2250d0['target_file']??_0x2250d0[_0x55ead5(0x248)]??_0x2250d0['target_filepath']??_0x2250d0[_0x55ead5(0x23c)]??_0x2250d0[_0x55ead5(0x181)];if(_0x1e693e)_0x2250d0={..._0x2250d0,'path':_0x1e693e};}'instructions'in _0x2250d0&&!(_0x55ead5(0x269)in _0x2250d0)&&(_0x2250d0={..._0x2250d0,'instruction':_0x2250d0[_0x55ead5(0x1f2)]});if(!(_0x55ead5(0x177)in _0x2250d0)){const _0x304e9b=_0x2250d0[_0x55ead5(0x272)]??_0x2250d0[_0x55ead5(0x195)]??_0x2250d0[_0x55ead5(0x1b7)]??_0x2250d0['edit'];if(_0x304e9b)_0x2250d0={..._0x2250d0,'code_edit':_0x304e9b};}}const _0x24d18f=MorphEditFileArgsSchema[_0x55ead5(0x1f9)](_0x2250d0);if(!_0x24d18f[_0x55ead5(0x228)])throw new Error(_0x55ead5(0x1d2)+_0x24d18f[_0x55ead5(0x197)]);const _0x22490a=await validatePath(_0x24d18f['data']['path']);let _0x526486=null,_0xde57de=!![],_0x5611f5=null;try{_0x526486=await a0_0x51e440[_0x55ead5(0x14e)](_0x22490a,_0x55ead5(0x163)),logger[_0x55ead5(0x1ca)](_0x55ead5(0x21a),_0x55ead5(0x250),{'path':_0x22490a,'size_bytes':_0x526486[_0x55ead5(0x219)]});}catch(_0x1b287b){const _0x9a4bc0=_0x1b287b['code'];_0x9a4bc0===_0x55ead5(0x1ee)?(_0xde57de=![],_0x526486='',logger['debug'](_0x55ead5(0x21a),_0x55ead5(0x250),{'path':_0x22490a,'exists':![]})):(_0x5611f5=_0x55ead5(0x1fd)+(_0x9a4bc0||_0x55ead5(0x266))+_0x55ead5(0x15b)+(_0x1b287b instanceof Error?_0x1b287b[_0x55ead5(0x273)]:String(_0x1b287b)),logger['error'](_0x55ead5(0x21a),_0x55ead5(0x1a0),{'path':_0x22490a,'error':_0x5611f5}),logMcpStderr(_0x55ead5(0x1bc)+_0x5611f5));}let _0x5f0517;try{const _0x365c60=MORPH_API_KEY;if(!_0x365c60)throw new Error(_0x55ead5(0x17f));const _0x3a58ac=a0_0x57f824[_0x55ead5(0x1a4)](_0x22490a),_0x4d2c02=a0_0x57f824['basename'](_0x22490a);logger[_0x55ead5(0x1ca)](_0x55ead5(0x21a),_0x55ead5(0x20d),{'model':_0x55ead5(0x1a7),'path':_0x24d18f[_0x55ead5(0x14f)][_0x55ead5(0x1d0)],'instruction_len':_0x24d18f['data']['instruction']['length'],'code_edit_len':_0x24d18f[_0x55ead5(0x14f)]['code_edit'][_0x55ead5(0x219)],'original_code_len':_0x526486?.[_0x55ead5(0x219)]??0x0,'dry_run':_0x24d18f[_0x55ead5(0x14f)][_0x55ead5(0x222)]});const _0xc02415=Date[_0x55ead5(0x26e)](),_0x5d4356=await executeEditFile({'target_filepath':_0x4d2c02,'code_edit':_0x24d18f[_0x55ead5(0x14f)][_0x55ead5(0x177)],'instruction':_0x24d18f[_0x55ead5(0x14f)][_0x55ead5(0x269)]},{'morphApiKey':_0x365c60,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x3a58ac,'autoWrite':!_0x24d18f[_0x55ead5(0x14f)]['dryRun'],'generateUdiff':![],'debug':![]}),_0xc8291c=Date['now']()-_0xc02415;_0x5f0517=_0x5d4356[_0x55ead5(0x14d)];if(!_0x5d4356['success'])throw new Error(_0x5d4356[_0x55ead5(0x197)]||_0x55ead5(0x162));const _0x1ea90f=_0x5d4356[_0x55ead5(0x236)],_0x40a9a9=_0x55ead5(0x1c3)+_0x1ea90f[_0x55ead5(0x184)]+_0x55ead5(0x20c)+_0x1ea90f[_0x55ead5(0x211)]+',\x20modified\x20'+_0x1ea90f[_0x55ead5(0x19b)];logger[_0x55ead5(0x1ca)]('MCP',_0x55ead5(0x1d9),{'tool':_0x55ead5(0x247),'success':!![],'latency_ms':Date[_0x55ead5(0x26e)]()-_0x78a7b6,'edit_latency_ms':_0xc8291c,'changes':{'added':_0x1ea90f[_0x55ead5(0x184)],'removed':_0x1ea90f['linesRemoved'],'modified':_0x1ea90f['linesModified']},'completion_id':_0x5f0517});if(_0x24d18f[_0x55ead5(0x14f)][_0x55ead5(0x222)])return{'content':[{'type':_0x55ead5(0x159),'text':_0x55ead5(0x23d)+(_0xde57de?'':'\x20(new\x20file)')+':\x20'+_0x24d18f[_0x55ead5(0x14f)][_0x55ead5(0x269)]+_0x55ead5(0x1a1)+_0x40a9a9+_0x55ead5(0x166)+_0x24d18f[_0x55ead5(0x14f)][_0x55ead5(0x1d0)]+'.'}]};return{'content':[{'type':'text','text':'Morph\x20Edit\x20'+(_0xde57de?_0x55ead5(0x169):_0x55ead5(0x253))+':\x20'+_0x24d18f[_0x55ead5(0x14f)]['instruction']+'.\x20Changes:\x20'+_0x40a9a9+'.\x20Path:\x20'+_0x24d18f[_0x55ead5(0x14f)][_0x55ead5(0x1d0)]+'.'}]};}catch(_0x4a54bd){const _0x19ebd2=handleMorphAPIError(_0x4a54bd);if(_0x19ebd2)return logger[_0x55ead5(0x197)](_0x55ead5(0x21a),_0x55ead5(0x16b),{'tool':_0x55ead5(0x247),'error':_0x55ead5(0x178),'latency_ms':Date['now']()-_0x78a7b6}),_0x19ebd2;const _0x56fa9b=_0x4a54bd instanceof Error?_0x4a54bd[_0x55ead5(0x273)]:String(_0x4a54bd);return logger['error']('MCP','tool_call_error',{'tool':_0x55ead5(0x247),'error':_0x56fa9b,'path':_0x24d18f[_0x55ead5(0x14f)][_0x55ead5(0x1d0)],'validated_path':_0x22490a,'latency_ms':Date['now']()-_0x78a7b6,'stack':_0x4a54bd instanceof Error?_0x4a54bd['stack']:undefined}),reportMorphError({'error_message':_0x56fa9b,'error_type':_0x4a54bd instanceof Error?_0x4a54bd[_0x55ead5(0x238)][_0x55ead5(0x245)]:_0x55ead5(0x1d3),'context':{'tool':_0x55ead5(0x247),'completion_id':_0x5f0517,'file_path':_0x24d18f[_0x55ead5(0x14f)][_0x55ead5(0x1d0)],'validated_path':_0x22490a,'instruction':_0x24d18f['data'][_0x55ead5(0x269)],'model':MORPH_LARGE_APPLY?_0x55ead5(0x1f6):_0x55ead5(0x1a7),'dry_run':_0x24d18f['data'][_0x55ead5(0x222)],'file_exists':_0xde57de,'file_read_error':_0x5611f5,'file_readable':_0x526486!==null,'request_content':{'path':_0x24d18f[_0x55ead5(0x14f)][_0x55ead5(0x1d0)],'code_edit':_0x24d18f['data']['code_edit'],'instruction':_0x24d18f[_0x55ead5(0x14f)][_0x55ead5(0x269)],'original_code':_0x526486!==null?_0x526486[_0x55ead5(0x219)]>0xc350?_0x526486[_0x55ead5(0x191)](0x0,0xc350)+_0x55ead5(0x17d)+_0x526486[_0x55ead5(0x219)]+_0x55ead5(0x22e):_0x526486:'[could\x20not\x20read\x20file:\x20'+(_0x5611f5||_0x55ead5(0x1f5))+']','original_code_length':_0x526486?.[_0x55ead5(0x219)]??0x0,'model':MORPH_LARGE_APPLY?_0x55ead5(0x1f6):_0x55ead5(0x1a7),'dry_run':_0x24d18f[_0x55ead5(0x14f)]['dryRun']}},'stack_trace':_0x4a54bd instanceof Error?_0x4a54bd['stack']:undefined,'source':_0x55ead5(0x1b4)})[_0x55ead5(0x241)](()=>{}),{'content':[{'type':_0x55ead5(0x159),'text':_0x55ead5(0x160)+_0x56fa9b}],'isError':!![]};}}case TOOL_NAMES['CODEBASE_SEARCH']:{const _0x56f6a0=WarpGrepArgsSchema['safeParse'](_0x14e355);if(!_0x56f6a0[_0x55ead5(0x228)])return{'content':[{'type':_0x55ead5(0x159),'text':_0x55ead5(0x259)+_0x56f6a0[_0x55ead5(0x197)]}],'isError':!![]};const _0x116daa=_0x3e7627=>{const _0x3bdfac=_0x55ead5,_0x49faa3=[];for(const _0x216b5a of _0x3e7627||[]){if(_0x216b5a['role']===_0x3bdfac(0x161)&&Array[_0x3bdfac(0x25e)](_0x216b5a['tool_calls']))for(const _0x3c2a00 of _0x216b5a[_0x3bdfac(0x154)]){try{const _0x2f0034=_0x3c2a00[_0x3bdfac(0x256)]?.[_0x3bdfac(0x245)],_0x15d07c=JSON[_0x3bdfac(0x16f)](_0x3c2a00[_0x3bdfac(0x256)]?.[_0x3bdfac(0x165)]||'{}');if(_0x2f0034===_0x3bdfac(0x1b3))_0x49faa3[_0x3bdfac(0x275)](_0x3bdfac(0x1bf)+_0x15d07c[_0x3bdfac(0x237)]+'\x27\x20'+(_0x15d07c[_0x3bdfac(0x1d0)]||'.'));else{if(_0x2f0034==='read')_0x49faa3[_0x3bdfac(0x275)]('read\x20'+_0x15d07c[_0x3bdfac(0x1d0)]);else{if(_0x2f0034==='list_directory')_0x49faa3[_0x3bdfac(0x275)]('list_directory\x20'+(_0x15d07c[_0x3bdfac(0x1e4)]||'.'));else{if(_0x2f0034==='glob')_0x49faa3[_0x3bdfac(0x275)](_0x3bdfac(0x192)+_0x15d07c['pattern']+'\x27\x20'+(_0x15d07c[_0x3bdfac(0x1d0)]||'.'));else _0x2f0034===_0x3bdfac(0x1fe)&&_0x49faa3[_0x3bdfac(0x275)](_0x3bdfac(0x1fe));}}}}catch{}}}return _0x49faa3;},_0x260b02=_0x6d5be6=>{const _0x30def2=_0x55ead5,_0x2daefd=[];if(!_0x6d5be6||!Array[_0x30def2(0x25e)](_0x6d5be6))return _0x2daefd;const _0x49319f=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x30def2(0x252),'tool':_0x30def2(0x153)},{'pattern':/\[READ ERROR\]/,'error_type':_0x30def2(0x1ec),'tool':_0x30def2(0x153)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x30def2(0x18d),'tool':_0x30def2(0x153)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x30def2(0x172),'tool':_0x30def2(0x1b5)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x30def2(0x234),'tool':_0x30def2(0x1b5)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x30def2(0x18d),'tool':_0x30def2(0x153)},{'pattern':/\[SYMLINK\]/,'error_type':_0x30def2(0x24c),'tool':_0x30def2(0x153)},{'pattern':/not a text file/,'error_type':_0x30def2(0x18d),'tool':_0x30def2(0x153)},{'pattern':/symbolic link/,'error_type':_0x30def2(0x24c),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x30def2(0x1ec),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x30def2(0x187),'tool':'unknown'}];let _0x22a752=0x0;for(const _0x54e3c5 of _0x6d5be6){_0x54e3c5['role']===_0x30def2(0x161)&&Array[_0x30def2(0x25e)](_0x54e3c5['tool_calls'])&&_0x22a752++;const _0x35e77e=_0x54e3c5['content'];if((_0x54e3c5[_0x30def2(0x156)]==='tool'||_0x54e3c5['role']===_0x30def2(0x23e))&&_0x35e77e&&typeof _0x35e77e==='string')for(const {pattern:_0x479ac9,error_type:_0x5f4c29,tool:_0x1cce2a}of _0x49319f){const _0x38e493=_0x35e77e[_0x30def2(0x257)](new RegExp(_0x479ac9[_0x30def2(0x270)],'g'));if(_0x38e493)for(const _0x36e676 of _0x38e493){const _0x3e98ec=_0x35e77e[_0x30def2(0x265)](_0x36e676),_0x338e42=_0x35e77e[_0x30def2(0x191)](_0x3e98ec,Math['min'](_0x3e98ec+0xc8,_0x35e77e[_0x30def2(0x219)]));_0x2daefd[_0x30def2(0x275)]({'tool':_0x1cce2a,'error_type':_0x5f4c29,'error_message':_0x338e42['split']('\x0a')[0x0],'turn':_0x22a752});}}}return _0x2daefd;};try{const _0x3ad7ff=a0_0x57f824[_0x55ead5(0x206)](_0x56f6a0[_0x55ead5(0x14f)][_0x55ead5(0x230)]),_0x1647ab=_0x56f6a0[_0x55ead5(0x14f)][_0x55ead5(0x271)],_0x2f12bc=_0x1647ab===_0x55ead5(0x1c1)?{'allowNames':[_0x55ead5(0x1c1)]}:undefined,_0x342b6b=new LocalRipgrepProvider(_0x3ad7ff,undefined,_0x2f12bc);logger['debug'](_0x55ead5(0x21a),'provider_created',{'type':_0x55ead5(0x1ab),'repo_root':_0x3ad7ff,'search_type':_0x1647ab||_0x55ead5(0x174)}),logger[_0x55ead5(0x1ca)](_0x55ead5(0x21a),'warp_grep_start',{'query':_0x56f6a0['data'][_0x55ead5(0x18a)],'repo_root':_0x3ad7ff,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x48636a=Date[_0x55ead5(0x26e)](),_0x18f55d=await runWarpGrep({'searchTerm':_0x56f6a0['data']['search_string'],'repoRoot':_0x3ad7ff,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x342b6b,'search_type':_0x1647ab}),_0x4a73e9=Date[_0x55ead5(0x26e)]()-_0x48636a,_0xeae8dc=_0x18f55d[_0x55ead5(0x1fe)]?.['metadata']?.[_0x55ead5(0x1b8)]?.[_0x55ead5(0x219)]??0x0;logger[_0x55ead5(0x1ca)]('MCP',_0x55ead5(0x218),{'termination':_0x18f55d[_0x55ead5(0x244)],'turns':_0x18f55d['timings']?.[_0x55ead5(0x207)]??0x0,'files_found':_0xeae8dc,'latency_ms':_0x4a73e9});const _0x558d99=_0x260b02(_0x18f55d['messages']);_0x558d99[_0x55ead5(0x219)]>0x0&&reportMorphError({'error_message':_0x55ead5(0x264)+_0x558d99['length']+_0x55ead5(0x21b),'error_type':_0x55ead5(0x1ba),'level':'warn','tool':_0x55ead5(0x1e7),'context':{'repo_path':_0x56f6a0[_0x55ead5(0x14f)][_0x55ead5(0x230)],'query':_0x56f6a0[_0x55ead5(0x14f)][_0x55ead5(0x18a)],'model':_0x55ead5(0x176),'termination_reason':_0x18f55d[_0x55ead5(0x244)],'sub_tool_errors':_0x558d99,'timings':_0x18f55d[_0x55ead5(0x231)],'tool_calls':_0x116daa(_0x18f55d[_0x55ead5(0x1c6)]),'messages':_0x18f55d[_0x55ead5(0x1c6)]?.[_0x55ead5(0x276)](_0x545542=>({'role':_0x545542['role'],'content':_0x545542[_0x55ead5(0x1b7)],..._0x545542[_0x55ead5(0x154)]?{'tool_calls':_0x545542[_0x55ead5(0x154)][_0x55ead5(0x219)]}:{},..._0x545542[_0x55ead5(0x185)]?{'tool_call_id':_0x545542['tool_call_id']}:{}}))},'source':'mcp-filesystem'})[_0x55ead5(0x241)](()=>{});let _0x325639='';if(_0x18f55d[_0x55ead5(0x244)]===_0x55ead5(0x167)&&_0x18f55d[_0x55ead5(0x1fe)]?.[_0x55ead5(0x179)]?.['files']){const _0x1b95fc=_0x18f55d[_0x55ead5(0x1fe)][_0x55ead5(0x179)][_0x55ead5(0x1b8)];if(_0x1b95fc[_0x55ead5(0x219)]===0x0)return _0x325639=_0x18f55d[_0x55ead5(0x1fe)][_0x55ead5(0x1e3)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x55ead5(0x159),'text':_0x325639}]};const _0x276c8b=[],_0x4be614=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x50b195 of _0x18f55d[_0x55ead5(0x1c6)]){if(_0x50b195[_0x55ead5(0x156)]==='assistant'&&Array['isArray'](_0x50b195[_0x55ead5(0x154)]))for(const _0x2fc992 of _0x50b195[_0x55ead5(0x154)]){try{const _0x4ee26a=_0x2fc992[_0x55ead5(0x256)]?.['name'],_0x6759bc=JSON[_0x55ead5(0x16f)](_0x2fc992[_0x55ead5(0x256)]?.[_0x55ead5(0x165)]||'{}');if(_0x4ee26a==='grep_search')_0x4be614[_0x55ead5(0x275)]('-\x20Grepped\x20\x27'+_0x6759bc[_0x55ead5(0x237)]+_0x55ead5(0x26f)+(_0x6759bc['path']||'.')+'`');else{if(_0x4ee26a===_0x55ead5(0x153))_0x4be614[_0x55ead5(0x275)](_0x55ead5(0x1ea)+_0x6759bc[_0x55ead5(0x1d0)]+'`');else{if(_0x4ee26a===_0x55ead5(0x26c))_0x4be614['push'](_0x55ead5(0x1a2)+(_0x6759bc[_0x55ead5(0x1e4)]||'.')+'`');else _0x4ee26a===_0x55ead5(0x17c)&&_0x4be614[_0x55ead5(0x275)]('-\x20Glob\x20search\x20`'+_0x6759bc[_0x55ead5(0x237)]+_0x55ead5(0x261)+(_0x6759bc[_0x55ead5(0x1d0)]||'.')+'`');}}}catch{}}}_0x276c8b['push'](_0x4be614[_0x55ead5(0x200)]('\x0a'));const _0x26f667=['',_0x55ead5(0x150)];for(const _0x49e475 of _0x1b95fc){if(_0x49e475[_0x55ead5(0x1c0)]==='*')_0x26f667['push']('-\x20'+_0x49e475['path']+':*');else{if(Array[_0x55ead5(0x25e)](_0x49e475[_0x55ead5(0x1c0)])){const _0x2fe6fa=_0x49e475[_0x55ead5(0x1c0)][_0x55ead5(0x276)](([_0x573529,_0x25002b])=>{if(_0x573529===_0x25002b)return''+_0x573529;return _0x573529+'-'+_0x25002b;});_0x26f667[_0x55ead5(0x275)]('-\x20'+_0x49e475[_0x55ead5(0x1d0)]+':'+_0x2fe6fa['join'](','));}else _0x26f667[_0x55ead5(0x275)]('-\x20'+_0x49e475[_0x55ead5(0x1d0)]+':*');}}_0x26f667[_0x55ead5(0x275)](''),_0x276c8b['push'](_0x26f667[_0x55ead5(0x200)]('\x0a')),_0x276c8b[_0x55ead5(0x275)](_0x55ead5(0x173));const _0x115ad5=[],_0x3a8bb3=[];for(const _0x14d84b of _0x1b95fc){let _0x56a890=a0_0x57f824[_0x55ead5(0x206)](_0x56f6a0['data'][_0x55ead5(0x230)],_0x14d84b[_0x55ead5(0x1d0)]),_0x14ab1c=null,_0x2086ac=null;try{_0x14ab1c=await a0_0x51e440[_0x55ead5(0x14e)](_0x56a890,{'encoding':'utf-8'});}catch(_0x37c459){const _0x46a0d3=fixPathRepetition(_0x56a890);if(_0x46a0d3)try{_0x14ab1c=await a0_0x51e440['readFile'](_0x46a0d3,{'encoding':'utf-8'}),_0x56a890=_0x46a0d3;}catch{_0x2086ac=_0x37c459 instanceof Error?_0x37c459:new Error(String(_0x37c459));}else _0x2086ac=_0x37c459 instanceof Error?_0x37c459:new Error(String(_0x37c459));}if(_0x14ab1c!==null){const _0xb2a600=_0x14ab1c[_0x55ead5(0x1c5)](/\r?\n/),_0x12a873=[];if(_0x14d84b[_0x55ead5(0x1c0)]==='*'||!Array['isArray'](_0x14d84b[_0x55ead5(0x1c0)]))for(let _0x4278aa=0x1;_0x4278aa<=_0xb2a600['length'];_0x4278aa++){const _0x3ed14a=_0xb2a600[_0x4278aa-0x1];_0x12a873[_0x55ead5(0x275)](_0x4278aa+'|\x20'+_0x3ed14a);}else for(const [_0x5b9fb7,_0x5bac2a]of _0x14d84b[_0x55ead5(0x1c0)]){_0x12a873['length']>0x0&&_0x12a873[_0x55ead5(0x275)]('');for(let _0x52067f=_0x5b9fb7;_0x52067f<=_0x5bac2a&&_0x52067f<=_0xb2a600['length'];_0x52067f++){const _0x585f7c=_0xb2a600[_0x52067f-0x1];_0x12a873[_0x55ead5(0x275)](_0x52067f+'|\x20'+_0x585f7c);}}_0x3a8bb3['push']({'path':_0x14d84b[_0x55ead5(0x1d0)],'content':_0x12a873[_0x55ead5(0x200)]('\x0a')});}else _0x115ad5[_0x55ead5(0x275)](_0x55ead5(0x16c)+_0x14d84b['path']+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x2086ac?.['message']||_0x55ead5(0x18c))+_0x55ead5(0x152));}try{const _0x37d994=await compactFileContexts(_0x3a8bb3,_0x56f6a0['data'][_0x55ead5(0x18a)],MORPH_API_KEY,MORPH_API_URL);for(const _0x5e3fac of _0x37d994){_0x115ad5[_0x55ead5(0x275)]('<file\x20path=\x22'+_0x5e3fac['path']+_0x55ead5(0x1cc)+_0x5e3fac['content']+_0x55ead5(0x152));}}catch(_0x24822d){logger[_0x55ead5(0x17b)](_0x55ead5(0x21a),_0x55ead5(0x239),{'error':_0x24822d instanceof Error?_0x24822d[_0x55ead5(0x273)]:String(_0x24822d),'files_count':_0x3a8bb3['length']});for(const _0x46a035 of _0x3a8bb3){_0x115ad5[_0x55ead5(0x275)]('<file\x20path=\x22'+_0x46a035[_0x55ead5(0x1d0)]+_0x55ead5(0x1cc)+_0x46a035['content']+'\x0a</file>');}}_0x276c8b[_0x55ead5(0x275)](_0x115ad5[_0x55ead5(0x200)]('\x0a\x0a')),_0x325639=_0x276c8b[_0x55ead5(0x200)]('\x0a');const _0x18e02a=_0x18f55d[_0x55ead5(0x1ed)]?.[_0x55ead5(0x262)](_0x52c603=>_0x52c603[_0x55ead5(0x273)]?.['startsWith'](_0x55ead5(0x1b9)))||[];if(_0x18e02a[_0x55ead5(0x219)]>0x0){const _0x49beeb=_0x18e02a['map'](_0x35506a=>_0x35506a[_0x55ead5(0x273)])['join'](';\x20');reportMorphError({'error_message':_0x49beeb,'error_type':_0x55ead5(0x16e),'context':{'tool':_0x55ead5(0x1e7),'repo_path':_0x56f6a0['data'][_0x55ead5(0x230)],'query':_0x56f6a0[_0x55ead5(0x14f)][_0x55ead5(0x18a)],'model':_0x55ead5(0x176),'termination_reason':_0x55ead5(0x1e5),'error_count':_0x18e02a[_0x55ead5(0x219)],'is_timeout':![],'timings':_0x18f55d[_0x55ead5(0x231)],'files_attempted':_0x1b95fc[_0x55ead5(0x276)](_0x44c19f=>({'path':_0x44c19f[_0x55ead5(0x1d0)],'lines':_0x44c19f[_0x55ead5(0x1c0)]})),'tool_calls':_0x116daa(_0x18f55d[_0x55ead5(0x1c6)]),'messages':_0x18f55d[_0x55ead5(0x1c6)]?.[_0x55ead5(0x276)](_0x4349d8=>({'role':_0x4349d8['role'],'content':_0x4349d8[_0x55ead5(0x1b7)],..._0x4349d8['tool_calls']?{'tool_calls':_0x4349d8['tool_calls'][_0x55ead5(0x219)]}:{},..._0x4349d8[_0x55ead5(0x185)]?{'tool_call_id':_0x4349d8[_0x55ead5(0x185)]}:{}})),'request_content':{'query':_0x56f6a0[_0x55ead5(0x14f)][_0x55ead5(0x18a)],'repo_path':_0x56f6a0[_0x55ead5(0x14f)][_0x55ead5(0x230)],'repoRoot':a0_0x57f824[_0x55ead5(0x206)](_0x56f6a0[_0x55ead5(0x14f)][_0x55ead5(0x230)]),'model':_0x55ead5(0x176)}},'source':_0x55ead5(0x1b4)})['catch'](()=>{});}}else{if(_0x18f55d[_0x55ead5(0x244)]===_0x55ead5(0x1c7)&&_0x18f55d['errors'][_0x55ead5(0x219)]>0x0){const _0x8a9f42=_0x18f55d[_0x55ead5(0x1ed)][_0x55ead5(0x276)](_0x239a4b=>_0x239a4b[_0x55ead5(0x273)])[_0x55ead5(0x200)](';\x20');_0x325639=_0x55ead5(0x277)+_0x8a9f42;const _0x220b22=_0x8a9f42[_0x55ead5(0x19d)]()['includes']('timeout')||_0x8a9f42['toLowerCase']()[_0x55ead5(0x17e)](_0x55ead5(0x1da))||_0x8a9f42[_0x55ead5(0x19d)]()[_0x55ead5(0x17e)](_0x55ead5(0x24b)),_0x4d10b3=_0x18f55d[_0x55ead5(0x1fe)]?.['metadata']?.[_0x55ead5(0x1b8)],_0x3f8874=_0x18f55d[_0x55ead5(0x1ed)][0x0];reportMorphError({'error_message':_0x8a9f42,'error_type':_0x220b22?_0x55ead5(0x188):_0x3f8874?.[_0x55ead5(0x238)]?.[_0x55ead5(0x245)]||_0x55ead5(0x15f),'context':{'tool':_0x55ead5(0x1e7),'repo_path':_0x56f6a0['data'][_0x55ead5(0x230)],'query':_0x56f6a0[_0x55ead5(0x14f)]['search_string'],'model':_0x55ead5(0x176),'termination_reason':_0x18f55d['terminationReason'],'error_count':_0x18f55d[_0x55ead5(0x1ed)]['length'],'is_timeout':_0x220b22,'timings':_0x18f55d[_0x55ead5(0x231)],'files_attempted':_0x4d10b3?.[_0x55ead5(0x276)](_0x374a5a=>({'path':_0x374a5a[_0x55ead5(0x1d0)],'lines':_0x374a5a[_0x55ead5(0x1c0)]})),'tool_calls':_0x116daa(_0x18f55d[_0x55ead5(0x1c6)]),'messages':_0x18f55d[_0x55ead5(0x1c6)]?.['map'](_0x13105f=>({'role':_0x13105f[_0x55ead5(0x156)],'content':_0x13105f[_0x55ead5(0x1b7)],..._0x13105f[_0x55ead5(0x154)]?{'tool_calls':_0x13105f[_0x55ead5(0x154)][_0x55ead5(0x219)]}:{},..._0x13105f[_0x55ead5(0x185)]?{'tool_call_id':_0x13105f[_0x55ead5(0x185)]}:{}})),'request_content':{'query':_0x56f6a0[_0x55ead5(0x14f)]['search_string'],'repo_path':_0x56f6a0[_0x55ead5(0x14f)][_0x55ead5(0x230)],'repoRoot':a0_0x57f824[_0x55ead5(0x206)](_0x56f6a0[_0x55ead5(0x14f)]['repo_path']),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x3f8874?.[_0x55ead5(0x23a)]||undefined,'source':_0x55ead5(0x1b4)})[_0x55ead5(0x241)](()=>{});}else _0x325639='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0x55ead5(0x159),'text':_0x325639}]};}catch(_0x5448a5){const _0x3d9d92=handleMorphAPIError(_0x5448a5);if(_0x3d9d92)return logger[_0x55ead5(0x197)]('MCP',_0x55ead5(0x16b),{'tool':_0x55ead5(0x1e7),'error':_0x55ead5(0x178),'latency_ms':Date[_0x55ead5(0x26e)]()-_0x78a7b6}),_0x3d9d92;const _0x2a3953=_0x5448a5 instanceof Error?_0x5448a5[_0x55ead5(0x273)]:String(_0x5448a5);logger[_0x55ead5(0x197)](_0x55ead5(0x21a),_0x55ead5(0x16b),{'tool':'codebase_search','error':_0x2a3953,'repo_path':_0x56f6a0[_0x55ead5(0x14f)][_0x55ead5(0x230)],'query':_0x56f6a0['data'][_0x55ead5(0x18a)],'latency_ms':Date['now']()-_0x78a7b6});const _0x878716=_0x2a3953[_0x55ead5(0x19d)]()[_0x55ead5(0x17e)](_0x55ead5(0x243))||_0x2a3953['toLowerCase']()[_0x55ead5(0x17e)](_0x55ead5(0x1da))||_0x2a3953[_0x55ead5(0x19d)]()[_0x55ead5(0x17e)]('etimedout')||_0x5448a5 instanceof Error&&_0x5448a5[_0x55ead5(0x245)]==='TimeoutError';return reportMorphError({'error_message':_0x2a3953,'error_type':_0x878716?_0x55ead5(0x188):_0x5448a5 instanceof Error?_0x5448a5[_0x55ead5(0x238)][_0x55ead5(0x245)]:_0x55ead5(0x1d3),'context':{'tool':_0x55ead5(0x1e7),'repo_path':_0x56f6a0[_0x55ead5(0x14f)][_0x55ead5(0x230)],'query':_0x56f6a0['data']['search_string'],'model':'morph-warp-grep-v2.1','is_timeout':_0x878716,'exception_phase':_0x55ead5(0x158),'request_content':{'query':_0x56f6a0[_0x55ead5(0x14f)][_0x55ead5(0x18a)],'repo_path':_0x56f6a0[_0x55ead5(0x14f)][_0x55ead5(0x230)],'repoRoot':a0_0x57f824['resolve'](_0x56f6a0['data'][_0x55ead5(0x230)]),'model':_0x55ead5(0x176)}},'stack_trace':_0x5448a5 instanceof Error?_0x5448a5['stack']:undefined,'source':_0x55ead5(0x1b4)})[_0x55ead5(0x241)](()=>{}),{'content':[{'type':_0x55ead5(0x159),'text':_0x55ead5(0x193)+_0x2a3953}],'isError':![]};}}case TOOL_NAMES[_0x55ead5(0x203)]:{const _0x199dfe=WarpGrepGitHubArgsSchema['safeParse'](_0x14e355);if(!_0x199dfe[_0x55ead5(0x228)])return{'content':[{'type':_0x55ead5(0x159),'text':'Invalid\x20arguments:\x20'+_0x199dfe[_0x55ead5(0x197)]}],'isError':!![]};const _0x576154=_0x199dfe[_0x55ead5(0x14f)][_0x55ead5(0x260)]||_0x199dfe[_0x55ead5(0x14f)][_0x55ead5(0x251)];if(!_0x576154)return{'content':[{'type':_0x55ead5(0x159),'text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x32ff5f=MORPH_API_KEY;if(!_0x32ff5f)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x99e0f1=Date[_0x55ead5(0x26e)]();logger[_0x55ead5(0x1ca)]('MCP','github_search_start',{'identifier':_0x576154,'query':_0x199dfe[_0x55ead5(0x14f)][_0x55ead5(0x18a)],'branch':_0x199dfe[_0x55ead5(0x14f)][_0x55ead5(0x25d)]});try{const _0x18c946=new WarpGrepClient({'morphApiKey':_0x32ff5f,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x100cfd=await _0x18c946[_0x55ead5(0x214)]({'searchTerm':_0x199dfe[_0x55ead5(0x14f)][_0x55ead5(0x18a)],'github':_0x576154,'branch':_0x199dfe[_0x55ead5(0x14f)]['branch']}),_0x459bdb=Date['now']()-_0x99e0f1;logMcpStderr(_0x55ead5(0x1a6)+_0x459bdb+'ms.\x20Success:\x20'+_0x100cfd[_0x55ead5(0x228)]);const _0x5cd1d1=formatResult(_0x100cfd);return{'content':[{'type':_0x55ead5(0x159),'text':_0x5cd1d1}]};}catch(_0x37307b){const _0x149d4f=handleMorphAPIError(_0x37307b);if(_0x149d4f)return _0x149d4f;const _0x37f1b7=Date[_0x55ead5(0x26e)]()-_0x99e0f1,_0xd10d3=_0x37307b instanceof Error?_0x37307b[_0x55ead5(0x273)]:String(_0x37307b);return logMcpStderr(_0x55ead5(0x1db)+_0x37f1b7+_0x55ead5(0x1de),_0xd10d3),reportMorphError({'error_message':_0xd10d3,'error_type':_0x37307b instanceof Error?_0x37307b['constructor']['name']:_0x55ead5(0x1d3),'context':{'tool':_0x55ead5(0x22a),'github_url':_0x576154,'search_string':_0x199dfe[_0x55ead5(0x14f)][_0x55ead5(0x18a)],'branch':_0x199dfe[_0x55ead5(0x14f)][_0x55ead5(0x25d)]},'stack_trace':_0x37307b instanceof Error?_0x37307b[_0x55ead5(0x23a)]:undefined,'source':'mcp-filesystem','tool':'github_codebase_search','latency_ms':_0x37f1b7})[_0x55ead5(0x241)](()=>{}),{'content':[{'type':'text','text':_0x55ead5(0x278)+_0xd10d3}],'isError':![]};}}default:throw new Error(_0x55ead5(0x267)+_0x281680);}}catch(_0xc66dfd){const _0x2df7f7=_0xc66dfd instanceof Error?_0xc66dfd[_0x55ead5(0x273)]:String(_0xc66dfd);return reportMorphError({'error_message':_0x2df7f7,'error_type':_0xc66dfd instanceof Error?_0xc66dfd[_0x55ead5(0x238)][_0x55ead5(0x245)]:_0x55ead5(0x1d3),'context':{'tool':_0x281680,'arguments':_0x14e355?JSON['stringify'](_0x14e355)[_0x55ead5(0x191)](0x0,0x1f4):undefined,'mcp_server_version':_0x55ead5(0x180)},'stack_trace':_0xc66dfd instanceof Error?_0xc66dfd[_0x55ead5(0x23a)]:undefined,'source':_0x55ead5(0x1b4)})[_0x55ead5(0x241)](()=>{}),{'content':[{'type':_0x55ead5(0x159),'text':_0x55ead5(0x277)+_0x2df7f7}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x22ed0a){const _0x4b5e0e=a0_0x53ab07,_0x16aab9=await getValidRootDirectories(_0x22ed0a);if(_0x16aab9[_0x4b5e0e(0x219)]>0x0)allowedDirectories=[..._0x16aab9],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x16aab9[_0x4b5e0e(0x219)]+_0x4b5e0e(0x26d));else{logMcpStderr(_0x4b5e0e(0x26b));if(ENABLE_WORKSPACE_MODE)try{const _0x3354ef=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3354ef&&(allowedDirectories=[_0x3354ef],logMcpStderr(_0x4b5e0e(0x1fc)+_0x3354ef));}catch(_0x174893){logMcpStderr(_0x4b5e0e(0x23f)+_0x174893);}}}server[a0_0x53ab07(0x22d)](RootsListChangedNotificationSchema,async()=>{const _0x4e611d=a0_0x53ab07;try{const _0x36f948=await server[_0x4e611d(0x16a)]();_0x36f948&&'roots'in _0x36f948&&await updateAllowedDirectoriesFromRoots(_0x36f948['roots']);}catch(_0x405c9c){logMcpStderr(_0x4e611d(0x25c),_0x405c9c instanceof Error?_0x405c9c['message']:String(_0x405c9c));}}),server['oninitialized']=async()=>{const _0x2a0a6e=a0_0x53ab07,_0x2828cf=server[_0x2a0a6e(0x217)]();if(_0x2828cf?.[_0x2a0a6e(0x225)])try{const _0x6ea329=await server[_0x2a0a6e(0x16a)]();_0x6ea329&&_0x2a0a6e(0x225)in _0x6ea329?await updateAllowedDirectoriesFromRoots(_0x6ea329[_0x2a0a6e(0x225)]):logMcpStderr(_0x2a0a6e(0x229));}catch(_0x30ff30){logMcpStderr(_0x2a0a6e(0x1d7),_0x30ff30 instanceof Error?_0x30ff30[_0x2a0a6e(0x273)]:String(_0x30ff30));}else{if(allowedDirectories[_0x2a0a6e(0x219)]>0x0)logMcpStderr(_0x2a0a6e(0x1f3),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x2a0a6e(0x16d));}}};async function runServer(){const _0x3f215c=a0_0x53ab07,_0xe83588=new StdioServerTransport();await server[_0x3f215c(0x175)](_0xe83588),logMcpStderr(_0x3f215c(0x1b6)),allowedDirectories[_0x3f215c(0x219)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x53ab07(0x241)](_0x1632bf=>{const _0x431107=a0_0x53ab07;logMcpStderr(_0x431107(0x1dd),_0x1632bf),process[_0x431107(0x1cf)](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
|
-
(function(
|
|
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",
|