@morphllm/morphmcp 0.8.102 → 0.8.104

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
@@ -8,8 +8,9 @@ Supercharge your coding agent. One MCP with two specialized tools for faster edi
8
8
  |------|-------------|
9
9
  | `edit_file` | Apply code changes at 10,500+ tokens/sec with 98% accuracy |
10
10
  | `warpgrep_codebase_search` | Sub-agent that runs parallel grep/read operations to find relevant code |
11
+ | `warpgrep_github_search` | Search any public GitHub repo by URL or `owner/repo` shorthand |
11
12
 
12
- Both tools are enabled by default.
13
+ All three tools are enabled by default.
13
14
 
14
15
  ## Quick Start
15
16
 
@@ -31,7 +32,7 @@ Add to `.cursor/mcp.json`:
31
32
  "args": ["-y", "@morphllm/morphmcp"],
32
33
  "env": {
33
34
  "MORPH_API_KEY": "sk-xxx",
34
- "ENABLED_TOOLS": "warpgrep_codebase_search"
35
+ "ENABLED_TOOLS": "warpgrep_codebase_search,warpgrep_github_search"
35
36
  }
36
37
  }
37
38
  }
@@ -51,7 +52,7 @@ Add to `.vscode/mcp.json`:
51
52
  "args": ["-y", "@morphllm/morphmcp"],
52
53
  "env": {
53
54
  "MORPH_API_KEY": "sk-xxx",
54
- "ENABLED_TOOLS": "edit_file,warpgrep_codebase_search"
55
+ "ENABLED_TOOLS": "edit_file,warpgrep_codebase_search,warpgrep_github_search"
55
56
  }
56
57
  }
57
58
  }
@@ -99,21 +100,24 @@ Output: List of files with specific line ranges + actual code content
99
100
  | Variable | Description | Default |
100
101
  |----------|-------------|---------|
