@morphllm/morphmcp 0.8.113 → 0.8.115
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 +3 -22
- package/dist/index.js +1 -1
- package/dist/path-utils.js +1 -1
- package/dist/path-validation.js +1 -1
- package/dist/roots-utils.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ Supercharge your coding agent. One MCP with two specialized tools for faster edi
|
|
|
10
10
|
| `warpgrep_codebase_search` | Sub-agent that runs parallel grep/read operations to find relevant code |
|
|
11
11
|
| `warpgrep_github_search` | Search any public GitHub repo by URL or `owner/repo` shorthand |
|
|
12
12
|
|
|
13
|
-
All three tools are
|
|
13
|
+
All three tools are always exposed. Clients can manage tool visibility on their side.
|
|
14
14
|
|
|
15
15
|
## Quick Start
|
|
16
16
|
|
|
@@ -31,8 +31,7 @@ Add to `.cursor/mcp.json`:
|
|
|
31
31
|
"command": "npx",
|
|
32
32
|
"args": ["-y", "@morphllm/morphmcp"],
|
|
33
33
|
"env": {
|
|
34
|
-
"MORPH_API_KEY": "sk-xxx"
|
|
35
|
-
"ENABLED_TOOLS": "warpgrep_codebase_search,warpgrep_github_search"
|
|
34
|
+
"MORPH_API_KEY": "sk-xxx"
|
|
36
35
|
}
|
|
37
36
|
}
|
|
38
37
|
}
|
|
@@ -51,8 +50,7 @@ Add to `.vscode/mcp.json`:
|
|
|
51
50
|
"command": "npx",
|
|
52
51
|
"args": ["-y", "@morphllm/morphmcp"],
|
|
53
52
|
"env": {
|
|
54
|
-
"MORPH_API_KEY": "sk-xxx"
|
|
55
|
-
"ENABLED_TOOLS": "edit_file,warpgrep_codebase_search,warpgrep_github_search"
|
|
53
|
+
"MORPH_API_KEY": "sk-xxx"
|
|
56
54
|
}
|
|
57
55
|
}
|
|
58
56
|
}
|
|
@@ -101,26 +99,9 @@ Output: List of files with specific line ranges + actual code content
|
|
|
101
99
|
| Variable | Description | Default |
|
|
102
100
|
|----------|-------------|---------|
|
|
103
101
|
| `MORPH_API_KEY` | Your API key from [morphllm.com](https://morphllm.com) | Required |
|
|
104
|
-
| `ENABLED_TOOLS` | Comma-separated list or `all` | `edit_file,warpgrep_codebase_search,warpgrep_github_search` |
|
|
105
102
|
| `MORPH_API_URL` | Override Morph API base URL for custom proxies | `https://api.morphllm.com` |
|
|
106
103
|
| `MORPH_WARP_GREP_TIMEOUT` | Timeout for warp grep model calls in ms | `30000` |
|
|
107
104
|
|
|
108
|
-
### Customize enabled tools
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
# Default (all three tools)
|
|
112
|
-
ENABLED_TOOLS=edit_file,warpgrep_codebase_search,warpgrep_github_search
|
|
113
|
-
|
|
114
|
-
# Only fast editing
|
|
115
|
-
ENABLED_TOOLS=edit_file
|
|
116
|
-
|
|
117
|
-
# Only local search
|
|
118
|
-
ENABLED_TOOLS=warpgrep_codebase_search
|
|
119
|
-
|
|
120
|
-
# Only GitHub search
|
|
121
|
-
ENABLED_TOOLS=warpgrep_github_search
|
|
122
|
-
```
|
|
123
|
-
|
|
124
105
|
## Get an API Key
|
|
125
106
|
|
|
126
107
|
1. Sign up at [morphllm.com](https://morphllm.com)
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x44d8d0=a0_0x2993;(function(_0x293a22,_0x1dc8c5){const _0x2a989e=a0_0x2993,_0x1af41f=_0x293a22();while(!![]){try{const _0x3d69f1=parseInt(_0x2a989e(0x199))/0x1*(parseInt(_0x2a989e(0x1d0))/0x2)+-parseInt(_0x2a989e(0x23e))/0x3*(parseInt(_0x2a989e(0x251))/0x4)+parseInt(_0x2a989e(0x245))/0x5*(-parseInt(_0x2a989e(0x279))/0x6)+-parseInt(_0x2a989e(0x265))/0x7*(parseInt(_0x2a989e(0x24c))/0x8)+parseInt(_0x2a989e(0x242))/0x9*(parseInt(_0x2a989e(0x1eb))/0xa)+parseInt(_0x2a989e(0x207))/0xb+parseInt(_0x2a989e(0x1fb))/0xc*(parseInt(_0x2a989e(0x253))/0xd);if(_0x3d69f1===_0x1dc8c5)break;else _0x1af41f['push'](_0x1af41f['shift']());}catch(_0x34431c){_0x1af41f['push'](_0x1af41f['shift']());}}}(a0_0x4d2c,0x2f54c));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_0x5d9aab from'fs/promises';import a0_0x5cf1e3 from'path';import a0_0x330205 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_0x589aab from'axios';function fixPathRepetition(_0x400420){const _0x161b76=a0_0x2993,_0x4069c5=_0x400420[_0x161b76(0x217)](a0_0x5cf1e3[_0x161b76(0x26f)])[_0x161b76(0x1a9)](Boolean);if(_0x4069c5[_0x161b76(0x1b9)]<0x2)return null;for(let _0x4c0867=Math['floor'](_0x4069c5[_0x161b76(0x1b9)]/0x2);_0x4c0867>=0x1;_0x4c0867--){for(let _0x43353f=0x0;_0x43353f<=_0x4069c5[_0x161b76(0x1b9)]-0x2*_0x4c0867;_0x43353f++){const _0x2f1e2b=_0x4069c5['slice'](_0x43353f,_0x43353f+_0x4c0867),_0x8efc4c=_0x4069c5[_0x161b76(0x1ae)](_0x43353f+_0x4c0867,_0x43353f+0x2*_0x4c0867);if(_0x2f1e2b['every']((_0x23eeb2,_0x29ffac)=>_0x23eeb2===_0x8efc4c[_0x29ffac])){const _0x38453b=[..._0x4069c5[_0x161b76(0x1ae)](0x0,_0x43353f),..._0x4069c5[_0x161b76(0x1ae)](_0x43353f+_0x4c0867)];return a0_0x5cf1e3[_0x161b76(0x26f)]+_0x38453b[_0x161b76(0x1da)](a0_0x5cf1e3[_0x161b76(0x26f)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x5ad6e0=a0_0x2993;try{const _0x241ca6=require(_0x5ad6e0(0x249));return _0x241ca6['version']??'unknown';}catch(_0x24b017){return console['error'](_0x5ad6e0(0x263),_0x24b017),'unknown';}}function printHelp(){const _0x2b764c=a0_0x2993;console[_0x2b764c(0x1f7)]('@morphllm/morphmcp\x20'+getPackageVersion()),console['log']('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x2b764c(0x1f7)](_0x2b764c(0x244)),console['log']('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x2b764c(0x1f7)](_0x2b764c(0x174)),console[_0x2b764c(0x1f7)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console['log'](_0x2b764c(0x23a)),console[_0x2b764c(0x1f7)]('\x20\x20morph-mcp'),console[_0x2b764c(0x1f7)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x44d8d0(0x184)][a0_0x44d8d0(0x1ae)](0x2),VERSION_FLAGS=new Set([a0_0x44d8d0(0x22b),'-v','-V']),HELP_FLAGS=new Set([a0_0x44d8d0(0x211),'-h']);function a0_0x4d2c(){const _0x4a7252=['data','repo_path','Failed\x20to\x20request\x20roots\x20from\x20client:','code','listRoots','edit_file','env','searchTimeMs','@morphllm/morphmcp\x20','6CKpKrl','ToolException','match','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','Here\x20is\x20the\x20content\x20of\x20files:\x0a','messages','role','.cursor','describe','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','some','Max\x20results\x20to\x20return','ms:\x0a\x0a',',\x20removed\x20','\x20results\x20in\x20','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','includes','mcp-filesystem','trim','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','[warpgrep_github_search]\x20Failed\x20in\x20','-\x20Grepped\x20\x27','Relevant\x20context\x20found:','search_type','exit','linesRemoved','false','array','\x20is\x20not\x20a\x20directory','terminationReason','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','MORPH_WARP_GREP_TIMEOUT','unknown\x20error','files','argv','\x0a</file>','.\x20Path:\x20','assistant','Warning:\x20Workspace\x20fallback\x20failed:\x20',',\x20modified\x20','filepath','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','runWarpGrep_call','content','\x22>\x0aError\x20reading\x20file:\x20','requiresApiKey','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','endLine','access','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','has','Warning:\x20','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','sk-','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','1307jwTmlW','timings','Error:\x20','read','instruction','substring','basename','all','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','MORPH_API_KEY','utf-8','homedir','tsconfig.json','list_directory\x20','constructor','filter','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','query','repoId','FileNotFound','slice','unknown','Found\x20','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','setNotificationHandler','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','changes','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','morph-','length','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','UnknownError','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','startsWith','timed\x20out','Enabled\x20tools:\x20','Error\x20accessing\x20directory\x20','BinaryFile','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','\x20-\x20','--api-key=','indexOf','source','\x20error(s)','-\x20Listed\x20directory\x20`','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','completed_with_file_errors','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','warn','Preview\x20changes\x20without\x20applying\x20them.','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','94FWjsWv','name','ENABLED_TOOLS','params','ms.\x20Success:\x20','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','WarpGrepError','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','TimeoutError','join','%\x20match)\x0a','object','commitHash','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','terminated','No\x20results\x20found\x20for\x20query:\x20\x22','normalize','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','morph-v3-fast','dirname','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Morph\x20FastApply\x20failed\x20without\x20error\x20message','codebase_search','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','WarpGrep\x20sub-tool\x20errors:\x20','20fqUKQA','inputSchema','stack','node_modules','\x27\x20in\x20`','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','stringify','\x20as\x20allowed\x20directory','roots','catch','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','readFile','log','default','dryRun','linesModified','12eIDdbd','RipgrepNotAvailable','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','isArray','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','realpath','optional','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','toISOString','Parent\x20directory\x20does\x20not\x20exist:\x20','morph-warp-grep-v1-1111v0','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','3168462ENsiAU','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','[warpgrep_github_search]\x20Done\x20in\x20','grep\x20\x27','code_edit','errors','.\x20Changes:\x20','Invalid\x20arguments:\x20','</file>','SubToolError','--help','boolean','Fallback:\x20Using\x20workspace\x20root\x20','Benefits:\x0a','text','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','split','grep','ReadError','\x20\x20\x20Lines\x20','\x0a...\x20(truncated,\x20total:\x20','GitHub\x20search\x20failed:\x20','api-key','limit','Repository\x20identifier','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','metadata','success','Applied','ms:','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','composer.json','Search\x20failed:\x20','warpgrep_codebase_search','finish','push','--version','MORPH_API_URL','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','<file\x20path=\x22','RipgrepError','description','oninitialized','github_url','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','[warpgrep_github_search]\x20Searching\x20','message','cwd','map','lines','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','\x0aExamples:','warpgrep_github_search','error','search_string','327tfxLTV','results','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','Created\x20File','612297phZMsc','...','\x0aOptions:','1573235dSjGpG','Workspace\x20mode\x20enabled:\x20Using\x20','number','targetDirectories','../package.json','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','FileReadError','16EuNldM','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','stat','isDirectory','timeout','16TuPFCz','string','3278886lBDrAt','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','WORKSPACE_ROOT','stats','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','ENOENT','setRequestHandler','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','owner_repo','safeParse','toLowerCase','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','Fatal\x20error\x20running\x20server:','branch','path','enum','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','now','800828nixdEd','toFixed','resolve','etimedout','\x20\x20\x20','0.2.0','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','SymlinkError','startLine','sep'];a0_0x4d2c=function(){return _0x4a7252;};return a0_0x4d2c();}cliArgs[a0_0x44d8d0(0x283)](_0x2ce406=>VERSION_FLAGS[a0_0x44d8d0(0x194)](_0x2ce406))&&(console[a0_0x44d8d0(0x1f7)](a0_0x44d8d0(0x278)+getPackageVersion()),process[a0_0x44d8d0(0x179)](0x0));function a0_0x2993(_0x15ee43,_0x425bbe){_0x15ee43=_0x15ee43-0x16c;const _0x4d2c74=a0_0x4d2c();let _0x2993d6=_0x4d2c74[_0x15ee43];return _0x2993d6;}cliArgs[a0_0x44d8d0(0x283)](_0x265c28=>HELP_FLAGS[a0_0x44d8d0(0x194)](_0x265c28))&&(printHelp(),process[a0_0x44d8d0(0x179)](0x0));function getCliArg(_0x1b91fd){const _0x5deab5=a0_0x44d8d0;for(let _0x698f71=0x0;_0x698f71<cliArgs[_0x5deab5(0x1b9)];_0x698f71++){const _0x34ca2e=cliArgs[_0x698f71];if(_0x34ca2e[_0x5deab5(0x1bd)]('--'+_0x1b91fd+'='))return _0x34ca2e['slice'](('--'+_0x1b91fd+'=')[_0x5deab5(0x1b9)]);if(_0x34ca2e==='--'+_0x1b91fd&&_0x698f71+0x1<cliArgs[_0x5deab5(0x1b9)])return cliArgs[_0x698f71+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x44d8d0(0x194)](arg)||HELP_FLAGS[a0_0x44d8d0(0x194)](arg))continue;if(arg[a0_0x44d8d0(0x1bd)](a0_0x44d8d0(0x1c4)))continue;if(arg==='--api-key'){i++;continue;}args['push'](arg);}const ALL_TOOLS=[a0_0x44d8d0(0x275),'warpgrep_codebase_search',a0_0x44d8d0(0x23b),a0_0x44d8d0(0x1e8)],DEFAULT_TOOLS=[a0_0x44d8d0(0x275),a0_0x44d8d0(0x228),a0_0x44d8d0(0x23b)],ENABLED_TOOLS=process[a0_0x44d8d0(0x276)][a0_0x44d8d0(0x1d2)]?process[a0_0x44d8d0(0x276)]['ENABLED_TOOLS']==='all'?ALL_TOOLS:process[a0_0x44d8d0(0x276)]['ENABLED_TOOLS'][a0_0x44d8d0(0x217)](',')['map'](_0x36dc93=>_0x36dc93[a0_0x44d8d0(0x173)]()):DEFAULT_TOOLS;console['error'](a0_0x44d8d0(0x1bf)+ENABLED_TOOLS['join'](',\x20'));const WORKSPACE_ROOT=process[a0_0x44d8d0(0x276)][a0_0x44d8d0(0x255)]||process['env']['PWD']||process[a0_0x44d8d0(0x236)](),ENABLE_WORKSPACE_MODE=process[a0_0x44d8d0(0x276)]['ENABLE_WORKSPACE_MODE']!==a0_0x44d8d0(0x17b),MORPH_API_KEY=getCliArg(a0_0x44d8d0(0x21d))??process[a0_0x44d8d0(0x276)][a0_0x44d8d0(0x1a3)],MORPH_API_URL=process[a0_0x44d8d0(0x276)][a0_0x44d8d0(0x22c)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x44d8d0(0x276)][a0_0x44d8d0(0x181)]?parseInt(process[a0_0x44d8d0(0x276)][a0_0x44d8d0(0x181)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x44d8d0(0x1bd)](a0_0x44d8d0(0x197))&&!MORPH_API_KEY[a0_0x44d8d0(0x1bd)](a0_0x44d8d0(0x1b8))&&console[a0_0x44d8d0(0x23c)](a0_0x44d8d0(0x1a2));async function reportMorphError(_0x5c9991){const _0x2005f7=a0_0x44d8d0;try{await a0_0x589aab['post']('https://morphllm.com/api/error-report',{..._0x5c9991,'timestamp':new Date()[_0x2005f7(0x203)](),'source':_0x5c9991[_0x2005f7(0x1c6)]||_0x2005f7(0x172)},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}args[a0_0x44d8d0(0x1b9)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console['error']('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),console['error'](a0_0x44d8d0(0x1d8)),console[a0_0x44d8d0(0x23c)](a0_0x44d8d0(0x1a1)),console[a0_0x44d8d0(0x23c)](a0_0x44d8d0(0x1e2)),console[a0_0x44d8d0(0x23c)](a0_0x44d8d0(0x17f)),console[a0_0x44d8d0(0x23c)](a0_0x44d8d0(0x16e)));function normalizePath(_0x1755ac){const _0x3a169e=a0_0x44d8d0;return a0_0x5cf1e3[_0x3a169e(0x1e1)](_0x1755ac);}function expandHome(_0x9895d0){const _0x4503db=a0_0x44d8d0;if(_0x9895d0[_0x4503db(0x1bd)]('~/')||_0x9895d0==='~')return a0_0x5cf1e3[_0x4503db(0x1da)](a0_0x330205[_0x4503db(0x1a5)](),_0x9895d0[_0x4503db(0x1ae)](0x1));return _0x9895d0;}let allowedDirectories=await Promise[a0_0x44d8d0(0x1a0)](args[a0_0x44d8d0(0x237)](async _0x3e7ae5=>{const _0x465c54=a0_0x44d8d0,_0x4f9090=expandHome(_0x3e7ae5),_0x1f17a2=a0_0x5cf1e3[_0x465c54(0x267)](_0x4f9090);try{const _0x3a0e6b=await a0_0x5d9aab[_0x465c54(0x200)](_0x1f17a2);return normalizePath(_0x3a0e6b);}catch(_0x16782c){return normalizePath(_0x1f17a2);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x44d8d0(0x1b9)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x44d8d0(0x22a)](workspaceDir),console['error'](a0_0x44d8d0(0x246)+workspaceDir+a0_0x44d8d0(0x1f2)));}catch(a0_0x629689){console['error'](a0_0x44d8d0(0x225)+a0_0x629689);}async function detectWorkspaceRoot(_0x41f393){const _0x986b12=a0_0x44d8d0;let _0x5b535d=a0_0x5cf1e3[_0x986b12(0x267)](_0x41f393);const _0x14e2bf=['.git','.vscode','package.json','Cargo.toml','pyproject.toml','go.mod',_0x986b12(0x280),_0x986b12(0x1a6),_0x986b12(0x226)];while(_0x5b535d!==a0_0x5cf1e3[_0x986b12(0x1e5)](_0x5b535d)){for(const _0x314678 of _0x14e2bf){const _0x8cbbf3=a0_0x5cf1e3[_0x986b12(0x1da)](_0x5b535d,_0x314678);try{return await a0_0x5d9aab[_0x986b12(0x192)](_0x8cbbf3),normalizePath(_0x5b535d);}catch{}}_0x5b535d=a0_0x5cf1e3[_0x986b12(0x1e5)](_0x5b535d);}return normalizePath(_0x41f393);}await Promise['all'](args[a0_0x44d8d0(0x237)](async _0x45c617=>{const _0x5ecaca=a0_0x44d8d0;try{const _0x468a27=await a0_0x5d9aab[_0x5ecaca(0x24e)](expandHome(_0x45c617));!_0x468a27[_0x5ecaca(0x24f)]()&&(console[_0x5ecaca(0x23c)](_0x5ecaca(0x19b)+_0x45c617+_0x5ecaca(0x17d)),process[_0x5ecaca(0x179)](0x1));}catch(_0x6bcc0a){console[_0x5ecaca(0x23c)](_0x5ecaca(0x1c0)+_0x45c617+':',_0x6bcc0a),process['exit'](0x1);}}));async function validatePath(_0x1c1ab4){const _0x352cf3=a0_0x44d8d0,_0x321b8a=expandHome(_0x1c1ab4),_0xf082c1=a0_0x5cf1e3[_0x352cf3(0x267)](_0x321b8a);try{const _0x34cb9d=await a0_0x5d9aab[_0x352cf3(0x200)](_0xf082c1);return _0x34cb9d;}catch(_0x3619dc){if(_0x3619dc[_0x352cf3(0x273)]===_0x352cf3(0x258)){const _0x542f14=a0_0x5cf1e3[_0x352cf3(0x1e5)](_0xf082c1);try{const _0x22adeb=await a0_0x5d9aab[_0x352cf3(0x200)](_0x542f14);return a0_0x5cf1e3['join'](_0x22adeb,a0_0x5cf1e3[_0x352cf3(0x19f)](_0xf082c1));}catch{throw new Error(_0x352cf3(0x204)+_0x542f14);}}throw _0x3619dc;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x44d8d0(0x252)](),'code_edit':z['string']()['describe'](a0_0x44d8d0(0x170)),'instruction':z[a0_0x44d8d0(0x252)]()[a0_0x44d8d0(0x281)]('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0x44d8d0(0x212)]()['default'](![])[a0_0x44d8d0(0x281)](a0_0x44d8d0(0x1cd))}),WarpGrepArgsSchema=z[a0_0x44d8d0(0x1dc)]({'search_string':z[a0_0x44d8d0(0x252)]()[a0_0x44d8d0(0x281)]('Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for'),'repo_path':z[a0_0x44d8d0(0x252)]()[a0_0x44d8d0(0x281)](a0_0x44d8d0(0x1c2)),'search_type':z[a0_0x44d8d0(0x262)]([a0_0x44d8d0(0x1f8),a0_0x44d8d0(0x1ee)])[a0_0x44d8d0(0x201)]()[a0_0x44d8d0(0x281)](a0_0x44d8d0(0x1b1))}),WarpGrepGitHubArgsSchema=z[a0_0x44d8d0(0x1dc)]({'search_string':z['string']()['describe'](a0_0x44d8d0(0x24a)),'github_url':z[a0_0x44d8d0(0x252)]()[a0_0x44d8d0(0x201)]()[a0_0x44d8d0(0x281)](a0_0x44d8d0(0x208)),'owner_repo':z[a0_0x44d8d0(0x252)]()['optional']()[a0_0x44d8d0(0x281)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z['string']()['optional']()[a0_0x44d8d0(0x281)]('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z[a0_0x44d8d0(0x1dc)]({'query':z[a0_0x44d8d0(0x252)]()[a0_0x44d8d0(0x281)]('Natural\x20language\x20query\x20to\x20search\x20for\x20code'),'repoId':z[a0_0x44d8d0(0x252)]()[a0_0x44d8d0(0x281)](a0_0x44d8d0(0x21f)),'branch':z['string']()[a0_0x44d8d0(0x201)]()[a0_0x44d8d0(0x281)](a0_0x44d8d0(0x282)),'commitHash':z[a0_0x44d8d0(0x252)]()[a0_0x44d8d0(0x201)]()[a0_0x44d8d0(0x281)]('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x44d8d0(0x17c)](z[a0_0x44d8d0(0x252)]())[a0_0x44d8d0(0x1f8)]([])[a0_0x44d8d0(0x281)](a0_0x44d8d0(0x24d)),'limit':z[a0_0x44d8d0(0x247)]()[a0_0x44d8d0(0x201)]()[a0_0x44d8d0(0x1f8)](0xa)[a0_0x44d8d0(0x281)](a0_0x44d8d0(0x284))}),server=new Server({'name':'morph-mcp','version':a0_0x44d8d0(0x26a)},{'capabilities':{'tools':{}}});server[a0_0x44d8d0(0x259)](ListToolsRequestSchema,async()=>{const _0x232afd=a0_0x44d8d0,_0x3c269a=[{'name':_0x232afd(0x275),'description':_0x232afd(0x1ce)+_0x232afd(0x25e)+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+_0x232afd(0x1f0)+_0x232afd(0x214)+_0x232afd(0x26c)+_0x232afd(0x1de)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+_0x232afd(0x1b7)+_0x232afd(0x16d)+_0x232afd(0x254)+'For\x20deletions:\x0a'+_0x232afd(0x1d6)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+'Rules:\x0a'+_0x232afd(0x220)+_0x232afd(0x1fd)+_0x232afd(0x1b2)+_0x232afd(0x1ff)+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+_0x232afd(0x1cf)+_0x232afd(0x1f5),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x232afd(0x228),'description':_0x232afd(0x1b3)+_0x232afd(0x216)+'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'+_0x232afd(0x1cb)+_0x232afd(0x27c)+'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'+_0x232afd(0x1e9)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':_0x232afd(0x1e8),'description':_0x232afd(0x1d5)+_0x232afd(0x1ba)+'🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a'+_0x232afd(0x214)+_0x232afd(0x1bc)+_0x232afd(0x239)+_0x232afd(0x1b5)+_0x232afd(0x26b)+_0x232afd(0x202)+_0x232afd(0x180)+_0x232afd(0x193),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x18bea8=_0x3c269a[_0x232afd(0x1a9)](_0x22ebf5=>{const _0x103a3a=_0x232afd;if(!ENABLED_TOOLS[_0x103a3a(0x171)](_0x22ebf5[_0x103a3a(0x1d1)]))return![];if(_0x103a3a(0x18f)in _0x22ebf5&&_0x22ebf5[_0x103a3a(0x18f)]&&!MORPH_API_KEY)return console[_0x103a3a(0x23c)](_0x103a3a(0x195)+_0x22ebf5[_0x103a3a(0x1d1)]+_0x103a3a(0x22d)),![];return!![];});return{'tools':_0x18bea8[_0x232afd(0x237)](_0x383b4f=>({'name':_0x383b4f[_0x232afd(0x1d1)],'description':_0x383b4f[_0x232afd(0x230)],'inputSchema':_0x383b4f[_0x232afd(0x1ec)]}))};}),server[a0_0x44d8d0(0x259)](CallToolRequestSchema,async _0x56f4df=>{const _0x1d315f=a0_0x44d8d0;try{const {name:_0x3751d1,arguments:_0x20b5d4}=_0x56f4df[_0x1d315f(0x1d3)];switch(_0x3751d1){case _0x1d315f(0x275):{const _0x57417b=MorphEditFileArgsSchema[_0x1d315f(0x25c)](_0x20b5d4);if(!_0x57417b[_0x1d315f(0x222)])throw new Error(_0x1d315f(0x1c9)+_0x57417b[_0x1d315f(0x23c)]);const _0x1c9574=await validatePath(_0x57417b['data'][_0x1d315f(0x261)]);let _0x20e9d5=null,_0x147608=!![],_0x250918=null;try{_0x20e9d5=await a0_0x5d9aab['readFile'](_0x1c9574,_0x1d315f(0x1a4));}catch(_0x26598e){const _0x28430b=_0x26598e[_0x1d315f(0x273)];_0x28430b==='ENOENT'?(_0x147608=![],_0x20e9d5=''):(_0x250918='Failed\x20to\x20read\x20file:\x20'+(_0x28430b||_0x1d315f(0x1af))+_0x1d315f(0x1c3)+(_0x26598e instanceof Error?_0x26598e[_0x1d315f(0x235)]:String(_0x26598e)),console[_0x1d315f(0x23c)]('Warning:\x20'+_0x250918));}let _0x21120e;try{const _0x147304=MORPH_API_KEY;if(!_0x147304)throw new Error(_0x1d315f(0x196));const _0x364054=a0_0x5cf1e3[_0x1d315f(0x1e5)](_0x1c9574),_0x9f3d3=a0_0x5cf1e3[_0x1d315f(0x19f)](_0x1c9574),_0x3092b3=await executeEditFile({'target_filepath':_0x9f3d3,'code_edit':_0x57417b[_0x1d315f(0x270)][_0x1d315f(0x20b)],'instructions':_0x57417b['data'][_0x1d315f(0x19d)]},{'morphApiKey':_0x147304,'morphApiUrl':MORPH_API_URL,'baseDir':_0x364054,'autoWrite':!_0x57417b[_0x1d315f(0x270)]['dryRun'],'generateUdiff':![],'debug':![]});_0x21120e=_0x3092b3['completionId'];if(!_0x3092b3[_0x1d315f(0x222)])throw new Error(_0x3092b3['error']||_0x1d315f(0x1e7));const _0x3fafd2=_0x3092b3[_0x1d315f(0x1b6)],_0x421f9c='added\x20'+_0x3fafd2['linesAdded']+_0x1d315f(0x286)+_0x3fafd2[_0x1d315f(0x17a)]+_0x1d315f(0x189)+_0x3fafd2[_0x1d315f(0x1fa)];if(_0x57417b[_0x1d315f(0x270)]['dryRun'])return{'content':[{'type':'text','text':'Morph\x20Edit\x20Preview'+(_0x147608?'':'\x20(new\x20file)')+':\x20'+_0x57417b[_0x1d315f(0x270)][_0x1d315f(0x19d)]+_0x1d315f(0x20d)+_0x421f9c+'.\x20Path:\x20'+_0x57417b[_0x1d315f(0x270)]['path']+'.'}]};return{'content':[{'type':_0x1d315f(0x215),'text':'Morph\x20Edit\x20'+(_0x147608?_0x1d315f(0x223):_0x1d315f(0x241))+':\x20'+_0x57417b[_0x1d315f(0x270)][_0x1d315f(0x19d)]+'.\x20Changes:\x20'+_0x421f9c+_0x1d315f(0x186)+_0x57417b[_0x1d315f(0x270)][_0x1d315f(0x261)]+'.'}]};}catch(_0x2717ce){const _0x586bcf=_0x2717ce instanceof Error?_0x2717ce[_0x1d315f(0x235)]:String(_0x2717ce);return reportMorphError({'error_message':_0x586bcf,'error_type':_0x2717ce instanceof Error?_0x2717ce[_0x1d315f(0x1a8)][_0x1d315f(0x1d1)]:_0x1d315f(0x1bb),'context':{'tool':'edit_file','completion_id':_0x21120e,'file_path':_0x57417b[_0x1d315f(0x270)][_0x1d315f(0x261)],'validated_path':_0x1c9574,'instruction':_0x57417b[_0x1d315f(0x270)]['instruction'],'model':_0x1d315f(0x1e4),'dry_run':_0x57417b[_0x1d315f(0x270)][_0x1d315f(0x1f9)],'file_exists':_0x147608,'file_read_error':_0x250918,'file_readable':_0x20e9d5!==null,'request_content':{'path':_0x57417b['data'][_0x1d315f(0x261)],'code_edit':_0x57417b['data'][_0x1d315f(0x20b)],'instruction':_0x57417b[_0x1d315f(0x270)][_0x1d315f(0x19d)],'original_code':_0x20e9d5!==null?_0x20e9d5[_0x1d315f(0x1b9)]>0xc350?_0x20e9d5[_0x1d315f(0x19e)](0x0,0xc350)+_0x1d315f(0x21b)+_0x20e9d5[_0x1d315f(0x1b9)]+'\x20chars)':_0x20e9d5:'[could\x20not\x20read\x20file:\x20'+(_0x250918||_0x1d315f(0x182))+']','original_code_length':_0x20e9d5?.[_0x1d315f(0x1b9)]??0x0,'model':_0x1d315f(0x1e4),'dry_run':_0x57417b['data'][_0x1d315f(0x1f9)]}},'stack_trace':_0x2717ce instanceof Error?_0x2717ce[_0x1d315f(0x1ed)]:undefined,'source':_0x1d315f(0x172)})[_0x1d315f(0x1f4)](()=>{}),{'content':[{'type':_0x1d315f(0x215),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x586bcf}],'isError':!![]};}}case _0x1d315f(0x228):{const _0x2c63cb=WarpGrepArgsSchema[_0x1d315f(0x25c)](_0x20b5d4);if(!_0x2c63cb[_0x1d315f(0x222)])return{'content':[{'type':'text','text':_0x1d315f(0x20e)+_0x2c63cb[_0x1d315f(0x23c)]}],'isError':!![]};const _0x26b13d=_0x7c9ada=>{const _0x120158=_0x1d315f,_0x5a658d=[];for(const _0x53945a of _0x7c9ada||[]){const _0x20f707=_0x53945a['role'],_0x384229=_0x53945a[_0x120158(0x18d)];if(_0x20f707===_0x120158(0x187)&&_0x384229){const _0xfc3d9a=_0x384229[_0x120158(0x217)]('\x0a')[_0x120158(0x1a9)](_0x3b151c=>_0x3b151c['trim']());for(const _0x2c2c7a of _0xfc3d9a){const _0x1bf659=_0x2c2c7a[_0x120158(0x27b)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x1bf659){_0x5a658d[_0x120158(0x22a)](_0x120158(0x20a)+_0x1bf659[0x1]+'\x27\x20'+_0x1bf659[0x2]);continue;}const _0x3bf66f=_0x2c2c7a[_0x120158(0x27b)](/^read\s+(.+)$/);if(_0x3bf66f){_0x5a658d[_0x120158(0x22a)]('read\x20'+_0x3bf66f[0x1]);continue;}const _0x378bf8=_0x2c2c7a[_0x120158(0x27b)](/^list_directory\s+(.+)$/);if(_0x378bf8){_0x5a658d['push'](_0x120158(0x1a7)+_0x378bf8[0x1]);continue;}}}}return _0x5a658d;},_0x11a43f=_0x166ef1=>{const _0x3ef158=_0x1d315f,_0x4f3566=[];if(!_0x166ef1||!Array[_0x3ef158(0x1fe)](_0x166ef1))return _0x4f3566;const _0x1cb60f=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x3ef158(0x1ad),'tool':_0x3ef158(0x19c)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x3ef158(0x19c)},{'pattern':/\[READ ERROR\]/,'error_type':_0x3ef158(0x219),'tool':_0x3ef158(0x19c)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x3ef158(0x1c1),'tool':_0x3ef158(0x19c)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x3ef158(0x22f),'tool':_0x3ef158(0x218)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x3ef158(0x1fc),'tool':_0x3ef158(0x218)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x3ef158(0x26d),'tool':'read'},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':'read'},{'pattern':/symbolic link/,'error_type':_0x3ef158(0x26d),'tool':_0x3ef158(0x19c)},{'pattern':/Error reading file:/,'error_type':_0x3ef158(0x219),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x3ef158(0x27a),'tool':'unknown'}];let _0x10c783=0x0;for(const _0x4e2d9f of _0x166ef1){if(_0x4e2d9f[_0x3ef158(0x27f)]==='user'){_0x10c783++;const _0x3e95cc=_0x4e2d9f[_0x3ef158(0x18d)];if(!_0x3e95cc||typeof _0x3e95cc!=='string')continue;for(const {pattern:_0x56437e,error_type:_0x273d35,tool:_0x5e695b}of _0x1cb60f){const _0x1c1f9b=_0x3e95cc['match'](new RegExp(_0x56437e['source'],'g'));if(_0x1c1f9b)for(const _0x43d683 of _0x1c1f9b){const _0x477b3a=_0x3e95cc[_0x3ef158(0x1c5)](_0x43d683),_0x3bfbb4=_0x3e95cc[_0x3ef158(0x19e)](_0x477b3a,Math['min'](_0x477b3a+0xc8,_0x3e95cc[_0x3ef158(0x1b9)]));_0x4f3566['push']({'tool':_0x5e695b,'error_type':_0x273d35,'error_message':_0x3bfbb4[_0x3ef158(0x217)]('\x0a')[0x0],'turn':_0x10c783});}}}}return _0x4f3566;};try{const _0x18af82=a0_0x5cf1e3['resolve'](_0x2c63cb[_0x1d315f(0x270)][_0x1d315f(0x271)]),_0x1a0f78=_0x2c63cb[_0x1d315f(0x270)][_0x1d315f(0x178)],_0xad8975=_0x1a0f78==='node_modules'?{'allowNames':[_0x1d315f(0x1ee)]}:undefined,_0x2a8866=new LocalRipgrepProvider(_0x18af82,undefined,_0xad8975),_0x1c36d8=await runWarpGrep({'query':_0x2c63cb[_0x1d315f(0x270)]['search_string'],'repoRoot':_0x18af82,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x2a8866,'search_type':_0x1a0f78}),_0x4e8ee6=_0x11a43f(_0x1c36d8[_0x1d315f(0x27e)]);_0x4e8ee6[_0x1d315f(0x1b9)]>0x0&&reportMorphError({'error_message':_0x1d315f(0x1ea)+_0x4e8ee6[_0x1d315f(0x1b9)]+_0x1d315f(0x1c7),'error_type':_0x1d315f(0x210),'level':_0x1d315f(0x1cc),'tool':_0x1d315f(0x228),'context':{'repo_path':_0x2c63cb['data'][_0x1d315f(0x271)],'query':_0x2c63cb[_0x1d315f(0x270)][_0x1d315f(0x23d)],'model':_0x1d315f(0x205),'termination_reason':_0x1c36d8[_0x1d315f(0x17e)],'sub_tool_errors':_0x4e8ee6,'timings':_0x1c36d8['timings'],'tool_calls':_0x26b13d(_0x1c36d8['messages']),'messages':_0x1c36d8[_0x1d315f(0x27e)]?.['map'](_0x2ac1b3=>({'role':_0x2ac1b3[_0x1d315f(0x27f)],'content':_0x2ac1b3[_0x1d315f(0x18d)]}))},'source':_0x1d315f(0x172)})[_0x1d315f(0x1f4)](()=>{});let _0x4633dd='';if(_0x1c36d8[_0x1d315f(0x17e)]==='completed'&&_0x1c36d8[_0x1d315f(0x229)]?.[_0x1d315f(0x221)]?.['files']){const _0x499f32=_0x1c36d8[_0x1d315f(0x229)][_0x1d315f(0x221)][_0x1d315f(0x183)];if(_0x499f32[_0x1d315f(0x1b9)]===0x0)return _0x4633dd=_0x1c36d8[_0x1d315f(0x229)]['payload']||_0x1d315f(0x198),{'content':[{'type':'text','text':_0x4633dd}]};const _0x3561d4=[],_0x41d24c=[_0x1d315f(0x206)];for(const _0x1fbb6f of _0x1c36d8[_0x1d315f(0x27e)]){const _0x5e37d7=_0x1fbb6f['role'],_0xf1d2e1=_0x1fbb6f[_0x1d315f(0x18d)];if(_0x5e37d7===_0x1d315f(0x187)&&_0xf1d2e1){const _0x425f9d=_0xf1d2e1[_0x1d315f(0x217)]('\x0a')['filter'](_0x3457f5=>_0x3457f5[_0x1d315f(0x173)]());for(const _0x404bbd of _0x425f9d){const _0x279507=_0x404bbd[_0x1d315f(0x27b)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x279507){_0x41d24c[_0x1d315f(0x22a)](_0x1d315f(0x176)+_0x279507[0x1]+_0x1d315f(0x1ef)+_0x279507[0x2]+'`');continue;}const _0x131855=_0x404bbd['match'](/^read\s+(.+)$/);if(_0x131855){_0x41d24c[_0x1d315f(0x22a)]('-\x20Read\x20file\x20`'+_0x131855[0x1]+'`');continue;}const _0x1965dd=_0x404bbd[_0x1d315f(0x27b)](/^list_directory\s+(.+)$/);if(_0x1965dd){_0x41d24c[_0x1d315f(0x22a)](_0x1d315f(0x1c8)+_0x1965dd[0x1]+'`');continue;}}}}_0x3561d4['push'](_0x41d24c[_0x1d315f(0x1da)]('\x0a'));const _0x445dcf=['',_0x1d315f(0x177)];for(const _0x43f348 of _0x499f32){if(_0x43f348[_0x1d315f(0x238)]==='*')_0x445dcf['push']('-\x20'+_0x43f348[_0x1d315f(0x261)]+':*');else{if(Array['isArray'](_0x43f348[_0x1d315f(0x238)])){const _0x301aaa=_0x43f348['lines']['map'](([_0x5b4f64,_0x3c0fd2])=>{if(_0x5b4f64===_0x3c0fd2)return''+_0x5b4f64;return _0x5b4f64+'-'+_0x3c0fd2;});_0x445dcf[_0x1d315f(0x22a)]('-\x20'+_0x43f348['path']+':'+_0x301aaa[_0x1d315f(0x1da)](','));}else _0x445dcf['push']('-\x20'+_0x43f348['path']+':*');}}_0x445dcf[_0x1d315f(0x22a)](''),_0x3561d4[_0x1d315f(0x22a)](_0x445dcf[_0x1d315f(0x1da)]('\x0a')),_0x3561d4[_0x1d315f(0x22a)](_0x1d315f(0x27d));const _0x47646e=[];for(const _0x1b9344 of _0x499f32){let _0x322229=a0_0x5cf1e3['resolve'](_0x2c63cb['data'][_0x1d315f(0x271)],_0x1b9344[_0x1d315f(0x261)]),_0x767d1=null,_0x3ed6cf=null;try{_0x767d1=await a0_0x5d9aab[_0x1d315f(0x1f6)](_0x322229,{'encoding':_0x1d315f(0x1a4)});}catch(_0x2a1251){const _0x2b2dda=fixPathRepetition(_0x322229);if(_0x2b2dda)try{_0x767d1=await a0_0x5d9aab[_0x1d315f(0x1f6)](_0x2b2dda,{'encoding':_0x1d315f(0x1a4)}),_0x322229=_0x2b2dda;}catch{_0x3ed6cf=_0x2a1251 instanceof Error?_0x2a1251:new Error(String(_0x2a1251));}else _0x3ed6cf=_0x2a1251 instanceof Error?_0x2a1251:new Error(String(_0x2a1251));}if(_0x767d1!==null){const _0x3fe998=_0x767d1[_0x1d315f(0x217)](/\r?\n/),_0xd01e67=[_0x1d315f(0x22e)+_0x1b9344[_0x1d315f(0x261)]+'\x22>'];if(_0x1b9344['lines']==='*'||!Array[_0x1d315f(0x1fe)](_0x1b9344[_0x1d315f(0x238)]))for(let _0x5bdcfb=0x1;_0x5bdcfb<=_0x3fe998[_0x1d315f(0x1b9)];_0x5bdcfb++){const _0x1af790=_0x3fe998[_0x5bdcfb-0x1];_0xd01e67[_0x1d315f(0x22a)](_0x5bdcfb+'|\x20'+_0x1af790);}else for(const [_0x135481,_0x430293]of _0x1b9344[_0x1d315f(0x238)]){_0xd01e67['length']>0x1&&_0xd01e67[_0x1d315f(0x22a)]('');for(let _0x1fc3f3=_0x135481;_0x1fc3f3<=_0x430293&&_0x1fc3f3<=_0x3fe998['length'];_0x1fc3f3++){const _0x5ab899=_0x3fe998[_0x1fc3f3-0x1];_0xd01e67[_0x1d315f(0x22a)](_0x1fc3f3+'|\x20'+_0x5ab899);}}_0xd01e67[_0x1d315f(0x22a)](_0x1d315f(0x20f)),_0x47646e['push'](_0xd01e67['join']('\x0a'));}else _0x47646e[_0x1d315f(0x22a)]('<file\x20path=\x22'+_0x1b9344['path']+_0x1d315f(0x18e)+(_0x3ed6cf?.[_0x1d315f(0x235)]||'Unknown\x20error')+_0x1d315f(0x185));}_0x3561d4[_0x1d315f(0x22a)](_0x47646e[_0x1d315f(0x1da)]('\x0a\x0a')),_0x4633dd=_0x3561d4[_0x1d315f(0x1da)]('\x0a');const _0x53dae3=_0x1c36d8['errors']?.[_0x1d315f(0x1a9)](_0x217e66=>_0x217e66[_0x1d315f(0x235)]?.[_0x1d315f(0x1bd)]('File\x20read\x20error:'))||[];if(_0x53dae3[_0x1d315f(0x1b9)]>0x0){const _0x5a08d3=_0x53dae3[_0x1d315f(0x237)](_0x4dbe3c=>_0x4dbe3c[_0x1d315f(0x235)])[_0x1d315f(0x1da)](';\x20');reportMorphError({'error_message':_0x5a08d3,'error_type':_0x1d315f(0x24b),'context':{'tool':'warpgrep_codebase_search','repo_path':_0x2c63cb[_0x1d315f(0x270)][_0x1d315f(0x271)],'query':_0x2c63cb[_0x1d315f(0x270)][_0x1d315f(0x23d)],'model':_0x1d315f(0x205),'termination_reason':_0x1d315f(0x1ca),'error_count':_0x53dae3[_0x1d315f(0x1b9)],'is_timeout':![],'timings':_0x1c36d8[_0x1d315f(0x19a)],'files_attempted':_0x499f32[_0x1d315f(0x237)](_0x211258=>({'path':_0x211258[_0x1d315f(0x261)],'lines':_0x211258[_0x1d315f(0x238)]})),'tool_calls':_0x26b13d(_0x1c36d8[_0x1d315f(0x27e)]),'messages':_0x1c36d8['messages']?.[_0x1d315f(0x237)](_0x399f04=>({'role':_0x399f04[_0x1d315f(0x27f)],'content':_0x399f04[_0x1d315f(0x18d)]})),'request_content':{'query':_0x2c63cb[_0x1d315f(0x270)][_0x1d315f(0x23d)],'repo_path':_0x2c63cb[_0x1d315f(0x270)][_0x1d315f(0x271)],'repoRoot':a0_0x5cf1e3['resolve'](_0x2c63cb[_0x1d315f(0x270)][_0x1d315f(0x271)]),'model':_0x1d315f(0x205)}},'source':_0x1d315f(0x172)})['catch'](()=>{});}}else{if(_0x1c36d8[_0x1d315f(0x17e)]===_0x1d315f(0x1df)&&_0x1c36d8[_0x1d315f(0x20c)][_0x1d315f(0x1b9)]>0x0){const _0x321a35=_0x1c36d8['errors'][_0x1d315f(0x237)](_0x22c366=>_0x22c366[_0x1d315f(0x235)])['join'](';\x20');_0x4633dd=_0x1d315f(0x19b)+_0x321a35;const _0xedc351=_0x321a35[_0x1d315f(0x25d)]()['includes'](_0x1d315f(0x250))||_0x321a35['toLowerCase']()['includes'](_0x1d315f(0x1be))||_0x321a35[_0x1d315f(0x25d)]()[_0x1d315f(0x171)](_0x1d315f(0x268)),_0x4ca353=_0x1c36d8['finish']?.['metadata']?.[_0x1d315f(0x183)],_0x165ba7=_0x1c36d8[_0x1d315f(0x20c)][0x0];reportMorphError({'error_message':_0x321a35,'error_type':_0xedc351?_0x1d315f(0x1d9):_0x165ba7?.[_0x1d315f(0x1a8)]?.[_0x1d315f(0x1d1)]||_0x1d315f(0x1d7),'context':{'tool':'warpgrep_codebase_search','repo_path':_0x2c63cb[_0x1d315f(0x270)][_0x1d315f(0x271)],'query':_0x2c63cb[_0x1d315f(0x270)][_0x1d315f(0x23d)],'model':_0x1d315f(0x205),'termination_reason':_0x1c36d8[_0x1d315f(0x17e)],'error_count':_0x1c36d8[_0x1d315f(0x20c)][_0x1d315f(0x1b9)],'is_timeout':_0xedc351,'timings':_0x1c36d8[_0x1d315f(0x19a)],'files_attempted':_0x4ca353?.[_0x1d315f(0x237)](_0x45c70b=>({'path':_0x45c70b['path'],'lines':_0x45c70b[_0x1d315f(0x238)]})),'tool_calls':_0x26b13d(_0x1c36d8[_0x1d315f(0x27e)]),'messages':_0x1c36d8[_0x1d315f(0x27e)]?.[_0x1d315f(0x237)](_0x556d99=>({'role':_0x556d99[_0x1d315f(0x27f)],'content':_0x556d99['content']})),'request_content':{'query':_0x2c63cb[_0x1d315f(0x270)][_0x1d315f(0x23d)],'repo_path':_0x2c63cb[_0x1d315f(0x270)][_0x1d315f(0x271)],'repoRoot':a0_0x5cf1e3[_0x1d315f(0x267)](_0x2c63cb[_0x1d315f(0x270)]['repo_path']),'model':'morph-warp-grep-v1-1111v0'}},'stack_trace':_0x165ba7?.[_0x1d315f(0x1ed)]||undefined,'source':_0x1d315f(0x172)})[_0x1d315f(0x1f4)](()=>{});}else _0x4633dd=_0x1d315f(0x233);}return{'content':[{'type':_0x1d315f(0x215),'text':_0x4633dd}]};}catch(_0xcfee5c){const _0xfc68e=_0xcfee5c instanceof Error?_0xcfee5c[_0x1d315f(0x235)]:String(_0xcfee5c),_0x28debd=_0xfc68e[_0x1d315f(0x25d)]()['includes']('timeout')||_0xfc68e['toLowerCase']()['includes'](_0x1d315f(0x1be))||_0xfc68e[_0x1d315f(0x25d)]()[_0x1d315f(0x171)](_0x1d315f(0x268))||_0xcfee5c instanceof Error&&_0xcfee5c[_0x1d315f(0x1d1)]===_0x1d315f(0x1d9);return reportMorphError({'error_message':_0xfc68e,'error_type':_0x28debd?_0x1d315f(0x1d9):_0xcfee5c instanceof Error?_0xcfee5c[_0x1d315f(0x1a8)][_0x1d315f(0x1d1)]:_0x1d315f(0x1bb),'context':{'tool':_0x1d315f(0x228),'repo_path':_0x2c63cb['data']['repo_path'],'query':_0x2c63cb[_0x1d315f(0x270)][_0x1d315f(0x23d)],'model':_0x1d315f(0x205),'is_timeout':_0x28debd,'exception_phase':_0x1d315f(0x18c),'request_content':{'query':_0x2c63cb[_0x1d315f(0x270)][_0x1d315f(0x23d)],'repo_path':_0x2c63cb[_0x1d315f(0x270)][_0x1d315f(0x271)],'repoRoot':a0_0x5cf1e3['resolve'](_0x2c63cb[_0x1d315f(0x270)]['repo_path']),'model':_0x1d315f(0x205)}},'stack_trace':_0xcfee5c instanceof Error?_0xcfee5c[_0x1d315f(0x1ed)]:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':_0x1d315f(0x215),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0xfc68e}],'isError':![]};}}case _0x1d315f(0x23b):{const _0x1ed06b=WarpGrepGitHubArgsSchema[_0x1d315f(0x25c)](_0x20b5d4);if(!_0x1ed06b[_0x1d315f(0x222)])return{'content':[{'type':_0x1d315f(0x215),'text':_0x1d315f(0x20e)+_0x1ed06b['error']}],'isError':!![]};const _0x8c9884=_0x1ed06b['data'][_0x1d315f(0x232)]||_0x1ed06b['data'][_0x1d315f(0x25b)];if(!_0x8c9884)return{'content':[{'type':_0x1d315f(0x215),'text':_0x1d315f(0x25a)}],'isError':!![]};const _0x54f09e=MORPH_API_KEY;if(!_0x54f09e)throw new Error(_0x1d315f(0x196));const _0x402e73=Date[_0x1d315f(0x264)]();console[_0x1d315f(0x23c)](_0x1d315f(0x234)+_0x8c9884+'\x20for:\x20\x22'+_0x1ed06b['data']['search_string']+'\x22');try{const _0x4b7c5d=new WarpGrepClient({'morphApiKey':_0x54f09e,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x71cd5f=await _0x4b7c5d['searchGitHub']({'query':_0x1ed06b[_0x1d315f(0x270)][_0x1d315f(0x23d)],'github':_0x8c9884,'branch':_0x1ed06b['data'][_0x1d315f(0x260)]}),_0xbe7ce4=Date[_0x1d315f(0x264)]()-_0x402e73;console[_0x1d315f(0x23c)](_0x1d315f(0x209)+_0xbe7ce4+_0x1d315f(0x1d4)+_0x71cd5f[_0x1d315f(0x222)]);const _0x41d8d2=formatResult(_0x71cd5f);return{'content':[{'type':'text','text':_0x41d8d2}]};}catch(_0x20ea3b){const _0x340562=Date['now']()-_0x402e73,_0x3a046d=_0x20ea3b instanceof Error?_0x20ea3b[_0x1d315f(0x235)]:String(_0x20ea3b);return console[_0x1d315f(0x23c)](_0x1d315f(0x175)+_0x340562+_0x1d315f(0x224),_0x3a046d),reportMorphError({'error_message':_0x3a046d,'error_type':_0x20ea3b instanceof Error?_0x20ea3b[_0x1d315f(0x1a8)][_0x1d315f(0x1d1)]:'UnknownError','context':{'tool':_0x1d315f(0x23b),'github_url':_0x8c9884,'search_string':_0x1ed06b['data'][_0x1d315f(0x23d)],'branch':_0x1ed06b[_0x1d315f(0x270)][_0x1d315f(0x260)]},'stack_trace':_0x20ea3b instanceof Error?_0x20ea3b[_0x1d315f(0x1ed)]:undefined,'source':_0x1d315f(0x172),'tool':'warpgrep_github_search','latency_ms':_0x340562})['catch'](()=>{}),{'content':[{'type':_0x1d315f(0x215),'text':_0x1d315f(0x21c)+_0x3a046d}],'isError':![]};}}case _0x1d315f(0x1e8):{const _0x5e7da7=CodebaseSearchArgsSchema[_0x1d315f(0x25c)](_0x20b5d4);if(!_0x5e7da7[_0x1d315f(0x222)])return{'content':[{'type':_0x1d315f(0x215),'text':_0x1d315f(0x20e)+_0x5e7da7[_0x1d315f(0x23c)]}],'isError':!![]};try{const _0x32b847=MORPH_API_KEY;if(!_0x32b847)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.');const _0x27439a=_0x5e7da7[_0x1d315f(0x270)][_0x1d315f(0x248)],_0x13e209=await executeCodebaseSearch({'query':_0x5e7da7['data'][_0x1d315f(0x1ab)],'target_directories':_0x27439a,'limit':_0x5e7da7['data'][_0x1d315f(0x21e)]},{'apiKey':_0x32b847,'repoId':_0x5e7da7[_0x1d315f(0x270)][_0x1d315f(0x1ac)],'branch':_0x5e7da7[_0x1d315f(0x270)][_0x1d315f(0x260)],'commitHash':_0x5e7da7[_0x1d315f(0x270)][_0x1d315f(0x1dd)],'debug':![]});if(!_0x13e209['success'])return{'content':[{'type':_0x1d315f(0x215),'text':_0x1d315f(0x227)+_0x13e209[_0x1d315f(0x23c)]}],'isError':!![]};const _0x2e5c89=_0x13e209[_0x1d315f(0x23f)][_0x1d315f(0x1b9)]===0x0?_0x1d315f(0x1e0)+_0x5e7da7[_0x1d315f(0x270)][_0x1d315f(0x1ab)]+'\x22':_0x1d315f(0x1b0)+_0x13e209[_0x1d315f(0x23f)]['length']+_0x1d315f(0x16c)+_0x13e209[_0x1d315f(0x256)][_0x1d315f(0x277)]+_0x1d315f(0x285)+_0x13e209[_0x1d315f(0x23f)][_0x1d315f(0x237)]((_0x292756,_0x531d79)=>_0x531d79+0x1+'.\x20'+_0x292756[_0x1d315f(0x18a)]+'\x20('+(_0x292756['rerankScore']*0x64)[_0x1d315f(0x266)](0x1)+_0x1d315f(0x1db)+(_0x1d315f(0x21a)+_0x292756[_0x1d315f(0x26e)]+'-'+_0x292756[_0x1d315f(0x191)]+'\x0a')+(_0x1d315f(0x269)+_0x292756['content']['substring'](0x0,0xc8)+(_0x292756['content'][_0x1d315f(0x1b9)]>0xc8?_0x1d315f(0x243):'')+'\x0a'))[_0x1d315f(0x1da)]('\x0a');return{'content':[{'type':'text','text':_0x2e5c89}]};}catch(_0x1d8da4){const _0x4c72b3=_0x1d8da4 instanceof Error?_0x1d8da4[_0x1d315f(0x235)]:String(_0x1d8da4);return reportMorphError({'error_message':_0x4c72b3,'error_type':_0x1d8da4 instanceof Error?_0x1d8da4[_0x1d315f(0x1a8)][_0x1d315f(0x1d1)]:_0x1d315f(0x1bb),'context':{'tool':_0x1d315f(0x1e8),'query':_0x5e7da7['data']['query'],'repo_id':_0x5e7da7[_0x1d315f(0x270)][_0x1d315f(0x1ac)],'target_directories':_0x5e7da7['data']['targetDirectories']},'stack_trace':_0x1d8da4 instanceof Error?_0x1d8da4['stack']:undefined,'source':_0x1d315f(0x172)})['catch'](()=>{}),{'content':[{'type':_0x1d315f(0x215),'text':_0x1d315f(0x19b)+_0x4c72b3}],'isError':!![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x3751d1);}}catch(_0x406b2c){const _0x2673b6=_0x406b2c instanceof Error?_0x406b2c[_0x1d315f(0x235)]:String(_0x406b2c);return reportMorphError({'error_message':_0x2673b6,'error_type':_0x406b2c instanceof Error?_0x406b2c[_0x1d315f(0x1a8)][_0x1d315f(0x1d1)]:_0x1d315f(0x1bb),'context':{'tool':name,'arguments':args?JSON[_0x1d315f(0x1f1)](args)[_0x1d315f(0x19e)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x406b2c instanceof Error?_0x406b2c[_0x1d315f(0x1ed)]:undefined,'source':_0x1d315f(0x172)})[_0x1d315f(0x1f4)](()=>{}),{'content':[{'type':_0x1d315f(0x215),'text':_0x1d315f(0x19b)+_0x2673b6}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x417a5c){const _0x2288c5=a0_0x44d8d0,_0x39236c=await getValidRootDirectories(_0x417a5c);if(_0x39236c['length']>0x0)allowedDirectories=[..._0x39236c],console['error'](_0x2288c5(0x257)+_0x39236c[_0x2288c5(0x1b9)]+'\x20valid\x20directories');else{console['error'](_0x2288c5(0x240));if(ENABLE_WORKSPACE_MODE)try{const _0x3f0e38=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3f0e38&&(allowedDirectories=[_0x3f0e38],console[_0x2288c5(0x23c)](_0x2288c5(0x213)+_0x3f0e38));}catch(_0x4d0d59){console[_0x2288c5(0x23c)](_0x2288c5(0x188)+_0x4d0d59);}}}server[a0_0x44d8d0(0x1b4)](RootsListChangedNotificationSchema,async()=>{const _0x50f300=a0_0x44d8d0;try{const _0x1fd9c2=await server[_0x50f300(0x274)]();_0x1fd9c2&&_0x50f300(0x1f3)in _0x1fd9c2&&await updateAllowedDirectoriesFromRoots(_0x1fd9c2[_0x50f300(0x1f3)]);}catch(_0x3e3ad3){console['error'](_0x50f300(0x272),_0x3e3ad3 instanceof Error?_0x3e3ad3[_0x50f300(0x235)]:String(_0x3e3ad3));}}),server[a0_0x44d8d0(0x231)]=async()=>{const _0xd8db98=a0_0x44d8d0,_0x4a3aa2=server['getClientCapabilities']();if(_0x4a3aa2?.['roots'])try{const _0x3f07d7=await server[_0xd8db98(0x274)]();_0x3f07d7&&_0xd8db98(0x1f3)in _0x3f07d7?await updateAllowedDirectoriesFromRoots(_0x3f07d7[_0xd8db98(0x1f3)]):console[_0xd8db98(0x23c)]('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x12ceab){console[_0xd8db98(0x23c)](_0xd8db98(0x1e6),_0x12ceab instanceof Error?_0x12ceab['message']:String(_0x12ceab));}else{if(allowedDirectories[_0xd8db98(0x1b9)]>0x0)console['error'](_0xd8db98(0x1aa),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0xd8db98(0x23c)](_0xd8db98(0x190));else throw new Error(_0xd8db98(0x1e3));}}};async function runServer(){const _0x8e3a92=a0_0x44d8d0,_0x589801=new StdioServerTransport();await server['connect'](_0x589801),console['error'](_0x8e3a92(0x18b)),allowedDirectories[_0x8e3a92(0x1b9)]===0x0&&console[_0x8e3a92(0x23c)](_0x8e3a92(0x16f));}runServer()[a0_0x44d8d0(0x1f4)](_0x5934b6=>{const _0x3c08ec=a0_0x44d8d0;console[_0x3c08ec(0x23c)](_0x3c08ec(0x25f),_0x5934b6),process[_0x3c08ec(0x179)](0x1);});
|
|
2
|
+
const a0_0x15caa6=a0_0x4531;(function(_0x2af475,_0x2ce4e9){const _0xcfcf35=a0_0x4531,_0x585fe5=_0x2af475();while(!![]){try{const _0x2cb485=-parseInt(_0xcfcf35(0x255))/0x1+parseInt(_0xcfcf35(0x2c4))/0x2+parseInt(_0xcfcf35(0x207))/0x3*(-parseInt(_0xcfcf35(0x1c5))/0x4)+-parseInt(_0xcfcf35(0x2d6))/0x5+parseInt(_0xcfcf35(0x1e4))/0x6*(-parseInt(_0xcfcf35(0x2ab))/0x7)+parseInt(_0xcfcf35(0x2a5))/0x8+parseInt(_0xcfcf35(0x2a3))/0x9*(parseInt(_0xcfcf35(0x1d4))/0xa);if(_0x2cb485===_0x2ce4e9)break;else _0x585fe5['push'](_0x585fe5['shift']());}catch(_0x47a74f){_0x585fe5['push'](_0x585fe5['shift']());}}}(a0_0x2632,0x9af5c));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_0x397b2d from'fs/promises';import a0_0x1fe176 from'path';import a0_0x3b7341 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_0x5b8c76 from'axios';function fixPathRepetition(_0x2d4116){const _0x3bf4f4=a0_0x4531,_0x267e6d=_0x2d4116['split'](a0_0x1fe176[_0x3bf4f4(0x276)])[_0x3bf4f4(0x1cb)](Boolean);if(_0x267e6d[_0x3bf4f4(0x2a9)]<0x2)return null;for(let _0x147543=Math[_0x3bf4f4(0x1e0)](_0x267e6d[_0x3bf4f4(0x2a9)]/0x2);_0x147543>=0x1;_0x147543--){for(let _0x22f94d=0x0;_0x22f94d<=_0x267e6d[_0x3bf4f4(0x2a9)]-0x2*_0x147543;_0x22f94d++){const _0x1087b8=_0x267e6d['slice'](_0x22f94d,_0x22f94d+_0x147543),_0x5be626=_0x267e6d[_0x3bf4f4(0x2ba)](_0x22f94d+_0x147543,_0x22f94d+0x2*_0x147543);if(_0x1087b8[_0x3bf4f4(0x245)]((_0x68a7c6,_0x307b17)=>_0x68a7c6===_0x5be626[_0x307b17])){const _0x5135a7=[..._0x267e6d[_0x3bf4f4(0x2ba)](0x0,_0x22f94d),..._0x267e6d[_0x3bf4f4(0x2ba)](_0x22f94d+_0x147543)];return a0_0x1fe176[_0x3bf4f4(0x276)]+_0x5135a7[_0x3bf4f4(0x2c3)](a0_0x1fe176[_0x3bf4f4(0x276)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x22ffd=a0_0x4531;try{const _0xe8dea4=require(_0x22ffd(0x2d4));return _0xe8dea4[_0x22ffd(0x253)]??'unknown';}catch(_0x117568){return console[_0x22ffd(0x1d5)](_0x22ffd(0x270),_0x117568),_0x22ffd(0x2af);}}function printHelp(){const _0x425e63=a0_0x4531;console[_0x425e63(0x1c2)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x425e63(0x1c2)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console['log'](_0x425e63(0x27a)),console[_0x425e63(0x1c2)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x425e63(0x1c2)]('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0x425e63(0x1c2)](_0x425e63(0x1c3)),console['log']('\x0aExamples:'),console[_0x425e63(0x1c2)](_0x425e63(0x290)),console[_0x425e63(0x1c2)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}function a0_0x4531(_0x5b5cd5,_0x3ffaff){_0x5b5cd5=_0x5b5cd5-0x1be;const _0x263233=a0_0x2632();let _0x453124=_0x263233[_0x5b5cd5];return _0x453124;}const cliArgs=process[a0_0x15caa6(0x2a7)][a0_0x15caa6(0x2ba)](0x2),VERSION_FLAGS=new Set([a0_0x15caa6(0x1f7),'-v','-V']),HELP_FLAGS=new Set([a0_0x15caa6(0x208),'-h']);cliArgs[a0_0x15caa6(0x2c9)](_0x484a92=>VERSION_FLAGS[a0_0x15caa6(0x209)](_0x484a92))&&(console[a0_0x15caa6(0x1c2)](a0_0x15caa6(0x20f)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x15caa6(0x2c9)](_0xe765a8=>HELP_FLAGS[a0_0x15caa6(0x209)](_0xe765a8))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x34d177){const _0x3a6e3f=a0_0x15caa6;for(let _0x4161b2=0x0;_0x4161b2<cliArgs['length'];_0x4161b2++){const _0x20360e=cliArgs[_0x4161b2];if(_0x20360e[_0x3a6e3f(0x284)]('--'+_0x34d177+'='))return _0x20360e[_0x3a6e3f(0x2ba)](('--'+_0x34d177+'=')[_0x3a6e3f(0x2a9)]);if(_0x20360e==='--'+_0x34d177&&_0x4161b2+0x1<cliArgs[_0x3a6e3f(0x2a9)])return cliArgs[_0x4161b2+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x15caa6(0x209)](arg)||HELP_FLAGS[a0_0x15caa6(0x209)](arg))continue;if(arg[a0_0x15caa6(0x284)](a0_0x15caa6(0x2dc)))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x15caa6(0x2ce)](arg);}const WORKSPACE_ROOT=process[a0_0x15caa6(0x297)]['WORKSPACE_ROOT']||process['env'][a0_0x15caa6(0x23d)]||process[a0_0x15caa6(0x26c)](),ENABLE_WORKSPACE_MODE=process[a0_0x15caa6(0x297)][a0_0x15caa6(0x266)]!==a0_0x15caa6(0x211),MORPH_API_KEY=getCliArg(a0_0x15caa6(0x235))??process[a0_0x15caa6(0x297)][a0_0x15caa6(0x252)],MORPH_API_URL=process[a0_0x15caa6(0x297)][a0_0x15caa6(0x244)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x15caa6(0x297)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x15caa6(0x297)][a0_0x15caa6(0x25a)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x15caa6(0x284)](a0_0x15caa6(0x2d3))&&!MORPH_API_KEY[a0_0x15caa6(0x284)](a0_0x15caa6(0x215))&&console[a0_0x15caa6(0x1d5)]('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x8933c8){const _0x14f1c0=a0_0x15caa6;try{await a0_0x5b8c76[_0x14f1c0(0x288)]('https://morphllm.com/api/error-report',{..._0x8933c8,'timestamp':new Date()[_0x14f1c0(0x217)](),'source':_0x8933c8[_0x14f1c0(0x2c5)]||_0x14f1c0(0x204)},{'timeout':0x1388,'headers':{'Content-Type':_0x14f1c0(0x2dd),'Authorization':_0x14f1c0(0x1fc)+MORPH_API_KEY}});}catch{}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x15caa6(0x1d5)](a0_0x15caa6(0x221)),console[a0_0x15caa6(0x1d5)]('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),console[a0_0x15caa6(0x1d5)](a0_0x15caa6(0x24c)),console['error'](a0_0x15caa6(0x29e)),console[a0_0x15caa6(0x1d5)](a0_0x15caa6(0x2da)),console[a0_0x15caa6(0x1d5)](a0_0x15caa6(0x2c6)));function normalizePath(_0xf82e87){const _0x289804=a0_0x15caa6;return a0_0x1fe176[_0x289804(0x1df)](_0xf82e87);}function a0_0x2632(){const _0x16cbf2=['MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','map','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','Morph\x20FastApply\x20failed\x20without\x20error\x20message','[warpgrep_github_search]\x20Done\x20in\x20','warn','Fallback:\x20Using\x20workspace\x20root\x20','Error\x20running\x20fast\x20context\x20search:\x20','dirname','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','isArray','RipgrepNotAvailable','files','array','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','setRequestHandler','search_string','Unknown\x20tool:\x20','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a',',\x20removed\x20','UnknownError','api-key','Workspace\x20mode\x20enabled:\x20Using\x20','now','instruction','node_modules','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','branch','Unknown\x20error','PWD','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','Cargo.toml','success','etimedout','ms.\x20Success:\x20','results','MORPH_API_URL','every','morph-warp-grep-v1-1111v0','.\x20Changes:\x20','code_edit','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','-\x20Grepped\x20\x27','.git','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','%\x20match)\x0a','Failed\x20to\x20request\x20roots\x20from\x20client:','SubToolError','[warpgrep_github_search]\x20Failed\x20in\x20','\x20-\x20','MORPH_API_KEY','version','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','635296TSecup','Created\x20File','repo_path','code','\x20error(s)','MORPH_WARP_GREP_TIMEOUT','No\x20results\x20found\x20for\x20query:\x20\x22','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','boolean','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','pyproject.toml','stats','list_directory\x20','filepath',',\x20modified\x20','Search\x20failed:\x20','ENABLE_WORKSPACE_MODE','startLine','PathError','metadata','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','cwd','Preview\x20changes\x20without\x20applying\x20them.','Error:\x20','finish','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','describe','setNotificationHandler','unknown\x20error','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','sep','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','0.2.0','runWarpGrep_call','\x0aOptions:','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','timeout','content','targetDirectories','errors','codebase_search','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','user','github_url','startsWith','listRoots','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','requiresApiKey','post','linesModified','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','connect','stack','toFixed','Error\x20accessing\x20directory\x20','\x20\x20morph-mcp','Invalid\x20arguments:\x20','data','Warning:\x20Workspace\x20fallback\x20failed:\x20','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','\x20(new\x20file)','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','env','description','...','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','.vscode','\x20for:\x20\x22','role','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','For\x20deletions:\x0a','query','toLowerCase','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','81hjtEmP','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','6712568ZcWFEV','terminationReason','argv','roots','length','</file>','21910yRPqDT','path','lines','SymlinkError','unknown','ENOENT','split','tsconfig.json','Here\x20is\x20the\x20content\x20of\x20files:\x0a','\x0a</file>','warpgrep_codebase_search','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','name','slice','realpath','-\x20Read\x20file\x20`','Applied','assistant','exit','timings','message','substring','join','1917434SqRbSg','source','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','number','Morph\x20Edit\x20Preview','some','completed_with_file_errors','catch','min','\x22>\x0aError\x20reading\x20file:\x20','push','Max\x20results\x20to\x20return','repoId','messages','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','sk-','../package.json','match','2292840ErPcUm','all','access','completionId','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Benefits:\x0a','--api-key=','application/json','stringify','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Relevant\x20context\x20found:','Repository\x20identifier','Found\x20','searchGitHub','-\x20Listed\x20directory\x20`','\x20is\x20not\x20a\x20directory','homedir','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','log','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','Warning:\x20','1420YfSBsq','indexOf','rerankScore','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','constructor','❌\x20Morph\x20Edit\x20Failed:\x20','filter','TimeoutError','WarpGrepError','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','.cursor','includes','read','trim','.\x20Path:\x20','1772380ygNqQD','error','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','params','dryRun','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','edit_file','\x20\x20\x20','morph-v3-fast','FileReadError','owner_repo','normalize','floor','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','GitHub\x20search\x20failed:\x20','1104PleELN','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','\x20results\x20in\x20','Failed\x20to\x20read\x20file:\x20','morph-mcp','enum','[warpgrep_github_search]\x20Searching\x20','read\x20','utf-8','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','linesRemoved','linesAdded','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','added\x20','basename','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','readFile','text','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','--version','timed\x20out','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','commitHash','\x0a...\x20(truncated,\x20total:\x20','Bearer\x20','BinaryFile','string','[could\x20not\x20read\x20file:\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','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','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','FileNotFound','mcp-filesystem','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','warpgrep_github_search','9198wGVuQf','--help','has','RipgrepError','Specific\x20commit\x20hash\x20to\x20search','<file\x20path=\x22','default','ReadError','@morphllm/morphmcp\x20','ms:','false','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','changes','resolve','morph-','object','toISOString','stat','optional','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','safeParse','\x27\x20in\x20`','inputSchema'];a0_0x2632=function(){return _0x16cbf2;};return a0_0x2632();}function expandHome(_0x2b3dbf){const _0x3a6f0b=a0_0x15caa6;if(_0x2b3dbf[_0x3a6f0b(0x284)]('~/')||_0x2b3dbf==='~')return a0_0x1fe176['join'](a0_0x3b7341[_0x3a6f0b(0x1c0)](),_0x2b3dbf['slice'](0x1));return _0x2b3dbf;}let allowedDirectories=await Promise['all'](args['map'](async _0x4466db=>{const _0x3636e3=expandHome(_0x4466db),_0x1d48a8=a0_0x1fe176['resolve'](_0x3636e3);try{const _0x3c3c2d=await a0_0x397b2d['realpath'](_0x1d48a8);return normalizePath(_0x3c3c2d);}catch(_0x52423e){return normalizePath(_0x1d48a8);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x15caa6(0x2a9)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x15caa6(0x2ce)](workspaceDir),console[a0_0x15caa6(0x1d5)](a0_0x15caa6(0x236)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x5a70ea){console[a0_0x15caa6(0x1d5)]('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x5a70ea);}async function detectWorkspaceRoot(_0x46581d){const _0x18a4bd=a0_0x15caa6;let _0x27e69a=a0_0x1fe176[_0x18a4bd(0x214)](_0x46581d);const _0x4b5c02=[_0x18a4bd(0x24b),_0x18a4bd(0x29b),'package.json',_0x18a4bd(0x23f),_0x18a4bd(0x260),'go.mod',_0x18a4bd(0x1cf),_0x18a4bd(0x2b2),'composer.json'];while(_0x27e69a!==a0_0x1fe176['dirname'](_0x27e69a)){for(const _0x41ded4 of _0x4b5c02){const _0x4a9e02=a0_0x1fe176['join'](_0x27e69a,_0x41ded4);try{return await a0_0x397b2d[_0x18a4bd(0x2d8)](_0x4a9e02),normalizePath(_0x27e69a);}catch{}}_0x27e69a=a0_0x1fe176[_0x18a4bd(0x228)](_0x27e69a);}return normalizePath(_0x46581d);}await Promise[a0_0x15caa6(0x2d7)](args[a0_0x15caa6(0x220)](async _0x5061ae=>{const _0x444cee=a0_0x15caa6;try{const _0x31c6cc=await a0_0x397b2d[_0x444cee(0x218)](expandHome(_0x5061ae));!_0x31c6cc['isDirectory']()&&(console['error'](_0x444cee(0x26e)+_0x5061ae+_0x444cee(0x1bf)),process[_0x444cee(0x2bf)](0x1));}catch(_0x3b4c5d){console[_0x444cee(0x1d5)](_0x444cee(0x28f)+_0x5061ae+':',_0x3b4c5d),process[_0x444cee(0x2bf)](0x1);}}));async function validatePath(_0x2056fd){const _0x9bab3f=a0_0x15caa6,_0x2c446b=expandHome(_0x2056fd),_0x59e028=a0_0x1fe176[_0x9bab3f(0x214)](_0x2c446b);try{const _0x451f6a=await a0_0x397b2d[_0x9bab3f(0x2bb)](_0x59e028);return _0x451f6a;}catch(_0x564ffe){if(_0x564ffe[_0x9bab3f(0x258)]===_0x9bab3f(0x2b0)){const _0x4e7902=a0_0x1fe176[_0x9bab3f(0x228)](_0x59e028);try{const _0x23d596=await a0_0x397b2d[_0x9bab3f(0x2bb)](_0x4e7902);return a0_0x1fe176['join'](_0x23d596,a0_0x1fe176[_0x9bab3f(0x1f2)](_0x59e028));}catch{throw new Error(_0x9bab3f(0x200)+_0x4e7902);}}throw _0x564ffe;}}const MorphEditFileArgsSchema=z[a0_0x15caa6(0x216)]({'path':z[a0_0x15caa6(0x1fe)](),'code_edit':z[a0_0x15caa6(0x1fe)]()[a0_0x15caa6(0x272)](a0_0x15caa6(0x23a)),'instruction':z[a0_0x15caa6(0x1fe)]()[a0_0x15caa6(0x272)](a0_0x15caa6(0x254)),'dryRun':z[a0_0x15caa6(0x25d)]()[a0_0x15caa6(0x20d)](![])[a0_0x15caa6(0x272)](a0_0x15caa6(0x26d))}),WarpGrepArgsSchema=z[a0_0x15caa6(0x216)]({'search_string':z[a0_0x15caa6(0x1fe)]()[a0_0x15caa6(0x272)](a0_0x15caa6(0x1e1)),'repo_path':z[a0_0x15caa6(0x1fe)]()[a0_0x15caa6(0x272)](a0_0x15caa6(0x1d6)),'search_type':z[a0_0x15caa6(0x1e9)]([a0_0x15caa6(0x20d),a0_0x15caa6(0x239)])[a0_0x15caa6(0x219)]()[a0_0x15caa6(0x272)](a0_0x15caa6(0x2d2))}),WarpGrepGitHubArgsSchema=z[a0_0x15caa6(0x216)]({'search_string':z[a0_0x15caa6(0x1fe)]()[a0_0x15caa6(0x272)](a0_0x15caa6(0x1e1)),'github_url':z[a0_0x15caa6(0x1fe)]()['optional']()['describe']('GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'owner_repo':z['string']()[a0_0x15caa6(0x219)]()[a0_0x15caa6(0x272)](a0_0x15caa6(0x1c1)),'branch':z['string']()[a0_0x15caa6(0x219)]()['describe'](a0_0x15caa6(0x229))}),CodebaseSearchArgsSchema=z[a0_0x15caa6(0x216)]({'query':z[a0_0x15caa6(0x1fe)]()[a0_0x15caa6(0x272)]('Natural\x20language\x20query\x20to\x20search\x20for\x20code'),'repoId':z[a0_0x15caa6(0x1fe)]()['describe'](a0_0x15caa6(0x2e1)),'branch':z[a0_0x15caa6(0x1fe)]()[a0_0x15caa6(0x219)]()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z['string']()['optional']()[a0_0x15caa6(0x272)](a0_0x15caa6(0x20b)),'targetDirectories':z[a0_0x15caa6(0x22d)](z['string']())[a0_0x15caa6(0x20d)]([])[a0_0x15caa6(0x272)](a0_0x15caa6(0x1e2)),'limit':z[a0_0x15caa6(0x2c7)]()[a0_0x15caa6(0x219)]()['default'](0xa)[a0_0x15caa6(0x272)](a0_0x15caa6(0x2cf))}),server=new Server({'name':a0_0x15caa6(0x1e8),'version':a0_0x15caa6(0x278)},{'capabilities':{'tools':{}}});server[a0_0x15caa6(0x22f)](ListToolsRequestSchema,async()=>{const _0x8ea41a=a0_0x15caa6,_0x50eb81=[{'name':'edit_file','description':_0x8ea41a(0x222)+_0x8ea41a(0x271)+_0x8ea41a(0x1ce)+'IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a'+_0x8ea41a(0x2db)+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x8ea41a(0x1f0)+_0x8ea41a(0x25e)+_0x8ea41a(0x23e)+_0x8ea41a(0x1c8)+_0x8ea41a(0x296)+_0x8ea41a(0x29a)+_0x8ea41a(0x29f)+_0x8ea41a(0x286)+_0x8ea41a(0x2b8)+'Rules:\x0a'+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+_0x8ea41a(0x25c)+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x8ea41a(0x1f9)+_0x8ea41a(0x2a2)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x8ea41a(0x2a4),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x8ea41a(0x2b5),'description':_0x8ea41a(0x275)+_0x8ea41a(0x201)+_0x8ea41a(0x1ed)+_0x8ea41a(0x26b)+_0x8ea41a(0x2b7)+_0x8ea41a(0x1f3)+'You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20'+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':_0x8ea41a(0x280),'description':_0x8ea41a(0x212)+_0x8ea41a(0x232)+_0x8ea41a(0x1d9)+'Benefits:\x0a'+_0x8ea41a(0x28a)+'-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a'+_0x8ea41a(0x28b)+_0x8ea41a(0x2b6)+_0x8ea41a(0x1e5)+_0x8ea41a(0x27b)+_0x8ea41a(0x1f6),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x3bd71f=_0x50eb81[_0x8ea41a(0x1cb)](_0x332487=>{const _0x229931=_0x8ea41a;if(_0x229931(0x287)in _0x332487&&_0x332487[_0x229931(0x287)]&&!MORPH_API_KEY)return console['error'](_0x229931(0x1c4)+_0x332487['name']+_0x229931(0x202)),![];return!![];});return{'tools':_0x3bd71f['map'](_0x515fd9=>({'name':_0x515fd9['name'],'description':_0x515fd9[_0x8ea41a(0x298)],'inputSchema':_0x515fd9[_0x8ea41a(0x21d)]}))};}),server[a0_0x15caa6(0x22f)](CallToolRequestSchema,async _0x5b0931=>{const _0x5f1d5b=a0_0x15caa6;try{const {name:_0x296bec,arguments:_0x2721fe}=_0x5b0931[_0x5f1d5b(0x1d7)];switch(_0x296bec){case _0x5f1d5b(0x1da):{const _0x49a3c6=MorphEditFileArgsSchema[_0x5f1d5b(0x21b)](_0x2721fe);if(!_0x49a3c6[_0x5f1d5b(0x240)])throw new Error(_0x5f1d5b(0x22e)+_0x49a3c6[_0x5f1d5b(0x1d5)]);const _0x553779=await validatePath(_0x49a3c6[_0x5f1d5b(0x292)][_0x5f1d5b(0x2ac)]);let _0x2d6d30=null,_0x349bef=!![],_0x3f7b51=null;try{_0x2d6d30=await a0_0x397b2d[_0x5f1d5b(0x1f4)](_0x553779,_0x5f1d5b(0x1ec));}catch(_0xae454c){const _0x1732fa=_0xae454c[_0x5f1d5b(0x258)];_0x1732fa===_0x5f1d5b(0x2b0)?(_0x349bef=![],_0x2d6d30=''):(_0x3f7b51=_0x5f1d5b(0x1e7)+(_0x1732fa||_0x5f1d5b(0x2af))+_0x5f1d5b(0x251)+(_0xae454c instanceof Error?_0xae454c['message']:String(_0xae454c)),console[_0x5f1d5b(0x1d5)]('Warning:\x20'+_0x3f7b51));}let _0x4e9941;try{const _0x2d2072=MORPH_API_KEY;if(!_0x2d2072)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x52c983=a0_0x1fe176[_0x5f1d5b(0x228)](_0x553779),_0xd623aa=a0_0x1fe176['basename'](_0x553779),_0x3d25ea=await executeEditFile({'target_filepath':_0xd623aa,'code_edit':_0x49a3c6[_0x5f1d5b(0x292)][_0x5f1d5b(0x248)],'instructions':_0x49a3c6['data'][_0x5f1d5b(0x238)]},{'morphApiKey':_0x2d2072,'morphApiUrl':MORPH_API_URL,'baseDir':_0x52c983,'autoWrite':!_0x49a3c6['data'][_0x5f1d5b(0x1d8)],'generateUdiff':![],'debug':![]});_0x4e9941=_0x3d25ea[_0x5f1d5b(0x2d9)];if(!_0x3d25ea[_0x5f1d5b(0x240)])throw new Error(_0x3d25ea[_0x5f1d5b(0x1d5)]||_0x5f1d5b(0x223));const _0x3f2622=_0x3d25ea[_0x5f1d5b(0x213)],_0x473ae3=_0x5f1d5b(0x1f1)+_0x3f2622[_0x5f1d5b(0x1ef)]+_0x5f1d5b(0x233)+_0x3f2622[_0x5f1d5b(0x1ee)]+_0x5f1d5b(0x264)+_0x3f2622[_0x5f1d5b(0x289)];if(_0x49a3c6[_0x5f1d5b(0x292)][_0x5f1d5b(0x1d8)])return{'content':[{'type':_0x5f1d5b(0x1f5),'text':_0x5f1d5b(0x2c8)+(_0x349bef?'':_0x5f1d5b(0x295))+':\x20'+_0x49a3c6[_0x5f1d5b(0x292)][_0x5f1d5b(0x238)]+'.\x20Changes:\x20'+_0x473ae3+_0x5f1d5b(0x1d3)+_0x49a3c6[_0x5f1d5b(0x292)][_0x5f1d5b(0x2ac)]+'.'}]};return{'content':[{'type':'text','text':'Morph\x20Edit\x20'+(_0x349bef?_0x5f1d5b(0x2bd):_0x5f1d5b(0x256))+':\x20'+_0x49a3c6[_0x5f1d5b(0x292)][_0x5f1d5b(0x238)]+_0x5f1d5b(0x247)+_0x473ae3+_0x5f1d5b(0x1d3)+_0x49a3c6[_0x5f1d5b(0x292)][_0x5f1d5b(0x2ac)]+'.'}]};}catch(_0x5233cb){const _0x446a6f=_0x5233cb instanceof Error?_0x5233cb[_0x5f1d5b(0x2c1)]:String(_0x5233cb);return reportMorphError({'error_message':_0x446a6f,'error_type':_0x5233cb instanceof Error?_0x5233cb[_0x5f1d5b(0x1c9)][_0x5f1d5b(0x2b9)]:'UnknownError','context':{'tool':_0x5f1d5b(0x1da),'completion_id':_0x4e9941,'file_path':_0x49a3c6[_0x5f1d5b(0x292)][_0x5f1d5b(0x2ac)],'validated_path':_0x553779,'instruction':_0x49a3c6[_0x5f1d5b(0x292)][_0x5f1d5b(0x238)],'model':_0x5f1d5b(0x1dc),'dry_run':_0x49a3c6[_0x5f1d5b(0x292)][_0x5f1d5b(0x1d8)],'file_exists':_0x349bef,'file_read_error':_0x3f7b51,'file_readable':_0x2d6d30!==null,'request_content':{'path':_0x49a3c6[_0x5f1d5b(0x292)][_0x5f1d5b(0x2ac)],'code_edit':_0x49a3c6[_0x5f1d5b(0x292)]['code_edit'],'instruction':_0x49a3c6[_0x5f1d5b(0x292)][_0x5f1d5b(0x238)],'original_code':_0x2d6d30!==null?_0x2d6d30[_0x5f1d5b(0x2a9)]>0xc350?_0x2d6d30[_0x5f1d5b(0x2c2)](0x0,0xc350)+_0x5f1d5b(0x1fb)+_0x2d6d30['length']+'\x20chars)':_0x2d6d30:_0x5f1d5b(0x1ff)+(_0x3f7b51||_0x5f1d5b(0x274))+']','original_code_length':_0x2d6d30?.[_0x5f1d5b(0x2a9)]??0x0,'model':_0x5f1d5b(0x1dc),'dry_run':_0x49a3c6['data']['dryRun']}},'stack_trace':_0x5233cb instanceof Error?_0x5233cb[_0x5f1d5b(0x28d)]:undefined,'source':_0x5f1d5b(0x204)})['catch'](()=>{}),{'content':[{'type':_0x5f1d5b(0x1f5),'text':_0x5f1d5b(0x1ca)+_0x446a6f}],'isError':!![]};}}case _0x5f1d5b(0x2b5):{const _0x17dc7c=WarpGrepArgsSchema[_0x5f1d5b(0x21b)](_0x2721fe);if(!_0x17dc7c['success'])return{'content':[{'type':_0x5f1d5b(0x1f5),'text':'Invalid\x20arguments:\x20'+_0x17dc7c[_0x5f1d5b(0x1d5)]}],'isError':!![]};const _0x19f572=_0x164ffb=>{const _0x5b4a39=_0x5f1d5b,_0x3135c1=[];for(const _0x81d9ee of _0x164ffb||[]){const _0x4dde25=_0x81d9ee[_0x5b4a39(0x29d)],_0x5273cb=_0x81d9ee[_0x5b4a39(0x27d)];if(_0x4dde25===_0x5b4a39(0x2be)&&_0x5273cb){const _0xd297a8=_0x5273cb[_0x5b4a39(0x2b1)]('\x0a')['filter'](_0x5ee67e=>_0x5ee67e[_0x5b4a39(0x1d2)]());for(const _0x29a3be of _0xd297a8){const _0x3e2ccd=_0x29a3be[_0x5b4a39(0x2d5)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x3e2ccd){_0x3135c1['push']('grep\x20\x27'+_0x3e2ccd[0x1]+'\x27\x20'+_0x3e2ccd[0x2]);continue;}const _0x504b63=_0x29a3be[_0x5b4a39(0x2d5)](/^read\s+(.+)$/);if(_0x504b63){_0x3135c1[_0x5b4a39(0x2ce)](_0x5b4a39(0x1eb)+_0x504b63[0x1]);continue;}const _0xc24c19=_0x29a3be[_0x5b4a39(0x2d5)](/^list_directory\s+(.+)$/);if(_0xc24c19){_0x3135c1[_0x5b4a39(0x2ce)](_0x5b4a39(0x262)+_0xc24c19[0x1]);continue;}}}}return _0x3135c1;},_0x4bdf16=_0x30d44b=>{const _0xc4d802=_0x5f1d5b,_0x47b484=[];if(!_0x30d44b||!Array[_0xc4d802(0x22a)](_0x30d44b))return _0x47b484;const _0x26ea6d=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0xc4d802(0x203),'tool':_0xc4d802(0x1d1)},{'pattern':/\[PATH ERROR\]/,'error_type':_0xc4d802(0x268),'tool':_0xc4d802(0x1d1)},{'pattern':/\[READ ERROR\]/,'error_type':_0xc4d802(0x20e),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0xc4d802(0x1fd),'tool':_0xc4d802(0x1d1)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0xc4d802(0x20a),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0xc4d802(0x22b),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':_0xc4d802(0x1fd),'tool':_0xc4d802(0x1d1)},{'pattern':/\[SYMLINK\]/,'error_type':_0xc4d802(0x2ae),'tool':_0xc4d802(0x1d1)},{'pattern':/not a text file/,'error_type':_0xc4d802(0x1fd),'tool':_0xc4d802(0x1d1)},{'pattern':/symbolic link/,'error_type':_0xc4d802(0x2ae),'tool':_0xc4d802(0x1d1)},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':'read'},{'pattern':/status="error"/,'error_type':'ToolException','tool':'unknown'}];let _0x2dd066=0x0;for(const _0x37f322 of _0x30d44b){if(_0x37f322[_0xc4d802(0x29d)]===_0xc4d802(0x282)){_0x2dd066++;const _0x371386=_0x37f322[_0xc4d802(0x27d)];if(!_0x371386||typeof _0x371386!==_0xc4d802(0x1fe))continue;for(const {pattern:_0x218ac5,error_type:_0x456e54,tool:_0x56434d}of _0x26ea6d){const _0xbbca=_0x371386[_0xc4d802(0x2d5)](new RegExp(_0x218ac5['source'],'g'));if(_0xbbca)for(const _0x48451f of _0xbbca){const _0x3f7a02=_0x371386[_0xc4d802(0x1c6)](_0x48451f),_0x5b0f72=_0x371386['substring'](_0x3f7a02,Math[_0xc4d802(0x2cc)](_0x3f7a02+0xc8,_0x371386[_0xc4d802(0x2a9)]));_0x47b484['push']({'tool':_0x56434d,'error_type':_0x456e54,'error_message':_0x5b0f72[_0xc4d802(0x2b1)]('\x0a')[0x0],'turn':_0x2dd066});}}}}return _0x47b484;};try{const _0x109b8e=a0_0x1fe176[_0x5f1d5b(0x214)](_0x17dc7c[_0x5f1d5b(0x292)]['repo_path']),_0x587104=_0x17dc7c[_0x5f1d5b(0x292)]['search_type'],_0x5eb6d5=_0x587104==='node_modules'?{'allowNames':[_0x5f1d5b(0x239)]}:undefined,_0x344cd6=new LocalRipgrepProvider(_0x109b8e,undefined,_0x5eb6d5),_0x20d932=await runWarpGrep({'query':_0x17dc7c[_0x5f1d5b(0x292)]['search_string'],'repoRoot':_0x109b8e,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x344cd6,'search_type':_0x587104}),_0x15aa89=_0x4bdf16(_0x20d932['messages']);_0x15aa89[_0x5f1d5b(0x2a9)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x15aa89[_0x5f1d5b(0x2a9)]+_0x5f1d5b(0x259),'error_type':_0x5f1d5b(0x24f),'level':_0x5f1d5b(0x225),'tool':'warpgrep_codebase_search','context':{'repo_path':_0x17dc7c['data'][_0x5f1d5b(0x257)],'query':_0x17dc7c[_0x5f1d5b(0x292)][_0x5f1d5b(0x230)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x20d932[_0x5f1d5b(0x2a6)],'sub_tool_errors':_0x15aa89,'timings':_0x20d932[_0x5f1d5b(0x2c0)],'tool_calls':_0x19f572(_0x20d932[_0x5f1d5b(0x2d1)]),'messages':_0x20d932[_0x5f1d5b(0x2d1)]?.[_0x5f1d5b(0x220)](_0x2907b3=>({'role':_0x2907b3[_0x5f1d5b(0x29d)],'content':_0x2907b3[_0x5f1d5b(0x27d)]}))},'source':_0x5f1d5b(0x204)})[_0x5f1d5b(0x2cb)](()=>{});let _0x2d66e1='';if(_0x20d932['terminationReason']==='completed'&&_0x20d932[_0x5f1d5b(0x26f)]?.[_0x5f1d5b(0x269)]?.[_0x5f1d5b(0x22c)]){const _0xc37a46=_0x20d932[_0x5f1d5b(0x26f)][_0x5f1d5b(0x269)][_0x5f1d5b(0x22c)];if(_0xc37a46[_0x5f1d5b(0x2a9)]===0x0)return _0x2d66e1=_0x20d932[_0x5f1d5b(0x26f)]['payload']||_0x5f1d5b(0x277),{'content':[{'type':'text','text':_0x2d66e1}]};const _0x53cabc=[],_0x557bce=[_0x5f1d5b(0x294)];for(const _0x264eb9 of _0x20d932['messages']){const _0x131c83=_0x264eb9[_0x5f1d5b(0x29d)],_0x23689f=_0x264eb9['content'];if(_0x131c83===_0x5f1d5b(0x2be)&&_0x23689f){const _0x2cb4b8=_0x23689f[_0x5f1d5b(0x2b1)]('\x0a')[_0x5f1d5b(0x1cb)](_0xd890c6=>_0xd890c6[_0x5f1d5b(0x1d2)]());for(const _0xa354c2 of _0x2cb4b8){const _0x4d1651=_0xa354c2[_0x5f1d5b(0x2d5)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x4d1651){_0x557bce[_0x5f1d5b(0x2ce)](_0x5f1d5b(0x24a)+_0x4d1651[0x1]+_0x5f1d5b(0x21c)+_0x4d1651[0x2]+'`');continue;}const _0x3e261a=_0xa354c2[_0x5f1d5b(0x2d5)](/^read\s+(.+)$/);if(_0x3e261a){_0x557bce[_0x5f1d5b(0x2ce)](_0x5f1d5b(0x2bc)+_0x3e261a[0x1]+'`');continue;}const _0x506852=_0xa354c2[_0x5f1d5b(0x2d5)](/^list_directory\s+(.+)$/);if(_0x506852){_0x557bce[_0x5f1d5b(0x2ce)](_0x5f1d5b(0x1be)+_0x506852[0x1]+'`');continue;}}}}_0x53cabc['push'](_0x557bce[_0x5f1d5b(0x2c3)]('\x0a'));const _0x2acad7=['',_0x5f1d5b(0x2e0)];for(const _0x2ecde8 of _0xc37a46){if(_0x2ecde8[_0x5f1d5b(0x2ad)]==='*')_0x2acad7['push']('-\x20'+_0x2ecde8['path']+':*');else{if(Array[_0x5f1d5b(0x22a)](_0x2ecde8[_0x5f1d5b(0x2ad)])){const _0x53e203=_0x2ecde8[_0x5f1d5b(0x2ad)]['map'](([_0x6c6075,_0x9be05e])=>{if(_0x6c6075===_0x9be05e)return''+_0x6c6075;return _0x6c6075+'-'+_0x9be05e;});_0x2acad7[_0x5f1d5b(0x2ce)]('-\x20'+_0x2ecde8[_0x5f1d5b(0x2ac)]+':'+_0x53e203['join'](','));}else _0x2acad7[_0x5f1d5b(0x2ce)]('-\x20'+_0x2ecde8[_0x5f1d5b(0x2ac)]+':*');}}_0x2acad7[_0x5f1d5b(0x2ce)](''),_0x53cabc[_0x5f1d5b(0x2ce)](_0x2acad7[_0x5f1d5b(0x2c3)]('\x0a')),_0x53cabc[_0x5f1d5b(0x2ce)](_0x5f1d5b(0x2b3));const _0x17b67f=[];for(const _0x496fee of _0xc37a46){let _0x1a6d12=a0_0x1fe176[_0x5f1d5b(0x214)](_0x17dc7c[_0x5f1d5b(0x292)][_0x5f1d5b(0x257)],_0x496fee[_0x5f1d5b(0x2ac)]),_0x5434d6=null,_0xb694fc=null;try{_0x5434d6=await a0_0x397b2d['readFile'](_0x1a6d12,{'encoding':_0x5f1d5b(0x1ec)});}catch(_0x5a6cba){const _0x3bb5ee=fixPathRepetition(_0x1a6d12);if(_0x3bb5ee)try{_0x5434d6=await a0_0x397b2d[_0x5f1d5b(0x1f4)](_0x3bb5ee,{'encoding':_0x5f1d5b(0x1ec)}),_0x1a6d12=_0x3bb5ee;}catch{_0xb694fc=_0x5a6cba instanceof Error?_0x5a6cba:new Error(String(_0x5a6cba));}else _0xb694fc=_0x5a6cba instanceof Error?_0x5a6cba:new Error(String(_0x5a6cba));}if(_0x5434d6!==null){const _0x345265=_0x5434d6[_0x5f1d5b(0x2b1)](/\r?\n/),_0x693fee=[_0x5f1d5b(0x20c)+_0x496fee[_0x5f1d5b(0x2ac)]+'\x22>'];if(_0x496fee[_0x5f1d5b(0x2ad)]==='*'||!Array[_0x5f1d5b(0x22a)](_0x496fee['lines']))for(let _0x2a56dd=0x1;_0x2a56dd<=_0x345265[_0x5f1d5b(0x2a9)];_0x2a56dd++){const _0x11d257=_0x345265[_0x2a56dd-0x1];_0x693fee[_0x5f1d5b(0x2ce)](_0x2a56dd+'|\x20'+_0x11d257);}else for(const [_0x125587,_0x48d67a]of _0x496fee['lines']){_0x693fee[_0x5f1d5b(0x2a9)]>0x1&&_0x693fee[_0x5f1d5b(0x2ce)]('');for(let _0x2eca38=_0x125587;_0x2eca38<=_0x48d67a&&_0x2eca38<=_0x345265[_0x5f1d5b(0x2a9)];_0x2eca38++){const _0x341c23=_0x345265[_0x2eca38-0x1];_0x693fee[_0x5f1d5b(0x2ce)](_0x2eca38+'|\x20'+_0x341c23);}}_0x693fee['push'](_0x5f1d5b(0x2aa)),_0x17b67f[_0x5f1d5b(0x2ce)](_0x693fee[_0x5f1d5b(0x2c3)]('\x0a'));}else _0x17b67f[_0x5f1d5b(0x2ce)](_0x5f1d5b(0x20c)+_0x496fee[_0x5f1d5b(0x2ac)]+_0x5f1d5b(0x2cd)+(_0xb694fc?.[_0x5f1d5b(0x2c1)]||_0x5f1d5b(0x23c))+_0x5f1d5b(0x2b4));}_0x53cabc['push'](_0x17b67f[_0x5f1d5b(0x2c3)]('\x0a\x0a')),_0x2d66e1=_0x53cabc[_0x5f1d5b(0x2c3)]('\x0a');const _0x16abc8=_0x20d932[_0x5f1d5b(0x27f)]?.[_0x5f1d5b(0x1cb)](_0x510a53=>_0x510a53[_0x5f1d5b(0x2c1)]?.[_0x5f1d5b(0x284)]('File\x20read\x20error:'))||[];if(_0x16abc8[_0x5f1d5b(0x2a9)]>0x0){const _0x1c85ba=_0x16abc8['map'](_0x54667e=>_0x54667e[_0x5f1d5b(0x2c1)])[_0x5f1d5b(0x2c3)](';\x20');reportMorphError({'error_message':_0x1c85ba,'error_type':_0x5f1d5b(0x1dd),'context':{'tool':'warpgrep_codebase_search','repo_path':_0x17dc7c[_0x5f1d5b(0x292)][_0x5f1d5b(0x257)],'query':_0x17dc7c['data'][_0x5f1d5b(0x230)],'model':_0x5f1d5b(0x246),'termination_reason':_0x5f1d5b(0x2ca),'error_count':_0x16abc8[_0x5f1d5b(0x2a9)],'is_timeout':![],'timings':_0x20d932[_0x5f1d5b(0x2c0)],'files_attempted':_0xc37a46['map'](_0x31ab6c=>({'path':_0x31ab6c[_0x5f1d5b(0x2ac)],'lines':_0x31ab6c[_0x5f1d5b(0x2ad)]})),'tool_calls':_0x19f572(_0x20d932[_0x5f1d5b(0x2d1)]),'messages':_0x20d932[_0x5f1d5b(0x2d1)]?.['map'](_0x49b600=>({'role':_0x49b600['role'],'content':_0x49b600[_0x5f1d5b(0x27d)]})),'request_content':{'query':_0x17dc7c[_0x5f1d5b(0x292)][_0x5f1d5b(0x230)],'repo_path':_0x17dc7c[_0x5f1d5b(0x292)]['repo_path'],'repoRoot':a0_0x1fe176['resolve'](_0x17dc7c[_0x5f1d5b(0x292)]['repo_path']),'model':'morph-warp-grep-v1-1111v0'}},'source':_0x5f1d5b(0x204)})[_0x5f1d5b(0x2cb)](()=>{});}}else{if(_0x20d932['terminationReason']==='terminated'&&_0x20d932[_0x5f1d5b(0x27f)]['length']>0x0){const _0x247f9f=_0x20d932[_0x5f1d5b(0x27f)][_0x5f1d5b(0x220)](_0x5608ee=>_0x5608ee[_0x5f1d5b(0x2c1)])['join'](';\x20');_0x2d66e1=_0x5f1d5b(0x26e)+_0x247f9f;const _0x3c1f15=_0x247f9f[_0x5f1d5b(0x2a1)]()[_0x5f1d5b(0x1d0)](_0x5f1d5b(0x27c))||_0x247f9f[_0x5f1d5b(0x2a1)]()[_0x5f1d5b(0x1d0)]('timed\x20out')||_0x247f9f[_0x5f1d5b(0x2a1)]()[_0x5f1d5b(0x1d0)](_0x5f1d5b(0x241)),_0x3383a0=_0x20d932[_0x5f1d5b(0x26f)]?.['metadata']?.[_0x5f1d5b(0x22c)],_0xe41ada=_0x20d932['errors'][0x0];reportMorphError({'error_message':_0x247f9f,'error_type':_0x3c1f15?_0x5f1d5b(0x1cc):_0xe41ada?.[_0x5f1d5b(0x1c9)]?.[_0x5f1d5b(0x2b9)]||_0x5f1d5b(0x1cd),'context':{'tool':_0x5f1d5b(0x2b5),'repo_path':_0x17dc7c[_0x5f1d5b(0x292)][_0x5f1d5b(0x257)],'query':_0x17dc7c['data']['search_string'],'model':_0x5f1d5b(0x246),'termination_reason':_0x20d932['terminationReason'],'error_count':_0x20d932[_0x5f1d5b(0x27f)][_0x5f1d5b(0x2a9)],'is_timeout':_0x3c1f15,'timings':_0x20d932['timings'],'files_attempted':_0x3383a0?.[_0x5f1d5b(0x220)](_0x43a434=>({'path':_0x43a434[_0x5f1d5b(0x2ac)],'lines':_0x43a434[_0x5f1d5b(0x2ad)]})),'tool_calls':_0x19f572(_0x20d932[_0x5f1d5b(0x2d1)]),'messages':_0x20d932[_0x5f1d5b(0x2d1)]?.[_0x5f1d5b(0x220)](_0x335328=>({'role':_0x335328[_0x5f1d5b(0x29d)],'content':_0x335328[_0x5f1d5b(0x27d)]})),'request_content':{'query':_0x17dc7c[_0x5f1d5b(0x292)][_0x5f1d5b(0x230)],'repo_path':_0x17dc7c[_0x5f1d5b(0x292)][_0x5f1d5b(0x257)],'repoRoot':a0_0x1fe176[_0x5f1d5b(0x214)](_0x17dc7c[_0x5f1d5b(0x292)]['repo_path']),'model':_0x5f1d5b(0x246)}},'stack_trace':_0xe41ada?.[_0x5f1d5b(0x28d)]||undefined,'source':_0x5f1d5b(0x204)})[_0x5f1d5b(0x2cb)](()=>{});}else _0x2d66e1='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':'text','text':_0x2d66e1}]};}catch(_0x188251){const _0x33b196=_0x188251 instanceof Error?_0x188251['message']:String(_0x188251),_0x3c2444=_0x33b196[_0x5f1d5b(0x2a1)]()['includes'](_0x5f1d5b(0x27c))||_0x33b196[_0x5f1d5b(0x2a1)]()[_0x5f1d5b(0x1d0)](_0x5f1d5b(0x1f8))||_0x33b196[_0x5f1d5b(0x2a1)]()[_0x5f1d5b(0x1d0)](_0x5f1d5b(0x241))||_0x188251 instanceof Error&&_0x188251['name']===_0x5f1d5b(0x1cc);return reportMorphError({'error_message':_0x33b196,'error_type':_0x3c2444?_0x5f1d5b(0x1cc):_0x188251 instanceof Error?_0x188251[_0x5f1d5b(0x1c9)][_0x5f1d5b(0x2b9)]:'UnknownError','context':{'tool':'warpgrep_codebase_search','repo_path':_0x17dc7c[_0x5f1d5b(0x292)][_0x5f1d5b(0x257)],'query':_0x17dc7c['data'][_0x5f1d5b(0x230)],'model':_0x5f1d5b(0x246),'is_timeout':_0x3c2444,'exception_phase':_0x5f1d5b(0x279),'request_content':{'query':_0x17dc7c[_0x5f1d5b(0x292)][_0x5f1d5b(0x230)],'repo_path':_0x17dc7c[_0x5f1d5b(0x292)][_0x5f1d5b(0x257)],'repoRoot':a0_0x1fe176[_0x5f1d5b(0x214)](_0x17dc7c[_0x5f1d5b(0x292)]['repo_path']),'model':_0x5f1d5b(0x246)}},'stack_trace':_0x188251 instanceof Error?_0x188251['stack']:undefined,'source':_0x5f1d5b(0x204)})[_0x5f1d5b(0x2cb)](()=>{}),{'content':[{'type':_0x5f1d5b(0x1f5),'text':_0x5f1d5b(0x227)+_0x33b196}],'isError':![]};}}case _0x5f1d5b(0x206):{const _0x556212=WarpGrepGitHubArgsSchema[_0x5f1d5b(0x21b)](_0x2721fe);if(!_0x556212[_0x5f1d5b(0x240)])return{'content':[{'type':_0x5f1d5b(0x1f5),'text':'Invalid\x20arguments:\x20'+_0x556212[_0x5f1d5b(0x1d5)]}],'isError':!![]};const _0x3108d3=_0x556212['data'][_0x5f1d5b(0x283)]||_0x556212['data'][_0x5f1d5b(0x1de)];if(!_0x3108d3)return{'content':[{'type':'text','text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x19429d=MORPH_API_KEY;if(!_0x19429d)throw new Error(_0x5f1d5b(0x21e));const _0x1dac67=Date[_0x5f1d5b(0x237)]();console[_0x5f1d5b(0x1d5)](_0x5f1d5b(0x1ea)+_0x3108d3+_0x5f1d5b(0x29c)+_0x556212[_0x5f1d5b(0x292)][_0x5f1d5b(0x230)]+'\x22');try{const _0x5a0ecb=new WarpGrepClient({'morphApiKey':_0x19429d,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x4e5835=await _0x5a0ecb[_0x5f1d5b(0x2e3)]({'query':_0x556212[_0x5f1d5b(0x292)][_0x5f1d5b(0x230)],'github':_0x3108d3,'branch':_0x556212[_0x5f1d5b(0x292)][_0x5f1d5b(0x23b)]}),_0x12b9d9=Date[_0x5f1d5b(0x237)]()-_0x1dac67;console[_0x5f1d5b(0x1d5)](_0x5f1d5b(0x224)+_0x12b9d9+_0x5f1d5b(0x242)+_0x4e5835[_0x5f1d5b(0x240)]);const _0x47aee2=formatResult(_0x4e5835);return{'content':[{'type':'text','text':_0x47aee2}]};}catch(_0x3f1e26){const _0x314576=Date[_0x5f1d5b(0x237)]()-_0x1dac67,_0x2fca58=_0x3f1e26 instanceof Error?_0x3f1e26[_0x5f1d5b(0x2c1)]:String(_0x3f1e26);return console[_0x5f1d5b(0x1d5)](_0x5f1d5b(0x250)+_0x314576+_0x5f1d5b(0x210),_0x2fca58),reportMorphError({'error_message':_0x2fca58,'error_type':_0x3f1e26 instanceof Error?_0x3f1e26[_0x5f1d5b(0x1c9)][_0x5f1d5b(0x2b9)]:'UnknownError','context':{'tool':_0x5f1d5b(0x206),'github_url':_0x3108d3,'search_string':_0x556212['data'][_0x5f1d5b(0x230)],'branch':_0x556212[_0x5f1d5b(0x292)]['branch']},'stack_trace':_0x3f1e26 instanceof Error?_0x3f1e26[_0x5f1d5b(0x28d)]:undefined,'source':'mcp-filesystem','tool':_0x5f1d5b(0x206),'latency_ms':_0x314576})['catch'](()=>{}),{'content':[{'type':_0x5f1d5b(0x1f5),'text':_0x5f1d5b(0x1e3)+_0x2fca58}],'isError':![]};}}case _0x5f1d5b(0x280):{const _0xed27dc=CodebaseSearchArgsSchema['safeParse'](_0x2721fe);if(!_0xed27dc[_0x5f1d5b(0x240)])return{'content':[{'type':_0x5f1d5b(0x1f5),'text':_0x5f1d5b(0x291)+_0xed27dc['error']}],'isError':!![]};try{const _0x24f4c1=MORPH_API_KEY;if(!_0x24f4c1)throw new Error(_0x5f1d5b(0x26a));const _0x43e04e=_0xed27dc['data'][_0x5f1d5b(0x27e)],_0x47dfc6=await executeCodebaseSearch({'query':_0xed27dc[_0x5f1d5b(0x292)][_0x5f1d5b(0x2a0)],'target_directories':_0x43e04e,'limit':_0xed27dc['data']['limit']},{'apiKey':_0x24f4c1,'repoId':_0xed27dc[_0x5f1d5b(0x292)][_0x5f1d5b(0x2d0)],'branch':_0xed27dc[_0x5f1d5b(0x292)][_0x5f1d5b(0x23b)],'commitHash':_0xed27dc[_0x5f1d5b(0x292)][_0x5f1d5b(0x1fa)],'debug':![]});if(!_0x47dfc6[_0x5f1d5b(0x240)])return{'content':[{'type':'text','text':_0x5f1d5b(0x265)+_0x47dfc6[_0x5f1d5b(0x1d5)]}],'isError':!![]};const _0x1d54c0=_0x47dfc6[_0x5f1d5b(0x243)][_0x5f1d5b(0x2a9)]===0x0?_0x5f1d5b(0x25b)+_0xed27dc['data'][_0x5f1d5b(0x2a0)]+'\x22':_0x5f1d5b(0x2e2)+_0x47dfc6['results'][_0x5f1d5b(0x2a9)]+_0x5f1d5b(0x1e6)+_0x47dfc6[_0x5f1d5b(0x261)]['searchTimeMs']+'ms:\x0a\x0a'+_0x47dfc6[_0x5f1d5b(0x243)][_0x5f1d5b(0x220)]((_0x5ae61d,_0x48c99e)=>_0x48c99e+0x1+'.\x20'+_0x5ae61d[_0x5f1d5b(0x263)]+'\x20('+(_0x5ae61d[_0x5f1d5b(0x1c7)]*0x64)[_0x5f1d5b(0x28e)](0x1)+_0x5f1d5b(0x24d)+('\x20\x20\x20Lines\x20'+_0x5ae61d[_0x5f1d5b(0x267)]+'-'+_0x5ae61d['endLine']+'\x0a')+(_0x5f1d5b(0x1db)+_0x5ae61d[_0x5f1d5b(0x27d)][_0x5f1d5b(0x2c2)](0x0,0xc8)+(_0x5ae61d[_0x5f1d5b(0x27d)][_0x5f1d5b(0x2a9)]>0xc8?_0x5f1d5b(0x299):'')+'\x0a'))[_0x5f1d5b(0x2c3)]('\x0a');return{'content':[{'type':'text','text':_0x1d54c0}]};}catch(_0x59935a){const _0x45ea12=_0x59935a instanceof Error?_0x59935a[_0x5f1d5b(0x2c1)]:String(_0x59935a);return reportMorphError({'error_message':_0x45ea12,'error_type':_0x59935a instanceof Error?_0x59935a['constructor'][_0x5f1d5b(0x2b9)]:_0x5f1d5b(0x234),'context':{'tool':_0x5f1d5b(0x280),'query':_0xed27dc[_0x5f1d5b(0x292)]['query'],'repo_id':_0xed27dc[_0x5f1d5b(0x292)][_0x5f1d5b(0x2d0)],'target_directories':_0xed27dc[_0x5f1d5b(0x292)][_0x5f1d5b(0x27e)]},'stack_trace':_0x59935a instanceof Error?_0x59935a[_0x5f1d5b(0x28d)]:undefined,'source':_0x5f1d5b(0x204)})[_0x5f1d5b(0x2cb)](()=>{}),{'content':[{'type':_0x5f1d5b(0x1f5),'text':_0x5f1d5b(0x26e)+_0x45ea12}],'isError':!![]};}}default:throw new Error(_0x5f1d5b(0x231)+_0x296bec);}}catch(_0x140f4f){const _0x45ca8f=_0x140f4f instanceof Error?_0x140f4f[_0x5f1d5b(0x2c1)]:String(_0x140f4f);return reportMorphError({'error_message':_0x45ca8f,'error_type':_0x140f4f instanceof Error?_0x140f4f[_0x5f1d5b(0x1c9)][_0x5f1d5b(0x2b9)]:'UnknownError','context':{'tool':name,'arguments':args?JSON[_0x5f1d5b(0x2de)](args)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x5f1d5b(0x278)},'stack_trace':_0x140f4f instanceof Error?_0x140f4f[_0x5f1d5b(0x28d)]:undefined,'source':_0x5f1d5b(0x204)})[_0x5f1d5b(0x2cb)](()=>{}),{'content':[{'type':_0x5f1d5b(0x1f5),'text':_0x5f1d5b(0x26e)+_0x45ca8f}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x45a317){const _0x1b841e=a0_0x15caa6,_0x2b5fbd=await getValidRootDirectories(_0x45a317);if(_0x2b5fbd[_0x1b841e(0x2a9)]>0x0)allowedDirectories=[..._0x2b5fbd],console[_0x1b841e(0x1d5)]('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x2b5fbd[_0x1b841e(0x2a9)]+'\x20valid\x20directories');else{console[_0x1b841e(0x1d5)](_0x1b841e(0x21a));if(ENABLE_WORKSPACE_MODE)try{const _0x5ea4dd=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x5ea4dd&&(allowedDirectories=[_0x5ea4dd],console[_0x1b841e(0x1d5)](_0x1b841e(0x226)+_0x5ea4dd));}catch(_0x190d66){console['error'](_0x1b841e(0x293)+_0x190d66);}}}server[a0_0x15caa6(0x273)](RootsListChangedNotificationSchema,async()=>{const _0x18c3a8=a0_0x15caa6;try{const _0x402afe=await server[_0x18c3a8(0x285)]();_0x402afe&&'roots'in _0x402afe&&await updateAllowedDirectoriesFromRoots(_0x402afe['roots']);}catch(_0x13f636){console[_0x18c3a8(0x1d5)](_0x18c3a8(0x24e),_0x13f636 instanceof Error?_0x13f636[_0x18c3a8(0x2c1)]:String(_0x13f636));}}),server['oninitialized']=async()=>{const _0x4828ff=a0_0x15caa6,_0x4360ad=server['getClientCapabilities']();if(_0x4360ad?.[_0x4828ff(0x2a8)])try{const _0xe0ffa1=await server['listRoots']();_0xe0ffa1&&_0x4828ff(0x2a8)in _0xe0ffa1?await updateAllowedDirectoriesFromRoots(_0xe0ffa1[_0x4828ff(0x2a8)]):console[_0x4828ff(0x1d5)](_0x4828ff(0x281));}catch(_0x154376){console[_0x4828ff(0x1d5)](_0x4828ff(0x2df),_0x154376 instanceof Error?_0x154376[_0x4828ff(0x2c1)]:String(_0x154376));}else{if(allowedDirectories[_0x4828ff(0x2a9)]>0x0)console[_0x4828ff(0x1d5)](_0x4828ff(0x249),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x4828ff(0x1d5)](_0x4828ff(0x25f));else throw new Error('Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.');}}};async function runServer(){const _0x62b0e7=a0_0x15caa6,_0x265e6e=new StdioServerTransport();await server[_0x62b0e7(0x28c)](_0x265e6e),console[_0x62b0e7(0x1d5)](_0x62b0e7(0x205)),allowedDirectories['length']===0x0&&console[_0x62b0e7(0x1d5)](_0x62b0e7(0x21f));}runServer()[a0_0x15caa6(0x2cb)](_0x3d4659=>{const _0x5ab567=a0_0x15caa6;console[_0x5ab567(0x1d5)]('Fatal\x20error\x20running\x20server:',_0x3d4659),process[_0x5ab567(0x2bf)](0x1);});
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x138cc6,_0x1c6410){const _0x376e12=a1_0x1127,_0x2e3a83=_0x138cc6();while(!![]){try{const _0x46cf51=-parseInt(_0x376e12(0x89))/0x1*(parseInt(_0x376e12(0x8c))/0x2)+parseInt(_0x376e12(0x83))/0x3+parseInt(_0x376e12(0x7e))/0x4*(parseInt(_0x376e12(0x80))/0x5)+-parseInt(_0x376e12(0x8a))/0x6+-parseInt(_0x376e12(0x8d))/0x7*(parseInt(_0x376e12(0x8b))/0x8)+-parseInt(_0x376e12(0x82))/0x9*(parseInt(_0x376e12(0x85))/0xa)+parseInt(_0x376e12(0x7c))/0xb;if(_0x46cf51===_0x1c6410)break;else _0x2e3a83['push'](_0x2e3a83['shift']());}catch(_0x104cdf){_0x2e3a83['push'](_0x2e3a83['shift']());}}}(a1_0x47f2,0x39e1b));function a1_0x1127(_0x43b2e4,_0x3a759e){_0x43b2e4=_0x43b2e4-0x7b;const _0x47f28f=a1_0x47f2();let _0x112758=_0x47f28f[_0x43b2e4];return _0x112758;}import a1_0x30935a from'path';import a1_0x33bc00 from'os';function a1_0x47f2(){const _0x20aec7=['58338kNyFui','572058HEWpnV','join','30MsKDzq','replace','startsWith','match','148054ODCpyY','1853058rvTiFM','200kBiqaX','2mODROV','16415qqvEqV','slice','substring','normalize','charAt','toUpperCase','3311726GDgxaz','trim','373732dTooIr','homedir','15ANvNgq','/mnt/'];a1_0x47f2=function(){return _0x20aec7;};return a1_0x47f2();}export function convertToWindowsPath(_0xf1bc9e){const _0x39a9d5=a1_0x1127;if(_0xf1bc9e[_0x39a9d5(0x87)](_0x39a9d5(0x81))){const _0x558e34=_0xf1bc9e[_0x39a9d5(0x91)](0x5)[_0x39a9d5(0x7b)](),_0x237328=_0xf1bc9e[_0x39a9d5(0x8e)](0x6)[_0x39a9d5(0x86)](/\//g,'\x5c');return _0x558e34+':'+_0x237328;}if(_0xf1bc9e['match'](/^\/[a-zA-Z]\//)){const _0x5c9144=_0xf1bc9e[_0x39a9d5(0x91)](0x1)[_0x39a9d5(0x7b)](),_0x19f2bf=_0xf1bc9e[_0x39a9d5(0x8e)](0x2)[_0x39a9d5(0x86)](/\//g,'\x5c');return _0x5c9144+':'+_0x19f2bf;}if(_0xf1bc9e[_0x39a9d5(0x88)](/^[a-zA-Z]:/))return _0xf1bc9e['replace'](/\//g,'\x5c');return _0xf1bc9e;}export function normalizePath(_0x19cc75){const _0x4a65fc=a1_0x1127;_0x19cc75=_0x19cc75[_0x4a65fc(0x7d)]()[_0x4a65fc(0x86)](/^["']|["']$/g,'');const _0x2d9003=_0x19cc75[_0x4a65fc(0x87)]('/')&&!_0x19cc75[_0x4a65fc(0x88)](/^\/mnt\/[a-z]\//i)&&!_0x19cc75[_0x4a65fc(0x88)](/^\/[a-zA-Z]\//);if(_0x2d9003)return _0x19cc75[_0x4a65fc(0x86)](/\/+/g,'/')[_0x4a65fc(0x86)](/\/+$/,'');_0x19cc75=convertToWindowsPath(_0x19cc75);if(_0x19cc75[_0x4a65fc(0x87)]('\x5c\x5c')){let _0x3f8ff1=_0x19cc75;_0x3f8ff1=_0x3f8ff1[_0x4a65fc(0x86)](/^\\{2,}/,'\x5c\x5c');const _0x330c93=_0x3f8ff1[_0x4a65fc(0x8f)](0x2)[_0x4a65fc(0x86)](/\\\\/g,'\x5c');_0x19cc75='\x5c\x5c'+_0x330c93;}else _0x19cc75=_0x19cc75['replace'](/\\\\/g,'\x5c');let _0x4c1331=a1_0x30935a[_0x4a65fc(0x90)](_0x19cc75);_0x19cc75[_0x4a65fc(0x87)]('\x5c\x5c')&&!_0x4c1331['startsWith']('\x5c\x5c')&&(_0x4c1331='\x5c'+_0x4c1331);if(_0x4c1331[_0x4a65fc(0x88)](/^[a-zA-Z]:/)){let _0x78f78d=_0x4c1331[_0x4a65fc(0x86)](/\//g,'\x5c');return/^[a-z]:/['test'](_0x78f78d)&&(_0x78f78d=_0x78f78d[_0x4a65fc(0x91)](0x0)[_0x4a65fc(0x7b)]()+_0x78f78d[_0x4a65fc(0x8e)](0x1)),_0x78f78d;}return _0x4c1331['replace'](/\//g,'\x5c');}export function expandHome(_0x1323a2){const _0x53eba7=a1_0x1127;if(_0x1323a2[_0x53eba7(0x87)]('~/')||_0x1323a2==='~')return a1_0x30935a[_0x53eba7(0x84)](a1_0x33bc00[_0x53eba7(0x7f)](),_0x1323a2[_0x53eba7(0x8e)](0x1));return _0x1323a2;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a2_0x3476(){const _0x1589dd=['length','some','1089452AyeLMR','startsWith','102RhLUcj','772690zrKqal','normalize','2434560Wleaaz','isAbsolute','1851479cwsDWf','sep','resolve','9oJfTJO','string','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','574510RsnMSG','167858ZNVYfh','includes','Path\x20must\x20be\x20absolute\x20after\x20normalization','19675hDJlCA','3aCSNcI'];a2_0x3476=function(){return _0x1589dd;};return a2_0x3476();}(function(_0x4d5a11,_0x20ec97){const _0x5fc598=a2_0x3b5e,_0x31c2ac=_0x4d5a11();while(!![]){try{const _0x397f4f=parseInt(_0x5fc598(0x182))/0x1+-parseInt(_0x5fc598(0x177))/0x2+-parseInt(_0x5fc598(0x171))/0x3*(-parseInt(_0x5fc598(0x174))/0x4)+parseInt(_0x5fc598(0x170))/0x5*(parseInt(_0x5fc598(0x176))/0x6)+-parseInt(_0x5fc598(0x17b))/0x7+parseInt(_0x5fc598(0x179))/0x8+parseInt(_0x5fc598(0x17e))/0x9*(parseInt(_0x5fc598(0x181))/0xa);if(_0x397f4f===_0x20ec97)break;else _0x31c2ac['push'](_0x31c2ac['shift']());}catch(_0xc5b98f){_0x31c2ac['push'](_0x31c2ac['shift']());}}}(a2_0x3476,0x353bd));import a2_0x4cf9ad from'path';function a2_0x3b5e(_0x468a48,_0x39f4c3){_0x468a48=_0x468a48-0x16e;const _0x3476ed=a2_0x3476();let _0x3b5e48=_0x3476ed[_0x468a48];return _0x3b5e48;}export function isPathWithinAllowedDirectories(_0x357d11,_0xe34d7){const _0x1f2d2d=a2_0x3b5e;if(typeof _0x357d11!==_0x1f2d2d(0x17f)||!Array['isArray'](_0xe34d7))return![];if(!_0x357d11||_0xe34d7[_0x1f2d2d(0x172)]===0x0)return![];if(_0x357d11[_0x1f2d2d(0x16e)]('\x00'))return![];let _0x33ab9c;try{_0x33ab9c=a2_0x4cf9ad[_0x1f2d2d(0x17d)](a2_0x4cf9ad[_0x1f2d2d(0x178)](_0x357d11));}catch{return![];}if(!a2_0x4cf9ad[_0x1f2d2d(0x17a)](_0x33ab9c))throw new Error(_0x1f2d2d(0x16f));return _0xe34d7[_0x1f2d2d(0x173)](_0x34368f=>{const _0x4b34c8=_0x1f2d2d;if(typeof _0x34368f!==_0x4b34c8(0x17f)||!_0x34368f)return![];if(_0x34368f['includes']('\x00'))return![];let _0x1ced3a;try{_0x1ced3a=a2_0x4cf9ad[_0x4b34c8(0x17d)](a2_0x4cf9ad[_0x4b34c8(0x178)](_0x34368f));}catch{return![];}if(!a2_0x4cf9ad['isAbsolute'](_0x1ced3a))throw new Error(_0x4b34c8(0x180));if(_0x33ab9c===_0x1ced3a)return!![];if(_0x1ced3a===a2_0x4cf9ad['sep'])return _0x33ab9c[_0x4b34c8(0x175)](a2_0x4cf9ad[_0x4b34c8(0x17c)]);return _0x33ab9c[_0x4b34c8(0x175)](_0x1ced3a+a2_0x4cf9ad[_0x4b34c8(0x17c)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a3_0x4011(){const _0x28f344=['283038cygCKy','811820vcmnZi','22ziyqHG','uri','file://','5243904dzHrdc','push','2234165zypFzS','1024SsLyrn','stat','\x20due\x20to\x20error:\x20','slice','invalid\x20path\x20or\x20inaccessible','24XbpYIr','error','join','1590168JelzSU','Skipping\x20invalid\x20directory:\x20','startsWith','6eMPiTy','non-directory\x20root','181618JIxZgn','isDirectory','7609OWtYMD'];a3_0x4011=function(){return _0x28f344;};return a3_0x4011();}(function(_0x9f69fc,_0x4893dd){const _0x1edcc2=a3_0x4924,_0x48a70f=_0x9f69fc();while(!![]){try{const _0x40c0bb=-parseInt(_0x1edcc2(0xea))/0x1+-parseInt(_0x1edcc2(0xe7))/0x2*(-parseInt(_0x1edcc2(0xf7))/0x3)+-parseInt(_0x1edcc2(0xfa))/0x4+-parseInt(_0x1edcc2(0xf1))/0x5*(parseInt(_0x1edcc2(0xe5))/0x6)+parseInt(_0x1edcc2(0xe9))/0x7*(parseInt(_0x1edcc2(0xf2))/0x8)+parseInt(_0x1edcc2(0xef))/0x9+-parseInt(_0x1edcc2(0xeb))/0xa*(-parseInt(_0x1edcc2(0xec))/0xb);if(_0x40c0bb===_0x4893dd)break;else _0x48a70f['push'](_0x48a70f['shift']());}catch(_0x12e803){_0x48a70f['push'](_0x48a70f['shift']());}}}(a3_0x4011,0x75f8f));import{promises as a3_0x3db1e1}from'fs';function a3_0x4924(_0x5c30c0,_0x564e37){_0x5c30c0=_0x5c30c0-0xe4;const _0x4011db=a3_0x4011();let _0x4924a6=_0x4011db[_0x5c30c0];return _0x4924a6;}import a3_0xc299f1 from'path';import a3_0x75bbd7 from'os';import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x304367){const _0x335737=a3_0x4924;try{const _0x1b5a8d=_0x304367[_0x335737(0xe4)](_0x335737(0xee))?_0x304367['slice'](0x7):_0x304367,_0xa2fd37=_0x1b5a8d[_0x335737(0xe4)]('~/')||_0x1b5a8d==='~'?a3_0xc299f1[_0x335737(0xf9)](a3_0x75bbd7['homedir'](),_0x1b5a8d[_0x335737(0xf5)](0x1)):_0x1b5a8d,_0x6d1471=a3_0xc299f1['resolve'](_0xa2fd37),_0x44f229=await a3_0x3db1e1['realpath'](_0x6d1471);return normalizePath(_0x44f229);}catch{return null;}}function formatDirectoryError(_0x45ba02,_0x4e17c4,_0x23113f){const _0x389a88=a3_0x4924;if(_0x23113f)return'Skipping\x20'+_0x23113f+':\x20'+_0x45ba02;const _0x48a2b3=_0x4e17c4 instanceof Error?_0x4e17c4['message']:String(_0x4e17c4);return _0x389a88(0xfb)+_0x45ba02+_0x389a88(0xf4)+_0x48a2b3;}export async function getValidRootDirectories(_0x393eb0){const _0x37522d=a3_0x4924,_0x3093ca=[];for(const _0x5ed48c of _0x393eb0){const _0x30f1f3=await parseRootUri(_0x5ed48c[_0x37522d(0xed)]);if(!_0x30f1f3){console[_0x37522d(0xf8)](formatDirectoryError(_0x5ed48c[_0x37522d(0xed)],undefined,_0x37522d(0xf6)));continue;}try{const _0x3b2ee7=await a3_0x3db1e1[_0x37522d(0xf3)](_0x30f1f3);_0x3b2ee7[_0x37522d(0xe8)]()?_0x3093ca[_0x37522d(0xf0)](_0x30f1f3):console['error'](formatDirectoryError(_0x30f1f3,undefined,_0x37522d(0xe6)));}catch(_0x45f22d){console[_0x37522d(0xf8)](formatDirectoryError(_0x30f1f3,_0x45f22d));}}return _0x3093ca;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.115",
|
|
4
4
|
"description": "Fast & accurate MCP server with AI-powered file editing and intelligent code search. Prevents context pollution and saves time for a better user experience.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Morph (https://morphllm.com)",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@google/generative-ai": "^0.21.0",
|
|
37
37
|
"@modelcontextprotocol/sdk": "^1.12.3",
|
|
38
|
-
"@morphllm/morphsdk": "0.2.
|
|
38
|
+
"@morphllm/morphsdk": "0.2.130",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|