@morphllm/morphmcp 0.8.177 → 0.8.179

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/README.md CHANGED
@@ -17,7 +17,7 @@ All three tools are always exposed. Clients can manage tool visibility on their
17
17
  ### Claude Code
18
18
 
19
19
  ```bash
20
- claude mcp add morph-mcp -e MORPH_API_KEY=sk-xxx -- npx -y @morphllm/morphmcp
20
+ claude mcp add morph-mcp -e MORPH_API_KEY=sk-xxx -- npx --prefer-offline -y @morphllm/morphmcp
21
21
  ```
22
22
 
23
23
  ### Cursor
@@ -29,7 +29,7 @@ Add to `.cursor/mcp.json`:
29
29
  "mcpServers": {
30
30
  "morph-mcp": {
31
31
  "command": "npx",
32
- "args": ["-y", "@morphllm/morphmcp"],
32
+ "args": ["--prefer-offline", "-y", "@morphllm/morphmcp"],
33
33
  "env": {
34
34
  "MORPH_API_KEY": "sk-xxx"
35
35
  }
@@ -48,7 +48,7 @@ Add to `.vscode/mcp.json`:
48
48
  "servers": {
49
49
  "morph-mcp": {
50
50
  "command": "npx",
51
- "args": ["-y", "@morphllm/morphmcp"],
51
+ "args": ["--prefer-offline", "-y", "@morphllm/morphmcp"],
52
52
  "env": {
53
53
  "MORPH_API_KEY": "sk-xxx"
54
54
  }
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_0x41e81a=a0_0x5961;(function(_0x40a204,_0x1d7060){const _0x4dfa97=a0_0x5961,_0x32d422=_0x40a204();while(!![]){try{const _0x10339d=-parseInt(_0x4dfa97(0x201))/0x1*(parseInt(_0x4dfa97(0x274))/0x2)+-parseInt(_0x4dfa97(0x239))/0x3+-parseInt(_0x4dfa97(0x1d4))/0x4+parseInt(_0x4dfa97(0x260))/0x5*(parseInt(_0x4dfa97(0x28e))/0x6)+parseInt(_0x4dfa97(0x243))/0x7+parseInt(_0x4dfa97(0x22e))/0x8+parseInt(_0x4dfa97(0x207))/0x9;if(_0x10339d===_0x1d7060)break;else _0x32d422['push'](_0x32d422['shift']());}catch(_0xb9b765){_0x32d422['push'](_0x32d422['shift']());}}}(a0_0x2138,0x8f6a9));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';function a0_0x5961(_0x1c0afc,_0x2b7db5){_0x1c0afc=_0x1c0afc-0x1bd;const _0x213888=a0_0x2138();let _0x5961d7=_0x213888[_0x1c0afc];return _0x5961d7;}import a0_0x5f2eb7 from'fs/promises';import a0_0x5863e0 from'path';import a0_0x486d97 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_0x58f79b from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x5968d7){const _0x4c749a=a0_0x5961,_0x26930c=_0x5968d7['split'](a0_0x5863e0['sep'])['filter'](Boolean);if(_0x26930c[_0x4c749a(0x2e3)]<0x2)return null;for(let _0x3b02cf=Math['floor'](_0x26930c[_0x4c749a(0x2e3)]/0x2);_0x3b02cf>=0x1;_0x3b02cf--){for(let _0x1044ed=0x0;_0x1044ed<=_0x26930c[_0x4c749a(0x2e3)]-0x2*_0x3b02cf;_0x1044ed++){const _0x15078e=_0x26930c['slice'](_0x1044ed,_0x1044ed+_0x3b02cf),_0x1bd5d5=_0x26930c[_0x4c749a(0x2a7)](_0x1044ed+_0x3b02cf,_0x1044ed+0x2*_0x3b02cf);if(_0x15078e[_0x4c749a(0x2cb)]((_0x37f0d7,_0x3b7aa7)=>_0x37f0d7===_0x1bd5d5[_0x3b7aa7])){const _0x56c934=[..._0x26930c['slice'](0x0,_0x1044ed),..._0x26930c[_0x4c749a(0x2a7)](_0x1044ed+_0x3b02cf)];return a0_0x5863e0[_0x4c749a(0x234)]+_0x56c934[_0x4c749a(0x21a)](a0_0x5863e0[_0x4c749a(0x234)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x1487d4=a0_0x5961;try{const _0xd8baf2=require(_0x1487d4(0x27d));return _0xd8baf2[_0x1487d4(0x29c)]??'unknown';}catch(_0x368868){return logMcpStderr(_0x1487d4(0x20a),_0x368868),'unknown';}}function printHelp(){const _0x432445=a0_0x5961;console[_0x432445(0x264)](_0x432445(0x23e)+getPackageVersion()),console[_0x432445(0x264)](_0x432445(0x2a5)),console['log'](_0x432445(0x2c4)),console[_0x432445(0x264)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console['log'](_0x432445(0x2b2)),console[_0x432445(0x264)](_0x432445(0x2e7)),console[_0x432445(0x264)](_0x432445(0x269)),console['log'](_0x432445(0x248)),console['log'](_0x432445(0x1ce));}const cliArgs=process[a0_0x41e81a(0x2d5)][a0_0x41e81a(0x2a7)](0x2),VERSION_FLAGS=new Set([a0_0x41e81a(0x2b9),'-v','-V']),HELP_FLAGS=new Set([a0_0x41e81a(0x26d),'-h']);cliArgs[a0_0x41e81a(0x262)](_0x5d517b=>VERSION_FLAGS[a0_0x41e81a(0x1db)](_0x5d517b))&&(console['log'](a0_0x41e81a(0x23e)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x41e81a(0x262)](_0x351f6b=>HELP_FLAGS[a0_0x41e81a(0x1db)](_0x351f6b))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x263ede){const _0x42be35=a0_0x41e81a;for(let _0x3670b6=0x0;_0x3670b6<cliArgs[_0x42be35(0x2e3)];_0x3670b6++){const _0x53154f=cliArgs[_0x3670b6];if(_0x53154f['startsWith']('--'+_0x263ede+'='))return _0x53154f[_0x42be35(0x2a7)](('--'+_0x263ede+'=')['length']);if(_0x53154f==='--'+_0x263ede&&_0x3670b6+0x1<cliArgs['length'])return cliArgs[_0x3670b6+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x41e81a(0x1db)](arg)||HELP_FLAGS['has'](arg))continue;if(arg[a0_0x41e81a(0x211)](a0_0x41e81a(0x2be)))continue;if(arg===a0_0x41e81a(0x263)){i++;continue;}args[a0_0x41e81a(0x291)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x41e81a(0x22c)]||process[a0_0x41e81a(0x233)][a0_0x41e81a(0x25a)]||process[a0_0x41e81a(0x2d8)](),ENABLE_WORKSPACE_MODE=process[a0_0x41e81a(0x233)]['ENABLE_WORKSPACE_MODE']!==a0_0x41e81a(0x276),MORPH_API_KEY=getCliArg(a0_0x41e81a(0x2ea))??process[a0_0x41e81a(0x233)][a0_0x41e81a(0x2bb)],MORPH_API_URL=process[a0_0x41e81a(0x233)][a0_0x41e81a(0x25b)],MORPH_LARGE_APPLY=process['env'][a0_0x41e81a(0x29b)]!==a0_0x41e81a(0x276),MORPH_WARP_GREP_TIMEOUT=process[a0_0x41e81a(0x233)][a0_0x41e81a(0x1c1)]?parseInt(process[a0_0x41e81a(0x233)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x41e81a(0x233)][a0_0x41e81a(0x253)]?new Set(process[a0_0x41e81a(0x233)][a0_0x41e81a(0x253)][a0_0x41e81a(0x21e)](',')[a0_0x41e81a(0x1bf)](_0x110bba=>_0x110bba[a0_0x41e81a(0x22b)]())[a0_0x41e81a(0x241)](_0x1aa895=>_0x1aa895[a0_0x41e81a(0x2e3)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x41e81a(0x2ca)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x41e81a(0x2ef)](a0_0x41e81a(0x294)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES][a0_0x41e81a(0x21a)](',\x20'));}console[a0_0x41e81a(0x2ef)](a0_0x41e81a(0x215)+[...DISABLED_TOOLS][a0_0x41e81a(0x21a)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x41e81a(0x220))&&!MORPH_API_KEY[a0_0x41e81a(0x211)]('morph-')&&logMcpStderr(a0_0x41e81a(0x2a4));async function reportMorphError(_0x196a0b){const _0x8ac1e=a0_0x41e81a;try{await a0_0x58f79b['post'](_0x8ac1e(0x26b),{..._0x196a0b,'timestamp':new Date()[_0x8ac1e(0x225)](),'source':_0x196a0b[_0x8ac1e(0x2d4)]||_0x8ac1e(0x1f1),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x196a0b['context']}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x584a2a,_0x2754fb){const _0x1c45e1=a0_0x41e81a;if(_0x584a2a&&typeof _0x584a2a===_0x1c45e1(0x1c7)&&'status'in _0x584a2a)return _0x584a2a[_0x1c45e1(0x1fa)];if(_0x584a2a&&typeof _0x584a2a===_0x1c45e1(0x1c7)&&_0x1c45e1(0x25f)in _0x584a2a)return _0x584a2a[_0x1c45e1(0x25f)]?.['status'];const _0xead68d=_0x2754fb['match'](/\b(401|429)\b/);return _0xead68d?parseInt(_0xead68d[0x1],0xa):null;}function handleMorphAPIError(_0x380e0f){const _0x5fbb04=a0_0x41e81a,_0x52b7c9=_0x380e0f instanceof Error?_0x380e0f['message']:String(_0x380e0f),_0x4a84be=extractStatusCode(_0x380e0f,_0x52b7c9);switch(_0x4a84be){case 0x191:return{'content':[{'type':_0x5fbb04(0x278),'text':_0x5fbb04(0x232)}],'isError':!![]};case 0x1ad:return{'content':[{'type':'text','text':_0x5fbb04(0x1e2)}],'isError':!![]};default:return null;}}function a0_0x2138(){const _0x3a0864=['Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','toLowerCase','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','isDirectory','dirname','github_url','Parent\x20directory\x20does\x20not\x20exist:\x20','enum','ReadError','exit','Tool\x20\x22','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','indexOf','mcp-filesystem','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','composer.json','file_read_failed','Unknown\x20error','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','warp_grep_complete','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','api_request_start','status','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.','repo_path','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','terminationReason','\x22>\x0aError\x20reading\x20file:\x20','WarpGrepError','150047mfQlfW','tool_call_received','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','codebase_search','\x22>\x0a','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','2731932pxTePB','Cargo.toml','ToolException','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','number','search_string','morph-mcp','owner_repo','Failed\x20to\x20read\x20file:\x20','startsWith','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','.\x20Path:\x20','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Disabled\x20tools:\x20','\x20disabled\x20via\x20DISABLED_TOOLS','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','setRequestHandler','lines','join','params','Specific\x20commit\x20hash\x20to\x20search','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','split','Repository\x20identifier','sk-','File\x20read\x20error:','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','grep\x20\x27','basename','toISOString','GITHUB_CODEBASE_SEARCH','`\x20in\x20`','function','\x0a</file>','getClientCapabilities','trim','WORKSPACE_ROOT','list_directory\x20','7806792OyVujk','read','tool','edit_file','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.','env','sep','TimeoutError','Example\x20format:\x0a','WarpGrep\x20sub-tool\x20errors:\x20','-\x20Listed\x20directory\x20`','1032042ETMDjG','resolve','code','target_file','tsconfig.json','@morphllm/morphmcp\x20','Morph\x20FastApply\x20failed\x20without\x20error\x20message','isArray','filter','timings','3726184cTUmQf','target_filepath','pyproject.toml','tool_calls','constructor','\x20\x20morph-mcp','tool_call_id','\x20error(s)','safeParse','search_type','\x20is\x20not\x20a\x20directory','Tool\x20','file','LocalRipgrepProvider','linesAdded','warp_grep_start','DISABLED_TOOLS','compaction_failed','morph-v3-large','arguments','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','PWD','MORPH_API_URL','finish','substring','pattern','response','19235YXBhec','glob','some','--api-key','log','success','API\x20error\x20(auth/rate-limit)','instruction','morph-','\x0aExamples:','catch','https://morphllm.com/api/error-report','Created\x20File','--help','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','requiresApiKey','optional','-\x20Read\x20file\x20`',',\x20modified\x20','FileNotFound','14EGpZSc','\x20-\x20','false','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','text','normalize','Invalid\x20arguments:\x20','debug','linesModified','../package.json','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','now','data','role','PathError','name','file_path','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','filePath','errors','listRoots',',\x20removed\x20','Parameters:\x0a','stack','warn','588bTnSOG','GitHub\x20search\x20failed:\x20','match','push','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','morph-v3-fast','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','github_codebase_search','.\x20Changes:\x20','dryRun','❌\x20Morph\x20Edit\x20Failed:\x20','assistant','MORPH_LARGE_APPLY','version','\x20chars)','terminated','utf-8','BinaryFile','node_modules','provider_created','CODEBASE_SEARCH','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','\x20as\x20allowed\x20directory','slice','array','parse','MCP','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Fatal\x20error\x20running\x20server:','describe','roots','branch','payload','ENOENT','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','[github_codebase_search]\x20Done\x20in\x20','Applied','instructions','user','Error:\x20','command','--version','\x27\x20in\x20`','MORPH_API_KEY','SymlinkError','homedir','--api-key=','stringify','files','package.json','readFile','Max\x20results\x20to\x20return','\x0aOptions:','completed_with_file_errors','FileReadError','access','tool_call_error','setNotificationHandler','size','every','unknown','linesRemoved','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','metadata','go.mod','runWarpGrep_call','string','path_validation_resolved','source','argv','grep','messages','cwd','new_string','tool_call_complete','file_read_complete','added\x20','glob\x20\x27','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.','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','etimedout','Here\x20is\x20the\x20content\x20of\x20files:\x0a','edit','length','inputSchema','content','Failed\x20to\x20request\x20roots\x20from\x20client:','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','EDIT_FILE','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','api-key','Error\x20running\x20fast\x20context\x20search:\x20','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','**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','message','error','default','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.','stat','path','map','path_validation_failed','MORPH_WARP_GREP_TIMEOUT','<file\x20path=\x22','UnknownError','unknown\x20error','all','includes','object','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','list_directory','.git','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','Workspace\x20mode\x20enabled:\x20Using\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','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.','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','ms:','RipgrepNotAvailable','read\x20','827756UbrNbU','grep_search','code_edit','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','timeout','connect','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','has','morph-warp-grep-v2.1','oninitialized','ms.\x20Success:\x20','.vscode','[github_codebase_search]\x20Failed\x20in\x20','timed\x20out','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','github_search_start'];a0_0x2138=function(){return _0x3a0864;};return a0_0x2138();}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x41e81a(0x1c8)),logMcpStderr(a0_0x41e81a(0x1e4)),logMcpStderr(a0_0x41e81a(0x20b)),logMcpStderr(a0_0x41e81a(0x2ce)),logMcpStderr(a0_0x41e81a(0x1f6)),logMcpStderr(a0_0x41e81a(0x1cb)));function normalizePath(_0x512267){const _0x148085=a0_0x41e81a;return a0_0x5863e0[_0x148085(0x279)](_0x512267);}function expandHome(_0x3c621b){const _0x2bd137=a0_0x41e81a;if(_0x3c621b['startsWith']('~/')||_0x3c621b==='~')return a0_0x5863e0[_0x2bd137(0x21a)](a0_0x486d97[_0x2bd137(0x2bd)](),_0x3c621b[_0x2bd137(0x2a7)](0x1));return _0x3c621b;}let allowedDirectories=await Promise[a0_0x41e81a(0x1c5)](args[a0_0x41e81a(0x1bf)](async _0x350e94=>{const _0x47bad9=expandHome(_0x350e94),_0x1a6cb3=a0_0x5863e0['resolve'](_0x47bad9);try{const _0x2a50ac=await a0_0x5f2eb7['realpath'](_0x1a6cb3);return normalizePath(_0x2a50ac);}catch(_0x109a92){return normalizePath(_0x1a6cb3);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x41e81a(0x291)](workspaceDir),logMcpStderr(a0_0x41e81a(0x1cc)+workspaceDir+a0_0x41e81a(0x2a6)));}catch(a0_0xc19f20){logMcpStderr(a0_0x41e81a(0x27e)+a0_0xc19f20);}async function detectWorkspaceRoot(_0x7212cf){const _0x1040ec=a0_0x41e81a;let _0x465dc1=a0_0x5863e0[_0x1040ec(0x23a)](_0x7212cf);const _0x27b2f9=[_0x1040ec(0x1ca),_0x1040ec(0x1df),_0x1040ec(0x2c1),_0x1040ec(0x208),_0x1040ec(0x245),_0x1040ec(0x2d0),'.cursor',_0x1040ec(0x23d),_0x1040ec(0x1f3)];while(_0x465dc1!==a0_0x5863e0[_0x1040ec(0x1e8)](_0x465dc1)){for(const _0x350603 of _0x27b2f9){const _0xd8297c=a0_0x5863e0['join'](_0x465dc1,_0x350603);try{return await a0_0x5f2eb7[_0x1040ec(0x2c7)](_0xd8297c),normalizePath(_0x465dc1);}catch{}}_0x465dc1=a0_0x5863e0[_0x1040ec(0x1e8)](_0x465dc1);}return normalizePath(_0x7212cf);}await Promise[a0_0x41e81a(0x1c5)](args['map'](async _0x2b4c7d=>{const _0x1ebda5=a0_0x41e81a;try{const _0x54fa3c=await a0_0x5f2eb7[_0x1ebda5(0x1bd)](expandHome(_0x2b4c7d));!_0x54fa3c[_0x1ebda5(0x1e7)]()&&(logMcpStderr('Error:\x20'+_0x2b4c7d+_0x1ebda5(0x24d)),process['exit'](0x1));}catch(_0x1024c0){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x2b4c7d+':',_0x1024c0),process[_0x1ebda5(0x1ed)](0x1);}}));async function validatePath(_0x810312){const _0x42b7f1=a0_0x41e81a,_0x45121d=expandHome(_0x810312),_0xefbaa5=a0_0x5863e0[_0x42b7f1(0x23a)](_0x45121d);logger[_0x42b7f1(0x27b)]('MCP','path_validation_start',{'raw_path':_0x810312,'absolute':_0xefbaa5});try{const _0x505070=await a0_0x5f2eb7['realpath'](_0xefbaa5);return logger[_0x42b7f1(0x27b)]('MCP',_0x42b7f1(0x2d3),{'resolved':_0x505070,'symlink':_0x505070!==_0xefbaa5}),_0x505070;}catch(_0xd9f3eb){if(_0xd9f3eb[_0x42b7f1(0x23b)]==='ENOENT'){const _0x4bd1df=a0_0x5863e0['dirname'](_0xefbaa5);try{const _0x371d02=await a0_0x5f2eb7['realpath'](_0x4bd1df),_0x9d74f3=a0_0x5863e0[_0x42b7f1(0x21a)](_0x371d02,a0_0x5863e0[_0x42b7f1(0x224)](_0xefbaa5));return logger[_0x42b7f1(0x27b)]('MCP',_0x42b7f1(0x2d3),{'resolved':_0x9d74f3,'new_file':!![]}),_0x9d74f3;}catch{logger[_0x42b7f1(0x2ef)](_0x42b7f1(0x2aa),_0x42b7f1(0x1c0),{'raw_path':_0x810312,'error':_0x42b7f1(0x1ea)+_0x4bd1df});throw new Error(_0x42b7f1(0x1ea)+_0x4bd1df);}}logger['error']('MCP','path_validation_failed',{'raw_path':_0x810312,'error':_0xd9f3eb[_0x42b7f1(0x2ee)]});throw _0xd9f3eb;}}const MorphEditFileArgsSchema=z[a0_0x41e81a(0x1c7)]({'path':z[a0_0x41e81a(0x2d2)](),'code_edit':z[a0_0x41e81a(0x2d2)]()[a0_0x41e81a(0x2ad)](a0_0x41e81a(0x259)),'instruction':z['string']()[a0_0x41e81a(0x2ad)](a0_0x41e81a(0x285)),'dryRun':z['boolean']()[a0_0x41e81a(0x2f0)](![])['describe']('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x41e81a(0x2f1),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x41e81a(0x2d2)]()[a0_0x41e81a(0x2ad)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x41e81a(0x2ad)](a0_0x41e81a(0x203)),'search_type':z[a0_0x41e81a(0x1eb)]([a0_0x41e81a(0x2f0),'node_modules'])['optional']()['describe'](a0_0x41e81a(0x206))}),WarpGrepGitHubArgsSchema=z[a0_0x41e81a(0x1c7)]({'search_string':z['string']()[a0_0x41e81a(0x2ad)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x41e81a(0x2d2)]()[a0_0x41e81a(0x270)]()[a0_0x41e81a(0x2ad)](a0_0x41e81a(0x2de)),'owner_repo':z[a0_0x41e81a(0x2d2)]()[a0_0x41e81a(0x270)]()[a0_0x41e81a(0x2ad)](a0_0x41e81a(0x2e9)),'branch':z[a0_0x41e81a(0x2d2)]()[a0_0x41e81a(0x270)]()[a0_0x41e81a(0x2ad)](a0_0x41e81a(0x286))}),CodebaseSearchArgsSchema=z[a0_0x41e81a(0x1c7)]({'query':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x41e81a(0x2ad)](a0_0x41e81a(0x21f)),'branch':z[a0_0x41e81a(0x2d2)]()['optional']()[a0_0x41e81a(0x2ad)](a0_0x41e81a(0x222)),'commitHash':z[a0_0x41e81a(0x2d2)]()[a0_0x41e81a(0x270)]()[a0_0x41e81a(0x2ad)](a0_0x41e81a(0x21c)),'targetDirectories':z[a0_0x41e81a(0x2a8)](z[a0_0x41e81a(0x2d2)]())[a0_0x41e81a(0x2f0)]([])[a0_0x41e81a(0x2ad)](a0_0x41e81a(0x2ab)),'limit':z[a0_0x41e81a(0x20c)]()[a0_0x41e81a(0x270)]()[a0_0x41e81a(0x2f0)](0xa)[a0_0x41e81a(0x2ad)](a0_0x41e81a(0x2c3))}),server=new Server({'name':a0_0x41e81a(0x20e),'version':'0.2.0'},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x4dcca2=a0_0x41e81a,_0xa6becd=[{'name':TOOL_NAMES[_0x4dcca2(0x2e8)],'description':_0x4dcca2(0x2ed)+_0x4dcca2(0x28b)+_0x4dcca2(0x1fd)+_0x4dcca2(0x292)+_0x4dcca2(0x257)+_0x4dcca2(0x212)+_0x4dcca2(0x236)+_0x4dcca2(0x1da)+'Rules:\x0a'+'-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a'+'-\x20Preserve\x20exact\x20indentation\x0a'+_0x4dcca2(0x1d7)+_0x4dcca2(0x214),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES['CODEBASE_SEARCH'],'description':_0x4dcca2(0x2ec)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x4dcca2(0x2df)+_0x4dcca2(0x277)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x17268c=_0xa6becd[_0x4dcca2(0x241)](_0x25362a=>{const _0x3174b8=_0x4dcca2;if(DISABLED_TOOLS[_0x3174b8(0x1db)](_0x25362a[_0x3174b8(0x283)]))return console['error'](_0x3174b8(0x24e)+_0x25362a[_0x3174b8(0x283)]+_0x3174b8(0x216)),![];if(_0x3174b8(0x26f)in _0x25362a&&_0x25362a[_0x3174b8(0x26f)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x25362a[_0x3174b8(0x283)]+_0x3174b8(0x1e6)),![];return!![];});return{'tools':_0x17268c[_0x4dcca2(0x1bf)](_0x5ebdca=>({'name':_0x5ebdca['name'],'description':_0x5ebdca['description'],'inputSchema':_0x5ebdca[_0x4dcca2(0x2e4)]}))};}),server[a0_0x41e81a(0x218)](CallToolRequestSchema,async _0x1b7bc7=>{const _0x5a09d5=a0_0x41e81a,{name:_0x5f498c,arguments:_0x363cd2}=_0x1b7bc7[_0x5a09d5(0x21b)],_0x175270=Date[_0x5a09d5(0x27f)]();logger[_0x5a09d5(0x27b)](_0x5a09d5(0x2aa),_0x5a09d5(0x202),{'tool':_0x5f498c,'args':_0x5f498c===_0x5a09d5(0x231)?{'path':_0x363cd2?.[_0x5a09d5(0x1be)],'instruction':_0x363cd2?.[_0x5a09d5(0x267)]||_0x363cd2?.[_0x5a09d5(0x2b5)],'dryRun':_0x363cd2?.[_0x5a09d5(0x298)]}:_0x363cd2});try{if(!MORPH_API_KEY)return{'content':[{'type':'text','text':_0x5a09d5(0x1ef)}],'isError':!![]};if(!MORPH_API_KEY[_0x5a09d5(0x211)]('sk-')&&!MORPH_API_KEY[_0x5a09d5(0x211)](_0x5a09d5(0x268)))return{'content':[{'type':_0x5a09d5(0x278),'text':_0x5a09d5(0x1fb)}],'isError':!![]};if(DISABLED_TOOLS[_0x5a09d5(0x1db)](_0x5f498c))return{'content':[{'type':_0x5a09d5(0x278),'text':_0x5a09d5(0x1ee)+_0x5f498c+_0x5a09d5(0x1d0)}],'isError':![]};switch(_0x5f498c){case TOOL_NAMES[_0x5a09d5(0x2e8)]:{let _0x37571f=_0x363cd2;if(_0x37571f&&typeof _0x37571f===_0x5a09d5(0x1c7)){if(!('path'in _0x37571f)){const _0x262ec4=_0x37571f[_0x5a09d5(0x23c)]??_0x37571f[_0x5a09d5(0x287)]??_0x37571f[_0x5a09d5(0x244)]??_0x37571f[_0x5a09d5(0x284)]??_0x37571f[_0x5a09d5(0x24f)];if(_0x262ec4)_0x37571f={..._0x37571f,'path':_0x262ec4};}'instructions'in _0x37571f&&!(_0x5a09d5(0x267)in _0x37571f)&&(_0x37571f={..._0x37571f,'instruction':_0x37571f['instructions']});if(!('code_edit'in _0x37571f)){const _0x47dbf9=_0x37571f['code']??_0x37571f[_0x5a09d5(0x2d9)]??_0x37571f['content']??_0x37571f[_0x5a09d5(0x2e2)];if(_0x47dbf9)_0x37571f={..._0x37571f,'code_edit':_0x47dbf9};}}const _0x5a7668=MorphEditFileArgsSchema[_0x5a09d5(0x24b)](_0x37571f);if(!_0x5a7668[_0x5a09d5(0x265)])throw new Error(_0x5a09d5(0x1f8)+_0x5a7668[_0x5a09d5(0x2ef)]);const _0x2bf757=await validatePath(_0x5a7668[_0x5a09d5(0x280)][_0x5a09d5(0x1be)]);let _0x15caf3=null,_0x6d560a=!![],_0x209960=null;try{_0x15caf3=await a0_0x5f2eb7[_0x5a09d5(0x2c2)](_0x2bf757,_0x5a09d5(0x29f)),logger[_0x5a09d5(0x27b)](_0x5a09d5(0x2aa),_0x5a09d5(0x2db),{'path':_0x2bf757,'size_bytes':_0x15caf3['length']});}catch(_0x5af592){const _0x374cc5=_0x5af592[_0x5a09d5(0x23b)];_0x374cc5===_0x5a09d5(0x2b1)?(_0x6d560a=![],_0x15caf3='',logger[_0x5a09d5(0x27b)](_0x5a09d5(0x2aa),_0x5a09d5(0x2db),{'path':_0x2bf757,'exists':![]})):(_0x209960=_0x5a09d5(0x210)+(_0x374cc5||'unknown')+_0x5a09d5(0x275)+(_0x5af592 instanceof Error?_0x5af592[_0x5a09d5(0x2ee)]:String(_0x5af592)),logger[_0x5a09d5(0x2ef)](_0x5a09d5(0x2aa),_0x5a09d5(0x1f4),{'path':_0x2bf757,'error':_0x209960}),logMcpStderr('Warning:\x20'+_0x209960));}let _0x1d83ce;try{const _0x3bbea6=MORPH_API_KEY;if(!_0x3bbea6)throw new Error(_0x5a09d5(0x26e));const _0x5dfeb6=a0_0x5863e0[_0x5a09d5(0x1e8)](_0x2bf757),_0x1bad32=a0_0x5863e0[_0x5a09d5(0x224)](_0x2bf757);logger['debug'](_0x5a09d5(0x2aa),_0x5a09d5(0x1f9),{'model':_0x5a09d5(0x293),'path':_0x5a7668['data'][_0x5a09d5(0x1be)],'instruction_len':_0x5a7668[_0x5a09d5(0x280)][_0x5a09d5(0x267)][_0x5a09d5(0x2e3)],'code_edit_len':_0x5a7668[_0x5a09d5(0x280)][_0x5a09d5(0x1d6)][_0x5a09d5(0x2e3)],'original_code_len':_0x15caf3?.[_0x5a09d5(0x2e3)]??0x0,'dry_run':_0x5a7668[_0x5a09d5(0x280)][_0x5a09d5(0x298)]});const _0x562087=Date[_0x5a09d5(0x27f)](),_0x32c61a=await executeEditFile({'target_filepath':_0x1bad32,'code_edit':_0x5a7668[_0x5a09d5(0x280)][_0x5a09d5(0x1d6)],'instruction':_0x5a7668['data'][_0x5a09d5(0x267)]},{'morphApiKey':_0x3bbea6,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x5dfeb6,'autoWrite':!_0x5a7668[_0x5a09d5(0x280)][_0x5a09d5(0x298)],'generateUdiff':![],'debug':![]}),_0x5821ce=Date['now']()-_0x562087;_0x1d83ce=_0x32c61a['completionId'];if(!_0x32c61a['success'])throw new Error(_0x32c61a[_0x5a09d5(0x2ef)]||_0x5a09d5(0x23f));const _0x41518b=_0x32c61a['changes'],_0x59b11b=_0x5a09d5(0x2dc)+_0x41518b[_0x5a09d5(0x251)]+_0x5a09d5(0x28a)+_0x41518b[_0x5a09d5(0x2cd)]+_0x5a09d5(0x272)+_0x41518b[_0x5a09d5(0x27c)];logger[_0x5a09d5(0x27b)](_0x5a09d5(0x2aa),_0x5a09d5(0x2da),{'tool':_0x5a09d5(0x231),'success':!![],'latency_ms':Date['now']()-_0x175270,'edit_latency_ms':_0x5821ce,'changes':{'added':_0x41518b[_0x5a09d5(0x251)],'removed':_0x41518b[_0x5a09d5(0x2cd)],'modified':_0x41518b['linesModified']},'completion_id':_0x1d83ce});if(_0x5a7668[_0x5a09d5(0x280)][_0x5a09d5(0x298)])return{'content':[{'type':_0x5a09d5(0x278),'text':'Morph\x20Edit\x20Preview'+(_0x6d560a?'':'\x20(new\x20file)')+':\x20'+_0x5a7668[_0x5a09d5(0x280)]['instruction']+_0x5a09d5(0x297)+_0x59b11b+'.\x20Path:\x20'+_0x5a7668['data'][_0x5a09d5(0x1be)]+'.'}]};return{'content':[{'type':_0x5a09d5(0x278),'text':'Morph\x20Edit\x20'+(_0x6d560a?_0x5a09d5(0x2b4):_0x5a09d5(0x26c))+':\x20'+_0x5a7668['data'][_0x5a09d5(0x267)]+'.\x20Changes:\x20'+_0x59b11b+_0x5a09d5(0x213)+_0x5a7668[_0x5a09d5(0x280)][_0x5a09d5(0x1be)]+'.'}]};}catch(_0x1650c7){const _0x5db0dd=handleMorphAPIError(_0x1650c7);if(_0x5db0dd)return logger[_0x5a09d5(0x2ef)](_0x5a09d5(0x2aa),_0x5a09d5(0x2c8),{'tool':_0x5a09d5(0x231),'error':_0x5a09d5(0x266),'latency_ms':Date['now']()-_0x175270}),_0x5db0dd;const _0x484e12=_0x1650c7 instanceof Error?_0x1650c7[_0x5a09d5(0x2ee)]:String(_0x1650c7);return logger[_0x5a09d5(0x2ef)](_0x5a09d5(0x2aa),'tool_call_error',{'tool':_0x5a09d5(0x231),'error':_0x484e12,'path':_0x5a7668[_0x5a09d5(0x280)][_0x5a09d5(0x1be)],'validated_path':_0x2bf757,'latency_ms':Date['now']()-_0x175270,'stack':_0x1650c7 instanceof Error?_0x1650c7[_0x5a09d5(0x28c)]:undefined}),reportMorphError({'error_message':_0x484e12,'error_type':_0x1650c7 instanceof Error?_0x1650c7[_0x5a09d5(0x247)][_0x5a09d5(0x283)]:_0x5a09d5(0x1c3),'context':{'tool':'edit_file','completion_id':_0x1d83ce,'file_path':_0x5a7668[_0x5a09d5(0x280)][_0x5a09d5(0x1be)],'validated_path':_0x2bf757,'instruction':_0x5a7668[_0x5a09d5(0x280)][_0x5a09d5(0x267)],'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x5a09d5(0x293),'dry_run':_0x5a7668[_0x5a09d5(0x280)][_0x5a09d5(0x298)],'file_exists':_0x6d560a,'file_read_error':_0x209960,'file_readable':_0x15caf3!==null,'request_content':{'path':_0x5a7668[_0x5a09d5(0x280)][_0x5a09d5(0x1be)],'code_edit':_0x5a7668[_0x5a09d5(0x280)]['code_edit'],'instruction':_0x5a7668[_0x5a09d5(0x280)][_0x5a09d5(0x267)],'original_code':_0x15caf3!==null?_0x15caf3[_0x5a09d5(0x2e3)]>0xc350?_0x15caf3[_0x5a09d5(0x25d)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x15caf3[_0x5a09d5(0x2e3)]+_0x5a09d5(0x29d):_0x15caf3:'[could\x20not\x20read\x20file:\x20'+(_0x209960||_0x5a09d5(0x1c4))+']','original_code_length':_0x15caf3?.[_0x5a09d5(0x2e3)]??0x0,'model':MORPH_LARGE_APPLY?_0x5a09d5(0x255):_0x5a09d5(0x293),'dry_run':_0x5a7668[_0x5a09d5(0x280)][_0x5a09d5(0x298)]}},'stack_trace':_0x1650c7 instanceof Error?_0x1650c7[_0x5a09d5(0x28c)]:undefined,'source':_0x5a09d5(0x1f1)})[_0x5a09d5(0x26a)](()=>{}),{'content':[{'type':_0x5a09d5(0x278),'text':_0x5a09d5(0x299)+_0x484e12}],'isError':!![]};}}case TOOL_NAMES[_0x5a09d5(0x2a3)]:{const _0xb4eafb=WarpGrepArgsSchema[_0x5a09d5(0x24b)](_0x363cd2);if(!_0xb4eafb[_0x5a09d5(0x265)])return{'content':[{'type':_0x5a09d5(0x278),'text':_0x5a09d5(0x27a)+_0xb4eafb[_0x5a09d5(0x2ef)]}],'isError':!![]};const _0x3ca5e0=_0x3a3414=>{const _0x4dc684=_0x5a09d5,_0x4dbeb2=[];for(const _0x101b0e of _0x3a3414||[]){if(_0x101b0e['role']===_0x4dc684(0x29a)&&Array[_0x4dc684(0x240)](_0x101b0e[_0x4dc684(0x246)]))for(const _0x237071 of _0x101b0e['tool_calls']){try{const _0x3e44bc=_0x237071[_0x4dc684(0x228)]?.[_0x4dc684(0x283)],_0x549602=JSON[_0x4dc684(0x2a9)](_0x237071[_0x4dc684(0x228)]?.[_0x4dc684(0x256)]||'{}');if(_0x3e44bc===_0x4dc684(0x1d5))_0x4dbeb2[_0x4dc684(0x291)](_0x4dc684(0x223)+_0x549602[_0x4dc684(0x25e)]+'\x27\x20'+(_0x549602[_0x4dc684(0x1be)]||'.'));else{if(_0x3e44bc===_0x4dc684(0x22f))_0x4dbeb2[_0x4dc684(0x291)](_0x4dc684(0x1d3)+_0x549602['path']);else{if(_0x3e44bc===_0x4dc684(0x1c9))_0x4dbeb2[_0x4dc684(0x291)](_0x4dc684(0x22d)+(_0x549602['command']||'.'));else{if(_0x3e44bc===_0x4dc684(0x261))_0x4dbeb2['push'](_0x4dc684(0x2dd)+_0x549602['pattern']+'\x27\x20'+(_0x549602[_0x4dc684(0x1be)]||'.'));else _0x3e44bc==='finish'&&_0x4dbeb2[_0x4dc684(0x291)](_0x4dc684(0x25c));}}}}catch{}}}return _0x4dbeb2;},_0x2f5026=_0x4a2c4d=>{const _0x225eda=_0x5a09d5,_0xbb72c0=[];if(!_0x4a2c4d||!Array[_0x225eda(0x240)](_0x4a2c4d))return _0xbb72c0;const _0x37d39a=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x225eda(0x273),'tool':_0x225eda(0x22f)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x225eda(0x282),'tool':_0x225eda(0x22f)},{'pattern':/\[READ ERROR\]/,'error_type':_0x225eda(0x1ec),'tool':_0x225eda(0x22f)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':_0x225eda(0x22f)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x225eda(0x1d2),'tool':_0x225eda(0x2d6)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x225eda(0x2a0),'tool':_0x225eda(0x22f)},{'pattern':/\[SYMLINK\]/,'error_type':_0x225eda(0x2bc),'tool':_0x225eda(0x22f)},{'pattern':/not a text file/,'error_type':_0x225eda(0x2a0),'tool':_0x225eda(0x22f)},{'pattern':/symbolic link/,'error_type':_0x225eda(0x2bc),'tool':_0x225eda(0x22f)},{'pattern':/Error reading file:/,'error_type':_0x225eda(0x1ec),'tool':_0x225eda(0x22f)},{'pattern':/status="error"/,'error_type':_0x225eda(0x209),'tool':_0x225eda(0x2cc)}];let _0x62aa8c=0x0;for(const _0x5e11ca of _0x4a2c4d){_0x5e11ca['role']===_0x225eda(0x29a)&&Array[_0x225eda(0x240)](_0x5e11ca[_0x225eda(0x246)])&&_0x62aa8c++;const _0x483e6f=_0x5e11ca[_0x225eda(0x2e5)];if((_0x5e11ca[_0x225eda(0x281)]===_0x225eda(0x230)||_0x5e11ca[_0x225eda(0x281)]===_0x225eda(0x2b6))&&_0x483e6f&&typeof _0x483e6f==='string')for(const {pattern:_0x38f77b,error_type:_0x15ac2a,tool:_0x394bdf}of _0x37d39a){const _0x536073=_0x483e6f[_0x225eda(0x290)](new RegExp(_0x38f77b[_0x225eda(0x2d4)],'g'));if(_0x536073)for(const _0x365ecd of _0x536073){const _0xe0cb5e=_0x483e6f[_0x225eda(0x1f0)](_0x365ecd),_0x21236d=_0x483e6f[_0x225eda(0x25d)](_0xe0cb5e,Math['min'](_0xe0cb5e+0xc8,_0x483e6f[_0x225eda(0x2e3)]));_0xbb72c0[_0x225eda(0x291)]({'tool':_0x394bdf,'error_type':_0x15ac2a,'error_message':_0x21236d['split']('\x0a')[0x0],'turn':_0x62aa8c});}}}return _0xbb72c0;};try{const _0x2df413=a0_0x5863e0[_0x5a09d5(0x23a)](_0xb4eafb['data'][_0x5a09d5(0x1fc)]),_0x2b0b70=_0xb4eafb[_0x5a09d5(0x280)][_0x5a09d5(0x24c)],_0x5b4242=_0x2b0b70===_0x5a09d5(0x2a1)?{'allowNames':[_0x5a09d5(0x2a1)]}:undefined,_0x21f263=new LocalRipgrepProvider(_0x2df413,undefined,_0x5b4242);logger[_0x5a09d5(0x27b)](_0x5a09d5(0x2aa),_0x5a09d5(0x2a2),{'type':_0x5a09d5(0x250),'repo_root':_0x2df413,'search_type':_0x2b0b70||_0x5a09d5(0x2f0)}),logger[_0x5a09d5(0x27b)](_0x5a09d5(0x2aa),_0x5a09d5(0x252),{'query':_0xb4eafb['data'][_0x5a09d5(0x20d)],'repo_root':_0x2df413,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x1fdbbf=Date[_0x5a09d5(0x27f)](),_0x254569=await runWarpGrep({'searchTerm':_0xb4eafb[_0x5a09d5(0x280)][_0x5a09d5(0x20d)],'repoRoot':_0x2df413,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x21f263,'search_type':_0x2b0b70}),_0x434115=Date[_0x5a09d5(0x27f)]()-_0x1fdbbf,_0x3bcbc3=_0x254569[_0x5a09d5(0x25c)]?.['metadata']?.[_0x5a09d5(0x2c0)]?.[_0x5a09d5(0x2e3)]??0x0;logger['debug'](_0x5a09d5(0x2aa),_0x5a09d5(0x1f7),{'termination':_0x254569[_0x5a09d5(0x1fe)],'turns':_0x254569[_0x5a09d5(0x242)]?.['turns']??0x0,'files_found':_0x3bcbc3,'latency_ms':_0x434115});const _0x262a62=_0x2f5026(_0x254569[_0x5a09d5(0x2d7)]);_0x262a62[_0x5a09d5(0x2e3)]>0x0&&reportMorphError({'error_message':_0x5a09d5(0x237)+_0x262a62[_0x5a09d5(0x2e3)]+_0x5a09d5(0x24a),'error_type':'SubToolError','level':_0x5a09d5(0x28d),'tool':_0x5a09d5(0x204),'context':{'repo_path':_0xb4eafb[_0x5a09d5(0x280)][_0x5a09d5(0x1fc)],'query':_0xb4eafb['data'][_0x5a09d5(0x20d)],'model':'morph-warp-grep-v2.1','termination_reason':_0x254569[_0x5a09d5(0x1fe)],'sub_tool_errors':_0x262a62,'timings':_0x254569['timings'],'tool_calls':_0x3ca5e0(_0x254569[_0x5a09d5(0x2d7)]),'messages':_0x254569[_0x5a09d5(0x2d7)]?.[_0x5a09d5(0x1bf)](_0x29d2b0=>({'role':_0x29d2b0['role'],'content':_0x29d2b0[_0x5a09d5(0x2e5)],..._0x29d2b0[_0x5a09d5(0x246)]?{'tool_calls':_0x29d2b0['tool_calls']['length']}:{},..._0x29d2b0[_0x5a09d5(0x249)]?{'tool_call_id':_0x29d2b0[_0x5a09d5(0x249)]}:{}}))},'source':_0x5a09d5(0x1f1)})[_0x5a09d5(0x26a)](()=>{});let _0x30c57e='';if(_0x254569[_0x5a09d5(0x1fe)]==='completed'&&_0x254569[_0x5a09d5(0x25c)]?.[_0x5a09d5(0x2cf)]?.['files']){const _0x352a61=_0x254569[_0x5a09d5(0x25c)][_0x5a09d5(0x2cf)]['files'];if(_0x352a61[_0x5a09d5(0x2e3)]===0x0)return _0x30c57e=_0x254569[_0x5a09d5(0x25c)][_0x5a09d5(0x2b0)]||_0x5a09d5(0x258),{'content':[{'type':'text','text':_0x30c57e}]};const _0x161af3=[],_0x414a4a=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x17c906 of _0x254569[_0x5a09d5(0x2d7)]){if(_0x17c906[_0x5a09d5(0x281)]===_0x5a09d5(0x29a)&&Array[_0x5a09d5(0x240)](_0x17c906[_0x5a09d5(0x246)]))for(const _0xdf2c6c of _0x17c906[_0x5a09d5(0x246)]){try{const _0x32466a=_0xdf2c6c['function']?.[_0x5a09d5(0x283)],_0x25eb61=JSON['parse'](_0xdf2c6c[_0x5a09d5(0x228)]?.[_0x5a09d5(0x256)]||'{}');if(_0x32466a===_0x5a09d5(0x1d5))_0x414a4a[_0x5a09d5(0x291)]('-\x20Grepped\x20\x27'+_0x25eb61['pattern']+_0x5a09d5(0x2ba)+(_0x25eb61[_0x5a09d5(0x1be)]||'.')+'`');else{if(_0x32466a===_0x5a09d5(0x22f))_0x414a4a['push'](_0x5a09d5(0x271)+_0x25eb61[_0x5a09d5(0x1be)]+'`');else{if(_0x32466a===_0x5a09d5(0x1c9))_0x414a4a[_0x5a09d5(0x291)](_0x5a09d5(0x238)+(_0x25eb61[_0x5a09d5(0x2b8)]||'.')+'`');else _0x32466a===_0x5a09d5(0x261)&&_0x414a4a['push']('-\x20Glob\x20search\x20`'+_0x25eb61[_0x5a09d5(0x25e)]+_0x5a09d5(0x227)+(_0x25eb61[_0x5a09d5(0x1be)]||'.')+'`');}}}catch{}}}_0x161af3[_0x5a09d5(0x291)](_0x414a4a[_0x5a09d5(0x21a)]('\x0a'));const _0x21d6c9=['','Relevant\x20context\x20found:'];for(const _0xbc11b6 of _0x352a61){if(_0xbc11b6[_0x5a09d5(0x219)]==='*')_0x21d6c9['push']('-\x20'+_0xbc11b6[_0x5a09d5(0x1be)]+':*');else{if(Array[_0x5a09d5(0x240)](_0xbc11b6[_0x5a09d5(0x219)])){const _0xb5d3ba=_0xbc11b6[_0x5a09d5(0x219)][_0x5a09d5(0x1bf)](([_0x29e1a9,_0x3a8063])=>{if(_0x29e1a9===_0x3a8063)return''+_0x29e1a9;return _0x29e1a9+'-'+_0x3a8063;});_0x21d6c9[_0x5a09d5(0x291)]('-\x20'+_0xbc11b6[_0x5a09d5(0x1be)]+':'+_0xb5d3ba['join'](','));}else _0x21d6c9[_0x5a09d5(0x291)]('-\x20'+_0xbc11b6[_0x5a09d5(0x1be)]+':*');}}_0x21d6c9[_0x5a09d5(0x291)](''),_0x161af3['push'](_0x21d6c9[_0x5a09d5(0x21a)]('\x0a')),_0x161af3[_0x5a09d5(0x291)](_0x5a09d5(0x2e1));const _0x5aadb7=[],_0x27a31e=[];for(const _0x2eb5c4 of _0x352a61){let _0x2bd801=a0_0x5863e0[_0x5a09d5(0x23a)](_0xb4eafb['data'][_0x5a09d5(0x1fc)],_0x2eb5c4[_0x5a09d5(0x1be)]),_0x30bb64=null,_0x282ba2=null;try{_0x30bb64=await a0_0x5f2eb7['readFile'](_0x2bd801,{'encoding':_0x5a09d5(0x29f)});}catch(_0x3e7a7e){const _0x2462f4=fixPathRepetition(_0x2bd801);if(_0x2462f4)try{_0x30bb64=await a0_0x5f2eb7['readFile'](_0x2462f4,{'encoding':'utf-8'}),_0x2bd801=_0x2462f4;}catch{_0x282ba2=_0x3e7a7e instanceof Error?_0x3e7a7e:new Error(String(_0x3e7a7e));}else _0x282ba2=_0x3e7a7e instanceof Error?_0x3e7a7e:new Error(String(_0x3e7a7e));}if(_0x30bb64!==null){const _0x52af40=_0x30bb64['split'](/\r?\n/),_0x57a0db=[];if(_0x2eb5c4[_0x5a09d5(0x219)]==='*'||!Array[_0x5a09d5(0x240)](_0x2eb5c4[_0x5a09d5(0x219)]))for(let _0xb8136a=0x1;_0xb8136a<=_0x52af40['length'];_0xb8136a++){const _0x1d4429=_0x52af40[_0xb8136a-0x1];_0x57a0db[_0x5a09d5(0x291)](_0xb8136a+'|\x20'+_0x1d4429);}else for(const [_0x3c849e,_0x5f127b]of _0x2eb5c4['lines']){_0x57a0db['length']>0x0&&_0x57a0db[_0x5a09d5(0x291)]('');for(let _0x165675=_0x3c849e;_0x165675<=_0x5f127b&&_0x165675<=_0x52af40['length'];_0x165675++){const _0x21e060=_0x52af40[_0x165675-0x1];_0x57a0db[_0x5a09d5(0x291)](_0x165675+'|\x20'+_0x21e060);}}_0x27a31e[_0x5a09d5(0x291)]({'path':_0x2eb5c4[_0x5a09d5(0x1be)],'content':_0x57a0db[_0x5a09d5(0x21a)]('\x0a')});}else _0x5aadb7[_0x5a09d5(0x291)]('<file\x20path=\x22'+_0x2eb5c4['path']+_0x5a09d5(0x1ff)+(_0x282ba2?.[_0x5a09d5(0x2ee)]||_0x5a09d5(0x1f5))+'\x0a</file>');}try{const _0x538b63=await compactFileContexts(_0x27a31e,_0xb4eafb[_0x5a09d5(0x280)]['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x5e1a10 of _0x538b63){_0x5aadb7[_0x5a09d5(0x291)](_0x5a09d5(0x1c2)+_0x5e1a10[_0x5a09d5(0x1be)]+'\x22>\x0a'+_0x5e1a10['content']+'\x0a</file>');}}catch(_0x5253d3){logger[_0x5a09d5(0x28d)]('MCP',_0x5a09d5(0x254),{'error':_0x5253d3 instanceof Error?_0x5253d3[_0x5a09d5(0x2ee)]:String(_0x5253d3),'files_count':_0x27a31e[_0x5a09d5(0x2e3)]});for(const _0x3ab485 of _0x27a31e){_0x5aadb7['push'](_0x5a09d5(0x1c2)+_0x3ab485[_0x5a09d5(0x1be)]+_0x5a09d5(0x205)+_0x3ab485[_0x5a09d5(0x2e5)]+_0x5a09d5(0x229));}}_0x161af3[_0x5a09d5(0x291)](_0x5aadb7[_0x5a09d5(0x21a)]('\x0a\x0a')),_0x30c57e=_0x161af3['join']('\x0a');const _0x47cf7b=_0x254569['errors']?.[_0x5a09d5(0x241)](_0x484add=>_0x484add['message']?.[_0x5a09d5(0x211)](_0x5a09d5(0x221)))||[];if(_0x47cf7b['length']>0x0){const _0x116889=_0x47cf7b[_0x5a09d5(0x1bf)](_0x21004d=>_0x21004d[_0x5a09d5(0x2ee)])[_0x5a09d5(0x21a)](';\x20');reportMorphError({'error_message':_0x116889,'error_type':_0x5a09d5(0x2c6),'context':{'tool':_0x5a09d5(0x204),'repo_path':_0xb4eafb[_0x5a09d5(0x280)][_0x5a09d5(0x1fc)],'query':_0xb4eafb[_0x5a09d5(0x280)][_0x5a09d5(0x20d)],'model':_0x5a09d5(0x1dc),'termination_reason':_0x5a09d5(0x2c5),'error_count':_0x47cf7b[_0x5a09d5(0x2e3)],'is_timeout':![],'timings':_0x254569['timings'],'files_attempted':_0x352a61['map'](_0x41735f=>({'path':_0x41735f[_0x5a09d5(0x1be)],'lines':_0x41735f[_0x5a09d5(0x219)]})),'tool_calls':_0x3ca5e0(_0x254569[_0x5a09d5(0x2d7)]),'messages':_0x254569[_0x5a09d5(0x2d7)]?.[_0x5a09d5(0x1bf)](_0x4ee140=>({'role':_0x4ee140[_0x5a09d5(0x281)],'content':_0x4ee140[_0x5a09d5(0x2e5)],..._0x4ee140[_0x5a09d5(0x246)]?{'tool_calls':_0x4ee140[_0x5a09d5(0x246)]['length']}:{},..._0x4ee140[_0x5a09d5(0x249)]?{'tool_call_id':_0x4ee140[_0x5a09d5(0x249)]}:{}})),'request_content':{'query':_0xb4eafb[_0x5a09d5(0x280)][_0x5a09d5(0x20d)],'repo_path':_0xb4eafb['data']['repo_path'],'repoRoot':a0_0x5863e0[_0x5a09d5(0x23a)](_0xb4eafb[_0x5a09d5(0x280)][_0x5a09d5(0x1fc)]),'model':'morph-warp-grep-v2.1'}},'source':_0x5a09d5(0x1f1)})[_0x5a09d5(0x26a)](()=>{});}}else{if(_0x254569[_0x5a09d5(0x1fe)]===_0x5a09d5(0x29e)&&_0x254569[_0x5a09d5(0x288)]['length']>0x0){const _0x437274=_0x254569[_0x5a09d5(0x288)]['map'](_0x4d9ecd=>_0x4d9ecd[_0x5a09d5(0x2ee)])[_0x5a09d5(0x21a)](';\x20');_0x30c57e=_0x5a09d5(0x2b7)+_0x437274;const _0x4bdf0a=_0x437274[_0x5a09d5(0x1e5)]()[_0x5a09d5(0x1c6)](_0x5a09d5(0x1d8))||_0x437274['toLowerCase']()['includes'](_0x5a09d5(0x1e1))||_0x437274['toLowerCase']()[_0x5a09d5(0x1c6)]('etimedout'),_0xa7aa=_0x254569[_0x5a09d5(0x25c)]?.[_0x5a09d5(0x2cf)]?.[_0x5a09d5(0x2c0)],_0x55b5b6=_0x254569[_0x5a09d5(0x288)][0x0];reportMorphError({'error_message':_0x437274,'error_type':_0x4bdf0a?_0x5a09d5(0x235):_0x55b5b6?.['constructor']?.['name']||_0x5a09d5(0x200),'context':{'tool':_0x5a09d5(0x204),'repo_path':_0xb4eafb[_0x5a09d5(0x280)]['repo_path'],'query':_0xb4eafb[_0x5a09d5(0x280)][_0x5a09d5(0x20d)],'model':_0x5a09d5(0x1dc),'termination_reason':_0x254569[_0x5a09d5(0x1fe)],'error_count':_0x254569[_0x5a09d5(0x288)][_0x5a09d5(0x2e3)],'is_timeout':_0x4bdf0a,'timings':_0x254569[_0x5a09d5(0x242)],'files_attempted':_0xa7aa?.[_0x5a09d5(0x1bf)](_0x4c51a3=>({'path':_0x4c51a3[_0x5a09d5(0x1be)],'lines':_0x4c51a3[_0x5a09d5(0x219)]})),'tool_calls':_0x3ca5e0(_0x254569[_0x5a09d5(0x2d7)]),'messages':_0x254569[_0x5a09d5(0x2d7)]?.[_0x5a09d5(0x1bf)](_0x1c96b9=>({'role':_0x1c96b9[_0x5a09d5(0x281)],'content':_0x1c96b9[_0x5a09d5(0x2e5)],..._0x1c96b9[_0x5a09d5(0x246)]?{'tool_calls':_0x1c96b9[_0x5a09d5(0x246)][_0x5a09d5(0x2e3)]}:{},..._0x1c96b9['tool_call_id']?{'tool_call_id':_0x1c96b9[_0x5a09d5(0x249)]}:{}})),'request_content':{'query':_0xb4eafb[_0x5a09d5(0x280)][_0x5a09d5(0x20d)],'repo_path':_0xb4eafb[_0x5a09d5(0x280)][_0x5a09d5(0x1fc)],'repoRoot':a0_0x5863e0['resolve'](_0xb4eafb[_0x5a09d5(0x280)][_0x5a09d5(0x1fc)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x55b5b6?.[_0x5a09d5(0x28c)]||undefined,'source':_0x5a09d5(0x1f1)})[_0x5a09d5(0x26a)](()=>{});}else _0x30c57e=_0x5a09d5(0x217);}return{'content':[{'type':_0x5a09d5(0x278),'text':_0x30c57e}]};}catch(_0x16f623){const _0x171979=handleMorphAPIError(_0x16f623);if(_0x171979)return logger['error'](_0x5a09d5(0x2aa),_0x5a09d5(0x2c8),{'tool':_0x5a09d5(0x204),'error':_0x5a09d5(0x266),'latency_ms':Date[_0x5a09d5(0x27f)]()-_0x175270}),_0x171979;const _0xd8bc5f=_0x16f623 instanceof Error?_0x16f623[_0x5a09d5(0x2ee)]:String(_0x16f623);logger[_0x5a09d5(0x2ef)](_0x5a09d5(0x2aa),_0x5a09d5(0x2c8),{'tool':_0x5a09d5(0x204),'error':_0xd8bc5f,'repo_path':_0xb4eafb[_0x5a09d5(0x280)]['repo_path'],'query':_0xb4eafb[_0x5a09d5(0x280)][_0x5a09d5(0x20d)],'latency_ms':Date['now']()-_0x175270});const _0x70a54e=_0xd8bc5f['toLowerCase']()[_0x5a09d5(0x1c6)](_0x5a09d5(0x1d8))||_0xd8bc5f[_0x5a09d5(0x1e5)]()[_0x5a09d5(0x1c6)](_0x5a09d5(0x1e1))||_0xd8bc5f[_0x5a09d5(0x1e5)]()['includes'](_0x5a09d5(0x2e0))||_0x16f623 instanceof Error&&_0x16f623['name']===_0x5a09d5(0x235);return reportMorphError({'error_message':_0xd8bc5f,'error_type':_0x70a54e?_0x5a09d5(0x235):_0x16f623 instanceof Error?_0x16f623['constructor'][_0x5a09d5(0x283)]:_0x5a09d5(0x1c3),'context':{'tool':_0x5a09d5(0x204),'repo_path':_0xb4eafb[_0x5a09d5(0x280)][_0x5a09d5(0x1fc)],'query':_0xb4eafb[_0x5a09d5(0x280)]['search_string'],'model':'morph-warp-grep-v2.1','is_timeout':_0x70a54e,'exception_phase':_0x5a09d5(0x2d1),'request_content':{'query':_0xb4eafb[_0x5a09d5(0x280)][_0x5a09d5(0x20d)],'repo_path':_0xb4eafb[_0x5a09d5(0x280)][_0x5a09d5(0x1fc)],'repoRoot':a0_0x5863e0[_0x5a09d5(0x23a)](_0xb4eafb[_0x5a09d5(0x280)][_0x5a09d5(0x1fc)]),'model':_0x5a09d5(0x1dc)}},'stack_trace':_0x16f623 instanceof Error?_0x16f623[_0x5a09d5(0x28c)]:undefined,'source':_0x5a09d5(0x1f1)})[_0x5a09d5(0x26a)](()=>{}),{'content':[{'type':_0x5a09d5(0x278),'text':_0x5a09d5(0x2eb)+_0xd8bc5f}],'isError':![]};}}case TOOL_NAMES[_0x5a09d5(0x226)]:{const _0x5852f0=WarpGrepGitHubArgsSchema[_0x5a09d5(0x24b)](_0x363cd2);if(!_0x5852f0[_0x5a09d5(0x265)])return{'content':[{'type':_0x5a09d5(0x278),'text':_0x5a09d5(0x27a)+_0x5852f0[_0x5a09d5(0x2ef)]}],'isError':!![]};const _0x30aab2=_0x5852f0[_0x5a09d5(0x280)][_0x5a09d5(0x1e9)]||_0x5852f0[_0x5a09d5(0x280)][_0x5a09d5(0x20f)];if(!_0x30aab2)return{'content':[{'type':'text','text':_0x5a09d5(0x21d)}],'isError':!![]};const _0x2c45a3=MORPH_API_KEY;if(!_0x2c45a3)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x29af95=Date[_0x5a09d5(0x27f)]();logger[_0x5a09d5(0x27b)]('MCP',_0x5a09d5(0x1e3),{'identifier':_0x30aab2,'query':_0x5852f0[_0x5a09d5(0x280)]['search_string'],'branch':_0x5852f0[_0x5a09d5(0x280)][_0x5a09d5(0x2af)]});try{const _0x47d8ac=new WarpGrepClient({'morphApiKey':_0x2c45a3,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x504d98=await _0x47d8ac['searchGitHub']({'searchTerm':_0x5852f0[_0x5a09d5(0x280)][_0x5a09d5(0x20d)],'github':_0x30aab2,'branch':_0x5852f0[_0x5a09d5(0x280)]['branch']}),_0x1f4abe=Date[_0x5a09d5(0x27f)]()-_0x29af95;logMcpStderr(_0x5a09d5(0x2b3)+_0x1f4abe+_0x5a09d5(0x1de)+_0x504d98[_0x5a09d5(0x265)]);const _0x488ff4=formatResult(_0x504d98);return{'content':[{'type':_0x5a09d5(0x278),'text':_0x488ff4}]};}catch(_0x27d32b){const _0x552beb=handleMorphAPIError(_0x27d32b);if(_0x552beb)return _0x552beb;const _0x182f51=Date[_0x5a09d5(0x27f)]()-_0x29af95,_0x123b2a=_0x27d32b instanceof Error?_0x27d32b[_0x5a09d5(0x2ee)]:String(_0x27d32b);return logMcpStderr(_0x5a09d5(0x1e0)+_0x182f51+_0x5a09d5(0x1d1),_0x123b2a),reportMorphError({'error_message':_0x123b2a,'error_type':_0x27d32b instanceof Error?_0x27d32b[_0x5a09d5(0x247)][_0x5a09d5(0x283)]:_0x5a09d5(0x1c3),'context':{'tool':'github_codebase_search','github_url':_0x30aab2,'search_string':_0x5852f0[_0x5a09d5(0x280)]['search_string'],'branch':_0x5852f0[_0x5a09d5(0x280)]['branch']},'stack_trace':_0x27d32b instanceof Error?_0x27d32b[_0x5a09d5(0x28c)]:undefined,'source':_0x5a09d5(0x1f1),'tool':_0x5a09d5(0x296),'latency_ms':_0x182f51})[_0x5a09d5(0x26a)](()=>{}),{'content':[{'type':'text','text':_0x5a09d5(0x28f)+_0x123b2a}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x5f498c);}}catch(_0x2cebef){const _0x4382fe=_0x2cebef instanceof Error?_0x2cebef[_0x5a09d5(0x2ee)]:String(_0x2cebef);return reportMorphError({'error_message':_0x4382fe,'error_type':_0x2cebef instanceof Error?_0x2cebef[_0x5a09d5(0x247)][_0x5a09d5(0x283)]:_0x5a09d5(0x1c3),'context':{'tool':_0x5f498c,'arguments':_0x363cd2?JSON[_0x5a09d5(0x2bf)](_0x363cd2)[_0x5a09d5(0x25d)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x2cebef instanceof Error?_0x2cebef[_0x5a09d5(0x28c)]:undefined,'source':_0x5a09d5(0x1f1)})[_0x5a09d5(0x26a)](()=>{}),{'content':[{'type':_0x5a09d5(0x278),'text':_0x5a09d5(0x2b7)+_0x4382fe}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x3f0cea){const _0x90adeb=a0_0x41e81a,_0x417ddc=await getValidRootDirectories(_0x3f0cea);if(_0x417ddc['length']>0x0)allowedDirectories=[..._0x417ddc],logMcpStderr(_0x90adeb(0x1f2)+_0x417ddc[_0x90adeb(0x2e3)]+'\x20valid\x20directories');else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x3858ba=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3858ba&&(allowedDirectories=[_0x3858ba],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x3858ba));}catch(_0x59da5d){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x59da5d);}}}server[a0_0x41e81a(0x2c9)](RootsListChangedNotificationSchema,async()=>{const _0x3b33e5=a0_0x41e81a;try{const _0x497614=await server[_0x3b33e5(0x289)]();_0x497614&&_0x3b33e5(0x2ae)in _0x497614&&await updateAllowedDirectoriesFromRoots(_0x497614['roots']);}catch(_0x17fead){logMcpStderr(_0x3b33e5(0x2e6),_0x17fead instanceof Error?_0x17fead[_0x3b33e5(0x2ee)]:String(_0x17fead));}}),server[a0_0x41e81a(0x1dd)]=async()=>{const _0x154f30=a0_0x41e81a,_0x5f06d7=server[_0x154f30(0x22a)]();if(_0x5f06d7?.[_0x154f30(0x2ae)])try{const _0x3b5790=await server[_0x154f30(0x289)]();_0x3b5790&&'roots'in _0x3b5790?await updateAllowedDirectoriesFromRoots(_0x3b5790[_0x154f30(0x2ae)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x2869b2){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x2869b2 instanceof Error?_0x2869b2['message']:String(_0x2869b2));}else{if(allowedDirectories[_0x154f30(0x2e3)]>0x0)logMcpStderr(_0x154f30(0x295),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x154f30(0x1cd));else throw new Error(_0x154f30(0x1cf));}}};async function runServer(){const _0x23ad5a=a0_0x41e81a,_0x61670a=new StdioServerTransport();await server[_0x23ad5a(0x1d9)](_0x61670a),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories['length']===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x41e81a(0x26a)](_0x2863d5=>{const _0x1074cd=a0_0x41e81a;logMcpStderr(_0x1074cd(0x2ac),_0x2863d5),process[_0x1074cd(0x1ed)](0x1);});
package/dist/log-utils.js CHANGED
@@ -1 +1 @@
1
- var a1_0x3e069f=a1_0x56b3;(function(_0x167465,_0x4727d7){var _0xea1e44=a1_0x56b3,_0x3b28f9=_0x167465();while(!![]){try{var _0x5ee80b=-parseInt(_0xea1e44(0x1ef))/0x1*(-parseInt(_0xea1e44(0x1ea))/0x2)+-parseInt(_0xea1e44(0x1e1))/0x3*(parseInt(_0xea1e44(0x1ec))/0x4)+parseInt(_0xea1e44(0x1e0))/0x5*(parseInt(_0xea1e44(0x1dd))/0x6)+parseInt(_0xea1e44(0x1e3))/0x7+-parseInt(_0xea1e44(0x1eb))/0x8+parseInt(_0xea1e44(0x1dc))/0x9+-parseInt(_0xea1e44(0x1e6))/0xa;if(_0x5ee80b===_0x4727d7)break;else _0x3b28f9['push'](_0x3b28f9['shift']());}catch(_0x5eedae){_0x3b28f9['push'](_0x3b28f9['shift']());}}}(a1_0x218c,0xa553b));import a1_0x196272 from'os';import{logger}from'./logger.js';export function getOperatingSystemType(_0xcca5ef=a1_0x196272[a1_0x3e069f(0x1e8)]()){var _0x332883=a1_0x3e069f;switch(_0xcca5ef){case'darwin':return _0x332883(0x1ed);case _0x332883(0x1e2):return _0x332883(0x1e7);case _0x332883(0x1e9):return _0x332883(0x1df);default:return _0x332883(0x1db);}}function a1_0x218c(){var _0x36e369=['49194gALEJY','win32','2782332XSYEHW','map','error','4682400GVvcVH','Windows','platform','linux','286VjDVrk','6254928UygFzq','304uzlcZb','macOS','[os=','5279QYXjKF','Unknown','10718451uevCMi','6pLsTaZ','info','Linux','4151105vwBxvG'];a1_0x218c=function(){return _0x36e369;};return a1_0x218c();}function a1_0x56b3(_0x593111,_0xcf2fac){_0x593111=_0x593111-0x1db;var _0x218c56=a1_0x218c();var _0x56b337=_0x218c56[_0x593111];return _0x56b337;}export function formatMcpLogMessage(_0xcb0941,_0x1e9873=a1_0x196272[a1_0x3e069f(0x1e8)]()){var _0x334719=a1_0x3e069f;return _0x334719(0x1ee)+getOperatingSystemType(_0x1e9873)+']\x20'+_0xcb0941;}export function logMcpStderr(_0xebd1f5,..._0x4e49f2){var _0x346571=a1_0x3e069f;console[_0x346571(0x1e5)](formatMcpLogMessage(_0xebd1f5),..._0x4e49f2),logger[_0x346571(0x1de)]('MCP',_0xebd1f5,_0x4e49f2['length']?{'args':_0x4e49f2[_0x346571(0x1e4)](_0x2852be=>String(_0x2852be))}:undefined);}
1
+ var a1_0x74b0a6=a1_0x5667;(function(_0x40aa79,_0x578712){var _0x6f572e=a1_0x5667,_0x528263=_0x40aa79();while(!![]){try{var _0x59299c=parseInt(_0x6f572e(0x7d))/0x1*(parseInt(_0x6f572e(0x8d))/0x2)+parseInt(_0x6f572e(0x8a))/0x3*(-parseInt(_0x6f572e(0x7c))/0x4)+parseInt(_0x6f572e(0x84))/0x5+parseInt(_0x6f572e(0x8c))/0x6+-parseInt(_0x6f572e(0x82))/0x7*(parseInt(_0x6f572e(0x85))/0x8)+parseInt(_0x6f572e(0x8e))/0x9*(-parseInt(_0x6f572e(0x8f))/0xa)+parseInt(_0x6f572e(0x81))/0xb;if(_0x59299c===_0x578712)break;else _0x528263['push'](_0x528263['shift']());}catch(_0xa9a174){_0x528263['push'](_0x528263['shift']());}}}(a1_0x2282,0x4146c));import a1_0x451efe from'os';function a1_0x2282(){var _0x2c0055=['[os=','33WNWQTM','macOS','1874556dxZUvT','2XAxzPN','153LnnUbH','202760xHjDAP','Unknown','77712eTZNuy','174343WUHSOi','platform','Linux','error','6170373axtGBi','7TcorkM','length','656560WvdYRW','2826016zBiMAr','win32','MCP','Windows'];a1_0x2282=function(){return _0x2c0055;};return a1_0x2282();}import{logger}from'./logger.js';function a1_0x5667(_0x3a512e,_0x325664){_0x3a512e=_0x3a512e-0x7b;var _0x228267=a1_0x2282();var _0x56671d=_0x228267[_0x3a512e];return _0x56671d;}export function getOperatingSystemType(_0x4a46fc=a1_0x451efe[a1_0x74b0a6(0x7e)]()){var _0x22d476=a1_0x74b0a6;switch(_0x4a46fc){case'darwin':return _0x22d476(0x8b);case _0x22d476(0x86):return _0x22d476(0x88);case'linux':return _0x22d476(0x7f);default:return _0x22d476(0x7b);}}export function formatMcpLogMessage(_0x3c9fbd,_0x59b57c=a1_0x451efe[a1_0x74b0a6(0x7e)]()){var _0x18f793=a1_0x74b0a6;return _0x18f793(0x89)+getOperatingSystemType(_0x59b57c)+']\x20'+_0x3c9fbd;}export function logMcpStderr(_0x5d9771,..._0x3e92cb){var _0xa3d4e7=a1_0x74b0a6;console[_0xa3d4e7(0x80)](formatMcpLogMessage(_0x5d9771),..._0x3e92cb),logger['info'](_0xa3d4e7(0x87),_0x5d9771,_0x3e92cb[_0xa3d4e7(0x83)]?{'args':_0x3e92cb['map'](_0x3da96b=>String(_0x3da96b))}:undefined);}
package/dist/logger.js CHANGED
@@ -1 +1 @@
1
- function a2_0x3ffd(){const _0x505520=['info','enable','MORPH_LOG_FILE','3950JsqEdd','6482JINgWO',']\x20[','19114WfDctc','warn','_log','8momkCb','env','2653992QGqPTB','error','debug','enabled','17200584HqOGFc','fileStream','stringify','187tjvUth','7949415YZNavw','6666wJtKlw','12438wcjeho','2291385dNArju'];a2_0x3ffd=function(){return _0x505520;};return a2_0x3ffd();}function a2_0xb6f5(_0x45982a,_0x416a90){_0x45982a=_0x45982a-0x7a;const _0x3ffd3b=a2_0x3ffd();let _0xb6f526=_0x3ffd3b[_0x45982a];return _0xb6f526;}const a2_0x1161a0=a2_0xb6f5;(function(_0x9cbc9e,_0x4340bf){const _0x23f902=a2_0xb6f5,_0x5e5d61=_0x9cbc9e();while(!![]){try{const _0x3370f3=-parseInt(_0x23f902(0x81))/0x1*(-parseInt(_0x23f902(0x8c))/0x2)+-parseInt(_0x23f902(0x85))/0x3*(-parseInt(_0x23f902(0x8f))/0x4)+parseInt(_0x23f902(0x82))/0x5+-parseInt(_0x23f902(0x84))/0x6*(parseInt(_0x23f902(0x8a))/0x7)+-parseInt(_0x23f902(0x7a))/0x8+-parseInt(_0x23f902(0x7e))/0x9+-parseInt(_0x23f902(0x89))/0xa*(-parseInt(_0x23f902(0x83))/0xb);if(_0x3370f3===_0x4340bf)break;else _0x5e5d61['push'](_0x5e5d61['shift']());}catch(_0xfbd85b){_0x5e5d61['push'](_0x5e5d61['shift']());}}}(a2_0x3ffd,0xef9e7));import{createWriteStream}from'fs';class MorphLogger{['enabled'];[a2_0x1161a0(0x7f)];constructor(){const _0x4e1d8e=a2_0x1161a0;this[_0x4e1d8e(0x7d)]=process['env']['MORPH_DEBUG']==='1'||!!process[_0x4e1d8e(0x90)][_0x4e1d8e(0x88)];const _0x44c9aa=process[_0x4e1d8e(0x90)][_0x4e1d8e(0x88)];this[_0x4e1d8e(0x7f)]=_0x44c9aa?createWriteStream(_0x44c9aa,{'flags':'a'}):null;}[a2_0x1161a0(0x7c)](_0x379771,_0x1a7ef4,_0x34a157){const _0x58f7f7=a2_0x1161a0;this['_log'](_0x58f7f7(0x7c),_0x379771,_0x1a7ef4,_0x34a157);}[a2_0x1161a0(0x86)](_0x51600f,_0x6f23b5,_0x17a0d3){const _0x2f3410=a2_0x1161a0;this['_log'](_0x2f3410(0x86),_0x51600f,_0x6f23b5,_0x17a0d3);}['warn'](_0x51c720,_0x397f64,_0x5518b2){const _0x3af396=a2_0x1161a0;this[_0x3af396(0x8e)](_0x3af396(0x8d),_0x51c720,_0x397f64,_0x5518b2);}[a2_0x1161a0(0x7b)](_0x14bdac,_0x3f023c,_0x419ad1){const _0x215e82=a2_0x1161a0;this[_0x215e82(0x8e)]('error',_0x14bdac,_0x3f023c,_0x419ad1);}[a2_0x1161a0(0x87)](){this['enabled']=!![];}get['isEnabled'](){return this['enabled'];}[a2_0x1161a0(0x8e)](_0x52dee3,_0x11ca5d,_0x3bda45,_0x23ee42){const _0x3a28a3=a2_0x1161a0;if(_0x52dee3!=='error'&&!this['enabled'])return;const _0x4fabfc=new Date()['toISOString'](),_0x4b6bbe='['+_0x4fabfc+_0x3a28a3(0x8b)+_0x52dee3['toUpperCase']()+']\x20['+_0x11ca5d+']';console['error'](_0x23ee42?_0x4b6bbe+'\x20'+_0x3bda45+'\x20'+JSON[_0x3a28a3(0x80)](_0x23ee42):_0x4b6bbe+'\x20'+_0x3bda45),this[_0x3a28a3(0x7f)]?.['write'](JSON[_0x3a28a3(0x80)]({'ts':_0x4fabfc,'level':_0x52dee3,'component':_0x11ca5d,'msg':_0x3bda45,..._0x23ee42&&{'data':_0x23ee42}})+'\x0a');}}export const logger=new MorphLogger();
1
+ const a2_0x315720=a2_0x263b;(function(_0x12624c,_0x1da5fb){const _0x51b6dd=a2_0x263b,_0x4fa9a0=_0x12624c();while(!![]){try{const _0x52ce8b=-parseInt(_0x51b6dd(0x109))/0x1+parseInt(_0x51b6dd(0x118))/0x2+-parseInt(_0x51b6dd(0x119))/0x3+parseInt(_0x51b6dd(0x10c))/0x4+parseInt(_0x51b6dd(0x10a))/0x5*(parseInt(_0x51b6dd(0x115))/0x6)+parseInt(_0x51b6dd(0x110))/0x7+parseInt(_0x51b6dd(0x11e))/0x8*(-parseInt(_0x51b6dd(0x10d))/0x9);if(_0x52ce8b===_0x1da5fb)break;else _0x4fa9a0['push'](_0x4fa9a0['shift']());}catch(_0xb35daa){_0x4fa9a0['push'](_0x4fa9a0['shift']());}}}(a2_0x22b1,0x48425));import{createWriteStream}from'fs';function a2_0x263b(_0x1994ea,_0x3dc814){_0x1994ea=_0x1994ea-0x105;const _0x22b10f=a2_0x22b1();let _0x263b9a=_0x22b10f[_0x1994ea];return _0x263b9a;}class MorphLogger{['enabled'];['fileStream'];constructor(){const _0x3f7376=a2_0x263b;this[_0x3f7376(0x11d)]=process['env'][_0x3f7376(0x113)]==='1'||!!process[_0x3f7376(0x10f)][_0x3f7376(0x117)];const _0x28cf07=process['env']['MORPH_LOG_FILE'];this[_0x3f7376(0x11c)]=_0x28cf07?createWriteStream(_0x28cf07,{'flags':'a'}):null;}['debug'](_0x2e9375,_0xbaecec,_0x3c9f77){const _0x4281ab=a2_0x263b;this[_0x4281ab(0x107)](_0x4281ab(0x105),_0x2e9375,_0xbaecec,_0x3c9f77);}[a2_0x315720(0x116)](_0xb44b0d,_0x4ba3eb,_0x251df9){const _0x2b865b=a2_0x315720;this[_0x2b865b(0x107)](_0x2b865b(0x116),_0xb44b0d,_0x4ba3eb,_0x251df9);}[a2_0x315720(0x10b)](_0x4b8ac8,_0xda0bc0,_0x3def69){const _0x2e23f7=a2_0x315720;this[_0x2e23f7(0x107)](_0x2e23f7(0x10b),_0x4b8ac8,_0xda0bc0,_0x3def69);}['error'](_0x5cca84,_0x18f041,_0x2c6568){const _0x197b64=a2_0x315720;this[_0x197b64(0x107)]('error',_0x5cca84,_0x18f041,_0x2c6568);}[a2_0x315720(0x108)](){this['enabled']=!![];}get[a2_0x315720(0x106)](){const _0x54f7c6=a2_0x315720;return this[_0x54f7c6(0x11d)];}[a2_0x315720(0x107)](_0x49e418,_0x8dacde,_0x4e0efa,_0x83ec7){const _0x2aa7bc=a2_0x315720;if(_0x49e418!==_0x2aa7bc(0x111)&&!this[_0x2aa7bc(0x11d)])return;const _0x5ebe72=new Date()[_0x2aa7bc(0x11b)](),_0x161d80='['+_0x5ebe72+_0x2aa7bc(0x112)+_0x49e418[_0x2aa7bc(0x10e)]()+_0x2aa7bc(0x112)+_0x8dacde+']';console['error'](_0x83ec7?_0x161d80+'\x20'+_0x4e0efa+'\x20'+JSON['stringify'](_0x83ec7):_0x161d80+'\x20'+_0x4e0efa),this[_0x2aa7bc(0x11c)]?.[_0x2aa7bc(0x11a)](JSON[_0x2aa7bc(0x114)]({'ts':_0x5ebe72,'level':_0x49e418,'component':_0x8dacde,'msg':_0x4e0efa,..._0x83ec7&&{'data':_0x83ec7}})+'\x0a');}}export const logger=new MorphLogger();function a2_0x22b1(){const _0x597acc=['enabled','32cfLxnw','debug','isEnabled','_log','enable','99197VEIQUd','85985oBGGnf','warn','2327180djvHmH','2505159tiNnOn','toUpperCase','env','3246733BVWkrB','error',']\x20[','MORPH_DEBUG','stringify','102eMVetN','info','MORPH_LOG_FILE','823604pbpZOG','723573pAcBxv','write','toISOString','fileStream'];a2_0x22b1=function(){return _0x597acc;};return a2_0x22b1();}
@@ -1 +1 @@
1
- (function(_0x3d430a,_0x1255ad){const _0x1bd666=a3_0x1207,_0x23f4ff=_0x3d430a();while(!![]){try{const _0x2c6759=-parseInt(_0x1bd666(0x1f7))/0x1+-parseInt(_0x1bd666(0x1fa))/0x2*(parseInt(_0x1bd666(0x200))/0x3)+parseInt(_0x1bd666(0x1f8))/0x4*(-parseInt(_0x1bd666(0x1f3))/0x5)+-parseInt(_0x1bd666(0x202))/0x6*(parseInt(_0x1bd666(0x1ed))/0x7)+parseInt(_0x1bd666(0x1f2))/0x8+-parseInt(_0x1bd666(0x1fe))/0x9*(-parseInt(_0x1bd666(0x1ee))/0xa)+parseInt(_0x1bd666(0x1f1))/0xb*(parseInt(_0x1bd666(0x1ef))/0xc);if(_0x2c6759===_0x1255ad)break;else _0x23f4ff['push'](_0x23f4ff['shift']());}catch(_0x2f79c2){_0x23f4ff['push'](_0x23f4ff['shift']());}}}(a3_0x1c2a,0x24cf6));import a3_0x7af402 from'path';import a3_0x1a7fa0 from'os';function a3_0x1c2a(){const _0x2166b8=['3veFhrE','toUpperCase','2712BWCMMC','join','2317JJNlsp','168290fNggrJ','2798688wBXiLP','match','22XjKYZq','599216CQKyKv','47390qUVqud','startsWith','test','homedir','216949VpqJWz','4rVgDYW','trim','231022IQwoKF','/mnt/','replace','slice','54CiazEL','charAt'];a3_0x1c2a=function(){return _0x2166b8;};return a3_0x1c2a();}export function convertToWindowsPath(_0x54880e){const _0x185857=a3_0x1207;if(_0x54880e[_0x185857(0x1f4)](_0x185857(0x1fb))){const _0x4b7cec=_0x54880e[_0x185857(0x1ff)](0x5)['toUpperCase'](),_0x2ead6a=_0x54880e[_0x185857(0x1fd)](0x6)['replace'](/\//g,'\x5c');return _0x4b7cec+':'+_0x2ead6a;}if(_0x54880e[_0x185857(0x1f0)](/^\/[a-zA-Z]\//)){const _0x217f33=_0x54880e['charAt'](0x1)[_0x185857(0x201)](),_0x2a93b1=_0x54880e['slice'](0x2)['replace'](/\//g,'\x5c');return _0x217f33+':'+_0x2a93b1;}if(_0x54880e[_0x185857(0x1f0)](/^[a-zA-Z]:/))return _0x54880e[_0x185857(0x1fc)](/\//g,'\x5c');return _0x54880e;}function a3_0x1207(_0x15d163,_0xa5c4ef){_0x15d163=_0x15d163-0x1ed;const _0x1c2afa=a3_0x1c2a();let _0x120720=_0x1c2afa[_0x15d163];return _0x120720;}export function normalizePath(_0x5bbdd7){const _0x295ae9=a3_0x1207;_0x5bbdd7=_0x5bbdd7[_0x295ae9(0x1f9)]()[_0x295ae9(0x1fc)](/^["']|["']$/g,'');const _0x5a4506=_0x5bbdd7[_0x295ae9(0x1f4)]('/')&&!_0x5bbdd7[_0x295ae9(0x1f0)](/^\/mnt\/[a-z]\//i)&&!_0x5bbdd7[_0x295ae9(0x1f0)](/^\/[a-zA-Z]\//);if(_0x5a4506)return _0x5bbdd7['replace'](/\/+/g,'/')['replace'](/\/+$/,'');_0x5bbdd7=convertToWindowsPath(_0x5bbdd7);if(_0x5bbdd7[_0x295ae9(0x1f4)]('\x5c\x5c')){let _0x2ddda0=_0x5bbdd7;_0x2ddda0=_0x2ddda0[_0x295ae9(0x1fc)](/^\\{2,}/,'\x5c\x5c');const _0x39e026=_0x2ddda0['substring'](0x2)['replace'](/\\\\/g,'\x5c');_0x5bbdd7='\x5c\x5c'+_0x39e026;}else _0x5bbdd7=_0x5bbdd7[_0x295ae9(0x1fc)](/\\\\/g,'\x5c');let _0x2d8614=a3_0x7af402['normalize'](_0x5bbdd7);_0x5bbdd7[_0x295ae9(0x1f4)]('\x5c\x5c')&&!_0x2d8614[_0x295ae9(0x1f4)]('\x5c\x5c')&&(_0x2d8614='\x5c'+_0x2d8614);if(_0x2d8614[_0x295ae9(0x1f0)](/^[a-zA-Z]:/)){let _0x310296=_0x2d8614[_0x295ae9(0x1fc)](/\//g,'\x5c');return/^[a-z]:/[_0x295ae9(0x1f5)](_0x310296)&&(_0x310296=_0x310296[_0x295ae9(0x1ff)](0x0)[_0x295ae9(0x201)]()+_0x310296[_0x295ae9(0x1fd)](0x1)),_0x310296;}return _0x2d8614[_0x295ae9(0x1fc)](/\//g,'\x5c');}export function expandHome(_0x4ea789){const _0x39a987=a3_0x1207;if(_0x4ea789['startsWith']('~/')||_0x4ea789==='~')return a3_0x7af402[_0x39a987(0x203)](a3_0x1a7fa0[_0x39a987(0x1f6)](),_0x4ea789[_0x39a987(0x1fd)](0x1));return _0x4ea789;}
1
+ (function(_0x4ba7cd,_0x1e5670){const _0x36909b=a3_0x2476,_0x559bbe=_0x4ba7cd();while(!![]){try{const _0x103b99=parseInt(_0x36909b(0x129))/0x1+-parseInt(_0x36909b(0x11f))/0x2*(parseInt(_0x36909b(0x12b))/0x3)+-parseInt(_0x36909b(0x130))/0x4+-parseInt(_0x36909b(0x123))/0x5+-parseInt(_0x36909b(0x12d))/0x6*(-parseInt(_0x36909b(0x131))/0x7)+parseInt(_0x36909b(0x124))/0x8*(-parseInt(_0x36909b(0x132))/0x9)+parseInt(_0x36909b(0x12f))/0xa;if(_0x103b99===_0x1e5670)break;else _0x559bbe['push'](_0x559bbe['shift']());}catch(_0x2a6db8){_0x559bbe['push'](_0x559bbe['shift']());}}}(a3_0xb6c2,0x8d10f));import a3_0x418058 from'path';function a3_0x2476(_0x1ff2d9,_0x28db30){_0x1ff2d9=_0x1ff2d9-0x11f;const _0xb6c2eb=a3_0xb6c2();let _0x2476c1=_0xb6c2eb[_0x1ff2d9];return _0x2476c1;}function a3_0xb6c2(){const _0x3f0356=['homedir','1431440OPjlPc','8864oRETeP','replace','charAt','toUpperCase','startsWith','961913AGbhNZ','normalize','42fiXrPn','test','1403526qtHCrE','match','11985330yqGkbr','923400wcVDgN','7MjtdHA','8748dVimiz','31778WofdDD','slice','/mnt/'];a3_0xb6c2=function(){return _0x3f0356;};return a3_0xb6c2();}import a3_0x2cf209 from'os';export function convertToWindowsPath(_0x278d38){const _0x38f904=a3_0x2476;if(_0x278d38[_0x38f904(0x128)](_0x38f904(0x121))){const _0x4cd5a1=_0x278d38['charAt'](0x5)[_0x38f904(0x127)](),_0x5dfe85=_0x278d38[_0x38f904(0x120)](0x6)['replace'](/\//g,'\x5c');return _0x4cd5a1+':'+_0x5dfe85;}if(_0x278d38[_0x38f904(0x12e)](/^\/[a-zA-Z]\//)){const _0x3f34ba=_0x278d38['charAt'](0x1)[_0x38f904(0x127)](),_0x2b452a=_0x278d38[_0x38f904(0x120)](0x2)[_0x38f904(0x125)](/\//g,'\x5c');return _0x3f34ba+':'+_0x2b452a;}if(_0x278d38[_0x38f904(0x12e)](/^[a-zA-Z]:/))return _0x278d38[_0x38f904(0x125)](/\//g,'\x5c');return _0x278d38;}export function normalizePath(_0x54b173){const _0x108c78=a3_0x2476;_0x54b173=_0x54b173['trim']()[_0x108c78(0x125)](/^["']|["']$/g,'');const _0x2aea6e=_0x54b173[_0x108c78(0x128)]('/')&&!_0x54b173[_0x108c78(0x12e)](/^\/mnt\/[a-z]\//i)&&!_0x54b173[_0x108c78(0x12e)](/^\/[a-zA-Z]\//);if(_0x2aea6e)return _0x54b173[_0x108c78(0x125)](/\/+/g,'/')[_0x108c78(0x125)](/\/+$/,'');_0x54b173=convertToWindowsPath(_0x54b173);if(_0x54b173['startsWith']('\x5c\x5c')){let _0x44e75c=_0x54b173;_0x44e75c=_0x44e75c[_0x108c78(0x125)](/^\\{2,}/,'\x5c\x5c');const _0x9be4d4=_0x44e75c['substring'](0x2)[_0x108c78(0x125)](/\\\\/g,'\x5c');_0x54b173='\x5c\x5c'+_0x9be4d4;}else _0x54b173=_0x54b173[_0x108c78(0x125)](/\\\\/g,'\x5c');let _0x292736=a3_0x418058[_0x108c78(0x12a)](_0x54b173);_0x54b173['startsWith']('\x5c\x5c')&&!_0x292736['startsWith']('\x5c\x5c')&&(_0x292736='\x5c'+_0x292736);if(_0x292736[_0x108c78(0x12e)](/^[a-zA-Z]:/)){let _0x115c38=_0x292736[_0x108c78(0x125)](/\//g,'\x5c');return/^[a-z]:/[_0x108c78(0x12c)](_0x115c38)&&(_0x115c38=_0x115c38[_0x108c78(0x126)](0x0)['toUpperCase']()+_0x115c38['slice'](0x1)),_0x115c38;}return _0x292736[_0x108c78(0x125)](/\//g,'\x5c');}export function expandHome(_0xa67212){const _0x17b36a=a3_0x2476;if(_0xa67212['startsWith']('~/')||_0xa67212==='~')return a3_0x418058['join'](a3_0x2cf209[_0x17b36a(0x122)](),_0xa67212['slice'](0x1));return _0xa67212;}
@@ -1 +1 @@
1
- (function(_0xcdabdc,_0x11dfbf){const _0x422c31=a4_0x22c5,_0x51148f=_0xcdabdc();while(!![]){try{const _0x146f3a=parseInt(_0x422c31(0x185))/0x1*(parseInt(_0x422c31(0x17a))/0x2)+parseInt(_0x422c31(0x17b))/0x3*(parseInt(_0x422c31(0x176))/0x4)+-parseInt(_0x422c31(0x172))/0x5*(parseInt(_0x422c31(0x189))/0x6)+parseInt(_0x422c31(0x181))/0x7+parseInt(_0x422c31(0x183))/0x8+-parseInt(_0x422c31(0x17f))/0x9*(parseInt(_0x422c31(0x175))/0xa)+-parseInt(_0x422c31(0x178))/0xb*(parseInt(_0x422c31(0x187))/0xc);if(_0x146f3a===_0x11dfbf)break;else _0x51148f['push'](_0x51148f['shift']());}catch(_0x36c52b){_0x51148f['push'](_0x51148f['shift']());}}}(a4_0x5e31,0xb46e9));function a4_0x5e31(){const _0x1c0fc1=['82AxdAJH','185412xVBsfd','isArray','length','includes','2706543zUhIDg','some','8990856ewRmId','Path\x20must\x20be\x20absolute\x20after\x20normalization','8856792QBwywB','normalize','2389eOavtA','sep','318204fOEQwB','startsWith','47892nqsViq','520nKotyW','resolve','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','20QHqtca','36YCglPd','string','363fULbyu','isAbsolute'];a4_0x5e31=function(){return _0x1c0fc1;};return a4_0x5e31();}import a4_0x57f5e2 from'path';function a4_0x22c5(_0x3933cd,_0xe39a05){_0x3933cd=_0x3933cd-0x172;const _0x5e3185=a4_0x5e31();let _0x22c568=_0x5e3185[_0x3933cd];return _0x22c568;}export function isPathWithinAllowedDirectories(_0x3fd7c0,_0x464f5d){const _0x2d113b=a4_0x22c5;if(typeof _0x3fd7c0!==_0x2d113b(0x177)||!Array[_0x2d113b(0x17c)](_0x464f5d))return![];if(!_0x3fd7c0||_0x464f5d[_0x2d113b(0x17d)]===0x0)return![];if(_0x3fd7c0[_0x2d113b(0x17e)]('\x00'))return![];let _0x312086;try{_0x312086=a4_0x57f5e2[_0x2d113b(0x173)](a4_0x57f5e2[_0x2d113b(0x184)](_0x3fd7c0));}catch{return![];}if(!a4_0x57f5e2[_0x2d113b(0x179)](_0x312086))throw new Error(_0x2d113b(0x182));return _0x464f5d[_0x2d113b(0x180)](_0x1c81ea=>{const _0x16aa9c=_0x2d113b;if(typeof _0x1c81ea!==_0x16aa9c(0x177)||!_0x1c81ea)return![];if(_0x1c81ea[_0x16aa9c(0x17e)]('\x00'))return![];let _0x1fadb5;try{_0x1fadb5=a4_0x57f5e2[_0x16aa9c(0x173)](a4_0x57f5e2['normalize'](_0x1c81ea));}catch{return![];}if(!a4_0x57f5e2[_0x16aa9c(0x179)](_0x1fadb5))throw new Error(_0x16aa9c(0x174));if(_0x312086===_0x1fadb5)return!![];if(_0x1fadb5===a4_0x57f5e2[_0x16aa9c(0x186)])return _0x312086[_0x16aa9c(0x188)](a4_0x57f5e2[_0x16aa9c(0x186)]);return _0x312086['startsWith'](_0x1fadb5+a4_0x57f5e2[_0x16aa9c(0x186)]);});}
1
+ function a4_0xa877(){const _0x4d1337=['normalize','length','8460036SLaoKj','10HdIuJN','11896SxwaMh','90560XwERYA','sep','1981VUFheW','125411nUMfnR','includes','isAbsolute','isArray','320vEodsq','1378971lqxJce','Path\x20must\x20be\x20absolute\x20after\x20normalization','startsWith','981438xdTzEw','string','10UifVTv','407506ZSzJyd','resolve'];a4_0xa877=function(){return _0x4d1337;};return a4_0xa877();}(function(_0x27b3d2,_0x1c08c9){const _0x507788=a4_0x2591,_0x498237=_0x27b3d2();while(!![]){try{const _0x205cc4=-parseInt(_0x507788(0xa0))/0x1+-parseInt(_0x507788(0xaa))/0x2*(-parseInt(_0x507788(0xa8))/0x3)+-parseInt(_0x507788(0xa4))/0x4*(-parseInt(_0x507788(0xb2))/0x5)+-parseInt(_0x507788(0xaf))/0x6+-parseInt(_0x507788(0x9f))/0x7*(parseInt(_0x507788(0xb1))/0x8)+-parseInt(_0x507788(0xa5))/0x9*(parseInt(_0x507788(0xb0))/0xa)+-parseInt(_0x507788(0xab))/0xb;if(_0x205cc4===_0x1c08c9)break;else _0x498237['push'](_0x498237['shift']());}catch(_0x53bf01){_0x498237['push'](_0x498237['shift']());}}}(a4_0xa877,0xe50cb));import a4_0x25a295 from'path';function a4_0x2591(_0x25f8a0,_0x1bb70a){_0x25f8a0=_0x25f8a0-0x9e;const _0xa877c8=a4_0xa877();let _0x25916d=_0xa877c8[_0x25f8a0];return _0x25916d;}export function isPathWithinAllowedDirectories(_0x1524b5,_0x246bd1){const _0x12e8c8=a4_0x2591;if(typeof _0x1524b5!==_0x12e8c8(0xa9)||!Array[_0x12e8c8(0xa3)](_0x246bd1))return![];if(!_0x1524b5||_0x246bd1[_0x12e8c8(0xae)]===0x0)return![];if(_0x1524b5[_0x12e8c8(0xa1)]('\x00'))return![];let _0x482cb3;try{_0x482cb3=a4_0x25a295[_0x12e8c8(0xac)](a4_0x25a295[_0x12e8c8(0xad)](_0x1524b5));}catch{return![];}if(!a4_0x25a295[_0x12e8c8(0xa2)](_0x482cb3))throw new Error(_0x12e8c8(0xa6));return _0x246bd1['some'](_0x247f62=>{const _0x36ba4c=_0x12e8c8;if(typeof _0x247f62!==_0x36ba4c(0xa9)||!_0x247f62)return![];if(_0x247f62['includes']('\x00'))return![];let _0x279b3c;try{_0x279b3c=a4_0x25a295[_0x36ba4c(0xac)](a4_0x25a295[_0x36ba4c(0xad)](_0x247f62));}catch{return![];}if(!a4_0x25a295[_0x36ba4c(0xa2)](_0x279b3c))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0x482cb3===_0x279b3c)return!![];if(_0x279b3c===a4_0x25a295['sep'])return _0x482cb3[_0x36ba4c(0xa7)](a4_0x25a295[_0x36ba4c(0x9e)]);return _0x482cb3[_0x36ba4c(0xa7)](_0x279b3c+a4_0x25a295['sep']);});}
@@ -1 +1 @@
1
- function a5_0x4cb8(){const _0x5652e9=['file://','8765973gWgryx','86MjiLgi','uri','join','146828ygPzmX','slice','non-directory\x20root','14mBRPoq','startsWith','stat','Skipping\x20invalid\x20directory:\x20','8NEgOlh','2369930KBgfQA','push','\x20due\x20to\x20error:\x20','message','3105uegCIY','9719413byVqTo','homedir','isDirectory','21UZcvdn','resolve','1094226xEgDfF','886mLsUwb'];a5_0x4cb8=function(){return _0x5652e9;};return a5_0x4cb8();}(function(_0x47051b,_0x208125){const _0x51692f=a5_0x1572,_0x1ee9f6=_0x47051b();while(!![]){try{const _0x4ed525=-parseInt(_0x51692f(0xc6))/0x1*(-parseInt(_0x51692f(0xdc))/0x2)+-parseInt(_0x51692f(0xd9))/0x3*(-parseInt(_0x51692f(0xc9))/0x4)+parseInt(_0x51692f(0xd5))/0x5+-parseInt(_0x51692f(0xdb))/0x6*(-parseInt(_0x51692f(0xcc))/0x7)+parseInt(_0x51692f(0xd0))/0x8*(parseInt(_0x51692f(0xc5))/0x9)+-parseInt(_0x51692f(0xd1))/0xa+-parseInt(_0x51692f(0xd6))/0xb;if(_0x4ed525===_0x208125)break;else _0x1ee9f6['push'](_0x1ee9f6['shift']());}catch(_0x3fcc56){_0x1ee9f6['push'](_0x1ee9f6['shift']());}}}(a5_0x4cb8,0x7d727));import{promises as a5_0x46b265}from'fs';import a5_0x251086 from'path';import a5_0x482081 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x4e5b3b){const _0x48d746=a5_0x1572;try{const _0x494e60=_0x4e5b3b[_0x48d746(0xcd)](_0x48d746(0xdd))?_0x4e5b3b[_0x48d746(0xca)](0x7):_0x4e5b3b,_0x19a0e3=_0x494e60[_0x48d746(0xcd)]('~/')||_0x494e60==='~'?a5_0x251086[_0x48d746(0xc8)](a5_0x482081[_0x48d746(0xd7)](),_0x494e60[_0x48d746(0xca)](0x1)):_0x494e60,_0x47ca00=a5_0x251086[_0x48d746(0xda)](_0x19a0e3),_0x521e40=await a5_0x46b265['realpath'](_0x47ca00);return normalizePath(_0x521e40);}catch{return null;}}function formatDirectoryError(_0x29ab43,_0x164389,_0x1a3158){const _0x4b808b=a5_0x1572;if(_0x1a3158)return'Skipping\x20'+_0x1a3158+':\x20'+_0x29ab43;const _0x2f4cf5=_0x164389 instanceof Error?_0x164389[_0x4b808b(0xd4)]:String(_0x164389);return _0x4b808b(0xcf)+_0x29ab43+_0x4b808b(0xd3)+_0x2f4cf5;}function a5_0x1572(_0x183a47,_0x5c9eb7){_0x183a47=_0x183a47-0xc5;const _0x4cb863=a5_0x4cb8();let _0x1572da=_0x4cb863[_0x183a47];return _0x1572da;}export async function getValidRootDirectories(_0x3ba3e2){const _0x2b314a=a5_0x1572,_0x2f3e00=[];for(const _0x20b4f5 of _0x3ba3e2){const _0x116c79=await parseRootUri(_0x20b4f5[_0x2b314a(0xc7)]);if(!_0x116c79){logMcpStderr(formatDirectoryError(_0x20b4f5[_0x2b314a(0xc7)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x28e209=await a5_0x46b265[_0x2b314a(0xce)](_0x116c79);_0x28e209[_0x2b314a(0xd8)]()?_0x2f3e00[_0x2b314a(0xd2)](_0x116c79):logMcpStderr(formatDirectoryError(_0x116c79,undefined,_0x2b314a(0xcb)));}catch(_0xf4059){logMcpStderr(formatDirectoryError(_0x116c79,_0xf4059));}}return _0x2f3e00;}
1
+ (function(_0x3c9516,_0x113446){const _0xf695f3=a5_0xe18d,_0x6596ed=_0x3c9516();while(!![]){try{const _0x187037=parseInt(_0xf695f3(0x19d))/0x1+-parseInt(_0xf695f3(0x191))/0x2*(parseInt(_0xf695f3(0x196))/0x3)+parseInt(_0xf695f3(0x195))/0x4*(parseInt(_0xf695f3(0x1a0))/0x5)+-parseInt(_0xf695f3(0x19c))/0x6+-parseInt(_0xf695f3(0x199))/0x7*(-parseInt(_0xf695f3(0x197))/0x8)+parseInt(_0xf695f3(0x192))/0x9+-parseInt(_0xf695f3(0x18f))/0xa*(parseInt(_0xf695f3(0x19b))/0xb);if(_0x187037===_0x113446)break;else _0x6596ed['push'](_0x6596ed['shift']());}catch(_0x2c7fce){_0x6596ed['push'](_0x6596ed['shift']());}}}(a5_0x15cb,0x9549a));import{promises as a5_0x2caa84}from'fs';import a5_0x3cbe4c from'path';import a5_0xba56b7 from'os';function a5_0x15cb(){const _0x2a2146=['256HRLPHV','9951480rcJjfx','message','non-directory\x20root','100652poWueL','2721DDbzeo','664IaQiCh','file://','53081hccZbo','\x20due\x20to\x20error:\x20','3758436rZJanD','2565378PsFKMj','233150rZDUJU','stat','slice','110KqwLty','Skipping\x20','Skipping\x20invalid\x20directory:\x20','resolve','isDirectory','startsWith','join','40NESNwL','uri'];a5_0x15cb=function(){return _0x2a2146;};return a5_0x15cb();}import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x51f6c3){const _0xd09101=a5_0xe18d;try{const _0x5e711c=_0x51f6c3['startsWith'](_0xd09101(0x198))?_0x51f6c3[_0xd09101(0x19f)](0x7):_0x51f6c3,_0x2fefdd=_0x5e711c[_0xd09101(0x1a5)]('~/')||_0x5e711c==='~'?a5_0x3cbe4c[_0xd09101(0x1a6)](a5_0xba56b7['homedir'](),_0x5e711c[_0xd09101(0x19f)](0x1)):_0x5e711c,_0x4879bc=a5_0x3cbe4c[_0xd09101(0x1a3)](_0x2fefdd),_0x396419=await a5_0x2caa84['realpath'](_0x4879bc);return normalizePath(_0x396419);}catch{return null;}}function a5_0xe18d(_0x5b9326,_0xcd11d7){_0x5b9326=_0x5b9326-0x18f;const _0x15cb16=a5_0x15cb();let _0xe18d3c=_0x15cb16[_0x5b9326];return _0xe18d3c;}function formatDirectoryError(_0x469717,_0x593d15,_0x59c88f){const _0x5e576e=a5_0xe18d;if(_0x59c88f)return _0x5e576e(0x1a1)+_0x59c88f+':\x20'+_0x469717;const _0x1a119e=_0x593d15 instanceof Error?_0x593d15[_0x5e576e(0x193)]:String(_0x593d15);return _0x5e576e(0x1a2)+_0x469717+_0x5e576e(0x19a)+_0x1a119e;}export async function getValidRootDirectories(_0x108c08){const _0xb3429a=a5_0xe18d,_0x36528f=[];for(const _0x36f59d of _0x108c08){const _0x4ed0fc=await parseRootUri(_0x36f59d[_0xb3429a(0x190)]);if(!_0x4ed0fc){logMcpStderr(formatDirectoryError(_0x36f59d['uri'],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0xc60e7b=await a5_0x2caa84[_0xb3429a(0x19e)](_0x4ed0fc);_0xc60e7b[_0xb3429a(0x1a4)]()?_0x36528f['push'](_0x4ed0fc):logMcpStderr(formatDirectoryError(_0x4ed0fc,undefined,_0xb3429a(0x194)));}catch(_0x3f6b41){logMcpStderr(formatDirectoryError(_0x4ed0fc,_0x3f6b41));}}return _0x36528f;}
@@ -1 +1 @@
1
- const a6_0x5bb7fb=a6_0x3785;function a6_0x1b7a(){const _0x39efa9=['codebase_search','6743MJFnxL','63QGJhpd','36UTbpDS','github_codebase_search','6436045fySbrh','394556ikHQol','28308vSeRmE','14JenPYA','12oaYJer','56968hlFEou','edit_file','3626635BBsAVp','6724824vKZNRH','1334170bUiiAG'];a6_0x1b7a=function(){return _0x39efa9;};return a6_0x1b7a();}(function(_0x121263,_0x586076){const _0x574647=a6_0x3785,_0x4971bc=_0x121263();while(!![]){try{const _0x3fd465=parseInt(_0x574647(0x1f8))/0x1*(parseInt(_0x574647(0x1fa))/0x2)+parseInt(_0x574647(0x1f3))/0x3*(parseInt(_0x574647(0x1f6))/0x4)+parseInt(_0x574647(0x1fc))/0x5*(parseInt(_0x574647(0x1f9))/0x6)+-parseInt(_0x574647(0x1f5))/0x7+-parseInt(_0x574647(0x1fd))/0x8+parseInt(_0x574647(0x1f2))/0x9*(parseInt(_0x574647(0x1fe))/0xa)+-parseInt(_0x574647(0x200))/0xb*(parseInt(_0x574647(0x1f7))/0xc);if(_0x3fd465===_0x586076)break;else _0x4971bc['push'](_0x4971bc['shift']());}catch(_0x3fb068){_0x4971bc['push'](_0x4971bc['shift']());}}}(a6_0x1b7a,0xb9c50));function a6_0x3785(_0x5f50c6,_0x4d25a4){_0x5f50c6=_0x5f50c6-0x1f2;const _0x1b7ae4=a6_0x1b7a();let _0x3785c1=_0x1b7ae4[_0x5f50c6];return _0x3785c1;}export const TOOL_NAMES={'EDIT_FILE':a6_0x5bb7fb(0x1fb),'CODEBASE_SEARCH':a6_0x5bb7fb(0x1ff),'GITHUB_CODEBASE_SEARCH':a6_0x5bb7fb(0x1f4)};export const ALL_TOOL_NAMES=Object['values'](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);
1
+ const a6_0x4665b1=a6_0x2780;(function(_0x25003b,_0x13993c){const _0x342950=a6_0x2780,_0x1d5549=_0x25003b();while(!![]){try{const _0x527d61=-parseInt(_0x342950(0xaf))/0x1*(parseInt(_0x342950(0xa4))/0x2)+-parseInt(_0x342950(0xa8))/0x3+-parseInt(_0x342950(0xa6))/0x4+parseInt(_0x342950(0xa2))/0x5+-parseInt(_0x342950(0xa3))/0x6*(parseInt(_0x342950(0xac))/0x7)+-parseInt(_0x342950(0xaa))/0x8*(parseInt(_0x342950(0xa5))/0x9)+-parseInt(_0x342950(0xa9))/0xa*(-parseInt(_0x342950(0xad))/0xb);if(_0x527d61===_0x13993c)break;else _0x1d5549['push'](_0x1d5549['shift']());}catch(_0x3e3f18){_0x1d5549['push'](_0x1d5549['shift']());}}}(a6_0x54ff,0x884f1));function a6_0x54ff(){const _0x5c32e6=['codebase_search','2334084LkfuNP','40ASLVOw','160RuIFGa','edit_file','22267LgRzgj','7240882oXvGur','values','101UawfPv','5083615xirzNs','516rOnVzk','21326ZnGGOL','375633CSSvyN','512612YBpNOm'];a6_0x54ff=function(){return _0x5c32e6;};return a6_0x54ff();}export const TOOL_NAMES={'EDIT_FILE':a6_0x4665b1(0xab),'CODEBASE_SEARCH':a6_0x4665b1(0xa7),'GITHUB_CODEBASE_SEARCH':'github_codebase_search'};export const ALL_TOOL_NAMES=Object[a6_0x4665b1(0xae)](TOOL_NAMES);function a6_0x2780(_0x12f2ea,_0x5c2c91){_0x12f2ea=_0x12f2ea-0xa2;const _0x54ff2b=a6_0x54ff();let _0x278089=_0x54ff2b[_0x12f2ea];return _0x278089;}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.177",
3
+ "version": "0.8.179",
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.168",
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",