101
102
  | `MORPH_API_KEY` | Your API key from [morphllm.com](https://morphllm.com) | Required |
102
- | `ENABLED_TOOLS` | Comma-separated list or `all` | `edit_file,warpgrep_codebase_search` |
103
+ | `ENABLED_TOOLS` | Comma-separated list or `all` | `edit_file,warpgrep_codebase_search,warpgrep_github_search` |
103
104
  | `MORPH_API_URL` | Override Morph API base URL for custom proxies | `https://api.morphllm.com` |
104
105
  | `MORPH_WARP_GREP_TIMEOUT` | Timeout for warp grep model calls in ms | `30000` |
105
106
 
106
107
  ### Customize enabled tools
107
108
 
108
109
  ```bash
109
- # Default (both tools)
110
- ENABLED_TOOLS=edit_file,warpgrep_codebase_search
110
+ # Default (all three tools)
111
+ ENABLED_TOOLS=edit_file,warpgrep_codebase_search,warpgrep_github_search
111
112
 
112
113
  # Only fast editing
113
114
  ENABLED_TOOLS=edit_file
114
115
 
115
- # Only search
116
+ # Only local search
116
117
  ENABLED_TOOLS=warpgrep_codebase_search
118
+
119
+ # Only GitHub search
120
+ ENABLED_TOOLS=warpgrep_github_search
117
121
  ```
118
122
 
119
123
  ## Get an API Key
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const a0_0x3a1ec5=a0_0x2b2d;(function(_0xbf6812,_0x7c4ab8){const _0xb712ab=a0_0x2b2d,_0xc1e7aa=_0xbf6812();while(!![]){try{const _0x515a67=parseInt(_0xb712ab(0x127))/0x1+parseInt(_0xb712ab(0x132))/0x2*(parseInt(_0xb712ab(0x19c))/0x3)+parseInt(_0xb712ab(0x16c))/0x4*(parseInt(_0xb712ab(0x145))/0x5)+parseInt(_0xb712ab(0x103))/0x6*(parseInt(_0xb712ab(0xb7))/0x7)+parseInt(_0xb712ab(0xc9))/0x8*(-parseInt(_0xb712ab(0x115))/0x9)+parseInt(_0xb712ab(0x14e))/0xa+-parseInt(_0xb712ab(0x90))/0xb;if(_0x515a67===_0x7c4ab8)break;else _0xc1e7aa['push'](_0xc1e7aa['shift']());}catch(_0x4e4ba0){_0xc1e7aa['push'](_0xc1e7aa['shift']());}}}(a0_0x26fd,0x5a929));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_0x1f3199 from'fs/promises';import a0_0x43b453 from'path';import a0_0x234c11 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';function a0_0x26fd(){const _0x53407e=['225279NcOOzk','edit_file','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','mcp-filesystem','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','MORPH_WARP_GREP_TIMEOUT','changes','terminationReason','basename','list_directory\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','rerankScore','query','toISOString','Unknown\x20tool:\x20','--api-key=','metadata','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','linesRemoved','11941281oWBnsH','endLine','Max\x20results\x20to\x20return','morph-warp-grep-v1-1111v0','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.','ENOENT','FileReadError','access','morph-v3-fast','toLowerCase','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','error','-\x20Read\x20file\x20`','RipgrepNotAvailable','\x0a</file>','now','--help','default','completed','@morphllm/morphmcp\x20','-\x20Grepped\x20\x27','</file>','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','\x0a...\x20(truncated,\x20total:\x20','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','indexOf','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Parent\x20directory\x20does\x20not\x20exist:\x20','setRequestHandler','.git','resolve','length','object',',\x20modified\x20','source','\x20error(s)','log','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','terminated','1714188ncMzqD','\x20\x20\x20','TimeoutError','Fatal\x20error\x20running\x20server:','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','min','UnknownError','code','\x20results\x20in\x20','repo_path','targetDirectories','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','name','BinaryFile','19928LLebko','startLine','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','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','includes','\x20chars)','etimedout','homedir','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','morph-mcp','ENABLED_TOOLS','all','substring','PathError','every','results','grep','connect','GitHub\x20search\x20failed:\x20','roots','[warpgrep_github_search]\x20Done\x20in\x20','argv','stats','branch','Morph\x20Edit\x20Preview','Bearer\x20','https://morphllm.com/api/error-report','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','path','FileNotFound','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','data','text','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','isArray','code_edit','.\x20Path:\x20','github_url','limit','optional','join','finish','cwd','user','oninitialized','payload','[warpgrep_github_search]\x20Failed\x20in\x20','string','ToolException','success','.\x20Changes:\x20','Unknown\x20error','SubToolError','number','RipgrepError','Rules:\x0a','params','12rmEESD','timeout','stack','\x20(new\x20file)','Error\x20running\x20fast\x20context\x20search:\x20','\x20as\x20allowed\x20directory','searchTimeMs','realpath','GitHub\x20repository\x20URL\x20or\x20\x27owner/repo\x27\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27\x20or\x20\x27https://github.com/vercel/next.js\x27)','safeParse','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','added\x20','\x20\x20morph-mcp','inputSchema','slice','tsconfig.json','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','\x27\x20in\x20`','1044zTCSBl','match','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Enabled\x20tools:\x20','Benefits:\x0a','read','split','This\x20tool\x20invokes\x20a\x20subagent\x20that\x20runs\x20parallel\x20grep\x20and\x20readfile\x20calls\x20over\x20multiple\x20turns\x20to\x20locate\x20line\x20ranges\x20and\x20files\x20which\x20might\x20be\x20relevant\x20to\x20the\x20request.\x20','\x22>\x0aError\x20reading\x20file:\x20','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','ReadError','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','push','boolean','env','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','Invalid\x20arguments:\x20','467455iEFDOv','catch','instruction','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Failed\x20to\x20request\x20roots\x20from\x20client:','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Relevant\x20context\x20found:','go.mod','readFile','filepath','2ZtJMQD','errors','startsWith','exit','PWD','message','ms.\x20Success:\x20','dryRun','--version','search_string','0.2.0','constructor','repoId','filter','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','version','Applied','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','linesModified','2544165AgdnOf','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','getClientCapabilities','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','messages','\x20-\x20','commitHash','\x0aExamples:','2043630cvFttg','describe','timings','toFixed','warpgrep_codebase_search','ENABLE_WORKSPACE_MODE','\x20\x20\x20Lines\x20','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','../package.json','unknown','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','trim','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','For\x20deletions:\x0a','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','files','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','MORPH_API_URL','No\x20results\x20found\x20for\x20query:\x20\x22','\x0aOptions:','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','Found\x20','warpgrep_github_search','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','application/json','\x20for:\x20\x22','WORKSPACE_ROOT','4fLtZHf','pyproject.toml','has',',\x20removed\x20','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','Error:\x20','Search\x20failed:\x20','codebase_search','<file\x20path=\x22','content','-\x20Listed\x20directory\x20`','stat','Fallback:\x20Using\x20workspace\x20root\x20','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','sk-','Preview\x20changes\x20without\x20applying\x20them.','warn','timed\x20out','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Warning:\x20','lines','%\x20match)\x0a','.vscode','stringify','map','package.json','WarpGrepError','Warning:\x20Workspace\x20fallback\x20failed:\x20','sep','assistant','runWarpGrep_call','ms:','File\x20read\x20error:','grep\x20\x27','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Natural\x20language\x20query\x20to\x20search\x20for\x20code','Repository\x20identifier','\x20valid\x20directories','utf-8','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','ms:\x0a\x0a','Workspace\x20mode\x20enabled:\x20Using\x20','dirname','role','Error\x20accessing\x20directory\x20'];a0_0x26fd=function(){return _0x53407e;};return a0_0x26fd();}import{getValidRootDirectories}from'./roots-utils.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{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';import a0_0x31caeb from'axios';function fixPathRepetition(_0x1832c4){const _0x5a48c7=a0_0x2b2d,_0x4028fa=_0x1832c4[_0x5a48c7(0x11b)](a0_0x43b453[_0x5a48c7(0x189)])[_0x5a48c7(0x13f)](Boolean);if(_0x4028fa[_0x5a48c7(0xaf)]<0x2)return null;for(let _0x76a232=Math['floor'](_0x4028fa['length']/0x2);_0x76a232>=0x1;_0x76a232--){for(let _0x32c173=0x0;_0x32c173<=_0x4028fa[_0x5a48c7(0xaf)]-0x2*_0x76a232;_0x32c173++){const _0xefe60=_0x4028fa[_0x5a48c7(0x111)](_0x32c173,_0x32c173+_0x76a232),_0x1c3e54=_0x4028fa['slice'](_0x32c173+_0x76a232,_0x32c173+0x2*_0x76a232);if(_0xefe60[_0x5a48c7(0xd8)]((_0x4e4851,_0x3257b8)=>_0x4e4851===_0x1c3e54[_0x3257b8])){const _0x360370=[..._0x4028fa['slice'](0x0,_0x32c173),..._0x4028fa[_0x5a48c7(0x111)](_0x32c173+_0x76a232)];return a0_0x43b453[_0x5a48c7(0x189)]+_0x360370[_0x5a48c7(0xf2)](a0_0x43b453[_0x5a48c7(0x189)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x211718=a0_0x2b2d;try{const _0x418fb6=require(_0x211718(0x158));return _0x418fb6[_0x211718(0x141)]??_0x211718(0x159);}catch(_0x798712){return console['error'](_0x211718(0x15f),_0x798712),_0x211718(0x159);}}function a0_0x2b2d(_0x2d47d6,_0x4521b8){_0x2d47d6=_0x2d47d6-0x85;const _0x26fde2=a0_0x26fd();let _0x2b2dee=_0x26fde2[_0x2d47d6];return _0x2b2dee;}function printHelp(){const _0x71cbdd=a0_0x2b2d;console[_0x71cbdd(0xb4)](_0x71cbdd(0xa3)+getPackageVersion()),console['log'](_0x71cbdd(0x8e)),console[_0x71cbdd(0xb4)](_0x71cbdd(0x164)),console[_0x71cbdd(0xb4)](_0x71cbdd(0xd2)),console[_0x71cbdd(0xb4)](_0x71cbdd(0x9a)),console['log'](_0x71cbdd(0x15a)),console[_0x71cbdd(0xb4)](_0x71cbdd(0x14d)),console[_0x71cbdd(0xb4)](_0x71cbdd(0x10f)),console['log'](_0x71cbdd(0x120));}const cliArgs=process[a0_0x3a1ec5(0xdf)][a0_0x3a1ec5(0x111)](0x2),VERSION_FLAGS=new Set([a0_0x3a1ec5(0x13a),'-v','-V']),HELP_FLAGS=new Set([a0_0x3a1ec5(0xa0),'-h']);cliArgs['some'](_0x13b1ee=>VERSION_FLAGS[a0_0x3a1ec5(0x16e)](_0x13b1ee))&&(console['log'](a0_0x3a1ec5(0xa3)+getPackageVersion()),process[a0_0x3a1ec5(0x135)](0x0));cliArgs['some'](_0x1b62e8=>HELP_FLAGS[a0_0x3a1ec5(0x16e)](_0x1b62e8))&&(printHelp(),process[a0_0x3a1ec5(0x135)](0x0));function getCliArg(_0x4b2b3b){const _0x4152b7=a0_0x3a1ec5;for(let _0x8f1794=0x0;_0x8f1794<cliArgs[_0x4152b7(0xaf)];_0x8f1794++){const _0x350552=cliArgs[_0x8f1794];if(_0x350552['startsWith']('--'+_0x4b2b3b+'='))return _0x350552[_0x4152b7(0x111)](('--'+_0x4b2b3b+'=')[_0x4152b7(0xaf)]);if(_0x350552==='--'+_0x4b2b3b&&_0x8f1794+0x1<cliArgs[_0x4152b7(0xaf)])return cliArgs[_0x8f1794+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x3a1ec5(0xaf)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x3a1ec5(0x16e)](arg)||HELP_FLAGS[a0_0x3a1ec5(0x16e)](arg))continue;if(arg[a0_0x3a1ec5(0x134)](a0_0x3a1ec5(0x8c)))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x3a1ec5(0x121)](arg);}const ALL_TOOLS=[a0_0x3a1ec5(0x19d),a0_0x3a1ec5(0x152),a0_0x3a1ec5(0x167),a0_0x3a1ec5(0x173)],DEFAULT_TOOLS=[a0_0x3a1ec5(0x19d),a0_0x3a1ec5(0x152)],ENABLED_TOOLS=process[a0_0x3a1ec5(0x123)]['ENABLED_TOOLS']?process[a0_0x3a1ec5(0x123)]['ENABLED_TOOLS']===a0_0x3a1ec5(0xd5)?ALL_TOOLS:process[a0_0x3a1ec5(0x123)][a0_0x3a1ec5(0xd4)]['split'](',')[a0_0x3a1ec5(0x185)](_0x3ffc58=>_0x3ffc58[a0_0x3a1ec5(0x15b)]()):DEFAULT_TOOLS;console[a0_0x3a1ec5(0x9b)](a0_0x3a1ec5(0x118)+ENABLED_TOOLS[a0_0x3a1ec5(0xf2)](',\x20'));const WORKSPACE_ROOT=process['env'][a0_0x3a1ec5(0x16b)]||process['env'][a0_0x3a1ec5(0x136)]||process[a0_0x3a1ec5(0xf4)](),ENABLE_WORKSPACE_MODE=process[a0_0x3a1ec5(0x123)][a0_0x3a1ec5(0x153)]!=='false',MORPH_API_KEY=getCliArg('api-key')??process[a0_0x3a1ec5(0x123)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x3a1ec5(0x123)][a0_0x3a1ec5(0x162)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x3a1ec5(0x123)][a0_0x3a1ec5(0x1a1)]?parseInt(process[a0_0x3a1ec5(0x123)][a0_0x3a1ec5(0x1a1)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x3a1ec5(0x134)](a0_0x3a1ec5(0x17b))&&!MORPH_API_KEY['startsWith']('morph-')&&console[a0_0x3a1ec5(0x9b)](a0_0x3a1ec5(0x12b));async function reportMorphError(_0x1031d8){const _0x89900e=a0_0x3a1ec5;try{await a0_0x31caeb['post'](_0x89900e(0xe4),{..._0x1031d8,'timestamp':new Date()[_0x89900e(0x8a)](),'source':_0x1031d8[_0x89900e(0xb2)]||_0x89900e(0x19f)},{'timeout':0x1388,'headers':{'Content-Type':_0x89900e(0x169),'Authorization':_0x89900e(0xe3)+MORPH_API_KEY}});}catch{}}args[a0_0x3a1ec5(0xaf)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console['error'](a0_0x3a1ec5(0x15c)),console[a0_0x3a1ec5(0x9b)]('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),console[a0_0x3a1ec5(0x9b)](a0_0x3a1ec5(0x124)),console[a0_0x3a1ec5(0x9b)](a0_0x3a1ec5(0x17a)),console[a0_0x3a1ec5(0x9b)](a0_0x3a1ec5(0x161)),console[a0_0x3a1ec5(0x9b)](a0_0x3a1ec5(0xc5)));function normalizePath(_0x239590){return a0_0x43b453['normalize'](_0x239590);}function expandHome(_0x28653a){const _0x259bd2=a0_0x3a1ec5;if(_0x28653a[_0x259bd2(0x134)]('~/')||_0x28653a==='~')return a0_0x43b453[_0x259bd2(0xf2)](a0_0x234c11[_0x259bd2(0xd0)](),_0x28653a[_0x259bd2(0x111)](0x1));return _0x28653a;}let allowedDirectories=await Promise['all'](args[a0_0x3a1ec5(0x185)](async _0x3bf6ff=>{const _0x56ddf0=a0_0x3a1ec5,_0x241495=expandHome(_0x3bf6ff),_0x188035=a0_0x43b453['resolve'](_0x241495);try{const _0x117ca8=await a0_0x1f3199[_0x56ddf0(0x10a)](_0x188035);return normalizePath(_0x117ca8);}catch(_0x3f6170){return normalizePath(_0x188035);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x3a1ec5(0x121)](workspaceDir),console['error'](a0_0x3a1ec5(0x198)+workspaceDir+a0_0x3a1ec5(0x108)));}catch(a0_0x5a76c8){console[a0_0x3a1ec5(0x9b)]('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x5a76c8);}async function detectWorkspaceRoot(_0x229532){const _0x39bafd=a0_0x3a1ec5;let _0x587b8a=a0_0x43b453['resolve'](_0x229532);const _0x55e145=[_0x39bafd(0xad),_0x39bafd(0x183),_0x39bafd(0x186),'Cargo.toml',_0x39bafd(0x16d),_0x39bafd(0x12f),'.cursor',_0x39bafd(0x112),'composer.json'];while(_0x587b8a!==a0_0x43b453['dirname'](_0x587b8a)){for(const _0x21aaf6 of _0x55e145){const _0x559b26=a0_0x43b453[_0x39bafd(0xf2)](_0x587b8a,_0x21aaf6);try{return await a0_0x1f3199[_0x39bafd(0x97)](_0x559b26),normalizePath(_0x587b8a);}catch{}}_0x587b8a=a0_0x43b453[_0x39bafd(0x199)](_0x587b8a);}return normalizePath(_0x229532);}await Promise[a0_0x3a1ec5(0xd5)](args[a0_0x3a1ec5(0x185)](async _0x239423=>{const _0x29d7ad=a0_0x3a1ec5;try{const _0x46a098=await a0_0x1f3199[_0x29d7ad(0x177)](expandHome(_0x239423));!_0x46a098['isDirectory']()&&(console[_0x29d7ad(0x9b)](_0x29d7ad(0x171)+_0x239423+'\x20is\x20not\x20a\x20directory'),process['exit'](0x1));}catch(_0x3a004d){console[_0x29d7ad(0x9b)](_0x29d7ad(0x19b)+_0x239423+':',_0x3a004d),process[_0x29d7ad(0x135)](0x1);}}));async function validatePath(_0xf11971){const _0x5f10dc=a0_0x3a1ec5,_0x380b58=expandHome(_0xf11971),_0x2fe3b3=a0_0x43b453[_0x5f10dc(0xae)](_0x380b58);try{const _0x34255c=await a0_0x1f3199[_0x5f10dc(0x10a)](_0x2fe3b3);return _0x34255c;}catch(_0x278951){if(_0x278951[_0x5f10dc(0xbf)]===_0x5f10dc(0x95)){const _0x3e0ec4=a0_0x43b453[_0x5f10dc(0x199)](_0x2fe3b3);try{const _0x6c40f3=await a0_0x1f3199[_0x5f10dc(0x10a)](_0x3e0ec4);return a0_0x43b453['join'](_0x6c40f3,a0_0x43b453[_0x5f10dc(0x85)](_0x2fe3b3));}catch{throw new Error(_0x5f10dc(0xab)+_0x3e0ec4);}}throw _0x278951;}}const MorphEditFileArgsSchema=z[a0_0x3a1ec5(0xb0)]({'path':z[a0_0x3a1ec5(0xf9)](),'code_edit':z['string']()[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0x113)),'instruction':z[a0_0x3a1ec5(0xf9)]()[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0xa8)),'dryRun':z[a0_0x3a1ec5(0x122)]()[a0_0x3a1ec5(0xa1)](![])[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0x17c))}),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x3a1ec5(0xf9)]()['describe'](a0_0x3a1ec5(0xc3)),'repo_path':z['string']()[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0xcc))}),WarpGrepGitHubArgsSchema=z[a0_0x3a1ec5(0xb0)]({'search_string':z['string']()['describe']('Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for'),'github_url':z[a0_0x3a1ec5(0xf9)]()[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0x10b)),'branch':z[a0_0x3a1ec5(0xf9)]()[a0_0x3a1ec5(0xf1)]()[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0x12a))}),CodebaseSearchArgsSchema=z[a0_0x3a1ec5(0xb0)]({'query':z[a0_0x3a1ec5(0xf9)]()['describe'](a0_0x3a1ec5(0x192)),'repoId':z[a0_0x3a1ec5(0xf9)]()[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0x193)),'branch':z['string']()[a0_0x3a1ec5(0xf1)]()['describe'](a0_0x3a1ec5(0x168)),'commitHash':z[a0_0x3a1ec5(0xf9)]()[a0_0x3a1ec5(0xf1)]()['describe']('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z['array'](z[a0_0x3a1ec5(0xf9)]())[a0_0x3a1ec5(0xa1)]([])[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0x11e)),'limit':z[a0_0x3a1ec5(0xff)]()['optional']()[a0_0x3a1ec5(0xa1)](0xa)[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0x92))}),server=new Server({'name':a0_0x3a1ec5(0xd3),'version':a0_0x3a1ec5(0x13c)},{'capabilities':{'tools':{}}});server[a0_0x3a1ec5(0xac)](ListToolsRequestSchema,async()=>{const _0x38a727=a0_0x3a1ec5,_0x571e8a=[{'name':_0x38a727(0x19d),'description':_0x38a727(0x179)+_0x38a727(0x149)+_0x38a727(0x156)+_0x38a727(0x190)+_0x38a727(0x119)+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x38a727(0x140)+_0x38a727(0x191)+_0x38a727(0x143)+_0x38a727(0x170)+_0x38a727(0x125)+_0x38a727(0xe8)+_0x38a727(0x15d)+_0x38a727(0x165)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x38a727(0x101)+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+_0x38a727(0x146)+_0x38a727(0x17f)+'-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a'+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+_0x38a727(0xbc)+_0x38a727(0x10d),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':'warpgrep_codebase_search','description':_0x38a727(0x155)+_0x38a727(0x11c)+'The\x20search\x20term\x20should\x20be\x20a\x20targeted\x20natural\x20language\x20query\x20based\x20on\x20what\x20you\x20are\x20trying\x20to\x20accomplish,\x20like\x20\x27Find\x20where\x20authentication\x20requests\x20are\x20handled\x20in\x20the\x20Express\x20routes\x27\x20or\x20\x27Modify\x20the\x20agentic\x20rollout\x20to\x20use\x20the\x20new\x20tokenizer\x20and\x20chat\x20template\x27\x20or\x20\x27Fix\x20the\x20bug\x20where\x20the\x20user\x20gets\x20redirected\x20from\x20the\x20/feed\x20page\x27.\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20'+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.'+'Note:\x20The\x20files\x20and\x20line\x20ranges\x20returned\x20by\x20this\x20tool\x20may\x20be\x20some\x20of\x20the\x20ones\x20needed\x20to\x20complete\x20the\x20user\x27s\x20request,\x20but\x20you\x20should\x20be\x20careful\x20in\x20evaluating\x20the\x20relevance\x20of\x20the\x20results,\x20since\x20the\x20subagent\x20might\x20make\x20mistakes.\x20'+_0x38a727(0x19e)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':_0x38a727(0x173),'description':_0x38a727(0xbb)+'⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a'+_0x38a727(0x148)+_0x38a727(0x119)+_0x38a727(0xc4)+_0x38a727(0x1a0)+_0x38a727(0xa6)+_0x38a727(0xc6)+_0x38a727(0x18f)+_0x38a727(0x196)+_0x38a727(0xb5),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x18dfa6=_0x571e8a[_0x38a727(0x13f)](_0x85cc6a=>{const _0x538b1a=_0x38a727;if(!ENABLED_TOOLS[_0x538b1a(0xcd)](_0x85cc6a[_0x538b1a(0xc7)]))return![];if('requiresApiKey'in _0x85cc6a&&_0x85cc6a['requiresApiKey']&&!MORPH_API_KEY)return console[_0x538b1a(0x9b)]('Warning:\x20'+_0x85cc6a['name']+_0x538b1a(0xeb)),![];return!![];});return{'tools':_0x18dfa6[_0x38a727(0x185)](_0x4e75df=>({'name':_0x4e75df['name'],'description':_0x4e75df['description'],'inputSchema':_0x4e75df[_0x38a727(0x110)]}))};}),server[a0_0x3a1ec5(0xac)](CallToolRequestSchema,async _0x5c7384=>{const _0x4e6dd6=a0_0x3a1ec5;try{const {name:_0x24e3c8,arguments:_0x1d4119}=_0x5c7384[_0x4e6dd6(0x102)];switch(_0x24e3c8){case _0x4e6dd6(0x19d):{const _0x6b7472=MorphEditFileArgsSchema[_0x4e6dd6(0x10c)](_0x1d4119);if(!_0x6b7472[_0x4e6dd6(0xfb)])throw new Error(_0x4e6dd6(0xe5)+_0x6b7472[_0x4e6dd6(0x9b)]);const _0x2bd5d3=await validatePath(_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0xe6)]);let _0x6b3308=null,_0x443714=!![],_0x311f4b=null;try{_0x6b3308=await a0_0x1f3199[_0x4e6dd6(0x130)](_0x2bd5d3,_0x4e6dd6(0x195));}catch(_0x4f17ea){const _0x23d76a=_0x4f17ea[_0x4e6dd6(0xbf)];_0x23d76a===_0x4e6dd6(0x95)?(_0x443714=![],_0x6b3308=''):(_0x311f4b='Failed\x20to\x20read\x20file:\x20'+(_0x23d76a||_0x4e6dd6(0x159))+_0x4e6dd6(0x14b)+(_0x4f17ea instanceof Error?_0x4f17ea[_0x4e6dd6(0x137)]:String(_0x4f17ea)),console['error'](_0x4e6dd6(0x180)+_0x311f4b));}let _0x29ccda;try{const _0x497cd0=MORPH_API_KEY;if(!_0x497cd0)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x5db368=a0_0x43b453[_0x4e6dd6(0x199)](_0x2bd5d3),_0xd638b1=a0_0x43b453['basename'](_0x2bd5d3),_0x446dc0=await executeEditFile({'target_filepath':_0xd638b1,'code_edit':_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0xed)],'instructions':_0x6b7472['data'][_0x4e6dd6(0x129)]},{'morphApiKey':_0x497cd0,'morphApiUrl':MORPH_API_URL,'baseDir':_0x5db368,'autoWrite':!_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0x139)],'generateUdiff':![],'debug':![]});_0x29ccda=_0x446dc0['completionId'];if(!_0x446dc0[_0x4e6dd6(0xfb)])throw new Error(_0x446dc0[_0x4e6dd6(0x9b)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x1823ec=_0x446dc0[_0x4e6dd6(0x1a2)],_0x15bad7=_0x4e6dd6(0x10e)+_0x1823ec['linesAdded']+_0x4e6dd6(0x16f)+_0x1823ec[_0x4e6dd6(0x8f)]+_0x4e6dd6(0xb1)+_0x1823ec[_0x4e6dd6(0x144)];if(_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0x139)])return{'content':[{'type':_0x4e6dd6(0xea),'text':_0x4e6dd6(0xe2)+(_0x443714?'':_0x4e6dd6(0x106))+':\x20'+_0x6b7472['data'][_0x4e6dd6(0x129)]+'.\x20Changes:\x20'+_0x15bad7+'.\x20Path:\x20'+_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0xe6)]+'.'}]};return{'content':[{'type':_0x4e6dd6(0xea),'text':'Morph\x20Edit\x20'+(_0x443714?_0x4e6dd6(0x142):'Created\x20File')+':\x20'+_0x6b7472['data'][_0x4e6dd6(0x129)]+_0x4e6dd6(0xfc)+_0x15bad7+_0x4e6dd6(0xee)+_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0xe6)]+'.'}]};}catch(_0x360f30){const _0x207030=_0x360f30 instanceof Error?_0x360f30[_0x4e6dd6(0x137)]:String(_0x360f30);return reportMorphError({'error_message':_0x207030,'error_type':_0x360f30 instanceof Error?_0x360f30['constructor']['name']:_0x4e6dd6(0xbe),'context':{'tool':_0x4e6dd6(0x19d),'completion_id':_0x29ccda,'file_path':_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0xe6)],'validated_path':_0x2bd5d3,'instruction':_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0x129)],'model':_0x4e6dd6(0x98),'dry_run':_0x6b7472['data'][_0x4e6dd6(0x139)],'file_exists':_0x443714,'file_read_error':_0x311f4b,'file_readable':_0x6b3308!==null,'request_content':{'path':_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0xe6)],'code_edit':_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0xed)],'instruction':_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0x129)],'original_code':_0x6b3308!==null?_0x6b3308[_0x4e6dd6(0xaf)]>0xc350?_0x6b3308['substring'](0x0,0xc350)+_0x4e6dd6(0xa7)+_0x6b3308[_0x4e6dd6(0xaf)]+_0x4e6dd6(0xce):_0x6b3308:'[could\x20not\x20read\x20file:\x20'+(_0x311f4b||'unknown\x20error')+']','original_code_length':_0x6b3308?.['length']??0x0,'model':_0x4e6dd6(0x98),'dry_run':_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0x139)]}},'stack_trace':_0x360f30 instanceof Error?_0x360f30[_0x4e6dd6(0x105)]:undefined,'source':_0x4e6dd6(0x19f)})['catch'](()=>{}),{'content':[{'type':_0x4e6dd6(0xea),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x207030}],'isError':!![]};}}case _0x4e6dd6(0x152):{const _0x429ab7=WarpGrepArgsSchema[_0x4e6dd6(0x10c)](_0x1d4119);if(!_0x429ab7[_0x4e6dd6(0xfb)])return{'content':[{'type':_0x4e6dd6(0xea),'text':'Invalid\x20arguments:\x20'+_0x429ab7['error']}],'isError':!![]};const _0x488806=_0xa1245d=>{const _0x1c5760=_0x4e6dd6,_0x74cb30=[];for(const _0x1102f7 of _0xa1245d||[]){const _0x15bf1b=_0x1102f7[_0x1c5760(0x19a)],_0x830479=_0x1102f7[_0x1c5760(0x175)];if(_0x15bf1b===_0x1c5760(0x18a)&&_0x830479){const _0x443134=_0x830479['split']('\x0a')['filter'](_0x403d97=>_0x403d97[_0x1c5760(0x15b)]());for(const _0x3f112f of _0x443134){const _0x3fd58f=_0x3f112f[_0x1c5760(0x116)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x3fd58f){_0x74cb30['push'](_0x1c5760(0x18e)+_0x3fd58f[0x1]+'\x27\x20'+_0x3fd58f[0x2]);continue;}const _0x485ce7=_0x3f112f[_0x1c5760(0x116)](/^read\s+(.+)$/);if(_0x485ce7){_0x74cb30[_0x1c5760(0x121)]('read\x20'+_0x485ce7[0x1]);continue;}const _0x579bfe=_0x3f112f['match'](/^list_directory\s+(.+)$/);if(_0x579bfe){_0x74cb30[_0x1c5760(0x121)](_0x1c5760(0x86)+_0x579bfe[0x1]);continue;}}}}return _0x74cb30;},_0x2dfbec=_0x237bc9=>{const _0x23ad93=_0x4e6dd6,_0x37b582=[];if(!_0x237bc9||!Array[_0x23ad93(0xec)](_0x237bc9))return _0x37b582;const _0x1f9d79=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x23ad93(0xe7),'tool':_0x23ad93(0x11a)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x23ad93(0xd7),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x23ad93(0x11f),'tool':_0x23ad93(0x11a)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x23ad93(0xc8),'tool':_0x23ad93(0x11a)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x23ad93(0x100),'tool':_0x23ad93(0xda)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x23ad93(0x9d),'tool':_0x23ad93(0xda)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x23ad93(0xc8),'tool':_0x23ad93(0x11a)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x23ad93(0x11a)},{'pattern':/not a text file/,'error_type':_0x23ad93(0xc8),'tool':_0x23ad93(0x11a)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x23ad93(0x11a)},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x23ad93(0x11a)},{'pattern':/status="error"/,'error_type':_0x23ad93(0xfa),'tool':_0x23ad93(0x159)}];let _0xd61132=0x0;for(const _0x37cc08 of _0x237bc9){if(_0x37cc08[_0x23ad93(0x19a)]===_0x23ad93(0xf5)){_0xd61132++;const _0xc058f0=_0x37cc08[_0x23ad93(0x175)];if(!_0xc058f0||typeof _0xc058f0!=='string')continue;for(const {pattern:_0x39f10d,error_type:_0x1193fd,tool:_0x463f73}of _0x1f9d79){const _0x3637d2=_0xc058f0[_0x23ad93(0x116)](new RegExp(_0x39f10d[_0x23ad93(0xb2)],'g'));if(_0x3637d2)for(const _0x1c801d of _0x3637d2){const _0x3e31a4=_0xc058f0[_0x23ad93(0xa9)](_0x1c801d),_0x1d3595=_0xc058f0[_0x23ad93(0xd6)](_0x3e31a4,Math[_0x23ad93(0xbd)](_0x3e31a4+0xc8,_0xc058f0[_0x23ad93(0xaf)]));_0x37b582[_0x23ad93(0x121)]({'tool':_0x463f73,'error_type':_0x1193fd,'error_message':_0x1d3595['split']('\x0a')[0x0],'turn':_0xd61132});}}}}return _0x37b582;};try{const _0x11d593=a0_0x43b453['resolve'](_0x429ab7[_0x4e6dd6(0xe9)][_0x4e6dd6(0xc1)]),_0x5c705c=new LocalRipgrepProvider(_0x11d593),_0x20f6ab=await runWarpGrep({'query':_0x429ab7['data'][_0x4e6dd6(0x13b)],'repoRoot':_0x11d593,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x5c705c}),_0x11dee1=_0x2dfbec(_0x20f6ab['messages']);_0x11dee1[_0x4e6dd6(0xaf)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x11dee1['length']+_0x4e6dd6(0xb3),'error_type':_0x4e6dd6(0xfe),'level':_0x4e6dd6(0x17d),'tool':_0x4e6dd6(0x152),'context':{'repo_path':_0x429ab7[_0x4e6dd6(0xe9)]['repo_path'],'query':_0x429ab7[_0x4e6dd6(0xe9)]['search_string'],'model':_0x4e6dd6(0x93),'termination_reason':_0x20f6ab[_0x4e6dd6(0x1a3)],'sub_tool_errors':_0x11dee1,'timings':_0x20f6ab[_0x4e6dd6(0x150)],'tool_calls':_0x488806(_0x20f6ab['messages']),'messages':_0x20f6ab[_0x4e6dd6(0x14a)]?.[_0x4e6dd6(0x185)](_0x168c8f=>({'role':_0x168c8f[_0x4e6dd6(0x19a)],'content':_0x168c8f[_0x4e6dd6(0x175)]}))},'source':_0x4e6dd6(0x19f)})[_0x4e6dd6(0x128)](()=>{});let _0x54d9e9='';if(_0x20f6ab[_0x4e6dd6(0x1a3)]===_0x4e6dd6(0xa2)&&_0x20f6ab[_0x4e6dd6(0xf3)]?.['metadata']?.[_0x4e6dd6(0x160)]){const _0x2c606d=_0x20f6ab['finish'][_0x4e6dd6(0x8d)][_0x4e6dd6(0x160)];if(_0x2c606d['length']===0x0)return _0x54d9e9=_0x20f6ab['finish'][_0x4e6dd6(0xf7)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x4e6dd6(0xea),'text':_0x54d9e9}]};const _0x4024c6=[],_0x2d76e6=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x5309e7 of _0x20f6ab[_0x4e6dd6(0x14a)]){const _0x3b8757=_0x5309e7[_0x4e6dd6(0x19a)],_0x213f9a=_0x5309e7[_0x4e6dd6(0x175)];if(_0x3b8757==='assistant'&&_0x213f9a){const _0x4aa24c=_0x213f9a[_0x4e6dd6(0x11b)]('\x0a')['filter'](_0x56ad4a=>_0x56ad4a['trim']());for(const _0x3f0cd2 of _0x4aa24c){const _0x544ee3=_0x3f0cd2[_0x4e6dd6(0x116)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x544ee3){_0x2d76e6[_0x4e6dd6(0x121)](_0x4e6dd6(0xa4)+_0x544ee3[0x1]+_0x4e6dd6(0x114)+_0x544ee3[0x2]+'`');continue;}const _0x591cc4=_0x3f0cd2[_0x4e6dd6(0x116)](/^read\s+(.+)$/);if(_0x591cc4){_0x2d76e6[_0x4e6dd6(0x121)](_0x4e6dd6(0x9c)+_0x591cc4[0x1]+'`');continue;}const _0x28d383=_0x3f0cd2[_0x4e6dd6(0x116)](/^list_directory\s+(.+)$/);if(_0x28d383){_0x2d76e6[_0x4e6dd6(0x121)](_0x4e6dd6(0x176)+_0x28d383[0x1]+'`');continue;}}}}_0x4024c6[_0x4e6dd6(0x121)](_0x2d76e6[_0x4e6dd6(0xf2)]('\x0a'));const _0x4e2458=['',_0x4e6dd6(0x12e)];for(const _0x5d34f7 of _0x2c606d){if(_0x5d34f7['lines']==='*')_0x4e2458[_0x4e6dd6(0x121)]('-\x20'+_0x5d34f7[_0x4e6dd6(0xe6)]+':*');else{if(Array[_0x4e6dd6(0xec)](_0x5d34f7[_0x4e6dd6(0x181)])){const _0x52179d=_0x5d34f7[_0x4e6dd6(0x181)][_0x4e6dd6(0x185)](([_0xd99b36,_0x169a09])=>{if(_0xd99b36===_0x169a09)return''+_0xd99b36;return _0xd99b36+'-'+_0x169a09;});_0x4e2458[_0x4e6dd6(0x121)]('-\x20'+_0x5d34f7['path']+':'+_0x52179d[_0x4e6dd6(0xf2)](','));}else _0x4e2458[_0x4e6dd6(0x121)]('-\x20'+_0x5d34f7[_0x4e6dd6(0xe6)]+':*');}}_0x4e2458[_0x4e6dd6(0x121)](''),_0x4024c6[_0x4e6dd6(0x121)](_0x4e2458[_0x4e6dd6(0xf2)]('\x0a')),_0x4024c6[_0x4e6dd6(0x121)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x1c77e7=[];for(const _0x4634a5 of _0x2c606d){let _0x2a5bf8=a0_0x43b453[_0x4e6dd6(0xae)](_0x429ab7['data']['repo_path'],_0x4634a5[_0x4e6dd6(0xe6)]),_0x1e9aa3=null,_0x3c1772=null;try{_0x1e9aa3=await a0_0x1f3199['readFile'](_0x2a5bf8,{'encoding':'utf-8'});}catch(_0x1b07b7){const _0x1003e1=fixPathRepetition(_0x2a5bf8);if(_0x1003e1)try{_0x1e9aa3=await a0_0x1f3199['readFile'](_0x1003e1,{'encoding':'utf-8'}),_0x2a5bf8=_0x1003e1;}catch{_0x3c1772=_0x1b07b7 instanceof Error?_0x1b07b7:new Error(String(_0x1b07b7));}else _0x3c1772=_0x1b07b7 instanceof Error?_0x1b07b7:new Error(String(_0x1b07b7));}if(_0x1e9aa3!==null){const _0x46cc48=_0x1e9aa3[_0x4e6dd6(0x11b)](/\r?\n/),_0x1a6dbc=['<file\x20path=\x22'+_0x4634a5['path']+'\x22>'];if(_0x4634a5['lines']==='*'||!Array[_0x4e6dd6(0xec)](_0x4634a5['lines']))for(let _0x4865a3=0x1;_0x4865a3<=_0x46cc48[_0x4e6dd6(0xaf)];_0x4865a3++){const _0x28b730=_0x46cc48[_0x4865a3-0x1];_0x1a6dbc[_0x4e6dd6(0x121)](_0x4865a3+'|\x20'+_0x28b730);}else for(const [_0x35dbad,_0x4320ee]of _0x4634a5[_0x4e6dd6(0x181)]){_0x1a6dbc[_0x4e6dd6(0xaf)]>0x1&&_0x1a6dbc[_0x4e6dd6(0x121)]('');for(let _0x229ba9=_0x35dbad;_0x229ba9<=_0x4320ee&&_0x229ba9<=_0x46cc48[_0x4e6dd6(0xaf)];_0x229ba9++){const _0x5831e6=_0x46cc48[_0x229ba9-0x1];_0x1a6dbc[_0x4e6dd6(0x121)](_0x229ba9+'|\x20'+_0x5831e6);}}_0x1a6dbc[_0x4e6dd6(0x121)](_0x4e6dd6(0xa5)),_0x1c77e7[_0x4e6dd6(0x121)](_0x1a6dbc[_0x4e6dd6(0xf2)]('\x0a'));}else _0x1c77e7[_0x4e6dd6(0x121)](_0x4e6dd6(0x174)+_0x4634a5['path']+_0x4e6dd6(0x11d)+(_0x3c1772?.[_0x4e6dd6(0x137)]||_0x4e6dd6(0xfd))+_0x4e6dd6(0x9e));}_0x4024c6[_0x4e6dd6(0x121)](_0x1c77e7[_0x4e6dd6(0xf2)]('\x0a\x0a')),_0x54d9e9=_0x4024c6['join']('\x0a');const _0x5ec156=_0x20f6ab[_0x4e6dd6(0x133)]?.[_0x4e6dd6(0x13f)](_0x2fd5c6=>_0x2fd5c6[_0x4e6dd6(0x137)]?.[_0x4e6dd6(0x134)](_0x4e6dd6(0x18d)))||[];if(_0x5ec156[_0x4e6dd6(0xaf)]>0x0){const _0x57368d=_0x5ec156[_0x4e6dd6(0x185)](_0x44ef28=>_0x44ef28[_0x4e6dd6(0x137)])[_0x4e6dd6(0xf2)](';\x20');reportMorphError({'error_message':_0x57368d,'error_type':_0x4e6dd6(0x96),'context':{'tool':_0x4e6dd6(0x152),'repo_path':_0x429ab7[_0x4e6dd6(0xe9)][_0x4e6dd6(0xc1)],'query':_0x429ab7[_0x4e6dd6(0xe9)][_0x4e6dd6(0x13b)],'model':_0x4e6dd6(0x93),'termination_reason':'completed_with_file_errors','error_count':_0x5ec156[_0x4e6dd6(0xaf)],'is_timeout':![],'timings':_0x20f6ab[_0x4e6dd6(0x150)],'files_attempted':_0x2c606d[_0x4e6dd6(0x185)](_0x35f3ed=>({'path':_0x35f3ed[_0x4e6dd6(0xe6)],'lines':_0x35f3ed[_0x4e6dd6(0x181)]})),'tool_calls':_0x488806(_0x20f6ab['messages']),'messages':_0x20f6ab[_0x4e6dd6(0x14a)]?.[_0x4e6dd6(0x185)](_0x2696f1=>({'role':_0x2696f1[_0x4e6dd6(0x19a)],'content':_0x2696f1[_0x4e6dd6(0x175)]})),'request_content':{'query':_0x429ab7[_0x4e6dd6(0xe9)][_0x4e6dd6(0x13b)],'repo_path':_0x429ab7[_0x4e6dd6(0xe9)][_0x4e6dd6(0xc1)],'repoRoot':a0_0x43b453['resolve'](_0x429ab7['data'][_0x4e6dd6(0xc1)]),'model':'morph-warp-grep-v1-1111v0'}},'source':_0x4e6dd6(0x19f)})[_0x4e6dd6(0x128)](()=>{});}}else{if(_0x20f6ab['terminationReason']===_0x4e6dd6(0xb6)&&_0x20f6ab[_0x4e6dd6(0x133)][_0x4e6dd6(0xaf)]>0x0){const _0x222d6a=_0x20f6ab[_0x4e6dd6(0x133)][_0x4e6dd6(0x185)](_0x5b8bf0=>_0x5b8bf0['message'])[_0x4e6dd6(0xf2)](';\x20');_0x54d9e9=_0x4e6dd6(0x171)+_0x222d6a;const _0x1f19dd=_0x222d6a[_0x4e6dd6(0x99)]()[_0x4e6dd6(0xcd)](_0x4e6dd6(0x104))||_0x222d6a[_0x4e6dd6(0x99)]()[_0x4e6dd6(0xcd)](_0x4e6dd6(0x17e))||_0x222d6a[_0x4e6dd6(0x99)]()[_0x4e6dd6(0xcd)](_0x4e6dd6(0xcf)),_0x42e161=_0x20f6ab[_0x4e6dd6(0xf3)]?.[_0x4e6dd6(0x8d)]?.['files'],_0x9c03f9=_0x20f6ab['errors'][0x0];reportMorphError({'error_message':_0x222d6a,'error_type':_0x1f19dd?_0x4e6dd6(0xb9):_0x9c03f9?.['constructor']?.[_0x4e6dd6(0xc7)]||_0x4e6dd6(0x187),'context':{'tool':_0x4e6dd6(0x152),'repo_path':_0x429ab7[_0x4e6dd6(0xe9)][_0x4e6dd6(0xc1)],'query':_0x429ab7[_0x4e6dd6(0xe9)][_0x4e6dd6(0x13b)],'model':_0x4e6dd6(0x93),'termination_reason':_0x20f6ab['terminationReason'],'error_count':_0x20f6ab[_0x4e6dd6(0x133)]['length'],'is_timeout':_0x1f19dd,'timings':_0x20f6ab[_0x4e6dd6(0x150)],'files_attempted':_0x42e161?.[_0x4e6dd6(0x185)](_0x476c5a=>({'path':_0x476c5a['path'],'lines':_0x476c5a[_0x4e6dd6(0x181)]})),'tool_calls':_0x488806(_0x20f6ab[_0x4e6dd6(0x14a)]),'messages':_0x20f6ab[_0x4e6dd6(0x14a)]?.[_0x4e6dd6(0x185)](_0x248596=>({'role':_0x248596[_0x4e6dd6(0x19a)],'content':_0x248596[_0x4e6dd6(0x175)]})),'request_content':{'query':_0x429ab7[_0x4e6dd6(0xe9)][_0x4e6dd6(0x13b)],'repo_path':_0x429ab7['data'][_0x4e6dd6(0xc1)],'repoRoot':a0_0x43b453['resolve'](_0x429ab7['data'][_0x4e6dd6(0xc1)]),'model':_0x4e6dd6(0x93)}},'stack_trace':_0x9c03f9?.[_0x4e6dd6(0x105)]||undefined,'source':_0x4e6dd6(0x19f)})[_0x4e6dd6(0x128)](()=>{});}else _0x54d9e9=_0x4e6dd6(0xcb);}return{'content':[{'type':_0x4e6dd6(0xea),'text':_0x54d9e9}]};}catch(_0x468569){const _0x390948=_0x468569 instanceof Error?_0x468569['message']:String(_0x468569),_0x22dc29=_0x390948['toLowerCase']()[_0x4e6dd6(0xcd)](_0x4e6dd6(0x104))||_0x390948[_0x4e6dd6(0x99)]()['includes'](_0x4e6dd6(0x17e))||_0x390948['toLowerCase']()[_0x4e6dd6(0xcd)](_0x4e6dd6(0xcf))||_0x468569 instanceof Error&&_0x468569[_0x4e6dd6(0xc7)]===_0x4e6dd6(0xb9);return reportMorphError({'error_message':_0x390948,'error_type':_0x22dc29?_0x4e6dd6(0xb9):_0x468569 instanceof Error?_0x468569['constructor']['name']:_0x4e6dd6(0xbe),'context':{'tool':'warpgrep_codebase_search','repo_path':_0x429ab7['data'][_0x4e6dd6(0xc1)],'query':_0x429ab7[_0x4e6dd6(0xe9)]['search_string'],'model':_0x4e6dd6(0x93),'is_timeout':_0x22dc29,'exception_phase':_0x4e6dd6(0x18b),'request_content':{'query':_0x429ab7[_0x4e6dd6(0xe9)]['search_string'],'repo_path':_0x429ab7['data']['repo_path'],'repoRoot':a0_0x43b453[_0x4e6dd6(0xae)](_0x429ab7['data'][_0x4e6dd6(0xc1)]),'model':_0x4e6dd6(0x93)}},'stack_trace':_0x468569 instanceof Error?_0x468569[_0x4e6dd6(0x105)]:undefined,'source':_0x4e6dd6(0x19f)})['catch'](()=>{}),{'content':[{'type':_0x4e6dd6(0xea),'text':_0x4e6dd6(0x107)+_0x390948}],'isError':![]};}}case _0x4e6dd6(0x167):{const _0x2f3f73=WarpGrepGitHubArgsSchema[_0x4e6dd6(0x10c)](_0x1d4119);if(!_0x2f3f73[_0x4e6dd6(0xfb)])return{'content':[{'type':'text','text':_0x4e6dd6(0x126)+_0x2f3f73[_0x4e6dd6(0x9b)]}],'isError':!![]};const _0x2ec53c=MORPH_API_KEY;if(!_0x2ec53c)throw new Error(_0x4e6dd6(0x12d));const _0x5efe6e=Date[_0x4e6dd6(0x9f)]();console['error']('[warpgrep_github_search]\x20Searching\x20'+_0x2f3f73[_0x4e6dd6(0xe9)][_0x4e6dd6(0xef)]+_0x4e6dd6(0x16a)+_0x2f3f73[_0x4e6dd6(0xe9)][_0x4e6dd6(0x13b)]+'\x22');try{const _0x41164b=new WarpGrepClient({'morphApiKey':_0x2ec53c,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x3b3c43=await _0x41164b['searchGitHub']({'query':_0x2f3f73[_0x4e6dd6(0xe9)][_0x4e6dd6(0x13b)],'github':_0x2f3f73['data'][_0x4e6dd6(0xef)],'branch':_0x2f3f73[_0x4e6dd6(0xe9)][_0x4e6dd6(0xe1)]}),_0x23d3d6=Date[_0x4e6dd6(0x9f)]()-_0x5efe6e;console[_0x4e6dd6(0x9b)](_0x4e6dd6(0xde)+_0x23d3d6+_0x4e6dd6(0x138)+_0x3b3c43[_0x4e6dd6(0xfb)]);const _0x53a99d=formatResult(_0x3b3c43);return{'content':[{'type':'text','text':_0x53a99d}]};}catch(_0x4b58c2){const _0x55d222=Date[_0x4e6dd6(0x9f)]()-_0x5efe6e,_0x234974=_0x4b58c2 instanceof Error?_0x4b58c2[_0x4e6dd6(0x137)]:String(_0x4b58c2);return console[_0x4e6dd6(0x9b)](_0x4e6dd6(0xf8)+_0x55d222+_0x4e6dd6(0x18c),_0x234974),reportMorphError({'error_message':_0x234974,'error_type':_0x4b58c2 instanceof Error?_0x4b58c2[_0x4e6dd6(0x13d)][_0x4e6dd6(0xc7)]:'UnknownError','context':{'tool':'warpgrep_github_search','github_url':_0x2f3f73[_0x4e6dd6(0xe9)][_0x4e6dd6(0xef)],'search_string':_0x2f3f73[_0x4e6dd6(0xe9)][_0x4e6dd6(0x13b)],'branch':_0x2f3f73[_0x4e6dd6(0xe9)][_0x4e6dd6(0xe1)]},'stack_trace':_0x4b58c2 instanceof Error?_0x4b58c2[_0x4e6dd6(0x105)]:undefined,'source':_0x4e6dd6(0x19f),'tool':_0x4e6dd6(0x167),'latency_ms':_0x55d222})[_0x4e6dd6(0x128)](()=>{}),{'content':[{'type':'text','text':_0x4e6dd6(0xdc)+_0x234974}],'isError':![]};}}case'codebase_search':{const _0x36d8fd=CodebaseSearchArgsSchema[_0x4e6dd6(0x10c)](_0x1d4119);if(!_0x36d8fd[_0x4e6dd6(0xfb)])return{'content':[{'type':_0x4e6dd6(0xea),'text':_0x4e6dd6(0x126)+_0x36d8fd['error']}],'isError':!![]};try{const _0x30d4f0=MORPH_API_KEY;if(!_0x30d4f0)throw new Error(_0x4e6dd6(0x15e));const _0x18d7d9=_0x36d8fd[_0x4e6dd6(0xe9)][_0x4e6dd6(0xc2)],_0x34c030=await executeCodebaseSearch({'query':_0x36d8fd['data']['query'],'target_directories':_0x18d7d9,'limit':_0x36d8fd[_0x4e6dd6(0xe9)][_0x4e6dd6(0xf0)]},{'apiKey':_0x30d4f0,'repoId':_0x36d8fd[_0x4e6dd6(0xe9)][_0x4e6dd6(0x13e)],'branch':_0x36d8fd[_0x4e6dd6(0xe9)][_0x4e6dd6(0xe1)],'commitHash':_0x36d8fd[_0x4e6dd6(0xe9)][_0x4e6dd6(0x14c)],'debug':![]});if(!_0x34c030[_0x4e6dd6(0xfb)])return{'content':[{'type':_0x4e6dd6(0xea),'text':_0x4e6dd6(0x172)+_0x34c030['error']}],'isError':!![]};const _0x1ed2fe=_0x34c030['results']['length']===0x0?_0x4e6dd6(0x163)+_0x36d8fd['data'][_0x4e6dd6(0x89)]+'\x22':_0x4e6dd6(0x166)+_0x34c030[_0x4e6dd6(0xd9)]['length']+_0x4e6dd6(0xc0)+_0x34c030[_0x4e6dd6(0xe0)][_0x4e6dd6(0x109)]+_0x4e6dd6(0x197)+_0x34c030['results'][_0x4e6dd6(0x185)]((_0x257e69,_0x4ccf27)=>_0x4ccf27+0x1+'.\x20'+_0x257e69[_0x4e6dd6(0x131)]+'\x20('+(_0x257e69[_0x4e6dd6(0x88)]*0x64)[_0x4e6dd6(0x151)](0x1)+_0x4e6dd6(0x182)+(_0x4e6dd6(0x154)+_0x257e69[_0x4e6dd6(0xca)]+'-'+_0x257e69[_0x4e6dd6(0x91)]+'\x0a')+(_0x4e6dd6(0xb8)+_0x257e69['content'][_0x4e6dd6(0xd6)](0x0,0xc8)+(_0x257e69['content'][_0x4e6dd6(0xaf)]>0xc8?'...':'')+'\x0a'))[_0x4e6dd6(0xf2)]('\x0a');return{'content':[{'type':'text','text':_0x1ed2fe}]};}catch(_0x18a9f7){const _0x4d4861=_0x18a9f7 instanceof Error?_0x18a9f7['message']:String(_0x18a9f7);return reportMorphError({'error_message':_0x4d4861,'error_type':_0x18a9f7 instanceof Error?_0x18a9f7[_0x4e6dd6(0x13d)]['name']:_0x4e6dd6(0xbe),'context':{'tool':_0x4e6dd6(0x173),'query':_0x36d8fd[_0x4e6dd6(0xe9)][_0x4e6dd6(0x89)],'repo_id':_0x36d8fd[_0x4e6dd6(0xe9)]['repoId'],'target_directories':_0x36d8fd['data'][_0x4e6dd6(0xc2)]},'stack_trace':_0x18a9f7 instanceof Error?_0x18a9f7[_0x4e6dd6(0x105)]:undefined,'source':'mcp-filesystem'})[_0x4e6dd6(0x128)](()=>{}),{'content':[{'type':_0x4e6dd6(0xea),'text':_0x4e6dd6(0x171)+_0x4d4861}],'isError':!![]};}}default:throw new Error(_0x4e6dd6(0x8b)+_0x24e3c8);}}catch(_0xfe1a4e){const _0x34c6ed=_0xfe1a4e instanceof Error?_0xfe1a4e[_0x4e6dd6(0x137)]:String(_0xfe1a4e);return reportMorphError({'error_message':_0x34c6ed,'error_type':_0xfe1a4e instanceof Error?_0xfe1a4e['constructor'][_0x4e6dd6(0xc7)]:_0x4e6dd6(0xbe),'context':{'tool':name,'arguments':args?JSON[_0x4e6dd6(0x184)](args)[_0x4e6dd6(0xd6)](0x0,0x1f4):undefined,'mcp_server_version':_0x4e6dd6(0x13c)},'stack_trace':_0xfe1a4e instanceof Error?_0xfe1a4e[_0x4e6dd6(0x105)]:undefined,'source':_0x4e6dd6(0x19f)})[_0x4e6dd6(0x128)](()=>{}),{'content':[{'type':_0x4e6dd6(0xea),'text':_0x4e6dd6(0x171)+_0x34c6ed}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x1a5761){const _0x2c1b23=a0_0x3a1ec5,_0x108602=await getValidRootDirectories(_0x1a5761);if(_0x108602[_0x2c1b23(0xaf)]>0x0)allowedDirectories=[..._0x108602],console['error']('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x108602[_0x2c1b23(0xaf)]+_0x2c1b23(0x194));else{console[_0x2c1b23(0x9b)](_0x2c1b23(0x157));if(ENABLE_WORKSPACE_MODE)try{const _0x3d5e64=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3d5e64&&(allowedDirectories=[_0x3d5e64],console[_0x2c1b23(0x9b)](_0x2c1b23(0x178)+_0x3d5e64));}catch(_0x74036){console[_0x2c1b23(0x9b)](_0x2c1b23(0x188)+_0x74036);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x472c71=a0_0x3a1ec5;try{const _0x5d53c3=await server['listRoots']();_0x5d53c3&&_0x472c71(0xdd)in _0x5d53c3&&await updateAllowedDirectoriesFromRoots(_0x5d53c3[_0x472c71(0xdd)]);}catch(_0x3db2ad){console[_0x472c71(0x9b)](_0x472c71(0x12c),_0x3db2ad instanceof Error?_0x3db2ad['message']:String(_0x3db2ad));}}),server[a0_0x3a1ec5(0xf6)]=async()=>{const _0x1dd6cf=a0_0x3a1ec5,_0x7cb429=server[_0x1dd6cf(0x147)]();if(_0x7cb429?.[_0x1dd6cf(0xdd)])try{const _0x2d900b=await server['listRoots']();_0x2d900b&&_0x1dd6cf(0xdd)in _0x2d900b?await updateAllowedDirectoriesFromRoots(_0x2d900b[_0x1dd6cf(0xdd)]):console[_0x1dd6cf(0x9b)](_0x1dd6cf(0x117));}catch(_0x595dda){console[_0x1dd6cf(0x9b)](_0x1dd6cf(0xaa),_0x595dda instanceof Error?_0x595dda[_0x1dd6cf(0x137)]:String(_0x595dda));}else{if(allowedDirectories[_0x1dd6cf(0xaf)]>0x0)console[_0x1dd6cf(0x9b)](_0x1dd6cf(0x87),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x1dd6cf(0x9b)]('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x1dd6cf(0x94));}}};async function runServer(){const _0x5cb16a=a0_0x3a1ec5,_0x5a495e=new StdioServerTransport();await server[_0x5cb16a(0xdb)](_0x5a495e),console[_0x5cb16a(0x9b)](_0x5cb16a(0xd1)),allowedDirectories['length']===0x0&&console[_0x5cb16a(0x9b)]('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x3a1ec5(0x128)](_0x105d8b=>{const _0x45c81b=a0_0x3a1ec5;console[_0x45c81b(0x9b)](_0x45c81b(0xba),_0x105d8b),process[_0x45c81b(0x135)](0x1);});
2
+ const a0_0x21c775=a0_0x1611;(function(_0xd1b6b5,_0x50ad89){const _0x5ad49e=a0_0x1611,_0x1eb165=_0xd1b6b5();while(!![]){try{const _0x219ae8=parseInt(_0x5ad49e(0x1ac))/0x1*(parseInt(_0x5ad49e(0x288))/0x2)+parseInt(_0x5ad49e(0x267))/0x3*(parseInt(_0x5ad49e(0x279))/0x4)+parseInt(_0x5ad49e(0x1b9))/0x5*(-parseInt(_0x5ad49e(0x1d4))/0x6)+parseInt(_0x5ad49e(0x1ab))/0x7+-parseInt(_0x5ad49e(0x1e0))/0x8+parseInt(_0x5ad49e(0x1b8))/0x9+-parseInt(_0x5ad49e(0x1ca))/0xa;if(_0x219ae8===_0x50ad89)break;else _0x1eb165['push'](_0x1eb165['shift']());}catch(_0x345741){_0x1eb165['push'](_0x1eb165['shift']());}}}(a0_0x5054,0x664c6));function a0_0x1611(_0x3f445b,_0x3e6968){_0x3f445b=_0x3f445b-0x18e;const _0x505417=a0_0x5054();let _0x161198=_0x505417[_0x3f445b];return _0x161198;}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_0x493513 from'fs/promises';import a0_0x2adf11 from'path';import a0_0x23e769 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.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{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';import a0_0x20031a from'axios';function fixPathRepetition(_0x5927c6){const _0x401a99=a0_0x1611,_0x312bbb=_0x5927c6[_0x401a99(0x198)](a0_0x2adf11[_0x401a99(0x2ad)])['filter'](Boolean);if(_0x312bbb['length']<0x2)return null;for(let _0x4eb661=Math[_0x401a99(0x297)](_0x312bbb[_0x401a99(0x290)]/0x2);_0x4eb661>=0x1;_0x4eb661--){for(let _0x49897e=0x0;_0x49897e<=_0x312bbb[_0x401a99(0x290)]-0x2*_0x4eb661;_0x49897e++){const _0x5acf8a=_0x312bbb[_0x401a99(0x254)](_0x49897e,_0x49897e+_0x4eb661),_0x1d349f=_0x312bbb['slice'](_0x49897e+_0x4eb661,_0x49897e+0x2*_0x4eb661);if(_0x5acf8a[_0x401a99(0x240)]((_0x5c9c17,_0x2ae49d)=>_0x5c9c17===_0x1d349f[_0x2ae49d])){const _0x1c613b=[..._0x312bbb[_0x401a99(0x254)](0x0,_0x49897e),..._0x312bbb[_0x401a99(0x254)](_0x49897e+_0x4eb661)];return a0_0x2adf11[_0x401a99(0x2ad)]+_0x1c613b[_0x401a99(0x2ae)](a0_0x2adf11['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x3449a2=a0_0x1611;try{const _0x1f658e=require(_0x3449a2(0x1d9));return _0x1f658e[_0x3449a2(0x2a9)]??'unknown';}catch(_0x485b90){return console[_0x3449a2(0x1d7)](_0x3449a2(0x280),_0x485b90),_0x3449a2(0x28a);}}function printHelp(){const _0x5c6b3e=a0_0x1611;console[_0x5c6b3e(0x237)](_0x5c6b3e(0x29f)+getPackageVersion()),console[_0x5c6b3e(0x237)](_0x5c6b3e(0x1c5)),console[_0x5c6b3e(0x237)]('\x0aOptions:'),console[_0x5c6b3e(0x237)](_0x5c6b3e(0x28d)),console['log']('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0x5c6b3e(0x237)](_0x5c6b3e(0x25b)),console[_0x5c6b3e(0x237)](_0x5c6b3e(0x1b0)),console[_0x5c6b3e(0x237)](_0x5c6b3e(0x212)),console[_0x5c6b3e(0x237)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x21c775(0x2a6)][a0_0x21c775(0x254)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x21c775(0x1f4),'-h']);cliArgs[a0_0x21c775(0x256)](_0x2ffd7c=>VERSION_FLAGS[a0_0x21c775(0x299)](_0x2ffd7c))&&(console[a0_0x21c775(0x237)](a0_0x21c775(0x29f)+getPackageVersion()),process[a0_0x21c775(0x292)](0x0));cliArgs['some'](_0xe82aa6=>HELP_FLAGS['has'](_0xe82aa6))&&(printHelp(),process[a0_0x21c775(0x292)](0x0));function getCliArg(_0x33d03f){const _0xd6343c=a0_0x21c775;for(let _0x413fcb=0x0;_0x413fcb<cliArgs['length'];_0x413fcb++){const _0x31f30f=cliArgs[_0x413fcb];if(_0x31f30f[_0xd6343c(0x27c)]('--'+_0x33d03f+'='))return _0x31f30f[_0xd6343c(0x254)](('--'+_0x33d03f+'=')[_0xd6343c(0x290)]);if(_0x31f30f==='--'+_0x33d03f&&_0x413fcb+0x1<cliArgs[_0xd6343c(0x290)])return cliArgs[_0x413fcb+0x1];}return undefined;}const args=[];function a0_0x5054(){const _0x3ce855=['\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','.\x20Path:\x20','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','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.','https://morphllm.com/api/error-report','5331050Ypgdro','source','success','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','stat','warpgrep_codebase_search','Fallback:\x20Using\x20workspace\x20root\x20','morph-','MORPH_API_URL','24cWIJwD','WarpGrep\x20sub-tool\x20errors:\x20','path','error','string','../package.json','finish','ms:\x0a\x0a','describe','getClientCapabilities','read','access','1660824vYFWTm','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','messages','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','trim','\x20error(s)','params','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','requiresApiKey','resolve','setRequestHandler','grep\x20\x27','Parent\x20directory\x20does\x20not\x20exist:\x20','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','match','Here\x20is\x20the\x20content\x20of\x20files:\x0a','indexOf','timings','PathError','RipgrepNotAvailable','--help','terminationReason','sk-','%\x20match)\x0a','content','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','File\x20read\x20error:','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','ENOENT','WarpGrepError','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','errors','[warpgrep_github_search]\x20Done\x20in\x20','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','ms:','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','toFixed','substring','repo_path','grep','[warpgrep_github_search]\x20Failed\x20in\x20','FileReadError','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','.vscode','MORPH_API_KEY','homedir','push','\x20valid\x20directories','Error\x20running\x20fast\x20context\x20search:\x20','\x20\x20morph-mcp','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','toLowerCase','morph-v3-fast','\x20\x20\x20','Warning:\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','commitHash','morph-mcp','searchGitHub','all','completionId','safeParse','connect','description','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','query','Error:\x20','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','user','Morph\x20FastApply\x20failed\x20without\x20error\x20message','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','timeout','github_url','warpgrep_github_search','filepath','[could\x20not\x20read\x20file:\x20','list_directory\x20','isDirectory','ENABLED_TOOLS','dirname','dryRun','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','default','limit','log','Error\x20accessing\x20directory\x20','timed\x20out','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','warn','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','FileNotFound','targetDirectories','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','every','-\x20Grepped\x20\x27','files','BinaryFile','Fatal\x20error\x20running\x20server:','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','Invalid\x20arguments:\x20','rerankScore','read\x20','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','ms.\x20Success:\x20','0.2.0','Max\x20results\x20to\x20return','Search\x20failed:\x20','application/json','payload','assistant','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Unknown\x20tool:\x20','slice','listRoots','some','normalize','metadata','Failed\x20to\x20read\x20file:\x20','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','filter','boolean','Applied','GitHub\x20search\x20failed:\x20','\x20\x20\x20Lines\x20','\x22>\x0aError\x20reading\x20file:\x20','stack','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','endLine','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','role','636024nLuYag','catch','Natural\x20language\x20query\x20to\x20search\x20for\x20code','SymlinkError','.cursor','For\x20deletions:\x0a','\x20results\x20in\x20','--api-key=','repoId','code_edit','data','results','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','search_string','Rules:\x0a','\x0a</file>','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','4QmGNTH','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','completed_with_file_errors','startsWith',',\x20removed\x20','linesModified',',\x20modified\x20','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','utf-8','code','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','constructor','Repository\x20identifier','post','Unknown\x20error','2TLokxA','.\x20Changes:\x20','unknown','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','pyproject.toml','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','Morph\x20Edit\x20','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','length','ReadError','exit','\x20for:\x20\x22','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','stringify','[warpgrep_github_search]\x20Searching\x20','floor','name','has','\x20-\x20','added\x20','Workspace\x20mode\x20enabled:\x20Using\x20','isArray','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','@morphllm/morphmcp\x20','min','lines','Created\x20File','etimedout','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Enabled\x20tools:\x20','argv','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','<file\x20path=\x22','version','MORPH_WARP_GREP_TIMEOUT','terminated','map','sep','join','Warning:\x20Workspace\x20fallback\x20failed:\x20','instruction','changes','text','edit_file','go.mod','PWD','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','ToolException','includes','ENABLE_WORKSPACE_MODE','split','false','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Specific\x20commit\x20hash\x20to\x20search','...','TimeoutError','branch','completed','morph-warp-grep-v1-1111v0','now','setNotificationHandler','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','stats','No\x20results\x20found\x20for\x20query:\x20\x22','Bearer\x20','codebase_search','optional','unknown\x20error','Benefits:\x0a','4456214MABnZY','85351EaXhqH','\x20as\x20allowed\x20directory','mcp-filesystem','Found\x20','\x0aExamples:','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','\x20chars)','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','object','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','env','roots','5434893EoLZQV','472645oPEjSb','The\x20search\x20term\x20should\x20be\x20a\x20targeted\x20natural\x20language\x20query\x20based\x20on\x20what\x20you\x20are\x20trying\x20to\x20accomplish,\x20like\x20\x27Find\x20where\x20authentication\x20requests\x20are\x20handled\x20in\x20the\x20Express\x20routes\x27\x20or\x20\x27Modify\x20the\x20agentic\x20rollout\x20to\x20use\x20the\x20new\x20tokenizer\x20and\x20chat\x20template\x27\x20or\x20\x27Fix\x20the\x20bug\x20where\x20the\x20user\x20gets\x20redirected\x20from\x20the\x20/feed\x20page\x27.\x20','UnknownError','GitHub\x20repository\x20URL\x20or\x20\x27owner/repo\x27\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27\x20or\x20\x27https://github.com/vercel/next.js\x27)','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Preview\x20changes\x20without\x20applying\x20them.','message','-\x20Listed\x20directory\x20`','basename','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','realpath','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a'];a0_0x5054=function(){return _0x3ce855;};return a0_0x5054();}for(let i=0x0;i<cliArgs[a0_0x21c775(0x290)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x21c775(0x299)](arg)||HELP_FLAGS[a0_0x21c775(0x299)](arg))continue;if(arg[a0_0x21c775(0x27c)](a0_0x21c775(0x26e)))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x21c775(0x20f)](arg);}const ALL_TOOLS=[a0_0x21c775(0x191),a0_0x21c775(0x1d0),a0_0x21c775(0x22c),'codebase_search'],DEFAULT_TOOLS=[a0_0x21c775(0x191),a0_0x21c775(0x1d0),a0_0x21c775(0x22c)],ENABLED_TOOLS=process[a0_0x21c775(0x1b6)][a0_0x21c775(0x231)]?process[a0_0x21c775(0x1b6)][a0_0x21c775(0x231)]==='all'?ALL_TOOLS:process[a0_0x21c775(0x1b6)][a0_0x21c775(0x231)][a0_0x21c775(0x198)](',')[a0_0x21c775(0x2ac)](_0x1c142a=>_0x1c142a[a0_0x21c775(0x1e4)]()):DEFAULT_TOOLS;console[a0_0x21c775(0x1d7)](a0_0x21c775(0x2a5)+ENABLED_TOOLS[a0_0x21c775(0x2ae)](',\x20'));const WORKSPACE_ROOT=process['env']['WORKSPACE_ROOT']||process[a0_0x21c775(0x1b6)][a0_0x21c775(0x193)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x21c775(0x1b6)][a0_0x21c775(0x197)]!==a0_0x21c775(0x199),MORPH_API_KEY=getCliArg('api-key')??process[a0_0x21c775(0x1b6)][a0_0x21c775(0x20d)],MORPH_API_URL=process[a0_0x21c775(0x1b6)][a0_0x21c775(0x1d3)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x21c775(0x1b6)][a0_0x21c775(0x2aa)]?parseInt(process[a0_0x21c775(0x1b6)][a0_0x21c775(0x2aa)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x21c775(0x27c)](a0_0x21c775(0x1f6))&&!MORPH_API_KEY[a0_0x21c775(0x27c)](a0_0x21c775(0x1d2))&&console[a0_0x21c775(0x1d7)](a0_0x21c775(0x1ed));async function reportMorphError(_0x241571){const _0x5e2b47=a0_0x21c775;try{await a0_0x20031a[_0x5e2b47(0x286)](_0x5e2b47(0x1c9),{..._0x241571,'timestamp':new Date()['toISOString'](),'source':_0x241571[_0x5e2b47(0x1cb)]||_0x5e2b47(0x1ae)},{'timeout':0x1388,'headers':{'Content-Type':_0x5e2b47(0x24f),'Authorization':_0x5e2b47(0x1a6)+MORPH_API_KEY}});}catch{}}args[a0_0x21c775(0x290)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x21c775(0x1d7)](a0_0x21c775(0x204)),console['error']('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),console[a0_0x21c775(0x1d7)]('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),console[a0_0x21c775(0x1d7)]('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),console[a0_0x21c775(0x1d7)](a0_0x21c775(0x1ce)),console[a0_0x21c775(0x1d7)](a0_0x21c775(0x234)));function normalizePath(_0x2d28d1){const _0x15da96=a0_0x21c775;return a0_0x2adf11[_0x15da96(0x257)](_0x2d28d1);}function expandHome(_0x25dd10){const _0x1b311a=a0_0x21c775;if(_0x25dd10['startsWith']('~/')||_0x25dd10==='~')return a0_0x2adf11[_0x1b311a(0x2ae)](a0_0x23e769[_0x1b311a(0x20e)](),_0x25dd10[_0x1b311a(0x254)](0x1));return _0x25dd10;}let allowedDirectories=await Promise[a0_0x21c775(0x21c)](args[a0_0x21c775(0x2ac)](async _0x34fe5e=>{const _0x1f85a3=a0_0x21c775,_0x140c0a=expandHome(_0x34fe5e),_0x576445=a0_0x2adf11['resolve'](_0x140c0a);try{const _0x112f30=await a0_0x493513[_0x1f85a3(0x1c3)](_0x576445);return normalizePath(_0x112f30);}catch(_0x3bec3b){return normalizePath(_0x576445);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x21c775(0x290)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x21c775(0x20f)](workspaceDir),console[a0_0x21c775(0x1d7)](a0_0x21c775(0x29c)+workspaceDir+a0_0x21c775(0x1ad)));}catch(a0_0x3a61e7){console['error']('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x3a61e7);}async function detectWorkspaceRoot(_0x53caa8){const _0x22539d=a0_0x21c775;let _0x3b3b1b=a0_0x2adf11[_0x22539d(0x1e9)](_0x53caa8);const _0x5259ae=['.git',_0x22539d(0x20c),'package.json','Cargo.toml',_0x22539d(0x28c),_0x22539d(0x192),_0x22539d(0x26b),'tsconfig.json','composer.json'];while(_0x3b3b1b!==a0_0x2adf11[_0x22539d(0x232)](_0x3b3b1b)){for(const _0x4f4a74 of _0x5259ae){const _0x5d13e1=a0_0x2adf11['join'](_0x3b3b1b,_0x4f4a74);try{return await a0_0x493513[_0x22539d(0x1df)](_0x5d13e1),normalizePath(_0x3b3b1b);}catch{}}_0x3b3b1b=a0_0x2adf11[_0x22539d(0x232)](_0x3b3b1b);}return normalizePath(_0x53caa8);}await Promise[a0_0x21c775(0x21c)](args[a0_0x21c775(0x2ac)](async _0x44afa2=>{const _0x5abbd2=a0_0x21c775;try{const _0x188180=await a0_0x493513[_0x5abbd2(0x1cf)](expandHome(_0x44afa2));!_0x188180[_0x5abbd2(0x230)]()&&(console[_0x5abbd2(0x1d7)]('Error:\x20'+_0x44afa2+'\x20is\x20not\x20a\x20directory'),process[_0x5abbd2(0x292)](0x1));}catch(_0x1916b6){console[_0x5abbd2(0x1d7)](_0x5abbd2(0x238)+_0x44afa2+':',_0x1916b6),process[_0x5abbd2(0x292)](0x1);}}));async function validatePath(_0x4b5fe7){const _0x5b4c34=a0_0x21c775,_0x3952b7=expandHome(_0x4b5fe7),_0x560e83=a0_0x2adf11[_0x5b4c34(0x1e9)](_0x3952b7);try{const _0x45ebde=await a0_0x493513[_0x5b4c34(0x1c3)](_0x560e83);return _0x45ebde;}catch(_0x584d59){if(_0x584d59[_0x5b4c34(0x282)]===_0x5b4c34(0x1fd)){const _0x5b6cde=a0_0x2adf11['dirname'](_0x560e83);try{const _0x5c4541=await a0_0x493513['realpath'](_0x5b6cde);return a0_0x2adf11[_0x5b4c34(0x2ae)](_0x5c4541,a0_0x2adf11['basename'](_0x560e83));}catch{throw new Error(_0x5b4c34(0x1ec)+_0x5b6cde);}}throw _0x584d59;}}const MorphEditFileArgsSchema=z[a0_0x21c775(0x1b4)]({'path':z[a0_0x21c775(0x1d8)](),'code_edit':z[a0_0x21c775(0x1d8)]()[a0_0x21c775(0x1dc)](a0_0x21c775(0x1f9)),'instruction':z[a0_0x21c775(0x1d8)]()[a0_0x21c775(0x1dc)](a0_0x21c775(0x1a3)),'dryRun':z[a0_0x21c775(0x25d)]()['default'](![])[a0_0x21c775(0x1dc)](a0_0x21c775(0x1be))}),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x21c775(0x1d8)]()[a0_0x21c775(0x1dc)](a0_0x21c775(0x20b)),'repo_path':z[a0_0x21c775(0x1d8)]()[a0_0x21c775(0x1dc)](a0_0x21c775(0x283))}),WarpGrepGitHubArgsSchema=z[a0_0x21c775(0x1b4)]({'search_string':z[a0_0x21c775(0x1d8)]()['describe']('Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for'),'github_url':z[a0_0x21c775(0x1d8)]()[a0_0x21c775(0x1dc)](a0_0x21c775(0x1bc)),'branch':z['string']()[a0_0x21c775(0x1a8)]()[a0_0x21c775(0x1dc)](a0_0x21c775(0x252))}),CodebaseSearchArgsSchema=z[a0_0x21c775(0x1b4)]({'query':z[a0_0x21c775(0x1d8)]()[a0_0x21c775(0x1dc)](a0_0x21c775(0x269)),'repoId':z[a0_0x21c775(0x1d8)]()['describe'](a0_0x21c775(0x285)),'branch':z[a0_0x21c775(0x1d8)]()[a0_0x21c775(0x1a8)]()[a0_0x21c775(0x1dc)](a0_0x21c775(0x29e)),'commitHash':z[a0_0x21c775(0x1d8)]()[a0_0x21c775(0x1a8)]()['describe'](a0_0x21c775(0x19b)),'targetDirectories':z['array'](z[a0_0x21c775(0x1d8)]())['default']([])['describe'](a0_0x21c775(0x24a)),'limit':z['number']()[a0_0x21c775(0x1a8)]()[a0_0x21c775(0x235)](0xa)['describe'](a0_0x21c775(0x24d))}),server=new Server({'name':a0_0x21c775(0x21a),'version':a0_0x21c775(0x24c)},{'capabilities':{'tools':{}}});server[a0_0x21c775(0x1ea)](ListToolsRequestSchema,async()=>{const _0x10a071=a0_0x21c775,_0x6c53ee=[{'name':_0x10a071(0x191),'description':_0x10a071(0x246)+_0x10a071(0x23c)+_0x10a071(0x1fc)+_0x10a071(0x222)+_0x10a071(0x1aa)+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x10a071(0x213)+_0x10a071(0x19a)+_0x10a071(0x27a)+_0x10a071(0x1c2)+'ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a'+'Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'+_0x10a071(0x26c)+_0x10a071(0x194)+_0x10a071(0x2a4)+_0x10a071(0x276)+_0x10a071(0x278)+_0x10a071(0x1e1)+_0x10a071(0x263)+_0x10a071(0x1bd)+_0x10a071(0x1ff)+_0x10a071(0x274)+_0x10a071(0x28b),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x10a071(0x1d0),'description':_0x10a071(0x1e7)+'This\x20tool\x20invokes\x20a\x20subagent\x20that\x20runs\x20parallel\x20grep\x20and\x20readfile\x20calls\x20over\x20multiple\x20turns\x20to\x20locate\x20line\x20ranges\x20and\x20files\x20which\x20might\x20be\x20relevant\x20to\x20the\x20request.\x20'+_0x10a071(0x1ba)+_0x10a071(0x25a)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.'+'Note:\x20The\x20files\x20and\x20line\x20ranges\x20returned\x20by\x20this\x20tool\x20may\x20be\x20some\x20of\x20the\x20ones\x20needed\x20to\x20complete\x20the\x20user\x27s\x20request,\x20but\x20you\x20should\x20be\x20careful\x20in\x20evaluating\x20the\x20relevance\x20of\x20the\x20results,\x20since\x20the\x20subagent\x20might\x20make\x20mistakes.\x20'+_0x10a071(0x28f)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':_0x10a071(0x1a7),'description':_0x10a071(0x1c4)+_0x10a071(0x202)+'🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a'+_0x10a071(0x1aa)+_0x10a071(0x1b1)+'-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a'+_0x10a071(0x273)+_0x10a071(0x23a)+_0x10a071(0x1fa)+_0x10a071(0x1cd)+_0x10a071(0x2a7),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x3bbaae=_0x6c53ee[_0x10a071(0x25c)](_0x32d40d=>{const _0x3e6bf9=_0x10a071;if(!ENABLED_TOOLS[_0x3e6bf9(0x196)](_0x32d40d['name']))return![];if(_0x3e6bf9(0x1e8)in _0x32d40d&&_0x32d40d[_0x3e6bf9(0x1e8)]&&!MORPH_API_KEY)return console[_0x3e6bf9(0x1d7)](_0x3e6bf9(0x217)+_0x32d40d[_0x3e6bf9(0x298)]+_0x3e6bf9(0x1e3)),![];return!![];});return{'tools':_0x3bbaae[_0x10a071(0x2ac)](_0x3b2794=>({'name':_0x3b2794[_0x10a071(0x298)],'description':_0x3b2794[_0x10a071(0x220)],'inputSchema':_0x3b2794['inputSchema']}))};}),server[a0_0x21c775(0x1ea)](CallToolRequestSchema,async _0x52cb97=>{const _0x608546=a0_0x21c775;try{const {name:_0x57b9ac,arguments:_0x2c38d6}=_0x52cb97[_0x608546(0x1e6)];switch(_0x57b9ac){case _0x608546(0x191):{const _0x537468=MorphEditFileArgsSchema[_0x608546(0x21e)](_0x2c38d6);if(!_0x537468[_0x608546(0x1cc)])throw new Error(_0x608546(0x23f)+_0x537468[_0x608546(0x1d7)]);const _0x198fb5=await validatePath(_0x537468[_0x608546(0x271)]['path']);let _0x4d0dd5=null,_0x14b9dc=!![],_0x4bda13=null;try{_0x4d0dd5=await a0_0x493513['readFile'](_0x198fb5,_0x608546(0x281));}catch(_0x1e946f){const _0x53ab38=_0x1e946f['code'];_0x53ab38==='ENOENT'?(_0x14b9dc=![],_0x4d0dd5=''):(_0x4bda13=_0x608546(0x259)+(_0x53ab38||_0x608546(0x28a))+_0x608546(0x29a)+(_0x1e946f instanceof Error?_0x1e946f[_0x608546(0x1bf)]:String(_0x1e946f)),console['error'](_0x608546(0x217)+_0x4bda13));}let _0x1cc3e0;try{const _0x4629b0=MORPH_API_KEY;if(!_0x4629b0)throw new Error(_0x608546(0x221));const _0x544607=a0_0x2adf11[_0x608546(0x232)](_0x198fb5),_0x2a5152=a0_0x2adf11[_0x608546(0x1c1)](_0x198fb5),_0x288561=await executeEditFile({'target_filepath':_0x2a5152,'code_edit':_0x537468['data']['code_edit'],'instructions':_0x537468[_0x608546(0x271)]['instruction']},{'morphApiKey':_0x4629b0,'morphApiUrl':MORPH_API_URL,'baseDir':_0x544607,'autoWrite':!_0x537468[_0x608546(0x271)][_0x608546(0x233)],'generateUdiff':![],'debug':![]});_0x1cc3e0=_0x288561[_0x608546(0x21d)];if(!_0x288561[_0x608546(0x1cc)])throw new Error(_0x288561[_0x608546(0x1d7)]||_0x608546(0x227));const _0x4b98ab=_0x288561[_0x608546(0x18f)],_0x34e179=_0x608546(0x29b)+_0x4b98ab['linesAdded']+_0x608546(0x27d)+_0x4b98ab['linesRemoved']+_0x608546(0x27f)+_0x4b98ab[_0x608546(0x27e)];if(_0x537468[_0x608546(0x271)][_0x608546(0x233)])return{'content':[{'type':_0x608546(0x190),'text':'Morph\x20Edit\x20Preview'+(_0x14b9dc?'':'\x20(new\x20file)')+':\x20'+_0x537468['data'][_0x608546(0x18e)]+_0x608546(0x289)+_0x34e179+'.\x20Path:\x20'+_0x537468[_0x608546(0x271)][_0x608546(0x1d6)]+'.'}]};return{'content':[{'type':_0x608546(0x190),'text':_0x608546(0x28e)+(_0x14b9dc?_0x608546(0x25e):_0x608546(0x2a2))+':\x20'+_0x537468[_0x608546(0x271)][_0x608546(0x18e)]+_0x608546(0x289)+_0x34e179+_0x608546(0x1c6)+_0x537468[_0x608546(0x271)]['path']+'.'}]};}catch(_0x444d9c){const _0x5e60fe=_0x444d9c instanceof Error?_0x444d9c[_0x608546(0x1bf)]:String(_0x444d9c);return reportMorphError({'error_message':_0x5e60fe,'error_type':_0x444d9c instanceof Error?_0x444d9c[_0x608546(0x284)][_0x608546(0x298)]:_0x608546(0x1bb),'context':{'tool':'edit_file','completion_id':_0x1cc3e0,'file_path':_0x537468[_0x608546(0x271)][_0x608546(0x1d6)],'validated_path':_0x198fb5,'instruction':_0x537468[_0x608546(0x271)]['instruction'],'model':_0x608546(0x215),'dry_run':_0x537468[_0x608546(0x271)][_0x608546(0x233)],'file_exists':_0x14b9dc,'file_read_error':_0x4bda13,'file_readable':_0x4d0dd5!==null,'request_content':{'path':_0x537468['data'][_0x608546(0x1d6)],'code_edit':_0x537468[_0x608546(0x271)][_0x608546(0x270)],'instruction':_0x537468[_0x608546(0x271)][_0x608546(0x18e)],'original_code':_0x4d0dd5!==null?_0x4d0dd5['length']>0xc350?_0x4d0dd5[_0x608546(0x206)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x4d0dd5['length']+_0x608546(0x1b2):_0x4d0dd5:_0x608546(0x22e)+(_0x4bda13||_0x608546(0x1a9))+']','original_code_length':_0x4d0dd5?.[_0x608546(0x290)]??0x0,'model':_0x608546(0x215),'dry_run':_0x537468[_0x608546(0x271)][_0x608546(0x233)]}},'stack_trace':_0x444d9c instanceof Error?_0x444d9c[_0x608546(0x262)]:undefined,'source':'mcp-filesystem'})[_0x608546(0x268)](()=>{}),{'content':[{'type':'text','text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x5e60fe}],'isError':!![]};}}case _0x608546(0x1d0):{const _0x519605=WarpGrepArgsSchema[_0x608546(0x21e)](_0x2c38d6);if(!_0x519605['success'])return{'content':[{'type':_0x608546(0x190),'text':_0x608546(0x247)+_0x519605['error']}],'isError':!![]};const _0x335ea1=_0x3fa7e7=>{const _0x124523=_0x608546,_0x3f6ca8=[];for(const _0x343ae7 of _0x3fa7e7||[]){const _0x2d962f=_0x343ae7['role'],_0x4fb113=_0x343ae7[_0x124523(0x1f8)];if(_0x2d962f===_0x124523(0x251)&&_0x4fb113){const _0x4e4d7e=_0x4fb113['split']('\x0a')[_0x124523(0x25c)](_0x4671bf=>_0x4671bf[_0x124523(0x1e4)]());for(const _0x2dbef4 of _0x4e4d7e){const _0x194c9a=_0x2dbef4[_0x124523(0x1ee)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x194c9a){_0x3f6ca8[_0x124523(0x20f)](_0x124523(0x1eb)+_0x194c9a[0x1]+'\x27\x20'+_0x194c9a[0x2]);continue;}const _0x8413ae=_0x2dbef4[_0x124523(0x1ee)](/^read\s+(.+)$/);if(_0x8413ae){_0x3f6ca8[_0x124523(0x20f)](_0x124523(0x249)+_0x8413ae[0x1]);continue;}const _0x1f4557=_0x2dbef4[_0x124523(0x1ee)](/^list_directory\s+(.+)$/);if(_0x1f4557){_0x3f6ca8[_0x124523(0x20f)](_0x124523(0x22f)+_0x1f4557[0x1]);continue;}}}}return _0x3f6ca8;},_0x1b00fc=_0xad6583=>{const _0x249f82=_0x608546,_0x19adf8=[];if(!_0xad6583||!Array[_0x249f82(0x29d)](_0xad6583))return _0x19adf8;const _0x479172=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x249f82(0x23d),'tool':_0x249f82(0x1de)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x249f82(0x1f2),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x249f82(0x291),'tool':_0x249f82(0x1de)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x249f82(0x243),'tool':_0x249f82(0x1de)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':_0x249f82(0x208)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x249f82(0x1f3),'tool':_0x249f82(0x208)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x249f82(0x243),'tool':_0x249f82(0x1de)},{'pattern':/\[SYMLINK\]/,'error_type':_0x249f82(0x26a),'tool':_0x249f82(0x1de)},{'pattern':/not a text file/,'error_type':_0x249f82(0x243),'tool':_0x249f82(0x1de)},{'pattern':/symbolic link/,'error_type':_0x249f82(0x26a),'tool':_0x249f82(0x1de)},{'pattern':/Error reading file:/,'error_type':_0x249f82(0x291),'tool':_0x249f82(0x1de)},{'pattern':/status="error"/,'error_type':_0x249f82(0x195),'tool':'unknown'}];let _0x34ad32=0x0;for(const _0x69aa59 of _0xad6583){if(_0x69aa59[_0x249f82(0x266)]===_0x249f82(0x226)){_0x34ad32++;const _0x3002c2=_0x69aa59[_0x249f82(0x1f8)];if(!_0x3002c2||typeof _0x3002c2!=='string')continue;for(const {pattern:_0x24021a,error_type:_0x29b87a,tool:_0xdde9a5}of _0x479172){const _0x24fe76=_0x3002c2[_0x249f82(0x1ee)](new RegExp(_0x24021a[_0x249f82(0x1cb)],'g'));if(_0x24fe76)for(const _0x59c900 of _0x24fe76){const _0x3bd5e7=_0x3002c2[_0x249f82(0x1f0)](_0x59c900),_0x239791=_0x3002c2[_0x249f82(0x206)](_0x3bd5e7,Math[_0x249f82(0x2a0)](_0x3bd5e7+0xc8,_0x3002c2['length']));_0x19adf8[_0x249f82(0x20f)]({'tool':_0xdde9a5,'error_type':_0x29b87a,'error_message':_0x239791[_0x249f82(0x198)]('\x0a')[0x0],'turn':_0x34ad32});}}}}return _0x19adf8;};try{const _0x318ecf=a0_0x2adf11[_0x608546(0x1e9)](_0x519605[_0x608546(0x271)]['repo_path']),_0x4d31fb=new LocalRipgrepProvider(_0x318ecf),_0x2a742d=await runWarpGrep({'query':_0x519605['data']['search_string'],'repoRoot':_0x318ecf,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x4d31fb}),_0x5a9468=_0x1b00fc(_0x2a742d['messages']);_0x5a9468[_0x608546(0x290)]>0x0&&reportMorphError({'error_message':_0x608546(0x1d5)+_0x5a9468[_0x608546(0x290)]+_0x608546(0x1e5),'error_type':'SubToolError','level':_0x608546(0x23b),'tool':'warpgrep_codebase_search','context':{'repo_path':_0x519605[_0x608546(0x271)][_0x608546(0x207)],'query':_0x519605[_0x608546(0x271)][_0x608546(0x275)],'model':_0x608546(0x1a0),'termination_reason':_0x2a742d[_0x608546(0x1f5)],'sub_tool_errors':_0x5a9468,'timings':_0x2a742d[_0x608546(0x1f1)],'tool_calls':_0x335ea1(_0x2a742d[_0x608546(0x1e2)]),'messages':_0x2a742d[_0x608546(0x1e2)]?.[_0x608546(0x2ac)](_0x2696f2=>({'role':_0x2696f2[_0x608546(0x266)],'content':_0x2696f2[_0x608546(0x1f8)]}))},'source':'mcp-filesystem'})[_0x608546(0x268)](()=>{});let _0x1b0b46='';if(_0x2a742d[_0x608546(0x1f5)]===_0x608546(0x19f)&&_0x2a742d[_0x608546(0x1da)]?.[_0x608546(0x258)]?.[_0x608546(0x242)]){const _0xa38fe0=_0x2a742d[_0x608546(0x1da)][_0x608546(0x258)]['files'];if(_0xa38fe0[_0x608546(0x290)]===0x0)return _0x1b0b46=_0x2a742d['finish'][_0x608546(0x250)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x608546(0x190),'text':_0x1b0b46}]};const _0x9b0c56=[],_0x50bc0a=[_0x608546(0x1b3)];for(const _0x2d43d1 of _0x2a742d[_0x608546(0x1e2)]){const _0x479a0f=_0x2d43d1[_0x608546(0x266)],_0x353374=_0x2d43d1[_0x608546(0x1f8)];if(_0x479a0f==='assistant'&&_0x353374){const _0x3a248a=_0x353374[_0x608546(0x198)]('\x0a')[_0x608546(0x25c)](_0x4d2001=>_0x4d2001[_0x608546(0x1e4)]());for(const _0x3f291e of _0x3a248a){const _0x4ae19b=_0x3f291e[_0x608546(0x1ee)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x4ae19b){_0x50bc0a['push'](_0x608546(0x241)+_0x4ae19b[0x1]+'\x27\x20in\x20`'+_0x4ae19b[0x2]+'`');continue;}const _0x126265=_0x3f291e[_0x608546(0x1ee)](/^read\s+(.+)$/);if(_0x126265){_0x50bc0a[_0x608546(0x20f)]('-\x20Read\x20file\x20`'+_0x126265[0x1]+'`');continue;}const _0x20d508=_0x3f291e[_0x608546(0x1ee)](/^list_directory\s+(.+)$/);if(_0x20d508){_0x50bc0a[_0x608546(0x20f)](_0x608546(0x1c0)+_0x20d508[0x1]+'`');continue;}}}}_0x9b0c56['push'](_0x50bc0a[_0x608546(0x2ae)]('\x0a'));const _0x47902a=['','Relevant\x20context\x20found:'];for(const _0x1f8e09 of _0xa38fe0){if(_0x1f8e09[_0x608546(0x2a1)]==='*')_0x47902a['push']('-\x20'+_0x1f8e09[_0x608546(0x1d6)]+':*');else{if(Array[_0x608546(0x29d)](_0x1f8e09[_0x608546(0x2a1)])){const _0x430b7b=_0x1f8e09[_0x608546(0x2a1)][_0x608546(0x2ac)](([_0x3b5a00,_0x2bd47c])=>{if(_0x3b5a00===_0x2bd47c)return''+_0x3b5a00;return _0x3b5a00+'-'+_0x2bd47c;});_0x47902a['push']('-\x20'+_0x1f8e09[_0x608546(0x1d6)]+':'+_0x430b7b[_0x608546(0x2ae)](','));}else _0x47902a[_0x608546(0x20f)]('-\x20'+_0x1f8e09[_0x608546(0x1d6)]+':*');}}_0x47902a['push'](''),_0x9b0c56['push'](_0x47902a['join']('\x0a')),_0x9b0c56[_0x608546(0x20f)](_0x608546(0x1ef));const _0x332a6a=[];for(const _0x9d3f0f of _0xa38fe0){let _0x4ca801=a0_0x2adf11[_0x608546(0x1e9)](_0x519605['data']['repo_path'],_0x9d3f0f[_0x608546(0x1d6)]),_0x336b68=null,_0x352a31=null;try{_0x336b68=await a0_0x493513['readFile'](_0x4ca801,{'encoding':_0x608546(0x281)});}catch(_0x40c7e7){const _0x2ee808=fixPathRepetition(_0x4ca801);if(_0x2ee808)try{_0x336b68=await a0_0x493513['readFile'](_0x2ee808,{'encoding':'utf-8'}),_0x4ca801=_0x2ee808;}catch{_0x352a31=_0x40c7e7 instanceof Error?_0x40c7e7:new Error(String(_0x40c7e7));}else _0x352a31=_0x40c7e7 instanceof Error?_0x40c7e7:new Error(String(_0x40c7e7));}if(_0x336b68!==null){const _0x31be65=_0x336b68[_0x608546(0x198)](/\r?\n/),_0x4ff95e=[_0x608546(0x2a8)+_0x9d3f0f['path']+'\x22>'];if(_0x9d3f0f[_0x608546(0x2a1)]==='*'||!Array['isArray'](_0x9d3f0f[_0x608546(0x2a1)]))for(let _0x5a7f89=0x1;_0x5a7f89<=_0x31be65['length'];_0x5a7f89++){const _0x12e14c=_0x31be65[_0x5a7f89-0x1];_0x4ff95e['push'](_0x5a7f89+'|\x20'+_0x12e14c);}else for(const [_0x234abf,_0x5bd9e3]of _0x9d3f0f[_0x608546(0x2a1)]){_0x4ff95e['length']>0x1&&_0x4ff95e[_0x608546(0x20f)]('');for(let _0x16cfaa=_0x234abf;_0x16cfaa<=_0x5bd9e3&&_0x16cfaa<=_0x31be65[_0x608546(0x290)];_0x16cfaa++){const _0xc05a41=_0x31be65[_0x16cfaa-0x1];_0x4ff95e[_0x608546(0x20f)](_0x16cfaa+'|\x20'+_0xc05a41);}}_0x4ff95e[_0x608546(0x20f)]('</file>'),_0x332a6a[_0x608546(0x20f)](_0x4ff95e['join']('\x0a'));}else _0x332a6a[_0x608546(0x20f)](_0x608546(0x2a8)+_0x9d3f0f[_0x608546(0x1d6)]+_0x608546(0x261)+(_0x352a31?.[_0x608546(0x1bf)]||_0x608546(0x287))+_0x608546(0x277));}_0x9b0c56[_0x608546(0x20f)](_0x332a6a['join']('\x0a\x0a')),_0x1b0b46=_0x9b0c56['join']('\x0a');const _0x5b4180=_0x2a742d['errors']?.['filter'](_0x4677c9=>_0x4677c9[_0x608546(0x1bf)]?.[_0x608546(0x27c)](_0x608546(0x1fb)))||[];if(_0x5b4180[_0x608546(0x290)]>0x0){const _0x26c41f=_0x5b4180[_0x608546(0x2ac)](_0x4606b2=>_0x4606b2[_0x608546(0x1bf)])['join'](';\x20');reportMorphError({'error_message':_0x26c41f,'error_type':_0x608546(0x20a),'context':{'tool':_0x608546(0x1d0),'repo_path':_0x519605[_0x608546(0x271)][_0x608546(0x207)],'query':_0x519605[_0x608546(0x271)][_0x608546(0x275)],'model':_0x608546(0x1a0),'termination_reason':_0x608546(0x27b),'error_count':_0x5b4180[_0x608546(0x290)],'is_timeout':![],'timings':_0x2a742d[_0x608546(0x1f1)],'files_attempted':_0xa38fe0[_0x608546(0x2ac)](_0x5b54e8=>({'path':_0x5b54e8['path'],'lines':_0x5b54e8[_0x608546(0x2a1)]})),'tool_calls':_0x335ea1(_0x2a742d[_0x608546(0x1e2)]),'messages':_0x2a742d[_0x608546(0x1e2)]?.['map'](_0x4219dd=>({'role':_0x4219dd[_0x608546(0x266)],'content':_0x4219dd[_0x608546(0x1f8)]})),'request_content':{'query':_0x519605[_0x608546(0x271)][_0x608546(0x275)],'repo_path':_0x519605[_0x608546(0x271)]['repo_path'],'repoRoot':a0_0x2adf11[_0x608546(0x1e9)](_0x519605[_0x608546(0x271)][_0x608546(0x207)]),'model':_0x608546(0x1a0)}},'source':_0x608546(0x1ae)})['catch'](()=>{});}}else{if(_0x2a742d['terminationReason']===_0x608546(0x2ab)&&_0x2a742d[_0x608546(0x200)][_0x608546(0x290)]>0x0){const _0x1fe5f4=_0x2a742d[_0x608546(0x200)]['map'](_0x14bab1=>_0x14bab1[_0x608546(0x1bf)])[_0x608546(0x2ae)](';\x20');_0x1b0b46=_0x608546(0x224)+_0x1fe5f4;const _0x1a8c41=_0x1fe5f4[_0x608546(0x214)]()[_0x608546(0x196)](_0x608546(0x22a))||_0x1fe5f4[_0x608546(0x214)]()[_0x608546(0x196)](_0x608546(0x239))||_0x1fe5f4[_0x608546(0x214)]()[_0x608546(0x196)](_0x608546(0x2a3)),_0x226c5e=_0x2a742d[_0x608546(0x1da)]?.[_0x608546(0x258)]?.[_0x608546(0x242)],_0xdc0176=_0x2a742d[_0x608546(0x200)][0x0];reportMorphError({'error_message':_0x1fe5f4,'error_type':_0x1a8c41?_0x608546(0x19d):_0xdc0176?.[_0x608546(0x284)]?.[_0x608546(0x298)]||_0x608546(0x1fe),'context':{'tool':'warpgrep_codebase_search','repo_path':_0x519605[_0x608546(0x271)][_0x608546(0x207)],'query':_0x519605[_0x608546(0x271)][_0x608546(0x275)],'model':_0x608546(0x1a0),'termination_reason':_0x2a742d[_0x608546(0x1f5)],'error_count':_0x2a742d[_0x608546(0x200)]['length'],'is_timeout':_0x1a8c41,'timings':_0x2a742d[_0x608546(0x1f1)],'files_attempted':_0x226c5e?.['map'](_0x5d4592=>({'path':_0x5d4592[_0x608546(0x1d6)],'lines':_0x5d4592[_0x608546(0x2a1)]})),'tool_calls':_0x335ea1(_0x2a742d[_0x608546(0x1e2)]),'messages':_0x2a742d['messages']?.[_0x608546(0x2ac)](_0x29933d=>({'role':_0x29933d[_0x608546(0x266)],'content':_0x29933d[_0x608546(0x1f8)]})),'request_content':{'query':_0x519605['data']['search_string'],'repo_path':_0x519605['data']['repo_path'],'repoRoot':a0_0x2adf11[_0x608546(0x1e9)](_0x519605[_0x608546(0x271)][_0x608546(0x207)]),'model':_0x608546(0x1a0)}},'stack_trace':_0xdc0176?.[_0x608546(0x262)]||undefined,'source':_0x608546(0x1ae)})['catch'](()=>{});}else _0x1b0b46=_0x608546(0x229);}return{'content':[{'type':_0x608546(0x190),'text':_0x1b0b46}]};}catch(_0x2c6a8f){const _0x5e19fd=_0x2c6a8f instanceof Error?_0x2c6a8f[_0x608546(0x1bf)]:String(_0x2c6a8f),_0x572656=_0x5e19fd[_0x608546(0x214)]()[_0x608546(0x196)](_0x608546(0x22a))||_0x5e19fd['toLowerCase']()[_0x608546(0x196)](_0x608546(0x239))||_0x5e19fd[_0x608546(0x214)]()[_0x608546(0x196)](_0x608546(0x2a3))||_0x2c6a8f instanceof Error&&_0x2c6a8f[_0x608546(0x298)]===_0x608546(0x19d);return reportMorphError({'error_message':_0x5e19fd,'error_type':_0x572656?_0x608546(0x19d):_0x2c6a8f instanceof Error?_0x2c6a8f['constructor'][_0x608546(0x298)]:'UnknownError','context':{'tool':_0x608546(0x1d0),'repo_path':_0x519605[_0x608546(0x271)][_0x608546(0x207)],'query':_0x519605['data'][_0x608546(0x275)],'model':_0x608546(0x1a0),'is_timeout':_0x572656,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x519605[_0x608546(0x271)]['search_string'],'repo_path':_0x519605[_0x608546(0x271)][_0x608546(0x207)],'repoRoot':a0_0x2adf11[_0x608546(0x1e9)](_0x519605['data'][_0x608546(0x207)]),'model':_0x608546(0x1a0)}},'stack_trace':_0x2c6a8f instanceof Error?_0x2c6a8f[_0x608546(0x262)]:undefined,'source':_0x608546(0x1ae)})[_0x608546(0x268)](()=>{}),{'content':[{'type':'text','text':_0x608546(0x211)+_0x5e19fd}],'isError':![]};}}case _0x608546(0x22c):{const _0x12d2ac=WarpGrepGitHubArgsSchema[_0x608546(0x21e)](_0x2c38d6);if(!_0x12d2ac['success'])return{'content':[{'type':_0x608546(0x190),'text':_0x608546(0x247)+_0x12d2ac['error']}],'isError':!![]};const _0x303246=MORPH_API_KEY;if(!_0x303246)throw new Error(_0x608546(0x221));const _0x2836ea=Date[_0x608546(0x1a1)]();console['error'](_0x608546(0x296)+_0x12d2ac[_0x608546(0x271)][_0x608546(0x22b)]+_0x608546(0x293)+_0x12d2ac[_0x608546(0x271)]['search_string']+'\x22');try{const _0x177ee4=new WarpGrepClient({'morphApiKey':_0x303246,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x25fde1=await _0x177ee4[_0x608546(0x21b)]({'query':_0x12d2ac[_0x608546(0x271)][_0x608546(0x275)],'github':_0x12d2ac[_0x608546(0x271)][_0x608546(0x22b)],'branch':_0x12d2ac[_0x608546(0x271)][_0x608546(0x19e)]}),_0x5010a7=Date[_0x608546(0x1a1)]()-_0x2836ea;console['error'](_0x608546(0x201)+_0x5010a7+_0x608546(0x24b)+_0x25fde1['success']);const _0xa2e65b=formatResult(_0x25fde1);return{'content':[{'type':_0x608546(0x190),'text':_0xa2e65b}]};}catch(_0x2c9b0d){const _0x4e3f9e=Date[_0x608546(0x1a1)]()-_0x2836ea,_0x4cd894=_0x2c9b0d instanceof Error?_0x2c9b0d[_0x608546(0x1bf)]:String(_0x2c9b0d);return console[_0x608546(0x1d7)](_0x608546(0x209)+_0x4e3f9e+_0x608546(0x203),_0x4cd894),reportMorphError({'error_message':_0x4cd894,'error_type':_0x2c9b0d instanceof Error?_0x2c9b0d['constructor'][_0x608546(0x298)]:_0x608546(0x1bb),'context':{'tool':_0x608546(0x22c),'github_url':_0x12d2ac[_0x608546(0x271)][_0x608546(0x22b)],'search_string':_0x12d2ac[_0x608546(0x271)][_0x608546(0x275)],'branch':_0x12d2ac[_0x608546(0x271)][_0x608546(0x19e)]},'stack_trace':_0x2c9b0d instanceof Error?_0x2c9b0d[_0x608546(0x262)]:undefined,'source':_0x608546(0x1ae),'tool':_0x608546(0x22c),'latency_ms':_0x4e3f9e})[_0x608546(0x268)](()=>{}),{'content':[{'type':_0x608546(0x190),'text':_0x608546(0x25f)+_0x4cd894}],'isError':![]};}}case _0x608546(0x1a7):{const _0x370132=CodebaseSearchArgsSchema[_0x608546(0x21e)](_0x2c38d6);if(!_0x370132[_0x608546(0x1cc)])return{'content':[{'type':_0x608546(0x190),'text':_0x608546(0x247)+_0x370132[_0x608546(0x1d7)]}],'isError':!![]};try{const _0x1ffe57=MORPH_API_KEY;if(!_0x1ffe57)throw new Error(_0x608546(0x225));const _0x3d150b=_0x370132[_0x608546(0x271)][_0x608546(0x23e)],_0x36a1bb=await executeCodebaseSearch({'query':_0x370132[_0x608546(0x271)][_0x608546(0x223)],'target_directories':_0x3d150b,'limit':_0x370132[_0x608546(0x271)][_0x608546(0x236)]},{'apiKey':_0x1ffe57,'repoId':_0x370132[_0x608546(0x271)][_0x608546(0x26f)],'branch':_0x370132[_0x608546(0x271)]['branch'],'commitHash':_0x370132[_0x608546(0x271)][_0x608546(0x219)],'debug':![]});if(!_0x36a1bb[_0x608546(0x1cc)])return{'content':[{'type':_0x608546(0x190),'text':_0x608546(0x24e)+_0x36a1bb[_0x608546(0x1d7)]}],'isError':!![]};const _0x150b06=_0x36a1bb['results'][_0x608546(0x290)]===0x0?_0x608546(0x1a5)+_0x370132['data']['query']+'\x22':_0x608546(0x1af)+_0x36a1bb[_0x608546(0x272)]['length']+_0x608546(0x26d)+_0x36a1bb[_0x608546(0x1a4)]['searchTimeMs']+_0x608546(0x1db)+_0x36a1bb[_0x608546(0x272)][_0x608546(0x2ac)]((_0x4ed972,_0xfa3640)=>_0xfa3640+0x1+'.\x20'+_0x4ed972[_0x608546(0x22d)]+'\x20('+(_0x4ed972[_0x608546(0x248)]*0x64)[_0x608546(0x205)](0x1)+_0x608546(0x1f7)+(_0x608546(0x260)+_0x4ed972['startLine']+'-'+_0x4ed972[_0x608546(0x264)]+'\x0a')+(_0x608546(0x216)+_0x4ed972[_0x608546(0x1f8)][_0x608546(0x206)](0x0,0xc8)+(_0x4ed972['content'][_0x608546(0x290)]>0xc8?_0x608546(0x19c):'')+'\x0a'))[_0x608546(0x2ae)]('\x0a');return{'content':[{'type':_0x608546(0x190),'text':_0x150b06}]};}catch(_0x454c09){const _0x5504da=_0x454c09 instanceof Error?_0x454c09[_0x608546(0x1bf)]:String(_0x454c09);return reportMorphError({'error_message':_0x5504da,'error_type':_0x454c09 instanceof Error?_0x454c09['constructor'][_0x608546(0x298)]:_0x608546(0x1bb),'context':{'tool':'codebase_search','query':_0x370132[_0x608546(0x271)]['query'],'repo_id':_0x370132['data'][_0x608546(0x26f)],'target_directories':_0x370132[_0x608546(0x271)][_0x608546(0x23e)]},'stack_trace':_0x454c09 instanceof Error?_0x454c09['stack']:undefined,'source':'mcp-filesystem'})[_0x608546(0x268)](()=>{}),{'content':[{'type':'text','text':_0x608546(0x224)+_0x5504da}],'isError':!![]};}}default:throw new Error(_0x608546(0x253)+_0x57b9ac);}}catch(_0xe3083f){const _0x323a9f=_0xe3083f instanceof Error?_0xe3083f[_0x608546(0x1bf)]:String(_0xe3083f);return reportMorphError({'error_message':_0x323a9f,'error_type':_0xe3083f instanceof Error?_0xe3083f[_0x608546(0x284)]['name']:_0x608546(0x1bb),'context':{'tool':name,'arguments':args?JSON[_0x608546(0x295)](args)[_0x608546(0x206)](0x0,0x1f4):undefined,'mcp_server_version':_0x608546(0x24c)},'stack_trace':_0xe3083f instanceof Error?_0xe3083f[_0x608546(0x262)]:undefined,'source':'mcp-filesystem'})[_0x608546(0x268)](()=>{}),{'content':[{'type':_0x608546(0x190),'text':_0x608546(0x224)+_0x323a9f}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x41e2a2){const _0x3d98a8=a0_0x21c775,_0x3877b8=await getValidRootDirectories(_0x41e2a2);if(_0x3877b8[_0x3d98a8(0x290)]>0x0)allowedDirectories=[..._0x3877b8],console['error'](_0x3d98a8(0x245)+_0x3877b8[_0x3d98a8(0x290)]+_0x3d98a8(0x210));else{console['error'](_0x3d98a8(0x1c7));if(ENABLE_WORKSPACE_MODE)try{const _0x52f07e=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x52f07e&&(allowedDirectories=[_0x52f07e],console[_0x3d98a8(0x1d7)](_0x3d98a8(0x1d1)+_0x52f07e));}catch(_0x325530){console[_0x3d98a8(0x1d7)](_0x3d98a8(0x2af)+_0x325530);}}}server[a0_0x21c775(0x1a2)](RootsListChangedNotificationSchema,async()=>{const _0x20727b=a0_0x21c775;try{const _0x2abf35=await server[_0x20727b(0x255)]();_0x2abf35&&'roots'in _0x2abf35&&await updateAllowedDirectoriesFromRoots(_0x2abf35[_0x20727b(0x1b7)]);}catch(_0x92cfc0){console[_0x20727b(0x1d7)]('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x92cfc0 instanceof Error?_0x92cfc0[_0x20727b(0x1bf)]:String(_0x92cfc0));}}),server['oninitialized']=async()=>{const _0x39d253=a0_0x21c775,_0x434463=server[_0x39d253(0x1dd)]();if(_0x434463?.[_0x39d253(0x1b7)])try{const _0x44b8f2=await server[_0x39d253(0x255)]();_0x44b8f2&&'roots'in _0x44b8f2?await updateAllowedDirectoriesFromRoots(_0x44b8f2['roots']):console[_0x39d253(0x1d7)]('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x66ab3f){console['error'](_0x39d253(0x1b5),_0x66ab3f instanceof Error?_0x66ab3f['message']:String(_0x66ab3f));}else{if(allowedDirectories[_0x39d253(0x290)]>0x0)console[_0x39d253(0x1d7)](_0x39d253(0x218),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x39d253(0x1d7)](_0x39d253(0x228));else throw new Error(_0x39d253(0x1c8));}}};async function runServer(){const _0x18854b=a0_0x21c775,_0x132546=new StdioServerTransport();await server[_0x18854b(0x21f)](_0x132546),console['error'](_0x18854b(0x294)),allowedDirectories[_0x18854b(0x290)]===0x0&&console[_0x18854b(0x1d7)](_0x18854b(0x265));}runServer()['catch'](_0x26042c=>{const _0x1fd7ae=a0_0x21c775;console[_0x1fd7ae(0x1d7)](_0x1fd7ae(0x244),_0x26042c),process[_0x1fd7ae(0x292)](0x1);});
@@ -1 +1 @@
1
- (function(_0x299d05,_0x9e93d9){const _0x5b72e3=a1_0x388d,_0x3f3709=_0x299d05();while(!![]){try{const _0x5f5189=parseInt(_0x5b72e3(0x125))/0x1+-parseInt(_0x5b72e3(0x11f))/0x2*(parseInt(_0x5b72e3(0x133))/0x3)+parseInt(_0x5b72e3(0x12e))/0x4*(parseInt(_0x5b72e3(0x11e))/0x5)+parseInt(_0x5b72e3(0x131))/0x6+-parseInt(_0x5b72e3(0x123))/0x7+-parseInt(_0x5b72e3(0x126))/0x8+-parseInt(_0x5b72e3(0x122))/0x9*(-parseInt(_0x5b72e3(0x127))/0xa);if(_0x5f5189===_0x9e93d9)break;else _0x3f3709['push'](_0x3f3709['shift']());}catch(_0x5c84e2){_0x3f3709['push'](_0x3f3709['shift']());}}}(a1_0x2671,0x97b81));import a1_0x6316d9 from'path';import a1_0x42adc4 from'os';function a1_0x388d(_0x33552d,_0x4dccf8){_0x33552d=_0x33552d-0x11d;const _0x26715f=a1_0x2671();let _0x388dad=_0x26715f[_0x33552d];return _0x388dad;}export function convertToWindowsPath(_0x1be0af){const _0x1b01b9=a1_0x388d;if(_0x1be0af[_0x1b01b9(0x12a)](_0x1b01b9(0x128))){const _0x2fb398=_0x1be0af[_0x1b01b9(0x130)](0x5)[_0x1b01b9(0x12c)](),_0x12e876=_0x1be0af['slice'](0x6)[_0x1b01b9(0x11d)](/\//g,'\x5c');return _0x2fb398+':'+_0x12e876;}if(_0x1be0af[_0x1b01b9(0x12d)](/^\/[a-zA-Z]\//)){const _0x20296f=_0x1be0af[_0x1b01b9(0x130)](0x1)[_0x1b01b9(0x12c)](),_0x5a3efe=_0x1be0af[_0x1b01b9(0x12f)](0x2)[_0x1b01b9(0x11d)](/\//g,'\x5c');return _0x20296f+':'+_0x5a3efe;}if(_0x1be0af[_0x1b01b9(0x12d)](/^[a-zA-Z]:/))return _0x1be0af['replace'](/\//g,'\x5c');return _0x1be0af;}export function normalizePath(_0xc38ff1){const _0x38e130=a1_0x388d;_0xc38ff1=_0xc38ff1[_0x38e130(0x121)]()[_0x38e130(0x11d)](/^["']|["']$/g,'');const _0x161c4f=_0xc38ff1[_0x38e130(0x12a)]('/')&&!_0xc38ff1[_0x38e130(0x12d)](/^\/mnt\/[a-z]\//i)&&!_0xc38ff1['match'](/^\/[a-zA-Z]\//);if(_0x161c4f)return _0xc38ff1[_0x38e130(0x11d)](/\/+/g,'/')[_0x38e130(0x11d)](/\/+$/,'');_0xc38ff1=convertToWindowsPath(_0xc38ff1);if(_0xc38ff1[_0x38e130(0x12a)]('\x5c\x5c')){let _0x50edd4=_0xc38ff1;_0x50edd4=_0x50edd4[_0x38e130(0x11d)](/^\\{2,}/,'\x5c\x5c');const _0x3cde1c=_0x50edd4[_0x38e130(0x129)](0x2)[_0x38e130(0x11d)](/\\\\/g,'\x5c');_0xc38ff1='\x5c\x5c'+_0x3cde1c;}else _0xc38ff1=_0xc38ff1[_0x38e130(0x11d)](/\\\\/g,'\x5c');let _0x3e0558=a1_0x6316d9[_0x38e130(0x120)](_0xc38ff1);_0xc38ff1[_0x38e130(0x12a)]('\x5c\x5c')&&!_0x3e0558['startsWith']('\x5c\x5c')&&(_0x3e0558='\x5c'+_0x3e0558);if(_0x3e0558[_0x38e130(0x12d)](/^[a-zA-Z]:/)){let _0x348ac5=_0x3e0558[_0x38e130(0x11d)](/\//g,'\x5c');return/^[a-z]:/[_0x38e130(0x12b)](_0x348ac5)&&(_0x348ac5=_0x348ac5['charAt'](0x0)[_0x38e130(0x12c)]()+_0x348ac5[_0x38e130(0x12f)](0x1)),_0x348ac5;}return _0x3e0558[_0x38e130(0x11d)](/\//g,'\x5c');}export function expandHome(_0x527885){const _0x156acd=a1_0x388d;if(_0x527885[_0x156acd(0x12a)]('~/')||_0x527885==='~')return a1_0x6316d9[_0x156acd(0x124)](a1_0x42adc4[_0x156acd(0x132)](),_0x527885[_0x156acd(0x12f)](0x1));return _0x527885;}function a1_0x2671(){const _0x14c6eb=['50qRVpUz','/mnt/','substring','startsWith','test','toUpperCase','match','4ckIYIN','slice','charAt','3061152NOBxZh','homedir','2914683HVOCcZ','replace','1420890PmMndE','2NVWWmQ','normalize','trim','1165131uVkpkf','1345225ouKeKR','join','1222115bbHKdT','7028824FBxAnZ'];a1_0x2671=function(){return _0x14c6eb;};return a1_0x2671();}
1
+ (function(_0x98e44a,_0x274d6d){const _0x3c941f=a1_0x1c95,_0x1ffb25=_0x98e44a();while(!![]){try{const _0x234a01=parseInt(_0x3c941f(0x9e))/0x1*(parseInt(_0x3c941f(0x9a))/0x2)+parseInt(_0x3c941f(0x9d))/0x3+parseInt(_0x3c941f(0x98))/0x4+-parseInt(_0x3c941f(0xa1))/0x5+parseInt(_0x3c941f(0x96))/0x6+parseInt(_0x3c941f(0xa3))/0x7*(parseInt(_0x3c941f(0xa4))/0x8)+-parseInt(_0x3c941f(0x9f))/0x9;if(_0x234a01===_0x274d6d)break;else _0x1ffb25['push'](_0x1ffb25['shift']());}catch(_0x147426){_0x1ffb25['push'](_0x1ffb25['shift']());}}}(a1_0x144e,0xded00));import a1_0x1a0606 from'path';import a1_0x39f454 from'os';export function convertToWindowsPath(_0x39f765){const _0xc08563=a1_0x1c95;if(_0x39f765[_0xc08563(0xa2)](_0xc08563(0x9b))){const _0xd319db=_0x39f765['charAt'](0x5)['toUpperCase'](),_0x41d96d=_0x39f765[_0xc08563(0x9c)](0x6)[_0xc08563(0x99)](/\//g,'\x5c');return _0xd319db+':'+_0x41d96d;}if(_0x39f765['match'](/^\/[a-zA-Z]\//)){const _0x6b5995=_0x39f765[_0xc08563(0xa0)](0x1)[_0xc08563(0xa7)](),_0x11e123=_0x39f765[_0xc08563(0x9c)](0x2)[_0xc08563(0x99)](/\//g,'\x5c');return _0x6b5995+':'+_0x11e123;}if(_0x39f765[_0xc08563(0xa5)](/^[a-zA-Z]:/))return _0x39f765[_0xc08563(0x99)](/\//g,'\x5c');return _0x39f765;}function a1_0x144e(){const _0x2a37d5=['152QcfPqx','match','homedir','toUpperCase','normalize','trim','1648188jnkbTR','substring','467820WYQixT','replace','69614ZtrSsO','/mnt/','slice','3311160gJTiYr','8aMILzi','10822086eDdvIF','charAt','1792145jgFMiR','startsWith','257782TjEwfJ'];a1_0x144e=function(){return _0x2a37d5;};return a1_0x144e();}function a1_0x1c95(_0x1c8aae,_0x176c64){_0x1c8aae=_0x1c8aae-0x96;const _0x144eda=a1_0x144e();let _0x1c9592=_0x144eda[_0x1c8aae];return _0x1c9592;}export function normalizePath(_0x5998e6){const _0x16c980=a1_0x1c95;_0x5998e6=_0x5998e6[_0x16c980(0xa9)]()[_0x16c980(0x99)](/^["']|["']$/g,'');const _0x47ccec=_0x5998e6[_0x16c980(0xa2)]('/')&&!_0x5998e6['match'](/^\/mnt\/[a-z]\//i)&&!_0x5998e6[_0x16c980(0xa5)](/^\/[a-zA-Z]\//);if(_0x47ccec)return _0x5998e6[_0x16c980(0x99)](/\/+/g,'/')[_0x16c980(0x99)](/\/+$/,'');_0x5998e6=convertToWindowsPath(_0x5998e6);if(_0x5998e6['startsWith']('\x5c\x5c')){let _0x36b251=_0x5998e6;_0x36b251=_0x36b251[_0x16c980(0x99)](/^\\{2,}/,'\x5c\x5c');const _0x57d9fc=_0x36b251[_0x16c980(0x97)](0x2)[_0x16c980(0x99)](/\\\\/g,'\x5c');_0x5998e6='\x5c\x5c'+_0x57d9fc;}else _0x5998e6=_0x5998e6['replace'](/\\\\/g,'\x5c');let _0x342d7c=a1_0x1a0606[_0x16c980(0xa8)](_0x5998e6);_0x5998e6[_0x16c980(0xa2)]('\x5c\x5c')&&!_0x342d7c[_0x16c980(0xa2)]('\x5c\x5c')&&(_0x342d7c='\x5c'+_0x342d7c);if(_0x342d7c[_0x16c980(0xa5)](/^[a-zA-Z]:/)){let _0x1fa919=_0x342d7c['replace'](/\//g,'\x5c');return/^[a-z]:/['test'](_0x1fa919)&&(_0x1fa919=_0x1fa919['charAt'](0x0)[_0x16c980(0xa7)]()+_0x1fa919[_0x16c980(0x9c)](0x1)),_0x1fa919;}return _0x342d7c['replace'](/\//g,'\x5c');}export function expandHome(_0x4553bc){const _0x34d7ec=a1_0x1c95;if(_0x4553bc[_0x34d7ec(0xa2)]('~/')||_0x4553bc==='~')return a1_0x1a0606['join'](a1_0x39f454[_0x34d7ec(0xa6)](),_0x4553bc[_0x34d7ec(0x9c)](0x1));return _0x4553bc;}
@@ -1 +1 @@
1
- function a2_0x1c6f(_0x475e15,_0x44b31d){_0x475e15=_0x475e15-0x1a5;const _0x4985b8=a2_0x4985();let _0x1c6f11=_0x4985b8[_0x475e15];return _0x1c6f11;}(function(_0x3d750e,_0x3679f7){const _0x14bdba=a2_0x1c6f,_0x1a5629=_0x3d750e();while(!![]){try{const _0x282e18=-parseInt(_0x14bdba(0x1bb))/0x1*(parseInt(_0x14bdba(0x1af))/0x2)+parseInt(_0x14bdba(0x1ba))/0x3+parseInt(_0x14bdba(0x1aa))/0x4+-parseInt(_0x14bdba(0x1b7))/0x5*(parseInt(_0x14bdba(0x1ac))/0x6)+parseInt(_0x14bdba(0x1a6))/0x7+-parseInt(_0x14bdba(0x1ad))/0x8*(parseInt(_0x14bdba(0x1b1))/0x9)+parseInt(_0x14bdba(0x1ab))/0xa*(-parseInt(_0x14bdba(0x1b4))/0xb);if(_0x282e18===_0x3679f7)break;else _0x1a5629['push'](_0x1a5629['shift']());}catch(_0x20e49b){_0x1a5629['push'](_0x1a5629['shift']());}}}(a2_0x4985,0xafe44));import a2_0x3f69ac from'path';function a2_0x4985(){const _0xaed62e=['263LItrod','some','9767296bGKyEU','isArray','startsWith','length','3031820qrqyAH','30yqIOyn','17454BPrsHq','61672AvnbpD','resolve','5896oidXCV','string','378JJzXMJ','includes','Path\x20must\x20be\x20absolute\x20after\x20normalization','1715043fTFeyo','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','isAbsolute','1655Ypcynu','normalize','sep','3290667mIqrXb'];a2_0x4985=function(){return _0xaed62e;};return a2_0x4985();}export function isPathWithinAllowedDirectories(_0x2192ad,_0x5bb7d8){const _0xf2bc4=a2_0x1c6f;if(typeof _0x2192ad!=='string'||!Array[_0xf2bc4(0x1a7)](_0x5bb7d8))return![];if(!_0x2192ad||_0x5bb7d8[_0xf2bc4(0x1a9)]===0x0)return![];if(_0x2192ad[_0xf2bc4(0x1b2)]('\x00'))return![];let _0x1c492c;try{_0x1c492c=a2_0x3f69ac['resolve'](a2_0x3f69ac[_0xf2bc4(0x1b8)](_0x2192ad));}catch{return![];}if(!a2_0x3f69ac['isAbsolute'](_0x1c492c))throw new Error(_0xf2bc4(0x1b3));return _0x5bb7d8[_0xf2bc4(0x1a5)](_0x10ecae=>{const _0x887802=_0xf2bc4;if(typeof _0x10ecae!==_0x887802(0x1b0)||!_0x10ecae)return![];if(_0x10ecae[_0x887802(0x1b2)]('\x00'))return![];let _0x3df24d;try{_0x3df24d=a2_0x3f69ac[_0x887802(0x1ae)](a2_0x3f69ac[_0x887802(0x1b8)](_0x10ecae));}catch{return![];}if(!a2_0x3f69ac[_0x887802(0x1b6)](_0x3df24d))throw new Error(_0x887802(0x1b5));if(_0x1c492c===_0x3df24d)return!![];if(_0x3df24d===a2_0x3f69ac[_0x887802(0x1b9)])return _0x1c492c[_0x887802(0x1a8)](a2_0x3f69ac[_0x887802(0x1b9)]);return _0x1c492c['startsWith'](_0x3df24d+a2_0x3f69ac[_0x887802(0x1b9)]);});}
1
+ (function(_0x21c10f,_0x19d943){const _0x5a2668=a2_0x22ee,_0x389d61=_0x21c10f();while(!![]){try{const _0x35331f=-parseInt(_0x5a2668(0x205))/0x1*(-parseInt(_0x5a2668(0x1f8))/0x2)+parseInt(_0x5a2668(0x1f0))/0x3*(-parseInt(_0x5a2668(0x203))/0x4)+-parseInt(_0x5a2668(0x1ff))/0x5+parseInt(_0x5a2668(0x1f3))/0x6+-parseInt(_0x5a2668(0x1fe))/0x7+parseInt(_0x5a2668(0x1f9))/0x8*(-parseInt(_0x5a2668(0x1f4))/0x9)+parseInt(_0x5a2668(0x1fa))/0xa;if(_0x35331f===_0x19d943)break;else _0x389d61['push'](_0x389d61['shift']());}catch(_0x2924e6){_0x389d61['push'](_0x389d61['shift']());}}}(a2_0x1042,0x2b68c));function a2_0x22ee(_0x58a81e,_0x3b8175){_0x58a81e=_0x58a81e-0x1f0;const _0x104225=a2_0x1042();let _0x22ee2e=_0x104225[_0x58a81e];return _0x22ee2e;}import a2_0x51953a from'path';function a2_0x1042(){const _0x3b70ab=['Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','202932iAtgLd','3SrIIAV','resolve','normalize','1930776UxkFGL','2260395kugrwv','isArray','string','startsWith','2FedHIB','8gHbfWb','6426250rMYQHs','length','isAbsolute','Path\x20must\x20be\x20absolute\x20after\x20normalization','2312261UsXbEK','637950WAWqsC','some','includes','sep','1121924hEjNHK'];a2_0x1042=function(){return _0x3b70ab;};return a2_0x1042();}export function isPathWithinAllowedDirectories(_0x1ed703,_0x2b370b){const _0xc74cf4=a2_0x22ee;if(typeof _0x1ed703!==_0xc74cf4(0x1f6)||!Array[_0xc74cf4(0x1f5)](_0x2b370b))return![];if(!_0x1ed703||_0x2b370b[_0xc74cf4(0x1fb)]===0x0)return![];if(_0x1ed703[_0xc74cf4(0x201)]('\x00'))return![];let _0x3b53a2;try{_0x3b53a2=a2_0x51953a[_0xc74cf4(0x1f1)](a2_0x51953a[_0xc74cf4(0x1f2)](_0x1ed703));}catch{return![];}if(!a2_0x51953a[_0xc74cf4(0x1fc)](_0x3b53a2))throw new Error(_0xc74cf4(0x1fd));return _0x2b370b[_0xc74cf4(0x200)](_0x2c4000=>{const _0x4c9d7f=_0xc74cf4;if(typeof _0x2c4000!=='string'||!_0x2c4000)return![];if(_0x2c4000[_0x4c9d7f(0x201)]('\x00'))return![];let _0x333b8f;try{_0x333b8f=a2_0x51953a[_0x4c9d7f(0x1f1)](a2_0x51953a[_0x4c9d7f(0x1f2)](_0x2c4000));}catch{return![];}if(!a2_0x51953a[_0x4c9d7f(0x1fc)](_0x333b8f))throw new Error(_0x4c9d7f(0x204));if(_0x3b53a2===_0x333b8f)return!![];if(_0x333b8f===a2_0x51953a[_0x4c9d7f(0x202)])return _0x3b53a2['startsWith'](a2_0x51953a['sep']);return _0x3b53a2[_0x4c9d7f(0x1f7)](_0x333b8f+a2_0x51953a[_0x4c9d7f(0x202)]);});}
@@ -1 +1 @@
1
- (function(_0x425ed9,_0x8f32ed){const _0x2b9495=a3_0x169e,_0x4dd387=_0x425ed9();while(!![]){try{const _0x4b0d61=-parseInt(_0x2b9495(0x1aa))/0x1*(-parseInt(_0x2b9495(0x1a2))/0x2)+parseInt(_0x2b9495(0x1a1))/0x3+parseInt(_0x2b9495(0x1b1))/0x4+parseInt(_0x2b9495(0x1ac))/0x5+parseInt(_0x2b9495(0x1a0))/0x6*(-parseInt(_0x2b9495(0x1a7))/0x7)+-parseInt(_0x2b9495(0x1a9))/0x8*(-parseInt(_0x2b9495(0x1ab))/0x9)+-parseInt(_0x2b9495(0x1b2))/0xa;if(_0x4b0d61===_0x8f32ed)break;else _0x4dd387['push'](_0x4dd387['shift']());}catch(_0x374318){_0x4dd387['push'](_0x4dd387['shift']());}}}(a3_0x3162,0x87726));import{promises as a3_0x1f2a91}from'fs';function a3_0x3162(){const _0x209567=['uri','homedir','push','resolve','4221052WvcxBT','18546130wyqHDJ','isDirectory','realpath','Skipping\x20invalid\x20directory:\x20','non-directory\x20root','error','85716MeurWy','678129UYKqaG','167880BWoczh','Skipping\x20','file://','stat','startsWith','21HYucOA','slice','3112Mexril','1UUJyrF','5229msuzlO','4305030pvbMet'];a3_0x3162=function(){return _0x209567;};return a3_0x3162();}import a3_0x5df8c9 from'path';import a3_0x14f906 from'os';import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x24c8bb){const _0x491be4=a3_0x169e;try{const _0x2d6d71=_0x24c8bb[_0x491be4(0x1a6)](_0x491be4(0x1a4))?_0x24c8bb[_0x491be4(0x1a8)](0x7):_0x24c8bb,_0x37f03c=_0x2d6d71[_0x491be4(0x1a6)]('~/')||_0x2d6d71==='~'?a3_0x5df8c9['join'](a3_0x14f906[_0x491be4(0x1ae)](),_0x2d6d71[_0x491be4(0x1a8)](0x1)):_0x2d6d71,_0x425c16=a3_0x5df8c9[_0x491be4(0x1b0)](_0x37f03c),_0x1fdeeb=await a3_0x1f2a91[_0x491be4(0x1b4)](_0x425c16);return normalizePath(_0x1fdeeb);}catch{return null;}}function formatDirectoryError(_0x3b8377,_0x20e3cc,_0x226bfc){const _0x4cceef=a3_0x169e;if(_0x226bfc)return _0x4cceef(0x1a3)+_0x226bfc+':\x20'+_0x3b8377;const _0xb9cfa4=_0x20e3cc instanceof Error?_0x20e3cc['message']:String(_0x20e3cc);return _0x4cceef(0x1b5)+_0x3b8377+'\x20due\x20to\x20error:\x20'+_0xb9cfa4;}function a3_0x169e(_0x2b86d6,_0x1c48ce){_0x2b86d6=_0x2b86d6-0x19e;const _0x316221=a3_0x3162();let _0x169e31=_0x316221[_0x2b86d6];return _0x169e31;}export async function getValidRootDirectories(_0x209a87){const _0x6a3b11=a3_0x169e,_0x4406c1=[];for(const _0x56054d of _0x209a87){const _0x1e9710=await parseRootUri(_0x56054d[_0x6a3b11(0x1ad)]);if(!_0x1e9710){console[_0x6a3b11(0x19f)](formatDirectoryError(_0x56054d[_0x6a3b11(0x1ad)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x3ba3d1=await a3_0x1f2a91[_0x6a3b11(0x1a5)](_0x1e9710);_0x3ba3d1[_0x6a3b11(0x1b3)]()?_0x4406c1[_0x6a3b11(0x1af)](_0x1e9710):console['error'](formatDirectoryError(_0x1e9710,undefined,_0x6a3b11(0x19e)));}catch(_0x53e185){console[_0x6a3b11(0x19f)](formatDirectoryError(_0x1e9710,_0x53e185));}}return _0x4406c1;}
1
+ (function(_0x42bd49,_0x3d386b){const _0x759b91=a3_0x25bc,_0x1aa4d4=_0x42bd49();while(!![]){try{const _0x11e7b7=-parseInt(_0x759b91(0x194))/0x1+-parseInt(_0x759b91(0x19d))/0x2*(-parseInt(_0x759b91(0x19a))/0x3)+-parseInt(_0x759b91(0x1a0))/0x4*(-parseInt(_0x759b91(0x18a))/0x5)+-parseInt(_0x759b91(0x18b))/0x6+parseInt(_0x759b91(0x192))/0x7*(parseInt(_0x759b91(0x19e))/0x8)+parseInt(_0x759b91(0x19b))/0x9*(-parseInt(_0x759b91(0x18f))/0xa)+-parseInt(_0x759b91(0x19c))/0xb;if(_0x11e7b7===_0x3d386b)break;else _0x1aa4d4['push'](_0x1aa4d4['shift']());}catch(_0x53f89c){_0x1aa4d4['push'](_0x1aa4d4['shift']());}}}(a3_0x9c26,0x228af));import{promises as a3_0x5b515f}from'fs';import a3_0x27ca76 from'path';import a3_0x211456 from'os';import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x46536d){const _0x314aab=a3_0x25bc;try{const _0x1fc066=_0x46536d[_0x314aab(0x189)](_0x314aab(0x198))?_0x46536d['slice'](0x7):_0x46536d,_0x4d0bb9=_0x1fc066[_0x314aab(0x189)]('~/')||_0x1fc066==='~'?a3_0x27ca76[_0x314aab(0x18d)](a3_0x211456[_0x314aab(0x196)](),_0x1fc066[_0x314aab(0x18c)](0x1)):_0x1fc066,_0x43d951=a3_0x27ca76[_0x314aab(0x1a1)](_0x4d0bb9),_0x21c2c7=await a3_0x5b515f[_0x314aab(0x195)](_0x43d951);return normalizePath(_0x21c2c7);}catch{return null;}}function formatDirectoryError(_0x2a43d2,_0x57ecb3,_0x1e9e50){const _0x226466=a3_0x25bc;if(_0x1e9e50)return'Skipping\x20'+_0x1e9e50+':\x20'+_0x2a43d2;const _0x4cfaaa=_0x57ecb3 instanceof Error?_0x57ecb3[_0x226466(0x1a2)]:String(_0x57ecb3);return _0x226466(0x191)+_0x2a43d2+'\x20due\x20to\x20error:\x20'+_0x4cfaaa;}function a3_0x9c26(){const _0x26ca10=['push','Skipping\x20invalid\x20directory:\x20','7ceOXsu','uri','114536hMeBpv','realpath','homedir','stat','file://','error','233394aGNAeM','114336xUAZoV','2276758zWbmfU','6EhVWCy','1560728AuhjRl','invalid\x20path\x20or\x20inaccessible','537880jdvuHx','resolve','message','startsWith','10DQZiKP','110736nOaRny','slice','join','isDirectory','170aXetSS'];a3_0x9c26=function(){return _0x26ca10;};return a3_0x9c26();}function a3_0x25bc(_0x3dbdf8,_0x32af88){_0x3dbdf8=_0x3dbdf8-0x189;const _0x9c26da=a3_0x9c26();let _0x25bce3=_0x9c26da[_0x3dbdf8];return _0x25bce3;}export async function getValidRootDirectories(_0x4c8c2b){const _0x24030b=a3_0x25bc,_0x3f51a9=[];for(const _0x435c46 of _0x4c8c2b){const _0x500014=await parseRootUri(_0x435c46[_0x24030b(0x193)]);if(!_0x500014){console[_0x24030b(0x199)](formatDirectoryError(_0x435c46[_0x24030b(0x193)],undefined,_0x24030b(0x19f)));continue;}try{const _0x4c9c7a=await a3_0x5b515f[_0x24030b(0x197)](_0x500014);_0x4c9c7a[_0x24030b(0x18e)]()?_0x3f51a9[_0x24030b(0x190)](_0x500014):console[_0x24030b(0x199)](formatDirectoryError(_0x500014,undefined,'non-directory\x20root'));}catch(_0x1dc597){console[_0x24030b(0x199)](formatDirectoryError(_0x500014,_0x1dc597));}}return _0x3f51a9;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.102",
3
+ "version": "0.8.104",
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.122",
38
+ "@morphllm/morphsdk": "0.2.123",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",