@morphllm/morphmcp 0.8.111 → 0.8.112
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/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/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x20a3b2=a0_0x303b;(function(_0x206822,_0x3d62cb){const _0x748325=a0_0x303b,_0x42b98c=_0x206822();while(!![]){try{const _0x2f9b07=-parseInt(_0x748325(0x14a))/0x1+-parseInt(_0x748325(0x105))/0x2+parseInt(_0x748325(0x14f))/0x3+parseInt(_0x748325(0xe5))/0x4*(parseInt(_0x748325(0x11f))/0x5)+-parseInt(_0x748325(0x15d))/0x6+parseInt(_0x748325(0x1f9))/0x7*(-parseInt(_0x748325(0x1db))/0x8)+parseInt(_0x748325(0x1fc))/0x9*(parseInt(_0x748325(0x156))/0xa);if(_0x2f9b07===_0x3d62cb)break;else _0x42b98c['push'](_0x42b98c['shift']());}catch(_0x52882d){_0x42b98c['push'](_0x42b98c['shift']());}}}(a0_0x548a,0xb4bc8));function a0_0x548a(){const _0x3b4656=['Relevant\x20context\x20found:','repo_path','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','Found\x20','BinaryFile','trim','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','message','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','TimeoutError','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','-\x20Read\x20file\x20`','connect','optional','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','warpgrep_github_search','read\x20','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','SymlinkError','post','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.','Applied','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','limit','Max\x20results\x20to\x20return','files','boolean','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','Error\x20accessing\x20directory\x20','Fallback:\x20Using\x20workspace\x20root\x20','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','github_url','warpgrep_codebase_search','ms:\x0a\x0a','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','assistant','inputSchema','join','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','linesModified','\x0aOptions:','Enabled\x20tools:\x20','Rules:\x0a','indexOf','\x20\x20\x20','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','morph-','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','Workspace\x20mode\x20enabled:\x20Using\x20','code_edit','[warpgrep_github_search]\x20Failed\x20in\x20','WarpGrepError','Error:\x20','text','--api-key=','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','\x20\x20morph-mcp','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','[warpgrep_github_search]\x20Done\x20in\x20','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','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','ReadError','dirname','messages','../package.json','params','isArray','timed\x20out','setNotificationHandler','--api-key','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','branch','stack','morph-v3-fast','grep','</file>','results','warn','Benefits:\x0a','\x20error(s)','\x20(new\x20file)','data','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','normalize','Fatal\x20error\x20running\x20server:','owner_repo','push','\x22>\x0aError\x20reading\x20file:\x20','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','repoId','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','mcp-filesystem','env','GitHub\x20search\x20failed:\x20','error','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','https://morphllm.com/api/error-report','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','1328IwBMMk','content','constructor','enum','@morphllm/morphmcp\x20','ms.\x20Success:\x20','morph-mcp','false','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','getClientCapabilities','...','some','morph-warp-grep-v1-1111v0','Error\x20running\x20fast\x20context\x20search:\x20','--help','timeout','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','query','FileNotFound','Invalid\x20arguments:\x20','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','unknown','resolve','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','min','Repository\x20identifier','MORPH_API_URL','api-key','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','grep\x20\x27','31318BoXjZb','etimedout','utf-8','54lYzHYM','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','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','added\x20','4SDmWCT','searchTimeMs','path','user','ENABLED_TOOLS','toISOString','array','Bearer\x20','Morph\x20Edit\x20','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','MORPH_WARP_GREP_TIMEOUT','codebase_search','❌\x20Morph\x20Edit\x20Failed:\x20','match','exit','stats','description','\x20\x20\x20Lines\x20','source','floor','UnknownError','lines','errors',',\x20modified\x20','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','Here\x20is\x20the\x20content\x20of\x20files:\x0a','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','success','Natural\x20language\x20query\x20to\x20search\x20for\x20code','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','roots','finish','381518hwFUUj','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','node_modules','Unknown\x20tool:\x20','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','completionId','describe','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','list_directory\x20','realpath','search_string','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','ToolException','substring','listRoots','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','package.json','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','PWD','targetDirectories','toLowerCase','RipgrepError','role','7218690sKrRtP','map','go.mod','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.','Failed\x20to\x20read\x20file:\x20','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','[could\x20not\x20read\x20file:\x20','filter','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','terminationReason','split','safeParse','sep','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','\x20as\x20allowed\x20directory','object','access','\x20for:\x20\x22','includes','string','code','has','linesAdded','metadata','terminated','number','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','ENABLE_WORKSPACE_MODE','dryRun','FileReadError','requiresApiKey','timings','%\x20match)\x0a','WORKSPACE_ROOT','.\x20Path:\x20','slice','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','name','Created\x20File','Morph\x20FastApply\x20failed\x20without\x20error\x20message','edit_file','1293171vHTItr','isDirectory','.git','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','.vscode','2086206zUXjqD','setRequestHandler','log','length','rerankScore','default','readFile','1898170hZGFqF','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','sk-','-\x20Listed\x20directory\x20`','SubToolError','startsWith','payload','1866792PSeqTC','now','0.2.0','.\x20Changes:\x20','Cargo.toml','stringify','runWarpGrep_call','<file\x20path=\x22','toFixed',',\x20removed\x20','pyproject.toml','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','ENOENT','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','commitHash','startLine','read','\x0a...\x20(truncated,\x20total:\x20','catch','all','Warning:\x20Workspace\x20fallback\x20failed:\x20','instruction'];a0_0x548a=function(){return _0x3b4656;};return a0_0x548a();}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_0x746b19 from'fs/promises';import a0_0x100fba from'path';import a0_0x504481 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_0x1629c5 from'axios';function fixPathRepetition(_0x4016be){const _0xa52720=a0_0x303b,_0x466cff=_0x4016be['split'](a0_0x100fba[_0xa52720(0x12b)])[_0xa52720(0x126)](Boolean);if(_0x466cff['length']<0x2)return null;for(let _0x3cc86e=Math[_0xa52720(0xf8)](_0x466cff[_0xa52720(0x152)]/0x2);_0x3cc86e>=0x1;_0x3cc86e--){for(let _0x414efd=0x0;_0x414efd<=_0x466cff[_0xa52720(0x152)]-0x2*_0x3cc86e;_0x414efd++){const _0x2eadf1=_0x466cff[_0xa52720(0x144)](_0x414efd,_0x414efd+_0x3cc86e),_0x533df7=_0x466cff[_0xa52720(0x144)](_0x414efd+_0x3cc86e,_0x414efd+0x2*_0x3cc86e);if(_0x2eadf1['every']((_0x32ed46,_0x5d2963)=>_0x32ed46===_0x533df7[_0x5d2963])){const _0x417906=[..._0x466cff[_0xa52720(0x144)](0x0,_0x414efd),..._0x466cff[_0xa52720(0x144)](_0x414efd+_0x3cc86e)];return a0_0x100fba[_0xa52720(0x12b)]+_0x417906[_0xa52720(0x19b)](a0_0x100fba[_0xa52720(0x12b)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x44ed52=a0_0x303b;try{const _0x124600=require(_0x44ed52(0x1b8));return _0x124600['version']??_0x44ed52(0x1f0);}catch(_0xa3df76){return console['error'](_0x44ed52(0x1d7),_0xa3df76),_0x44ed52(0x1f0);}}function printHelp(){const _0x4b5dc2=a0_0x303b;console['log'](_0x4b5dc2(0x1df)+getPackageVersion()),console['log'](_0x4b5dc2(0x183)),console[_0x4b5dc2(0x151)](_0x4b5dc2(0x19f)),console[_0x4b5dc2(0x151)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x4b5dc2(0x151)](_0x4b5dc2(0x1b3)),console['log']('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x4b5dc2(0x151)]('\x0aExamples:'),console[_0x4b5dc2(0x151)](_0x4b5dc2(0x1b0)),console[_0x4b5dc2(0x151)](_0x4b5dc2(0x1ef));}const cliArgs=process['argv']['slice'](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x20a3b2(0x1e9),'-h']);cliArgs['some'](_0x4019af=>VERSION_FLAGS[a0_0x20a3b2(0x134)](_0x4019af))&&(console['log'](a0_0x20a3b2(0x1df)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x20a3b2(0x1e6)](_0x4cfe8d=>HELP_FLAGS[a0_0x20a3b2(0x134)](_0x4cfe8d))&&(printHelp(),process[a0_0x20a3b2(0xf3)](0x0));function getCliArg(_0x252aec){const _0x8672c5=a0_0x20a3b2;for(let _0x291467=0x0;_0x291467<cliArgs['length'];_0x291467++){const _0x412c40=cliArgs[_0x291467];if(_0x412c40[_0x8672c5(0x15b)]('--'+_0x252aec+'='))return _0x412c40[_0x8672c5(0x144)](('--'+_0x252aec+'=')['length']);if(_0x412c40==='--'+_0x252aec&&_0x291467+0x1<cliArgs[_0x8672c5(0x152)])return cliArgs[_0x291467+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x20a3b2(0x152)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x20a3b2(0x134)](arg)||HELP_FLAGS['has'](arg))continue;if(arg[a0_0x20a3b2(0x15b)](a0_0x20a3b2(0x1ae)))continue;if(arg===a0_0x20a3b2(0x1bd)){i++;continue;}args['push'](arg);}const ALL_TOOLS=[a0_0x20a3b2(0x149),a0_0x20a3b2(0x196),a0_0x20a3b2(0x184),a0_0x20a3b2(0xf0)],DEFAULT_TOOLS=[a0_0x20a3b2(0x149),a0_0x20a3b2(0x196),a0_0x20a3b2(0x184)],ENABLED_TOOLS=process[a0_0x20a3b2(0x1d4)]['ENABLED_TOOLS']?process[a0_0x20a3b2(0x1d4)][a0_0x20a3b2(0xe9)]===a0_0x20a3b2(0x170)?ALL_TOOLS:process[a0_0x20a3b2(0x1d4)][a0_0x20a3b2(0xe9)][a0_0x20a3b2(0x129)](',')[a0_0x20a3b2(0x120)](_0x4298d4=>_0x4298d4[a0_0x20a3b2(0x178)]()):DEFAULT_TOOLS;console[a0_0x20a3b2(0x1d6)](a0_0x20a3b2(0x1a0)+ENABLED_TOOLS[a0_0x20a3b2(0x19b)](',\x20'));const WORKSPACE_ROOT=process['env'][a0_0x20a3b2(0x142)]||process[a0_0x20a3b2(0x1d4)][a0_0x20a3b2(0x11a)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x20a3b2(0x1d4)][a0_0x20a3b2(0x13c)]!==a0_0x20a3b2(0x1e2),MORPH_API_KEY=getCliArg(a0_0x20a3b2(0x1f6))??process[a0_0x20a3b2(0x1d4)]['MORPH_API_KEY'],MORPH_API_URL=process['env'][a0_0x20a3b2(0x1f5)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x20a3b2(0x1d4)][a0_0x20a3b2(0xef)]?parseInt(process[a0_0x20a3b2(0x1d4)][a0_0x20a3b2(0xef)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x20a3b2(0x158))&&!MORPH_API_KEY['startsWith'](a0_0x20a3b2(0x1a5))&&console[a0_0x20a3b2(0x1d6)]('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x59f973){const _0x501c85=a0_0x20a3b2;try{await a0_0x1629c5[_0x501c85(0x188)](_0x501c85(0x1d8),{..._0x59f973,'timestamp':new Date()[_0x501c85(0xea)](),'source':_0x59f973[_0x501c85(0xf7)]||'mcp-filesystem'},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x501c85(0xec)+MORPH_API_KEY}});}catch{}}args[a0_0x20a3b2(0x152)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x20a3b2(0x1d6)]('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),console[a0_0x20a3b2(0x1d6)](a0_0x20a3b2(0x1b1)),console['error'](a0_0x20a3b2(0x181)),console[a0_0x20a3b2(0x1d6)](a0_0x20a3b2(0x14d)),console['error'](a0_0x20a3b2(0x16a)),console[a0_0x20a3b2(0x1d6)](a0_0x20a3b2(0x1f2)));function normalizePath(_0x3f15dd){const _0x4bb61e=a0_0x20a3b2;return a0_0x100fba[_0x4bb61e(0x1cb)](_0x3f15dd);}function a0_0x303b(_0x1d99fd,_0x3b9f81){_0x1d99fd=_0x1d99fd-0xe5;const _0x548a85=a0_0x548a();let _0x303b53=_0x548a85[_0x1d99fd];return _0x303b53;}function expandHome(_0x387c89){const _0xd48d96=a0_0x20a3b2;if(_0x387c89['startsWith']('~/')||_0x387c89==='~')return a0_0x100fba['join'](a0_0x504481['homedir'](),_0x387c89[_0xd48d96(0x144)](0x1));return _0x387c89;}let allowedDirectories=await Promise[a0_0x20a3b2(0x170)](args[a0_0x20a3b2(0x120)](async _0x218a7e=>{const _0x2bc9c2=a0_0x20a3b2,_0x496a33=expandHome(_0x218a7e),_0x3f202b=a0_0x100fba[_0x2bc9c2(0x1f1)](_0x496a33);try{const _0x2a506d=await a0_0x746b19[_0x2bc9c2(0x10e)](_0x3f202b);return normalizePath(_0x2a506d);}catch(_0x12e862){return normalizePath(_0x3f202b);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x20a3b2(0x1ce)](workspaceDir),console[a0_0x20a3b2(0x1d6)](a0_0x20a3b2(0x1a8)+workspaceDir+a0_0x20a3b2(0x12d)));}catch(a0_0x3a5e15){console[a0_0x20a3b2(0x1d6)](a0_0x20a3b2(0x1af)+a0_0x3a5e15);}async function detectWorkspaceRoot(_0x339151){const _0x3b3fbf=a0_0x20a3b2;let _0x1b8f23=a0_0x100fba[_0x3b3fbf(0x1f1)](_0x339151);const _0x56f461=[_0x3b3fbf(0x14c),_0x3b3fbf(0x14e),_0x3b3fbf(0x117),_0x3b3fbf(0x161),_0x3b3fbf(0x167),_0x3b3fbf(0x121),'.cursor','tsconfig.json','composer.json'];while(_0x1b8f23!==a0_0x100fba['dirname'](_0x1b8f23)){for(const _0x35c160 of _0x56f461){const _0x7c3af7=a0_0x100fba[_0x3b3fbf(0x19b)](_0x1b8f23,_0x35c160);try{return await a0_0x746b19[_0x3b3fbf(0x12f)](_0x7c3af7),normalizePath(_0x1b8f23);}catch{}}_0x1b8f23=a0_0x100fba[_0x3b3fbf(0x1b6)](_0x1b8f23);}return normalizePath(_0x339151);}await Promise[a0_0x20a3b2(0x170)](args[a0_0x20a3b2(0x120)](async _0x5b184e=>{const _0x5c3a3e=a0_0x20a3b2;try{const _0x317278=await a0_0x746b19['stat'](expandHome(_0x5b184e));!_0x317278[_0x5c3a3e(0x14b)]()&&(console[_0x5c3a3e(0x1d6)](_0x5c3a3e(0x1ac)+_0x5b184e+'\x20is\x20not\x20a\x20directory'),process[_0x5c3a3e(0xf3)](0x1));}catch(_0x448418){console[_0x5c3a3e(0x1d6)](_0x5c3a3e(0x192)+_0x5b184e+':',_0x448418),process[_0x5c3a3e(0xf3)](0x1);}}));async function validatePath(_0x1c5e07){const _0x2d05e1=a0_0x20a3b2,_0x30f337=expandHome(_0x1c5e07),_0xa71c50=a0_0x100fba['resolve'](_0x30f337);try{const _0x2af932=await a0_0x746b19['realpath'](_0xa71c50);return _0x2af932;}catch(_0x437d2a){if(_0x437d2a[_0x2d05e1(0x133)]===_0x2d05e1(0x169)){const _0x3cfcae=a0_0x100fba[_0x2d05e1(0x1b6)](_0xa71c50);try{const _0x28511a=await a0_0x746b19[_0x2d05e1(0x10e)](_0x3cfcae);return a0_0x100fba['join'](_0x28511a,a0_0x100fba['basename'](_0xa71c50));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x3cfcae);}}throw _0x437d2a;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x20a3b2(0x132)](),'code_edit':z[a0_0x20a3b2(0x132)]()[a0_0x20a3b2(0x10b)](a0_0x20a3b2(0xff)),'instruction':z['string']()[a0_0x20a3b2(0x10b)](a0_0x20a3b2(0x1a4)),'dryRun':z[a0_0x20a3b2(0x18f)]()[a0_0x20a3b2(0x154)](![])[a0_0x20a3b2(0x10b)]('Preview\x20changes\x20without\x20applying\x20them.')}),WarpGrepArgsSchema=z[a0_0x20a3b2(0x12e)]({'search_string':z['string']()[a0_0x20a3b2(0x10b)]('Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for'),'repo_path':z[a0_0x20a3b2(0x132)]()[a0_0x20a3b2(0x10b)](a0_0x20a3b2(0x1fe)),'search_type':z[a0_0x20a3b2(0x1de)]([a0_0x20a3b2(0x154),a0_0x20a3b2(0x107)])['optional']()[a0_0x20a3b2(0x10b)](a0_0x20a3b2(0x139))}),WarpGrepGitHubArgsSchema=z[a0_0x20a3b2(0x12e)]({'search_string':z['string']()['describe'](a0_0x20a3b2(0x109)),'github_url':z['string']()[a0_0x20a3b2(0x180)]()[a0_0x20a3b2(0x10b)](a0_0x20a3b2(0x122)),'owner_repo':z[a0_0x20a3b2(0x132)]()[a0_0x20a3b2(0x180)]()['describe'](a0_0x20a3b2(0x157)),'branch':z[a0_0x20a3b2(0x132)]()['optional']()['describe'](a0_0x20a3b2(0x1da))}),CodebaseSearchArgsSchema=z[a0_0x20a3b2(0x12e)]({'query':z['string']()[a0_0x20a3b2(0x10b)](a0_0x20a3b2(0x101)),'repoId':z[a0_0x20a3b2(0x132)]()[a0_0x20a3b2(0x10b)](a0_0x20a3b2(0x1f4)),'branch':z['string']()['optional']()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z['string']()[a0_0x20a3b2(0x180)]()[a0_0x20a3b2(0x10b)]('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x20a3b2(0xeb)](z['string']())[a0_0x20a3b2(0x154)]([])[a0_0x20a3b2(0x10b)](a0_0x20a3b2(0x182)),'limit':z[a0_0x20a3b2(0x138)]()[a0_0x20a3b2(0x180)]()[a0_0x20a3b2(0x154)](0xa)[a0_0x20a3b2(0x10b)](a0_0x20a3b2(0x18d))}),server=new Server({'name':a0_0x20a3b2(0x1e1),'version':a0_0x20a3b2(0x15f)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x25f648=a0_0x20a3b2,_0xcc05d4=[{'name':_0x25f648(0x149),'description':_0x25f648(0x18b)+_0x25f648(0x115)+_0x25f648(0x179)+_0x25f648(0x119)+_0x25f648(0x1c6)+_0x25f648(0x1d9)+_0x25f648(0x114)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x25f648(0x175)+_0x25f648(0x1be)+_0x25f648(0xfd)+_0x25f648(0x19d)+'For\x20deletions:\x0a'+_0x25f648(0x106)+_0x25f648(0x1d0)+_0x25f648(0x1a1)+_0x25f648(0x1ca)+_0x25f648(0x102)+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x25f648(0x19c)+_0x25f648(0x1e3)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x25f648(0x1b4),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x25f648(0x196),'description':_0x25f648(0x1a7)+_0x25f648(0x198)+'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'+_0x25f648(0x1a6)+_0x25f648(0x118)+_0x25f648(0x124)+_0x25f648(0x127)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':'codebase_search','description':_0x25f648(0xee)+'⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a'+_0x25f648(0x13b)+_0x25f648(0x1c6)+'-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a'+_0x25f648(0x13a)+_0x25f648(0x186)+_0x25f648(0x194)+_0x25f648(0x116)+'Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20'+'Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x5950ec=_0xcc05d4[_0x25f648(0x126)](_0xe00533=>{const _0x59a838=_0x25f648;if(!ENABLED_TOOLS[_0x59a838(0x131)](_0xe00533[_0x59a838(0x146)]))return![];if(_0x59a838(0x13f)in _0xe00533&&_0xe00533[_0x59a838(0x13f)]&&!MORPH_API_KEY)return console[_0x59a838(0x1d6)]('Warning:\x20'+_0xe00533[_0x59a838(0x146)]+_0x59a838(0x17d)),![];return!![];});return{'tools':_0x5950ec['map'](_0x3d3e30=>({'name':_0x3d3e30[_0x25f648(0x146)],'description':_0x3d3e30[_0x25f648(0xf5)],'inputSchema':_0x3d3e30[_0x25f648(0x19a)]}))};}),server[a0_0x20a3b2(0x150)](CallToolRequestSchema,async _0x2651bb=>{const _0x2498b9=a0_0x20a3b2;try{const {name:_0x4febf7,arguments:_0x453307}=_0x2651bb[_0x2498b9(0x1b9)];switch(_0x4febf7){case _0x2498b9(0x149):{const _0x48eea3=MorphEditFileArgsSchema[_0x2498b9(0x12a)](_0x453307);if(!_0x48eea3[_0x2498b9(0x100)])throw new Error(_0x2498b9(0x110)+_0x48eea3[_0x2498b9(0x1d6)]);const _0x5ec54c=await validatePath(_0x48eea3[_0x2498b9(0x1c9)][_0x2498b9(0xe7)]);let _0x49a3fa=null,_0x25cf16=!![],_0x547d88=null;try{_0x49a3fa=await a0_0x746b19[_0x2498b9(0x155)](_0x5ec54c,_0x2498b9(0x1fb));}catch(_0x4f4cd5){const _0x273a27=_0x4f4cd5[_0x2498b9(0x133)];_0x273a27===_0x2498b9(0x169)?(_0x25cf16=![],_0x49a3fa=''):(_0x547d88=_0x2498b9(0x123)+(_0x273a27||'unknown')+'\x20-\x20'+(_0x4f4cd5 instanceof Error?_0x4f4cd5[_0x2498b9(0x17a)]:String(_0x4f4cd5)),console[_0x2498b9(0x1d6)]('Warning:\x20'+_0x547d88));}let _0x47781e;try{const _0x5a35bd=MORPH_API_KEY;if(!_0x5a35bd)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x3642d5=a0_0x100fba[_0x2498b9(0x1b6)](_0x5ec54c),_0xfd652a=a0_0x100fba['basename'](_0x5ec54c),_0x362eec=await executeEditFile({'target_filepath':_0xfd652a,'code_edit':_0x48eea3[_0x2498b9(0x1c9)][_0x2498b9(0x1a9)],'instructions':_0x48eea3[_0x2498b9(0x1c9)][_0x2498b9(0x172)]},{'morphApiKey':_0x5a35bd,'morphApiUrl':MORPH_API_URL,'baseDir':_0x3642d5,'autoWrite':!_0x48eea3[_0x2498b9(0x1c9)][_0x2498b9(0x13d)],'generateUdiff':![],'debug':![]});_0x47781e=_0x362eec[_0x2498b9(0x10a)];if(!_0x362eec[_0x2498b9(0x100)])throw new Error(_0x362eec[_0x2498b9(0x1d6)]||_0x2498b9(0x148));const _0x40c3b7=_0x362eec['changes'],_0x129532=_0x2498b9(0x1ff)+_0x40c3b7[_0x2498b9(0x135)]+_0x2498b9(0x166)+_0x40c3b7['linesRemoved']+_0x2498b9(0xfc)+_0x40c3b7[_0x2498b9(0x19e)];if(_0x48eea3[_0x2498b9(0x1c9)]['dryRun'])return{'content':[{'type':_0x2498b9(0x1ad),'text':'Morph\x20Edit\x20Preview'+(_0x25cf16?'':_0x2498b9(0x1c8))+':\x20'+_0x48eea3[_0x2498b9(0x1c9)]['instruction']+_0x2498b9(0x160)+_0x129532+_0x2498b9(0x143)+_0x48eea3[_0x2498b9(0x1c9)][_0x2498b9(0xe7)]+'.'}]};return{'content':[{'type':_0x2498b9(0x1ad),'text':_0x2498b9(0xed)+(_0x25cf16?_0x2498b9(0x18a):_0x2498b9(0x147))+':\x20'+_0x48eea3['data']['instruction']+'.\x20Changes:\x20'+_0x129532+_0x2498b9(0x143)+_0x48eea3[_0x2498b9(0x1c9)][_0x2498b9(0xe7)]+'.'}]};}catch(_0x283f04){const _0x574718=_0x283f04 instanceof Error?_0x283f04[_0x2498b9(0x17a)]:String(_0x283f04);return reportMorphError({'error_message':_0x574718,'error_type':_0x283f04 instanceof Error?_0x283f04[_0x2498b9(0x1dd)][_0x2498b9(0x146)]:_0x2498b9(0xf9),'context':{'tool':_0x2498b9(0x149),'completion_id':_0x47781e,'file_path':_0x48eea3[_0x2498b9(0x1c9)][_0x2498b9(0xe7)],'validated_path':_0x5ec54c,'instruction':_0x48eea3['data']['instruction'],'model':_0x2498b9(0x1c1),'dry_run':_0x48eea3['data'][_0x2498b9(0x13d)],'file_exists':_0x25cf16,'file_read_error':_0x547d88,'file_readable':_0x49a3fa!==null,'request_content':{'path':_0x48eea3[_0x2498b9(0x1c9)][_0x2498b9(0xe7)],'code_edit':_0x48eea3[_0x2498b9(0x1c9)][_0x2498b9(0x1a9)],'instruction':_0x48eea3[_0x2498b9(0x1c9)][_0x2498b9(0x172)],'original_code':_0x49a3fa!==null?_0x49a3fa['length']>0xc350?_0x49a3fa['substring'](0x0,0xc350)+_0x2498b9(0x16e)+_0x49a3fa['length']+'\x20chars)':_0x49a3fa:_0x2498b9(0x125)+(_0x547d88||'unknown\x20error')+']','original_code_length':_0x49a3fa?.[_0x2498b9(0x152)]??0x0,'model':_0x2498b9(0x1c1),'dry_run':_0x48eea3[_0x2498b9(0x1c9)]['dryRun']}},'stack_trace':_0x283f04 instanceof Error?_0x283f04[_0x2498b9(0x1c0)]:undefined,'source':_0x2498b9(0x1d3)})[_0x2498b9(0x16f)](()=>{}),{'content':[{'type':_0x2498b9(0x1ad),'text':_0x2498b9(0xf1)+_0x574718}],'isError':!![]};}}case _0x2498b9(0x196):{const _0x3234be=WarpGrepArgsSchema[_0x2498b9(0x12a)](_0x453307);if(!_0x3234be[_0x2498b9(0x100)])return{'content':[{'type':_0x2498b9(0x1ad),'text':_0x2498b9(0x1ee)+_0x3234be[_0x2498b9(0x1d6)]}],'isError':!![]};const _0x17b858=_0x169423=>{const _0x5d4fd4=_0x2498b9,_0x29a86a=[];for(const _0x3fb74f of _0x169423||[]){const _0x531dc3=_0x3fb74f[_0x5d4fd4(0x11e)],_0x23f7bf=_0x3fb74f[_0x5d4fd4(0x1dc)];if(_0x531dc3===_0x5d4fd4(0x199)&&_0x23f7bf){const _0x3a2039=_0x23f7bf[_0x5d4fd4(0x129)]('\x0a')[_0x5d4fd4(0x126)](_0x35f391=>_0x35f391[_0x5d4fd4(0x178)]());for(const _0x20a1eb of _0x3a2039){const _0x38978c=_0x20a1eb[_0x5d4fd4(0xf2)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x38978c){_0x29a86a[_0x5d4fd4(0x1ce)](_0x5d4fd4(0x1f8)+_0x38978c[0x1]+'\x27\x20'+_0x38978c[0x2]);continue;}const _0x2b9f34=_0x20a1eb[_0x5d4fd4(0xf2)](/^read\s+(.+)$/);if(_0x2b9f34){_0x29a86a[_0x5d4fd4(0x1ce)](_0x5d4fd4(0x185)+_0x2b9f34[0x1]);continue;}const _0x4493e5=_0x20a1eb[_0x5d4fd4(0xf2)](/^list_directory\s+(.+)$/);if(_0x4493e5){_0x29a86a[_0x5d4fd4(0x1ce)](_0x5d4fd4(0x10d)+_0x4493e5[0x1]);continue;}}}}return _0x29a86a;},_0xfd0e99=_0x3de3be=>{const _0x5c3af9=_0x2498b9,_0x15944f=[];if(!_0x3de3be||!Array['isArray'](_0x3de3be))return _0x15944f;const _0x53f8cc=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x5c3af9(0x1ed),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x5c3af9(0x16d)},{'pattern':/\[READ ERROR\]/,'error_type':_0x5c3af9(0x1b5),'tool':_0x5c3af9(0x16d)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x5c3af9(0x177),'tool':_0x5c3af9(0x16d)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x5c3af9(0x11d),'tool':_0x5c3af9(0x1c2)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x5c3af9(0x1c2)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':_0x5c3af9(0x16d)},{'pattern':/\[SYMLINK\]/,'error_type':_0x5c3af9(0x187),'tool':_0x5c3af9(0x16d)},{'pattern':/not a text file/,'error_type':_0x5c3af9(0x177),'tool':_0x5c3af9(0x16d)},{'pattern':/symbolic link/,'error_type':_0x5c3af9(0x187),'tool':_0x5c3af9(0x16d)},{'pattern':/Error reading file:/,'error_type':_0x5c3af9(0x1b5),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x5c3af9(0x111),'tool':_0x5c3af9(0x1f0)}];let _0x586ffe=0x0;for(const _0x26c08a of _0x3de3be){if(_0x26c08a[_0x5c3af9(0x11e)]===_0x5c3af9(0xe8)){_0x586ffe++;const _0x27e926=_0x26c08a['content'];if(!_0x27e926||typeof _0x27e926!==_0x5c3af9(0x132))continue;for(const {pattern:_0x55edc7,error_type:_0x1cb6c0,tool:_0x19f24c}of _0x53f8cc){const _0xedc159=_0x27e926[_0x5c3af9(0xf2)](new RegExp(_0x55edc7[_0x5c3af9(0xf7)],'g'));if(_0xedc159)for(const _0x3bbe2b of _0xedc159){const _0x47fb01=_0x27e926[_0x5c3af9(0x1a2)](_0x3bbe2b),_0xbbd237=_0x27e926['substring'](_0x47fb01,Math[_0x5c3af9(0x1f3)](_0x47fb01+0xc8,_0x27e926['length']));_0x15944f[_0x5c3af9(0x1ce)]({'tool':_0x19f24c,'error_type':_0x1cb6c0,'error_message':_0xbbd237[_0x5c3af9(0x129)]('\x0a')[0x0],'turn':_0x586ffe});}}}}return _0x15944f;};try{const _0x2d2c95=a0_0x100fba[_0x2498b9(0x1f1)](_0x3234be[_0x2498b9(0x1c9)][_0x2498b9(0x174)]),_0x293d3c=_0x3234be['data']['search_type'],_0x54e581=_0x293d3c===_0x2498b9(0x107)?{'allowNames':['node_modules']}:undefined,_0x4cbc2f=new LocalRipgrepProvider(_0x2d2c95,undefined,_0x54e581),_0x203d27=await runWarpGrep({'query':_0x3234be['data'][_0x2498b9(0x10f)],'repoRoot':_0x2d2c95,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x4cbc2f,'search_type':_0x293d3c}),_0x2e28a8=_0xfd0e99(_0x203d27['messages']);_0x2e28a8[_0x2498b9(0x152)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x2e28a8[_0x2498b9(0x152)]+_0x2498b9(0x1c7),'error_type':_0x2498b9(0x15a),'level':_0x2498b9(0x1c5),'tool':_0x2498b9(0x196),'context':{'repo_path':_0x3234be[_0x2498b9(0x1c9)][_0x2498b9(0x174)],'query':_0x3234be[_0x2498b9(0x1c9)][_0x2498b9(0x10f)],'model':_0x2498b9(0x1e7),'termination_reason':_0x203d27[_0x2498b9(0x128)],'sub_tool_errors':_0x2e28a8,'timings':_0x203d27['timings'],'tool_calls':_0x17b858(_0x203d27['messages']),'messages':_0x203d27[_0x2498b9(0x1b7)]?.[_0x2498b9(0x120)](_0x2c3700=>({'role':_0x2c3700[_0x2498b9(0x11e)],'content':_0x2c3700[_0x2498b9(0x1dc)]}))},'source':'mcp-filesystem'})['catch'](()=>{});let _0x52a4ef='';if(_0x203d27['terminationReason']==='completed'&&_0x203d27[_0x2498b9(0x104)]?.[_0x2498b9(0x136)]?.['files']){const _0x16d95e=_0x203d27['finish'][_0x2498b9(0x136)]['files'];if(_0x16d95e['length']===0x0)return _0x52a4ef=_0x203d27['finish'][_0x2498b9(0x15c)]||_0x2498b9(0x12c),{'content':[{'type':_0x2498b9(0x1ad),'text':_0x52a4ef}]};const _0x553a3a=[],_0x538722=[_0x2498b9(0x190)];for(const _0x506213 of _0x203d27['messages']){const _0x1a0665=_0x506213[_0x2498b9(0x11e)],_0x4dbe88=_0x506213[_0x2498b9(0x1dc)];if(_0x1a0665===_0x2498b9(0x199)&&_0x4dbe88){const _0x4e5aed=_0x4dbe88[_0x2498b9(0x129)]('\x0a')[_0x2498b9(0x126)](_0x114772=>_0x114772[_0x2498b9(0x178)]());for(const _0x59ddae of _0x4e5aed){const _0x22916a=_0x59ddae[_0x2498b9(0xf2)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x22916a){_0x538722[_0x2498b9(0x1ce)]('-\x20Grepped\x20\x27'+_0x22916a[0x1]+'\x27\x20in\x20`'+_0x22916a[0x2]+'`');continue;}const _0xe38091=_0x59ddae[_0x2498b9(0xf2)](/^read\s+(.+)$/);if(_0xe38091){_0x538722[_0x2498b9(0x1ce)](_0x2498b9(0x17e)+_0xe38091[0x1]+'`');continue;}const _0x5ba390=_0x59ddae['match'](/^list_directory\s+(.+)$/);if(_0x5ba390){_0x538722[_0x2498b9(0x1ce)](_0x2498b9(0x159)+_0x5ba390[0x1]+'`');continue;}}}}_0x553a3a[_0x2498b9(0x1ce)](_0x538722[_0x2498b9(0x19b)]('\x0a'));const _0x15188e=['',_0x2498b9(0x173)];for(const _0x7568e5 of _0x16d95e){if(_0x7568e5[_0x2498b9(0xfa)]==='*')_0x15188e[_0x2498b9(0x1ce)]('-\x20'+_0x7568e5[_0x2498b9(0xe7)]+':*');else{if(Array[_0x2498b9(0x1ba)](_0x7568e5['lines'])){const _0x11d1b6=_0x7568e5[_0x2498b9(0xfa)]['map'](([_0x5a8bef,_0x4b3686])=>{if(_0x5a8bef===_0x4b3686)return''+_0x5a8bef;return _0x5a8bef+'-'+_0x4b3686;});_0x15188e[_0x2498b9(0x1ce)]('-\x20'+_0x7568e5[_0x2498b9(0xe7)]+':'+_0x11d1b6[_0x2498b9(0x19b)](','));}else _0x15188e[_0x2498b9(0x1ce)]('-\x20'+_0x7568e5[_0x2498b9(0xe7)]+':*');}}_0x15188e['push'](''),_0x553a3a[_0x2498b9(0x1ce)](_0x15188e[_0x2498b9(0x19b)]('\x0a')),_0x553a3a[_0x2498b9(0x1ce)](_0x2498b9(0xfe));const _0x4d45bb=[];for(const _0x25cc93 of _0x16d95e){let _0x589448=a0_0x100fba[_0x2498b9(0x1f1)](_0x3234be[_0x2498b9(0x1c9)]['repo_path'],_0x25cc93['path']),_0x2ed164=null,_0x195f52=null;try{_0x2ed164=await a0_0x746b19[_0x2498b9(0x155)](_0x589448,{'encoding':_0x2498b9(0x1fb)});}catch(_0x429c57){const _0x59caf5=fixPathRepetition(_0x589448);if(_0x59caf5)try{_0x2ed164=await a0_0x746b19[_0x2498b9(0x155)](_0x59caf5,{'encoding':'utf-8'}),_0x589448=_0x59caf5;}catch{_0x195f52=_0x429c57 instanceof Error?_0x429c57:new Error(String(_0x429c57));}else _0x195f52=_0x429c57 instanceof Error?_0x429c57:new Error(String(_0x429c57));}if(_0x2ed164!==null){const _0x3afd6e=_0x2ed164[_0x2498b9(0x129)](/\r?\n/),_0x67e41c=[_0x2498b9(0x164)+_0x25cc93['path']+'\x22>'];if(_0x25cc93[_0x2498b9(0xfa)]==='*'||!Array[_0x2498b9(0x1ba)](_0x25cc93[_0x2498b9(0xfa)]))for(let _0x212790=0x1;_0x212790<=_0x3afd6e[_0x2498b9(0x152)];_0x212790++){const _0x1a6da3=_0x3afd6e[_0x212790-0x1];_0x67e41c[_0x2498b9(0x1ce)](_0x212790+'|\x20'+_0x1a6da3);}else for(const [_0x2033cc,_0x4d7a9b]of _0x25cc93[_0x2498b9(0xfa)]){_0x67e41c['length']>0x1&&_0x67e41c[_0x2498b9(0x1ce)]('');for(let _0x2cf729=_0x2033cc;_0x2cf729<=_0x4d7a9b&&_0x2cf729<=_0x3afd6e[_0x2498b9(0x152)];_0x2cf729++){const _0x30275f=_0x3afd6e[_0x2cf729-0x1];_0x67e41c[_0x2498b9(0x1ce)](_0x2cf729+'|\x20'+_0x30275f);}}_0x67e41c[_0x2498b9(0x1ce)](_0x2498b9(0x1c3)),_0x4d45bb[_0x2498b9(0x1ce)](_0x67e41c[_0x2498b9(0x19b)]('\x0a'));}else _0x4d45bb[_0x2498b9(0x1ce)]('<file\x20path=\x22'+_0x25cc93[_0x2498b9(0xe7)]+_0x2498b9(0x1cf)+(_0x195f52?.[_0x2498b9(0x17a)]||'Unknown\x20error')+'\x0a</file>');}_0x553a3a[_0x2498b9(0x1ce)](_0x4d45bb['join']('\x0a\x0a')),_0x52a4ef=_0x553a3a['join']('\x0a');const _0x46b027=_0x203d27[_0x2498b9(0xfb)]?.[_0x2498b9(0x126)](_0x1a8d66=>_0x1a8d66[_0x2498b9(0x17a)]?.['startsWith']('File\x20read\x20error:'))||[];if(_0x46b027[_0x2498b9(0x152)]>0x0){const _0x5c0077=_0x46b027[_0x2498b9(0x120)](_0xa8960f=>_0xa8960f[_0x2498b9(0x17a)])[_0x2498b9(0x19b)](';\x20');reportMorphError({'error_message':_0x5c0077,'error_type':_0x2498b9(0x13e),'context':{'tool':_0x2498b9(0x196),'repo_path':_0x3234be[_0x2498b9(0x1c9)]['repo_path'],'query':_0x3234be[_0x2498b9(0x1c9)][_0x2498b9(0x10f)],'model':'morph-warp-grep-v1-1111v0','termination_reason':'completed_with_file_errors','error_count':_0x46b027['length'],'is_timeout':![],'timings':_0x203d27['timings'],'files_attempted':_0x16d95e[_0x2498b9(0x120)](_0x2e1f5b=>({'path':_0x2e1f5b[_0x2498b9(0xe7)],'lines':_0x2e1f5b['lines']})),'tool_calls':_0x17b858(_0x203d27[_0x2498b9(0x1b7)]),'messages':_0x203d27[_0x2498b9(0x1b7)]?.[_0x2498b9(0x120)](_0x219722=>({'role':_0x219722[_0x2498b9(0x11e)],'content':_0x219722[_0x2498b9(0x1dc)]})),'request_content':{'query':_0x3234be['data'][_0x2498b9(0x10f)],'repo_path':_0x3234be[_0x2498b9(0x1c9)][_0x2498b9(0x174)],'repoRoot':a0_0x100fba['resolve'](_0x3234be[_0x2498b9(0x1c9)][_0x2498b9(0x174)]),'model':_0x2498b9(0x1e7)}},'source':_0x2498b9(0x1d3)})[_0x2498b9(0x16f)](()=>{});}}else{if(_0x203d27[_0x2498b9(0x128)]===_0x2498b9(0x137)&&_0x203d27[_0x2498b9(0xfb)][_0x2498b9(0x152)]>0x0){const _0x4cac6d=_0x203d27[_0x2498b9(0xfb)]['map'](_0x16243f=>_0x16243f[_0x2498b9(0x17a)])[_0x2498b9(0x19b)](';\x20');_0x52a4ef=_0x2498b9(0x1ac)+_0x4cac6d;const _0x525470=_0x4cac6d['toLowerCase']()['includes'](_0x2498b9(0x1ea))||_0x4cac6d[_0x2498b9(0x11c)]()['includes']('timed\x20out')||_0x4cac6d['toLowerCase']()[_0x2498b9(0x131)](_0x2498b9(0x1fa)),_0x380157=_0x203d27[_0x2498b9(0x104)]?.['metadata']?.[_0x2498b9(0x18e)],_0x3234a8=_0x203d27[_0x2498b9(0xfb)][0x0];reportMorphError({'error_message':_0x4cac6d,'error_type':_0x525470?_0x2498b9(0x17c):_0x3234a8?.['constructor']?.[_0x2498b9(0x146)]||_0x2498b9(0x1ab),'context':{'tool':_0x2498b9(0x196),'repo_path':_0x3234be[_0x2498b9(0x1c9)][_0x2498b9(0x174)],'query':_0x3234be[_0x2498b9(0x1c9)]['search_string'],'model':_0x2498b9(0x1e7),'termination_reason':_0x203d27[_0x2498b9(0x128)],'error_count':_0x203d27[_0x2498b9(0xfb)]['length'],'is_timeout':_0x525470,'timings':_0x203d27[_0x2498b9(0x140)],'files_attempted':_0x380157?.['map'](_0x42e96d=>({'path':_0x42e96d[_0x2498b9(0xe7)],'lines':_0x42e96d['lines']})),'tool_calls':_0x17b858(_0x203d27[_0x2498b9(0x1b7)]),'messages':_0x203d27[_0x2498b9(0x1b7)]?.['map'](_0x337116=>({'role':_0x337116[_0x2498b9(0x11e)],'content':_0x337116[_0x2498b9(0x1dc)]})),'request_content':{'query':_0x3234be['data'][_0x2498b9(0x10f)],'repo_path':_0x3234be['data'][_0x2498b9(0x174)],'repoRoot':a0_0x100fba[_0x2498b9(0x1f1)](_0x3234be[_0x2498b9(0x1c9)][_0x2498b9(0x174)]),'model':'morph-warp-grep-v1-1111v0'}},'stack_trace':_0x3234a8?.[_0x2498b9(0x1c0)]||undefined,'source':_0x2498b9(0x1d3)})['catch'](()=>{});}else _0x52a4ef=_0x2498b9(0x168);}return{'content':[{'type':_0x2498b9(0x1ad),'text':_0x52a4ef}]};}catch(_0x572b9f){const _0x1f5cc9=_0x572b9f instanceof Error?_0x572b9f[_0x2498b9(0x17a)]:String(_0x572b9f),_0xf83dd5=_0x1f5cc9[_0x2498b9(0x11c)]()[_0x2498b9(0x131)]('timeout')||_0x1f5cc9[_0x2498b9(0x11c)]()[_0x2498b9(0x131)](_0x2498b9(0x1bb))||_0x1f5cc9[_0x2498b9(0x11c)]()['includes'](_0x2498b9(0x1fa))||_0x572b9f instanceof Error&&_0x572b9f[_0x2498b9(0x146)]===_0x2498b9(0x17c);return reportMorphError({'error_message':_0x1f5cc9,'error_type':_0xf83dd5?_0x2498b9(0x17c):_0x572b9f instanceof Error?_0x572b9f[_0x2498b9(0x1dd)][_0x2498b9(0x146)]:_0x2498b9(0xf9),'context':{'tool':'warpgrep_codebase_search','repo_path':_0x3234be[_0x2498b9(0x1c9)]['repo_path'],'query':_0x3234be['data'][_0x2498b9(0x10f)],'model':_0x2498b9(0x1e7),'is_timeout':_0xf83dd5,'exception_phase':_0x2498b9(0x163),'request_content':{'query':_0x3234be[_0x2498b9(0x1c9)][_0x2498b9(0x10f)],'repo_path':_0x3234be[_0x2498b9(0x1c9)]['repo_path'],'repoRoot':a0_0x100fba[_0x2498b9(0x1f1)](_0x3234be[_0x2498b9(0x1c9)]['repo_path']),'model':_0x2498b9(0x1e7)}},'stack_trace':_0x572b9f instanceof Error?_0x572b9f[_0x2498b9(0x1c0)]:undefined,'source':_0x2498b9(0x1d3)})['catch'](()=>{}),{'content':[{'type':_0x2498b9(0x1ad),'text':_0x2498b9(0x1e8)+_0x1f5cc9}],'isError':![]};}}case _0x2498b9(0x184):{const _0x4e10f9=WarpGrepGitHubArgsSchema[_0x2498b9(0x12a)](_0x453307);if(!_0x4e10f9[_0x2498b9(0x100)])return{'content':[{'type':_0x2498b9(0x1ad),'text':_0x2498b9(0x1ee)+_0x4e10f9[_0x2498b9(0x1d6)]}],'isError':!![]};const _0x23453b=_0x4e10f9['data'][_0x2498b9(0x195)]||_0x4e10f9[_0x2498b9(0x1c9)][_0x2498b9(0x1cd)];if(!_0x23453b)return{'content':[{'type':_0x2498b9(0x1ad),'text':_0x2498b9(0x145)}],'isError':!![]};const _0x24cca0=MORPH_API_KEY;if(!_0x24cca0)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x193825=Date[_0x2498b9(0x15e)]();console[_0x2498b9(0x1d6)]('[warpgrep_github_search]\x20Searching\x20'+_0x23453b+_0x2498b9(0x130)+_0x4e10f9[_0x2498b9(0x1c9)][_0x2498b9(0x10f)]+'\x22');try{const _0x51f6b0=new WarpGrepClient({'morphApiKey':_0x24cca0,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x15a153=await _0x51f6b0['searchGitHub']({'query':_0x4e10f9['data']['search_string'],'github':_0x23453b,'branch':_0x4e10f9['data'][_0x2498b9(0x1bf)]}),_0x151c93=Date['now']()-_0x193825;console[_0x2498b9(0x1d6)](_0x2498b9(0x1b2)+_0x151c93+_0x2498b9(0x1e0)+_0x15a153[_0x2498b9(0x100)]);const _0xabb7db=formatResult(_0x15a153);return{'content':[{'type':'text','text':_0xabb7db}]};}catch(_0x33ac2a){const _0x40873f=Date[_0x2498b9(0x15e)]()-_0x193825,_0x5f523b=_0x33ac2a instanceof Error?_0x33ac2a[_0x2498b9(0x17a)]:String(_0x33ac2a);return console[_0x2498b9(0x1d6)](_0x2498b9(0x1aa)+_0x40873f+'ms:',_0x5f523b),reportMorphError({'error_message':_0x5f523b,'error_type':_0x33ac2a instanceof Error?_0x33ac2a[_0x2498b9(0x1dd)][_0x2498b9(0x146)]:_0x2498b9(0xf9),'context':{'tool':'warpgrep_github_search','github_url':_0x23453b,'search_string':_0x4e10f9[_0x2498b9(0x1c9)][_0x2498b9(0x10f)],'branch':_0x4e10f9[_0x2498b9(0x1c9)][_0x2498b9(0x1bf)]},'stack_trace':_0x33ac2a instanceof Error?_0x33ac2a[_0x2498b9(0x1c0)]:undefined,'source':'mcp-filesystem','tool':_0x2498b9(0x184),'latency_ms':_0x40873f})['catch'](()=>{}),{'content':[{'type':_0x2498b9(0x1ad),'text':_0x2498b9(0x1d5)+_0x5f523b}],'isError':![]};}}case _0x2498b9(0xf0):{const _0xefc22b=CodebaseSearchArgsSchema['safeParse'](_0x453307);if(!_0xefc22b[_0x2498b9(0x100)])return{'content':[{'type':'text','text':_0x2498b9(0x1ee)+_0xefc22b[_0x2498b9(0x1d6)]}],'isError':!![]};try{const _0x515a74=MORPH_API_KEY;if(!_0x515a74)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.');const _0x5da533=_0xefc22b['data'][_0x2498b9(0x11b)],_0x5e7d44=await executeCodebaseSearch({'query':_0xefc22b[_0x2498b9(0x1c9)]['query'],'target_directories':_0x5da533,'limit':_0xefc22b[_0x2498b9(0x1c9)][_0x2498b9(0x18c)]},{'apiKey':_0x515a74,'repoId':_0xefc22b[_0x2498b9(0x1c9)][_0x2498b9(0x1d1)],'branch':_0xefc22b[_0x2498b9(0x1c9)][_0x2498b9(0x1bf)],'commitHash':_0xefc22b[_0x2498b9(0x1c9)][_0x2498b9(0x16b)],'debug':![]});if(!_0x5e7d44[_0x2498b9(0x100)])return{'content':[{'type':_0x2498b9(0x1ad),'text':'Search\x20failed:\x20'+_0x5e7d44[_0x2498b9(0x1d6)]}],'isError':!![]};const _0x5829ac=_0x5e7d44[_0x2498b9(0x1c4)][_0x2498b9(0x152)]===0x0?'No\x20results\x20found\x20for\x20query:\x20\x22'+_0xefc22b[_0x2498b9(0x1c9)]['query']+'\x22':_0x2498b9(0x176)+_0x5e7d44[_0x2498b9(0x1c4)][_0x2498b9(0x152)]+'\x20results\x20in\x20'+_0x5e7d44[_0x2498b9(0xf4)][_0x2498b9(0xe6)]+_0x2498b9(0x197)+_0x5e7d44[_0x2498b9(0x1c4)][_0x2498b9(0x120)]((_0x4ddaee,_0x5332e4)=>_0x5332e4+0x1+'.\x20'+_0x4ddaee['filepath']+'\x20('+(_0x4ddaee[_0x2498b9(0x153)]*0x64)[_0x2498b9(0x165)](0x1)+_0x2498b9(0x141)+(_0x2498b9(0xf6)+_0x4ddaee[_0x2498b9(0x16c)]+'-'+_0x4ddaee['endLine']+'\x0a')+(_0x2498b9(0x1a3)+_0x4ddaee[_0x2498b9(0x1dc)][_0x2498b9(0x112)](0x0,0xc8)+(_0x4ddaee[_0x2498b9(0x1dc)][_0x2498b9(0x152)]>0xc8?_0x2498b9(0x1e5):'')+'\x0a'))[_0x2498b9(0x19b)]('\x0a');return{'content':[{'type':_0x2498b9(0x1ad),'text':_0x5829ac}]};}catch(_0x4ae79a){const _0x9c90d9=_0x4ae79a instanceof Error?_0x4ae79a[_0x2498b9(0x17a)]:String(_0x4ae79a);return reportMorphError({'error_message':_0x9c90d9,'error_type':_0x4ae79a instanceof Error?_0x4ae79a['constructor']['name']:'UnknownError','context':{'tool':'codebase_search','query':_0xefc22b['data'][_0x2498b9(0x1ec)],'repo_id':_0xefc22b[_0x2498b9(0x1c9)][_0x2498b9(0x1d1)],'target_directories':_0xefc22b[_0x2498b9(0x1c9)][_0x2498b9(0x11b)]},'stack_trace':_0x4ae79a instanceof Error?_0x4ae79a[_0x2498b9(0x1c0)]:undefined,'source':'mcp-filesystem'})[_0x2498b9(0x16f)](()=>{}),{'content':[{'type':'text','text':_0x2498b9(0x1ac)+_0x9c90d9}],'isError':!![]};}}default:throw new Error(_0x2498b9(0x108)+_0x4febf7);}}catch(_0x3fa963){const _0x528ed9=_0x3fa963 instanceof Error?_0x3fa963[_0x2498b9(0x17a)]:String(_0x3fa963);return reportMorphError({'error_message':_0x528ed9,'error_type':_0x3fa963 instanceof Error?_0x3fa963[_0x2498b9(0x1dd)][_0x2498b9(0x146)]:_0x2498b9(0xf9),'context':{'tool':name,'arguments':args?JSON[_0x2498b9(0x162)](args)[_0x2498b9(0x112)](0x0,0x1f4):undefined,'mcp_server_version':_0x2498b9(0x15f)},'stack_trace':_0x3fa963 instanceof Error?_0x3fa963['stack']:undefined,'source':_0x2498b9(0x1d3)})[_0x2498b9(0x16f)](()=>{}),{'content':[{'type':_0x2498b9(0x1ad),'text':_0x2498b9(0x1ac)+_0x528ed9}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0xd62911){const _0x4e9bfd=a0_0x20a3b2,_0x402b08=await getValidRootDirectories(_0xd62911);if(_0x402b08[_0x4e9bfd(0x152)]>0x0)allowedDirectories=[..._0x402b08],console[_0x4e9bfd(0x1d6)]('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x402b08[_0x4e9bfd(0x152)]+'\x20valid\x20directories');else{console[_0x4e9bfd(0x1d6)](_0x4e9bfd(0x10c));if(ENABLE_WORKSPACE_MODE)try{const _0x3658c0=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3658c0&&(allowedDirectories=[_0x3658c0],console[_0x4e9bfd(0x1d6)](_0x4e9bfd(0x193)+_0x3658c0));}catch(_0x2b5203){console[_0x4e9bfd(0x1d6)](_0x4e9bfd(0x171)+_0x2b5203);}}}server[a0_0x20a3b2(0x1bc)](RootsListChangedNotificationSchema,async()=>{const _0x1e145f=a0_0x20a3b2;try{const _0x4c4241=await server[_0x1e145f(0x113)]();_0x4c4241&&_0x1e145f(0x103)in _0x4c4241&&await updateAllowedDirectoriesFromRoots(_0x4c4241['roots']);}catch(_0x3b85a3){console[_0x1e145f(0x1d6)]('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x3b85a3 instanceof Error?_0x3b85a3['message']:String(_0x3b85a3));}}),server['oninitialized']=async()=>{const _0x452472=a0_0x20a3b2,_0x42637f=server[_0x452472(0x1e4)]();if(_0x42637f?.['roots'])try{const _0x7cb04d=await server[_0x452472(0x113)]();_0x7cb04d&&_0x452472(0x103)in _0x7cb04d?await updateAllowedDirectoriesFromRoots(_0x7cb04d[_0x452472(0x103)]):console[_0x452472(0x1d6)](_0x452472(0x1eb));}catch(_0x13b4a3){console['error'](_0x452472(0x1fd),_0x13b4a3 instanceof Error?_0x13b4a3[_0x452472(0x17a)]:String(_0x13b4a3));}else{if(allowedDirectories[_0x452472(0x152)]>0x0)console[_0x452472(0x1d6)](_0x452472(0x17b),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console['error'](_0x452472(0x1d2));else throw new Error(_0x452472(0x189));}}};async function runServer(){const _0xf5efba=a0_0x20a3b2,_0x4a2029=new StdioServerTransport();await server[_0xf5efba(0x17f)](_0x4a2029),console[_0xf5efba(0x1d6)](_0xf5efba(0x191)),allowedDirectories['length']===0x0&&console[_0xf5efba(0x1d6)](_0xf5efba(0x1f7));}runServer()['catch'](_0x44937c=>{const _0x5e4483=a0_0x20a3b2;console[_0x5e4483(0x1d6)](_0x5e4483(0x1cc),_0x44937c),process[_0x5e4483(0xf3)](0x1);});
|
|
2
|
+
const a0_0x4ac72e=a0_0x56fe;(function(_0x50136e,_0x8a271c){const _0x461440=a0_0x56fe,_0x2c2d1d=_0x50136e();while(!![]){try{const _0x18e2a1=parseInt(_0x461440(0x2e2))/0x1+parseInt(_0x461440(0x2f1))/0x2*(-parseInt(_0x461440(0x214))/0x3)+-parseInt(_0x461440(0x2d1))/0x4*(-parseInt(_0x461440(0x23a))/0x5)+-parseInt(_0x461440(0x2df))/0x6*(-parseInt(_0x461440(0x2bc))/0x7)+parseInt(_0x461440(0x256))/0x8+-parseInt(_0x461440(0x1f3))/0x9+-parseInt(_0x461440(0x2f2))/0xa;if(_0x18e2a1===_0x8a271c)break;else _0x2c2d1d['push'](_0x2c2d1d['shift']());}catch(_0x2169a6){_0x2c2d1d['push'](_0x2c2d1d['shift']());}}}(a0_0x77c6,0xede1d));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_0x269482 from'fs/promises';import a0_0x17d018 from'path';import a0_0x2b8454 from'os';function a0_0x77c6(){const _0x2e1264=['filter','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','added\x20','%\x20match)\x0a','Error\x20accessing\x20directory\x20','pyproject.toml','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','Search\x20failed:\x20','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','FileNotFound','https://morphllm.com/api/error-report','Failed\x20to\x20read\x20file:\x20','Repository\x20identifier','\x20-\x20','warpgrep_codebase_search','ENOENT','@morphllm/morphmcp\x20','optional','\x20\x20\x20','assistant','search_string','.\x20Path:\x20','Specific\x20commit\x20hash\x20to\x20search','tsconfig.json','resolve','map','RipgrepNotAvailable','user','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','messages','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','github_url','\x20\x20\x20Lines\x20','sep','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','Error:\x20','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','name','Benefits:\x0a','Created\x20File','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','edit_file','[could\x20not\x20read\x20file:\x20','MORPH_WARP_GREP_TIMEOUT','catch','push','\x20\x20morph-mcp','join','limit','default','\x20valid\x20directories','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','UnknownError','Applied','stats','slice','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','stack','safeParse','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','Fatal\x20error\x20running\x20server:','readFile','min','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','Natural\x20language\x20query\x20to\x20search\x20for\x20code','grep','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','text','.\x20Changes:\x20','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','composer.json','searchGitHub','completed','0.2.0','search_type','code_edit','.git','\x27\x20in\x20`','\x20for:\x20\x22','code','[warpgrep_github_search]\x20Failed\x20in\x20','isDirectory','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','number','runWarpGrep_call','-\x20Grepped\x20\x27','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','etimedout','WarpGrep\x20sub-tool\x20errors:\x20','</file>','\x20is\x20not\x20a\x20directory','setNotificationHandler','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','\x0aOptions:','completionId','unknown\x20error','213521jAuBrH','warpgrep_github_search','morph-','realpath','indexOf','Workspace\x20mode\x20enabled:\x20Using\x20','string','WORKSPACE_ROOT','false','argv','setRequestHandler','codebase_search','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','success','-\x20Listed\x20directory\x20`','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','Failed\x20to\x20request\x20roots\x20from\x20client:','basename','listRoots','\x20error(s)','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','1455864cyLJlL','startsWith','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','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','MORPH_API_KEY','files','getClientCapabilities','repo_path','sk-','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','split','includes','ms.\x20Success:\x20','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','246LjDhOv','Warning:\x20Workspace\x20fallback\x20failed:\x20','Bearer\x20','1876719YNiXUd','floor','timed\x20out','[warpgrep_github_search]\x20Done\x20in\x20','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','constructor','trim','\x20results\x20in\x20','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','some','\x20as\x20allowed\x20directory','File\x20read\x20error:','content','read','808yyJKFo','30589720ePHGTx','errors','env','path','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','--help','terminationReason','has','morph-v3-fast','instruction','stringify','post','describe','finish','data','Morph\x20Edit\x20Preview','description','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','lines','role','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','-\x20Read\x20file\x20`','node_modules','owner_repo','linesAdded','timeout','Fallback:\x20Using\x20workspace\x20root\x20','terminated','params','Found\x20','dryRun','TimeoutError','requiresApiKey','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','SymlinkError','2448369EUvFmd','api-key','substring','ToolException','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','branch','WarpGrepError','searchTimeMs','warn','linesModified','oninitialized','No\x20results\x20found\x20for\x20query:\x20\x22','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','stat','now','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','\x0aExamples:','boolean','utf-8','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','array','timings','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','connect','SubToolError','--version','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','query','.cursor','Relevant\x20context\x20found:','7302cmTirN','Unknown\x20tool:\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Enabled\x20tools:\x20','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','message','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','normalize','BinaryFile','[warpgrep_github_search]\x20Searching\x20','match','dirname','roots','Morph\x20Edit\x20','morph-warp-grep-v1-1111v0','FileReadError','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','exit','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','isArray',',\x20modified\x20','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','go.mod','ENABLED_TOOLS','every','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','ReadError','length','unknown','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','error','enum','ms:','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','application/json','Parent\x20directory\x20does\x20not\x20exist:\x20','10wtyMaX','<file\x20path=\x22','\x22>\x0aError\x20reading\x20file:\x20','ms:\x0a\x0a','ENABLE_WORKSPACE_MODE','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','results','mcp-filesystem','\x0a</file>','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','toISOString','morph-mcp','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','access','Invalid\x20arguments:\x20','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','RipgrepError','source','Preview\x20changes\x20without\x20applying\x20them.','Warning:\x20','toLowerCase','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','toFixed','Morph\x20FastApply\x20failed\x20without\x20error\x20message','metadata','all','...','11467520lwcwpd','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Unknown\x20error','log'];a0_0x77c6=function(){return _0x2e1264;};return a0_0x77c6();}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_0x135a0b from'axios';function fixPathRepetition(_0x120945){const _0x4e7940=a0_0x56fe,_0x3b6bed=_0x120945[_0x4e7940(0x2db)](a0_0x17d018[_0x4e7940(0x27c)])[_0x4e7940(0x25a)](Boolean);if(_0x3b6bed['length']<0x2)return null;for(let _0x1e216a=Math[_0x4e7940(0x2e3)](_0x3b6bed[_0x4e7940(0x230)]/0x2);_0x1e216a>=0x1;_0x1e216a--){for(let _0xea0f54=0x0;_0xea0f54<=_0x3b6bed[_0x4e7940(0x230)]-0x2*_0x1e216a;_0xea0f54++){const _0x130b73=_0x3b6bed[_0x4e7940(0x292)](_0xea0f54,_0xea0f54+_0x1e216a),_0x119ead=_0x3b6bed[_0x4e7940(0x292)](_0xea0f54+_0x1e216a,_0xea0f54+0x2*_0x1e216a);if(_0x130b73[_0x4e7940(0x22d)]((_0x2af965,_0x2639bd)=>_0x2af965===_0x119ead[_0x2639bd])){const _0x593e91=[..._0x3b6bed[_0x4e7940(0x292)](0x0,_0xea0f54),..._0x3b6bed[_0x4e7940(0x292)](_0xea0f54+_0x1e216a)];return a0_0x17d018['sep']+_0x593e91['join'](a0_0x17d018['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x457b5e=a0_0x56fe;try{const _0x27d1fa=require('../package.json');return _0x27d1fa['version']??_0x457b5e(0x231);}catch(_0x527673){return console['error'](_0x457b5e(0x1d3),_0x527673),_0x457b5e(0x231);}}function printHelp(){const _0x28ac8c=a0_0x56fe;console[_0x28ac8c(0x259)](_0x28ac8c(0x26b)+getPackageVersion()),console[_0x28ac8c(0x259)](_0x28ac8c(0x29b)),console[_0x28ac8c(0x259)](_0x28ac8c(0x2b9)),console[_0x28ac8c(0x259)](_0x28ac8c(0x225)),console[_0x28ac8c(0x259)](_0x28ac8c(0x24a)),console['log'](_0x28ac8c(0x2ea)),console[_0x28ac8c(0x259)](_0x28ac8c(0x205)),console[_0x28ac8c(0x259)](_0x28ac8c(0x289)),console[_0x28ac8c(0x259)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x4ac72e(0x2c5)][a0_0x4ac72e(0x292)](0x2),VERSION_FLAGS=new Set([a0_0x4ac72e(0x20f),'-v','-V']),HELP_FLAGS=new Set([a0_0x4ac72e(0x1d5),'-h']);cliArgs[a0_0x4ac72e(0x2ec)](_0x136126=>VERSION_FLAGS[a0_0x4ac72e(0x1d7)](_0x136126))&&(console[a0_0x4ac72e(0x259)](a0_0x4ac72e(0x26b)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x4ac72e(0x2ec)](_0x536bc4=>HELP_FLAGS['has'](_0x536bc4))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x5af946){const _0x1b5610=a0_0x4ac72e;for(let _0x58bd9f=0x0;_0x58bd9f<cliArgs['length'];_0x58bd9f++){const _0x26b9ba=cliArgs[_0x58bd9f];if(_0x26b9ba[_0x1b5610(0x2d2)]('--'+_0x5af946+'='))return _0x26b9ba[_0x1b5610(0x292)](('--'+_0x5af946+'=')[_0x1b5610(0x230)]);if(_0x26b9ba==='--'+_0x5af946&&_0x58bd9f+0x1<cliArgs['length'])return cliArgs[_0x58bd9f+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x4ac72e(0x230)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x4ac72e(0x1d7)](arg)||HELP_FLAGS[a0_0x4ac72e(0x1d7)](arg))continue;if(arg[a0_0x4ac72e(0x2d2)]('--api-key='))continue;if(arg==='--api-key'){i++;continue;}args['push'](arg);}const ALL_TOOLS=['edit_file',a0_0x4ac72e(0x269),a0_0x4ac72e(0x2bd),a0_0x4ac72e(0x2c7)],DEFAULT_TOOLS=['edit_file',a0_0x4ac72e(0x269),a0_0x4ac72e(0x2bd)],ENABLED_TOOLS=process[a0_0x4ac72e(0x2f4)][a0_0x4ac72e(0x22c)]?process[a0_0x4ac72e(0x2f4)][a0_0x4ac72e(0x22c)]===a0_0x4ac72e(0x254)?ALL_TOOLS:process[a0_0x4ac72e(0x2f4)][a0_0x4ac72e(0x22c)][a0_0x4ac72e(0x2db)](',')[a0_0x4ac72e(0x274)](_0x32c9dd=>_0x32c9dd[a0_0x4ac72e(0x2e8)]()):DEFAULT_TOOLS;console['error'](a0_0x4ac72e(0x217)+ENABLED_TOOLS[a0_0x4ac72e(0x28a)](',\x20'));const WORKSPACE_ROOT=process[a0_0x4ac72e(0x2f4)][a0_0x4ac72e(0x2c3)]||process['env']['PWD']||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x4ac72e(0x2f4)][a0_0x4ac72e(0x23e)]!==a0_0x4ac72e(0x2c4),MORPH_API_KEY=getCliArg(a0_0x4ac72e(0x1f4))??process[a0_0x4ac72e(0x2f4)][a0_0x4ac72e(0x2d5)],MORPH_API_URL=process['env']['MORPH_API_URL'],MORPH_WARP_GREP_TIMEOUT=process[a0_0x4ac72e(0x2f4)][a0_0x4ac72e(0x286)]?parseInt(process['env'][a0_0x4ac72e(0x286)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x4ac72e(0x2d2)](a0_0x4ac72e(0x2d9))&&!MORPH_API_KEY[a0_0x4ac72e(0x2d2)](a0_0x4ac72e(0x2be))&&console['error'](a0_0x4ac72e(0x1d4));async function reportMorphError(_0x26ecc5){const _0x19b599=a0_0x4ac72e;try{await a0_0x135a0b[_0x19b599(0x1db)](_0x19b599(0x265),{..._0x26ecc5,'timestamp':new Date()[_0x19b599(0x245)](),'source':_0x26ecc5[_0x19b599(0x24c)]||_0x19b599(0x242)},{'timeout':0x1388,'headers':{'Content-Type':_0x19b599(0x238),'Authorization':_0x19b599(0x2e1)+MORPH_API_KEY}});}catch{}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x4ac72e(0x234)](a0_0x4ac72e(0x203)),console[a0_0x4ac72e(0x234)](a0_0x4ac72e(0x2b2)),console['error'](a0_0x4ac72e(0x2cb)),console[a0_0x4ac72e(0x234)](a0_0x4ac72e(0x227)),console['error']('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),console[a0_0x4ac72e(0x234)](a0_0x4ac72e(0x250)));function normalizePath(_0x12d422){const _0x10035a=a0_0x4ac72e;return a0_0x17d018[_0x10035a(0x21c)](_0x12d422);}function expandHome(_0x5c2fa1){const _0x28d848=a0_0x4ac72e;if(_0x5c2fa1[_0x28d848(0x2d2)]('~/')||_0x5c2fa1==='~')return a0_0x17d018[_0x28d848(0x28a)](a0_0x2b8454['homedir'](),_0x5c2fa1['slice'](0x1));return _0x5c2fa1;}let allowedDirectories=await Promise[a0_0x4ac72e(0x254)](args['map'](async _0x3699e9=>{const _0x27ac03=a0_0x4ac72e,_0x4581b6=expandHome(_0x3699e9),_0x584808=a0_0x17d018[_0x27ac03(0x273)](_0x4581b6);try{const _0x131dc2=await a0_0x269482[_0x27ac03(0x2bf)](_0x584808);return normalizePath(_0x131dc2);}catch(_0x5dd7d8){return normalizePath(_0x584808);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x4ac72e(0x230)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x4ac72e(0x288)](workspaceDir),console[a0_0x4ac72e(0x234)](a0_0x4ac72e(0x2c1)+workspaceDir+a0_0x4ac72e(0x2ed)));}catch(a0_0x506c85){console['error'](a0_0x4ac72e(0x293)+a0_0x506c85);}async function detectWorkspaceRoot(_0x5e7dd8){const _0x28bbc3=a0_0x4ac72e;let _0x3b64ab=a0_0x17d018[_0x28bbc3(0x273)](_0x5e7dd8);const _0x58b864=[_0x28bbc3(0x2a8),'.vscode','package.json','Cargo.toml',_0x28bbc3(0x25f),_0x28bbc3(0x22b),_0x28bbc3(0x212),_0x28bbc3(0x272),_0x28bbc3(0x2a2)];while(_0x3b64ab!==a0_0x17d018['dirname'](_0x3b64ab)){for(const _0x4f0b55 of _0x58b864){const _0x420add=a0_0x17d018[_0x28bbc3(0x28a)](_0x3b64ab,_0x4f0b55);try{return await a0_0x269482[_0x28bbc3(0x248)](_0x420add),normalizePath(_0x3b64ab);}catch{}}_0x3b64ab=a0_0x17d018[_0x28bbc3(0x220)](_0x3b64ab);}return normalizePath(_0x5e7dd8);}await Promise[a0_0x4ac72e(0x254)](args[a0_0x4ac72e(0x274)](async _0x5cee3d=>{const _0x59ff77=a0_0x4ac72e;try{const _0x383de5=await a0_0x269482[_0x59ff77(0x201)](expandHome(_0x5cee3d));!_0x383de5[_0x59ff77(0x2ad)]()&&(console[_0x59ff77(0x234)](_0x59ff77(0x27e)+_0x5cee3d+_0x59ff77(0x2b6)),process['exit'](0x1));}catch(_0x539dbb){console['error'](_0x59ff77(0x25e)+_0x5cee3d+':',_0x539dbb),process[_0x59ff77(0x226)](0x1);}}));async function validatePath(_0x157617){const _0x53e3a4=a0_0x4ac72e,_0x1a47f1=expandHome(_0x157617),_0x5f0313=a0_0x17d018[_0x53e3a4(0x273)](_0x1a47f1);try{const _0x4c2230=await a0_0x269482[_0x53e3a4(0x2bf)](_0x5f0313);return _0x4c2230;}catch(_0x8bab32){if(_0x8bab32['code']===_0x53e3a4(0x26a)){const _0x30757a=a0_0x17d018[_0x53e3a4(0x220)](_0x5f0313);try{const _0x388b1c=await a0_0x269482[_0x53e3a4(0x2bf)](_0x30757a);return a0_0x17d018[_0x53e3a4(0x28a)](_0x388b1c,a0_0x17d018[_0x53e3a4(0x2cd)](_0x5f0313));}catch{throw new Error(_0x53e3a4(0x239)+_0x30757a);}}throw _0x8bab32;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x4ac72e(0x2c2)](),'code_edit':z['string']()[a0_0x4ac72e(0x1dc)](a0_0x4ac72e(0x28e)),'instruction':z[a0_0x4ac72e(0x2c2)]()[a0_0x4ac72e(0x1dc)](a0_0x4ac72e(0x233)),'dryRun':z[a0_0x4ac72e(0x206)]()[a0_0x4ac72e(0x28c)](![])[a0_0x4ac72e(0x1dc)](a0_0x4ac72e(0x24d))}),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x4ac72e(0x2c2)]()['describe'](a0_0x4ac72e(0x21b)),'repo_path':z['string']()['describe']('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos'),'search_type':z[a0_0x4ac72e(0x235)]([a0_0x4ac72e(0x28c),a0_0x4ac72e(0x1e6)])[a0_0x4ac72e(0x26c)]()['describe'](a0_0x4ac72e(0x2ae))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z['string']()[a0_0x4ac72e(0x1dc)]('Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for'),'github_url':z[a0_0x4ac72e(0x2c2)]()[a0_0x4ac72e(0x26c)]()[a0_0x4ac72e(0x1dc)]('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_0x4ac72e(0x26c)]()[a0_0x4ac72e(0x1dc)](a0_0x4ac72e(0x260)),'branch':z['string']()[a0_0x4ac72e(0x26c)]()[a0_0x4ac72e(0x1dc)](a0_0x4ac72e(0x279))}),CodebaseSearchArgsSchema=z['object']({'query':z['string']()[a0_0x4ac72e(0x1dc)](a0_0x4ac72e(0x29c)),'repoId':z[a0_0x4ac72e(0x2c2)]()[a0_0x4ac72e(0x1dc)](a0_0x4ac72e(0x267)),'branch':z[a0_0x4ac72e(0x2c2)]()[a0_0x4ac72e(0x26c)]()[a0_0x4ac72e(0x1dc)](a0_0x4ac72e(0x1f8)),'commitHash':z[a0_0x4ac72e(0x2c2)]()[a0_0x4ac72e(0x26c)]()[a0_0x4ac72e(0x1dc)](a0_0x4ac72e(0x271)),'targetDirectories':z[a0_0x4ac72e(0x20a)](z[a0_0x4ac72e(0x2c2)]())[a0_0x4ac72e(0x28c)]([])[a0_0x4ac72e(0x1dc)](a0_0x4ac72e(0x210)),'limit':z[a0_0x4ac72e(0x2af)]()['optional']()[a0_0x4ac72e(0x28c)](0xa)[a0_0x4ac72e(0x1dc)]('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x4ac72e(0x246),'version':a0_0x4ac72e(0x2a5)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x31dc57=a0_0x4ac72e,_0x4fd9a7=[{'name':_0x31dc57(0x284),'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+_0x31dc57(0x2de)+_0x31dc57(0x22a)+_0x31dc57(0x263)+_0x31dc57(0x281)+_0x31dc57(0x247)+'-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a'+_0x31dc57(0x2d0)+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+_0x31dc57(0x240)+_0x31dc57(0x2c8)+_0x31dc57(0x2e6)+'For\x20deletions:\x0a'+_0x31dc57(0x232)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+'Rules:\x0a'+_0x31dc57(0x1e1)+_0x31dc57(0x283)+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x31dc57(0x209)+_0x31dc57(0x237)+_0x31dc57(0x2eb)+'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','inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':'warpgrep_codebase_search','description':_0x31dc57(0x200)+_0x31dc57(0x1e4)+_0x31dc57(0x2d3)+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20'+_0x31dc57(0x2a1)+_0x31dc57(0x25b)+_0x31dc57(0x277)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':_0x31dc57(0x2c7),'description':_0x31dc57(0x1f1)+'⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a'+_0x31dc57(0x244)+_0x31dc57(0x281)+_0x31dc57(0x294)+'-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a'+_0x31dc57(0x218)+_0x31dc57(0x22e)+_0x31dc57(0x29e)+_0x31dc57(0x27f)+_0x31dc57(0x208),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x415800=_0x4fd9a7[_0x31dc57(0x25a)](_0x7f5bee=>{const _0x6d31e9=_0x31dc57;if(!ENABLED_TOOLS[_0x6d31e9(0x2dc)](_0x7f5bee[_0x6d31e9(0x280)]))return![];if('requiresApiKey'in _0x7f5bee&&_0x7f5bee[_0x6d31e9(0x1f0)]&&!MORPH_API_KEY)return console[_0x6d31e9(0x234)]('Warning:\x20'+_0x7f5bee[_0x6d31e9(0x280)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x415800[_0x31dc57(0x274)](_0x527311=>({'name':_0x527311[_0x31dc57(0x280)],'description':_0x527311[_0x31dc57(0x1e0)],'inputSchema':_0x527311['inputSchema']}))};}),server[a0_0x4ac72e(0x2c6)](CallToolRequestSchema,async _0x44359d=>{const _0x33c473=a0_0x4ac72e;try{const {name:_0xa3bb73,arguments:_0x3ffd1a}=_0x44359d[_0x33c473(0x1ec)];switch(_0xa3bb73){case'edit_file':{const _0x349eca=MorphEditFileArgsSchema[_0x33c473(0x296)](_0x3ffd1a);if(!_0x349eca[_0x33c473(0x2c9)])throw new Error(_0x33c473(0x204)+_0x349eca[_0x33c473(0x234)]);const _0x141479=await validatePath(_0x349eca['data'][_0x33c473(0x1d2)]);let _0x5d131c=null,_0xc7ebb8=!![],_0x543d92=null;try{_0x5d131c=await a0_0x269482['readFile'](_0x141479,_0x33c473(0x207));}catch(_0x5546ba){const _0x45bca9=_0x5546ba[_0x33c473(0x2ab)];_0x45bca9===_0x33c473(0x26a)?(_0xc7ebb8=![],_0x5d131c=''):(_0x543d92=_0x33c473(0x266)+(_0x45bca9||_0x33c473(0x231))+_0x33c473(0x268)+(_0x5546ba instanceof Error?_0x5546ba[_0x33c473(0x21a)]:String(_0x5546ba)),console[_0x33c473(0x234)](_0x33c473(0x24e)+_0x543d92));}let _0x213ded;try{const _0x351b0f=MORPH_API_KEY;if(!_0x351b0f)throw new Error(_0x33c473(0x262));const _0xb1732f=a0_0x17d018['dirname'](_0x141479),_0x5df8b6=a0_0x17d018[_0x33c473(0x2cd)](_0x141479),_0x3c8c57=await executeEditFile({'target_filepath':_0x5df8b6,'code_edit':_0x349eca[_0x33c473(0x1de)][_0x33c473(0x2a7)],'instructions':_0x349eca[_0x33c473(0x1de)][_0x33c473(0x1d9)]},{'morphApiKey':_0x351b0f,'morphApiUrl':MORPH_API_URL,'baseDir':_0xb1732f,'autoWrite':!_0x349eca[_0x33c473(0x1de)][_0x33c473(0x1ee)],'generateUdiff':![],'debug':![]});_0x213ded=_0x3c8c57[_0x33c473(0x2ba)];if(!_0x3c8c57['success'])throw new Error(_0x3c8c57[_0x33c473(0x234)]||_0x33c473(0x252));const _0x32f310=_0x3c8c57['changes'],_0x3d65bb=_0x33c473(0x25c)+_0x32f310[_0x33c473(0x1e8)]+',\x20removed\x20'+_0x32f310['linesRemoved']+_0x33c473(0x229)+_0x32f310[_0x33c473(0x1fd)];if(_0x349eca[_0x33c473(0x1de)]['dryRun'])return{'content':[{'type':'text','text':_0x33c473(0x1df)+(_0xc7ebb8?'':'\x20(new\x20file)')+':\x20'+_0x349eca[_0x33c473(0x1de)][_0x33c473(0x1d9)]+_0x33c473(0x2a0)+_0x3d65bb+'.\x20Path:\x20'+_0x349eca[_0x33c473(0x1de)][_0x33c473(0x1d2)]+'.'}]};return{'content':[{'type':'text','text':_0x33c473(0x222)+(_0xc7ebb8?_0x33c473(0x290):_0x33c473(0x282))+':\x20'+_0x349eca[_0x33c473(0x1de)]['instruction']+_0x33c473(0x2a0)+_0x3d65bb+_0x33c473(0x270)+_0x349eca[_0x33c473(0x1de)][_0x33c473(0x1d2)]+'.'}]};}catch(_0xc467e0){const _0x24cefa=_0xc467e0 instanceof Error?_0xc467e0['message']:String(_0xc467e0);return reportMorphError({'error_message':_0x24cefa,'error_type':_0xc467e0 instanceof Error?_0xc467e0['constructor'][_0x33c473(0x280)]:_0x33c473(0x28f),'context':{'tool':_0x33c473(0x284),'completion_id':_0x213ded,'file_path':_0x349eca[_0x33c473(0x1de)][_0x33c473(0x1d2)],'validated_path':_0x141479,'instruction':_0x349eca['data'][_0x33c473(0x1d9)],'model':_0x33c473(0x1d8),'dry_run':_0x349eca[_0x33c473(0x1de)]['dryRun'],'file_exists':_0xc7ebb8,'file_read_error':_0x543d92,'file_readable':_0x5d131c!==null,'request_content':{'path':_0x349eca[_0x33c473(0x1de)]['path'],'code_edit':_0x349eca[_0x33c473(0x1de)][_0x33c473(0x2a7)],'instruction':_0x349eca[_0x33c473(0x1de)][_0x33c473(0x1d9)],'original_code':_0x5d131c!==null?_0x5d131c[_0x33c473(0x230)]>0xc350?_0x5d131c[_0x33c473(0x1f5)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x5d131c['length']+'\x20chars)':_0x5d131c:_0x33c473(0x285)+(_0x543d92||_0x33c473(0x2bb))+']','original_code_length':_0x5d131c?.['length']??0x0,'model':'morph-v3-fast','dry_run':_0x349eca[_0x33c473(0x1de)][_0x33c473(0x1ee)]}},'stack_trace':_0xc467e0 instanceof Error?_0xc467e0[_0x33c473(0x295)]:undefined,'source':'mcp-filesystem'})[_0x33c473(0x287)](()=>{}),{'content':[{'type':_0x33c473(0x29f),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x24cefa}],'isError':!![]};}}case _0x33c473(0x269):{const _0x1cc8f6=WarpGrepArgsSchema[_0x33c473(0x296)](_0x3ffd1a);if(!_0x1cc8f6[_0x33c473(0x2c9)])return{'content':[{'type':_0x33c473(0x29f),'text':_0x33c473(0x249)+_0x1cc8f6[_0x33c473(0x234)]}],'isError':!![]};const _0x2741d1=_0x107c8c=>{const _0x46b719=_0x33c473,_0x4488b8=[];for(const _0xc641fc of _0x107c8c||[]){const _0x133931=_0xc641fc[_0x46b719(0x1e3)],_0x6fa72f=_0xc641fc[_0x46b719(0x2ef)];if(_0x133931===_0x46b719(0x26e)&&_0x6fa72f){const _0x23e98d=_0x6fa72f[_0x46b719(0x2db)]('\x0a')[_0x46b719(0x25a)](_0x31000c=>_0x31000c[_0x46b719(0x2e8)]());for(const _0x2912ad of _0x23e98d){const _0x4c50ed=_0x2912ad['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x4c50ed){_0x4488b8[_0x46b719(0x288)]('grep\x20\x27'+_0x4c50ed[0x1]+'\x27\x20'+_0x4c50ed[0x2]);continue;}const _0x1f5e76=_0x2912ad[_0x46b719(0x21f)](/^read\s+(.+)$/);if(_0x1f5e76){_0x4488b8[_0x46b719(0x288)]('read\x20'+_0x1f5e76[0x1]);continue;}const _0x44dd7b=_0x2912ad[_0x46b719(0x21f)](/^list_directory\s+(.+)$/);if(_0x44dd7b){_0x4488b8[_0x46b719(0x288)]('list_directory\x20'+_0x44dd7b[0x1]);continue;}}}}return _0x4488b8;},_0x2c506a=_0x54cc9f=>{const _0x18fa40=_0x33c473,_0x2c4f30=[];if(!_0x54cc9f||!Array[_0x18fa40(0x228)](_0x54cc9f))return _0x2c4f30;const _0x19a2cc=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x18fa40(0x264),'tool':_0x18fa40(0x2f0)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x18fa40(0x2f0)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':_0x18fa40(0x2f0)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x18fa40(0x21d),'tool':_0x18fa40(0x2f0)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x18fa40(0x24b),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x18fa40(0x275),'tool':_0x18fa40(0x29d)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x18fa40(0x21d),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x18fa40(0x1f2),'tool':_0x18fa40(0x2f0)},{'pattern':/not a text file/,'error_type':_0x18fa40(0x21d),'tool':_0x18fa40(0x2f0)},{'pattern':/symbolic link/,'error_type':_0x18fa40(0x1f2),'tool':_0x18fa40(0x2f0)},{'pattern':/Error reading file:/,'error_type':_0x18fa40(0x22f),'tool':_0x18fa40(0x2f0)},{'pattern':/status="error"/,'error_type':_0x18fa40(0x1f6),'tool':_0x18fa40(0x231)}];let _0x35c6f1=0x0;for(const _0x20104a of _0x54cc9f){if(_0x20104a[_0x18fa40(0x1e3)]===_0x18fa40(0x276)){_0x35c6f1++;const _0x4b37ec=_0x20104a['content'];if(!_0x4b37ec||typeof _0x4b37ec!=='string')continue;for(const {pattern:_0x58a4d5,error_type:_0x3555c,tool:_0x26817f}of _0x19a2cc){const _0xc8b778=_0x4b37ec['match'](new RegExp(_0x58a4d5[_0x18fa40(0x24c)],'g'));if(_0xc8b778)for(const _0x5a6f6f of _0xc8b778){const _0x1641d0=_0x4b37ec[_0x18fa40(0x2c0)](_0x5a6f6f),_0x23af91=_0x4b37ec[_0x18fa40(0x1f5)](_0x1641d0,Math[_0x18fa40(0x29a)](_0x1641d0+0xc8,_0x4b37ec[_0x18fa40(0x230)]));_0x2c4f30[_0x18fa40(0x288)]({'tool':_0x26817f,'error_type':_0x3555c,'error_message':_0x23af91[_0x18fa40(0x2db)]('\x0a')[0x0],'turn':_0x35c6f1});}}}}return _0x2c4f30;};try{const _0x18a529=a0_0x17d018['resolve'](_0x1cc8f6[_0x33c473(0x1de)]['repo_path']),_0x1765b3=_0x1cc8f6['data'][_0x33c473(0x2a6)],_0x37b086=_0x1765b3===_0x33c473(0x1e6)?{'allowNames':['node_modules']}:undefined,_0x137a68=new LocalRipgrepProvider(_0x18a529,undefined,_0x37b086),_0x3e0695=await runWarpGrep({'query':_0x1cc8f6[_0x33c473(0x1de)][_0x33c473(0x26f)],'repoRoot':_0x18a529,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x137a68,'search_type':_0x1765b3}),_0x32f028=_0x2c506a(_0x3e0695[_0x33c473(0x278)]);_0x32f028[_0x33c473(0x230)]>0x0&&reportMorphError({'error_message':_0x33c473(0x2b4)+_0x32f028[_0x33c473(0x230)]+_0x33c473(0x2cf),'error_type':_0x33c473(0x20e),'level':_0x33c473(0x1fc),'tool':_0x33c473(0x269),'context':{'repo_path':_0x1cc8f6[_0x33c473(0x1de)]['repo_path'],'query':_0x1cc8f6[_0x33c473(0x1de)][_0x33c473(0x26f)],'model':_0x33c473(0x223),'termination_reason':_0x3e0695['terminationReason'],'sub_tool_errors':_0x32f028,'timings':_0x3e0695[_0x33c473(0x20b)],'tool_calls':_0x2741d1(_0x3e0695[_0x33c473(0x278)]),'messages':_0x3e0695[_0x33c473(0x278)]?.[_0x33c473(0x274)](_0x474700=>({'role':_0x474700['role'],'content':_0x474700[_0x33c473(0x2ef)]}))},'source':_0x33c473(0x242)})[_0x33c473(0x287)](()=>{});let _0x338fd7='';if(_0x3e0695[_0x33c473(0x1d6)]===_0x33c473(0x2a4)&&_0x3e0695[_0x33c473(0x1dd)]?.[_0x33c473(0x253)]?.[_0x33c473(0x2d6)]){const _0x25d10b=_0x3e0695[_0x33c473(0x1dd)][_0x33c473(0x253)][_0x33c473(0x2d6)];if(_0x25d10b[_0x33c473(0x230)]===0x0)return _0x338fd7=_0x3e0695[_0x33c473(0x1dd)]['payload']||_0x33c473(0x23f),{'content':[{'type':_0x33c473(0x29f),'text':_0x338fd7}]};const _0x188a2e=[],_0x4f8db3=[_0x33c473(0x20c)];for(const _0x52ece2 of _0x3e0695[_0x33c473(0x278)]){const _0x5eb73a=_0x52ece2[_0x33c473(0x1e3)],_0x332a0a=_0x52ece2[_0x33c473(0x2ef)];if(_0x5eb73a===_0x33c473(0x26e)&&_0x332a0a){const _0x3ba5b7=_0x332a0a[_0x33c473(0x2db)]('\x0a')['filter'](_0x44caa7=>_0x44caa7[_0x33c473(0x2e8)]());for(const _0x38cbdf of _0x3ba5b7){const _0x360baa=_0x38cbdf[_0x33c473(0x21f)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x360baa){_0x4f8db3[_0x33c473(0x288)](_0x33c473(0x2b1)+_0x360baa[0x1]+_0x33c473(0x2a9)+_0x360baa[0x2]+'`');continue;}const _0x2864ee=_0x38cbdf[_0x33c473(0x21f)](/^read\s+(.+)$/);if(_0x2864ee){_0x4f8db3[_0x33c473(0x288)](_0x33c473(0x1e5)+_0x2864ee[0x1]+'`');continue;}const _0xb8dd02=_0x38cbdf[_0x33c473(0x21f)](/^list_directory\s+(.+)$/);if(_0xb8dd02){_0x4f8db3[_0x33c473(0x288)](_0x33c473(0x2ca)+_0xb8dd02[0x1]+'`');continue;}}}}_0x188a2e[_0x33c473(0x288)](_0x4f8db3[_0x33c473(0x28a)]('\x0a'));const _0xaccf19=['',_0x33c473(0x213)];for(const _0xc6808b of _0x25d10b){if(_0xc6808b['lines']==='*')_0xaccf19['push']('-\x20'+_0xc6808b[_0x33c473(0x1d2)]+':*');else{if(Array[_0x33c473(0x228)](_0xc6808b[_0x33c473(0x1e2)])){const _0x3a8bc0=_0xc6808b[_0x33c473(0x1e2)][_0x33c473(0x274)](([_0x5783aa,_0x5f4fde])=>{if(_0x5783aa===_0x5f4fde)return''+_0x5783aa;return _0x5783aa+'-'+_0x5f4fde;});_0xaccf19['push']('-\x20'+_0xc6808b['path']+':'+_0x3a8bc0[_0x33c473(0x28a)](','));}else _0xaccf19[_0x33c473(0x288)]('-\x20'+_0xc6808b[_0x33c473(0x1d2)]+':*');}}_0xaccf19[_0x33c473(0x288)](''),_0x188a2e[_0x33c473(0x288)](_0xaccf19[_0x33c473(0x28a)]('\x0a')),_0x188a2e[_0x33c473(0x288)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x59d634=[];for(const _0x186f74 of _0x25d10b){let _0x14320a=a0_0x17d018[_0x33c473(0x273)](_0x1cc8f6[_0x33c473(0x1de)]['repo_path'],_0x186f74['path']),_0x4dee22=null,_0xdf8456=null;try{_0x4dee22=await a0_0x269482[_0x33c473(0x299)](_0x14320a,{'encoding':_0x33c473(0x207)});}catch(_0x271bdf){const _0x3b8add=fixPathRepetition(_0x14320a);if(_0x3b8add)try{_0x4dee22=await a0_0x269482['readFile'](_0x3b8add,{'encoding':_0x33c473(0x207)}),_0x14320a=_0x3b8add;}catch{_0xdf8456=_0x271bdf instanceof Error?_0x271bdf:new Error(String(_0x271bdf));}else _0xdf8456=_0x271bdf instanceof Error?_0x271bdf:new Error(String(_0x271bdf));}if(_0x4dee22!==null){const _0x63ef95=_0x4dee22['split'](/\r?\n/),_0x32ee69=['<file\x20path=\x22'+_0x186f74[_0x33c473(0x1d2)]+'\x22>'];if(_0x186f74[_0x33c473(0x1e2)]==='*'||!Array[_0x33c473(0x228)](_0x186f74[_0x33c473(0x1e2)]))for(let _0x3d4f3a=0x1;_0x3d4f3a<=_0x63ef95['length'];_0x3d4f3a++){const _0x16cc61=_0x63ef95[_0x3d4f3a-0x1];_0x32ee69[_0x33c473(0x288)](_0x3d4f3a+'|\x20'+_0x16cc61);}else for(const [_0xe7506e,_0x400b7c]of _0x186f74[_0x33c473(0x1e2)]){_0x32ee69[_0x33c473(0x230)]>0x1&&_0x32ee69['push']('');for(let _0x3898c6=_0xe7506e;_0x3898c6<=_0x400b7c&&_0x3898c6<=_0x63ef95[_0x33c473(0x230)];_0x3898c6++){const _0x299dc9=_0x63ef95[_0x3898c6-0x1];_0x32ee69['push'](_0x3898c6+'|\x20'+_0x299dc9);}}_0x32ee69[_0x33c473(0x288)](_0x33c473(0x2b5)),_0x59d634[_0x33c473(0x288)](_0x32ee69[_0x33c473(0x28a)]('\x0a'));}else _0x59d634['push'](_0x33c473(0x23b)+_0x186f74[_0x33c473(0x1d2)]+_0x33c473(0x23c)+(_0xdf8456?.[_0x33c473(0x21a)]||_0x33c473(0x258))+_0x33c473(0x243));}_0x188a2e[_0x33c473(0x288)](_0x59d634[_0x33c473(0x28a)]('\x0a\x0a')),_0x338fd7=_0x188a2e[_0x33c473(0x28a)]('\x0a');const _0x34db4b=_0x3e0695['errors']?.[_0x33c473(0x25a)](_0x476d8b=>_0x476d8b[_0x33c473(0x21a)]?.[_0x33c473(0x2d2)](_0x33c473(0x2ee)))||[];if(_0x34db4b[_0x33c473(0x230)]>0x0){const _0x178ff2=_0x34db4b[_0x33c473(0x274)](_0x74646f=>_0x74646f['message'])[_0x33c473(0x28a)](';\x20');reportMorphError({'error_message':_0x178ff2,'error_type':_0x33c473(0x224),'context':{'tool':_0x33c473(0x269),'repo_path':_0x1cc8f6[_0x33c473(0x1de)][_0x33c473(0x2d8)],'query':_0x1cc8f6[_0x33c473(0x1de)][_0x33c473(0x26f)],'model':_0x33c473(0x223),'termination_reason':'completed_with_file_errors','error_count':_0x34db4b[_0x33c473(0x230)],'is_timeout':![],'timings':_0x3e0695[_0x33c473(0x20b)],'files_attempted':_0x25d10b[_0x33c473(0x274)](_0x44b7ed=>({'path':_0x44b7ed[_0x33c473(0x1d2)],'lines':_0x44b7ed[_0x33c473(0x1e2)]})),'tool_calls':_0x2741d1(_0x3e0695[_0x33c473(0x278)]),'messages':_0x3e0695[_0x33c473(0x278)]?.['map'](_0x5d5986=>({'role':_0x5d5986['role'],'content':_0x5d5986[_0x33c473(0x2ef)]})),'request_content':{'query':_0x1cc8f6[_0x33c473(0x1de)]['search_string'],'repo_path':_0x1cc8f6[_0x33c473(0x1de)]['repo_path'],'repoRoot':a0_0x17d018['resolve'](_0x1cc8f6[_0x33c473(0x1de)][_0x33c473(0x2d8)]),'model':_0x33c473(0x223)}},'source':_0x33c473(0x242)})['catch'](()=>{});}}else{if(_0x3e0695[_0x33c473(0x1d6)]===_0x33c473(0x1eb)&&_0x3e0695[_0x33c473(0x2f3)]['length']>0x0){const _0x5e864f=_0x3e0695[_0x33c473(0x2f3)][_0x33c473(0x274)](_0x408063=>_0x408063['message'])[_0x33c473(0x28a)](';\x20');_0x338fd7=_0x33c473(0x27e)+_0x5e864f;const _0x5e0c27=_0x5e864f[_0x33c473(0x24f)]()[_0x33c473(0x2dc)](_0x33c473(0x1e9))||_0x5e864f[_0x33c473(0x24f)]()[_0x33c473(0x2dc)](_0x33c473(0x2e4))||_0x5e864f[_0x33c473(0x24f)]()['includes'](_0x33c473(0x2b3)),_0x532771=_0x3e0695[_0x33c473(0x1dd)]?.[_0x33c473(0x253)]?.['files'],_0x9997b7=_0x3e0695[_0x33c473(0x2f3)][0x0];reportMorphError({'error_message':_0x5e864f,'error_type':_0x5e0c27?_0x33c473(0x1ef):_0x9997b7?.[_0x33c473(0x2e7)]?.[_0x33c473(0x280)]||_0x33c473(0x1fa),'context':{'tool':_0x33c473(0x269),'repo_path':_0x1cc8f6[_0x33c473(0x1de)]['repo_path'],'query':_0x1cc8f6[_0x33c473(0x1de)][_0x33c473(0x26f)],'model':_0x33c473(0x223),'termination_reason':_0x3e0695['terminationReason'],'error_count':_0x3e0695[_0x33c473(0x2f3)][_0x33c473(0x230)],'is_timeout':_0x5e0c27,'timings':_0x3e0695[_0x33c473(0x20b)],'files_attempted':_0x532771?.[_0x33c473(0x274)](_0x3d63df=>({'path':_0x3d63df[_0x33c473(0x1d2)],'lines':_0x3d63df[_0x33c473(0x1e2)]})),'tool_calls':_0x2741d1(_0x3e0695[_0x33c473(0x278)]),'messages':_0x3e0695[_0x33c473(0x278)]?.[_0x33c473(0x274)](_0x68a7c2=>({'role':_0x68a7c2[_0x33c473(0x1e3)],'content':_0x68a7c2[_0x33c473(0x2ef)]})),'request_content':{'query':_0x1cc8f6[_0x33c473(0x1de)][_0x33c473(0x26f)],'repo_path':_0x1cc8f6[_0x33c473(0x1de)]['repo_path'],'repoRoot':a0_0x17d018['resolve'](_0x1cc8f6[_0x33c473(0x1de)][_0x33c473(0x2d8)]),'model':_0x33c473(0x223)}},'stack_trace':_0x9997b7?.[_0x33c473(0x295)]||undefined,'source':_0x33c473(0x242)})[_0x33c473(0x287)](()=>{});}else _0x338fd7=_0x33c473(0x1f7);}return{'content':[{'type':_0x33c473(0x29f),'text':_0x338fd7}]};}catch(_0x428c44){const _0x13488b=_0x428c44 instanceof Error?_0x428c44[_0x33c473(0x21a)]:String(_0x428c44),_0x3a85b8=_0x13488b[_0x33c473(0x24f)]()[_0x33c473(0x2dc)](_0x33c473(0x1e9))||_0x13488b[_0x33c473(0x24f)]()[_0x33c473(0x2dc)](_0x33c473(0x2e4))||_0x13488b[_0x33c473(0x24f)]()[_0x33c473(0x2dc)](_0x33c473(0x2b3))||_0x428c44 instanceof Error&&_0x428c44['name']===_0x33c473(0x1ef);return reportMorphError({'error_message':_0x13488b,'error_type':_0x3a85b8?_0x33c473(0x1ef):_0x428c44 instanceof Error?_0x428c44[_0x33c473(0x2e7)][_0x33c473(0x280)]:_0x33c473(0x28f),'context':{'tool':_0x33c473(0x269),'repo_path':_0x1cc8f6[_0x33c473(0x1de)][_0x33c473(0x2d8)],'query':_0x1cc8f6[_0x33c473(0x1de)][_0x33c473(0x26f)],'model':_0x33c473(0x223),'is_timeout':_0x3a85b8,'exception_phase':_0x33c473(0x2b0),'request_content':{'query':_0x1cc8f6[_0x33c473(0x1de)][_0x33c473(0x26f)],'repo_path':_0x1cc8f6[_0x33c473(0x1de)][_0x33c473(0x2d8)],'repoRoot':a0_0x17d018['resolve'](_0x1cc8f6[_0x33c473(0x1de)][_0x33c473(0x2d8)]),'model':'morph-warp-grep-v1-1111v0'}},'stack_trace':_0x428c44 instanceof Error?_0x428c44['stack']:undefined,'source':'mcp-filesystem'})[_0x33c473(0x287)](()=>{}),{'content':[{'type':'text','text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x13488b}],'isError':![]};}}case _0x33c473(0x2bd):{const _0x58e8af=WarpGrepGitHubArgsSchema[_0x33c473(0x296)](_0x3ffd1a);if(!_0x58e8af[_0x33c473(0x2c9)])return{'content':[{'type':_0x33c473(0x29f),'text':'Invalid\x20arguments:\x20'+_0x58e8af[_0x33c473(0x234)]}],'isError':!![]};const _0x212f9c=_0x58e8af[_0x33c473(0x1de)][_0x33c473(0x27a)]||_0x58e8af[_0x33c473(0x1de)][_0x33c473(0x1e7)];if(!_0x212f9c)return{'content':[{'type':'text','text':_0x33c473(0x2d4)}],'isError':!![]};const _0x51291a=MORPH_API_KEY;if(!_0x51291a)throw new Error(_0x33c473(0x262));const _0x12ecc1=Date[_0x33c473(0x202)]();console['error'](_0x33c473(0x21e)+_0x212f9c+_0x33c473(0x2aa)+_0x58e8af[_0x33c473(0x1de)][_0x33c473(0x26f)]+'\x22');try{const _0x367047=new WarpGrepClient({'morphApiKey':_0x51291a,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x3e7690=await _0x367047[_0x33c473(0x2a3)]({'query':_0x58e8af['data'][_0x33c473(0x26f)],'github':_0x212f9c,'branch':_0x58e8af['data'][_0x33c473(0x1f9)]}),_0x4abcb2=Date[_0x33c473(0x202)]()-_0x12ecc1;console[_0x33c473(0x234)](_0x33c473(0x2e5)+_0x4abcb2+_0x33c473(0x2dd)+_0x3e7690['success']);const _0x5e341b=formatResult(_0x3e7690);return{'content':[{'type':_0x33c473(0x29f),'text':_0x5e341b}]};}catch(_0x2da1de){const _0x24c703=Date['now']()-_0x12ecc1,_0x33a713=_0x2da1de instanceof Error?_0x2da1de[_0x33c473(0x21a)]:String(_0x2da1de);return console['error'](_0x33c473(0x2ac)+_0x24c703+_0x33c473(0x236),_0x33a713),reportMorphError({'error_message':_0x33a713,'error_type':_0x2da1de instanceof Error?_0x2da1de[_0x33c473(0x2e7)]['name']:'UnknownError','context':{'tool':'warpgrep_github_search','github_url':_0x212f9c,'search_string':_0x58e8af[_0x33c473(0x1de)][_0x33c473(0x26f)],'branch':_0x58e8af['data'][_0x33c473(0x1f9)]},'stack_trace':_0x2da1de instanceof Error?_0x2da1de[_0x33c473(0x295)]:undefined,'source':_0x33c473(0x242),'tool':'warpgrep_github_search','latency_ms':_0x24c703})[_0x33c473(0x287)](()=>{}),{'content':[{'type':_0x33c473(0x29f),'text':'GitHub\x20search\x20failed:\x20'+_0x33a713}],'isError':![]};}}case _0x33c473(0x2c7):{const _0x4af9e9=CodebaseSearchArgsSchema[_0x33c473(0x296)](_0x3ffd1a);if(!_0x4af9e9[_0x33c473(0x2c9)])return{'content':[{'type':'text','text':_0x33c473(0x249)+_0x4af9e9['error']}],'isError':!![]};try{const _0x39746e=MORPH_API_KEY;if(!_0x39746e)throw new Error(_0x33c473(0x2da));const _0x27dbd4=_0x4af9e9[_0x33c473(0x1de)]['targetDirectories'],_0x439138=await executeCodebaseSearch({'query':_0x4af9e9[_0x33c473(0x1de)][_0x33c473(0x211)],'target_directories':_0x27dbd4,'limit':_0x4af9e9[_0x33c473(0x1de)][_0x33c473(0x28b)]},{'apiKey':_0x39746e,'repoId':_0x4af9e9[_0x33c473(0x1de)]['repoId'],'branch':_0x4af9e9[_0x33c473(0x1de)][_0x33c473(0x1f9)],'commitHash':_0x4af9e9[_0x33c473(0x1de)]['commitHash'],'debug':![]});if(!_0x439138[_0x33c473(0x2c9)])return{'content':[{'type':_0x33c473(0x29f),'text':_0x33c473(0x261)+_0x439138[_0x33c473(0x234)]}],'isError':!![]};const _0x107760=_0x439138[_0x33c473(0x241)][_0x33c473(0x230)]===0x0?_0x33c473(0x1ff)+_0x4af9e9[_0x33c473(0x1de)][_0x33c473(0x211)]+'\x22':_0x33c473(0x1ed)+_0x439138[_0x33c473(0x241)]['length']+_0x33c473(0x2e9)+_0x439138[_0x33c473(0x291)][_0x33c473(0x1fb)]+_0x33c473(0x23d)+_0x439138[_0x33c473(0x241)][_0x33c473(0x274)]((_0x26e058,_0x16f992)=>_0x16f992+0x1+'.\x20'+_0x26e058['filepath']+'\x20('+(_0x26e058['rerankScore']*0x64)[_0x33c473(0x251)](0x1)+_0x33c473(0x25d)+(_0x33c473(0x27b)+_0x26e058['startLine']+'-'+_0x26e058['endLine']+'\x0a')+(_0x33c473(0x26d)+_0x26e058[_0x33c473(0x2ef)][_0x33c473(0x1f5)](0x0,0xc8)+(_0x26e058[_0x33c473(0x2ef)][_0x33c473(0x230)]>0xc8?_0x33c473(0x255):'')+'\x0a'))[_0x33c473(0x28a)]('\x0a');return{'content':[{'type':_0x33c473(0x29f),'text':_0x107760}]};}catch(_0x2fa775){const _0x5d4642=_0x2fa775 instanceof Error?_0x2fa775['message']:String(_0x2fa775);return reportMorphError({'error_message':_0x5d4642,'error_type':_0x2fa775 instanceof Error?_0x2fa775['constructor'][_0x33c473(0x280)]:_0x33c473(0x28f),'context':{'tool':'codebase_search','query':_0x4af9e9['data'][_0x33c473(0x211)],'repo_id':_0x4af9e9[_0x33c473(0x1de)]['repoId'],'target_directories':_0x4af9e9[_0x33c473(0x1de)]['targetDirectories']},'stack_trace':_0x2fa775 instanceof Error?_0x2fa775['stack']:undefined,'source':_0x33c473(0x242)})[_0x33c473(0x287)](()=>{}),{'content':[{'type':_0x33c473(0x29f),'text':_0x33c473(0x27e)+_0x5d4642}],'isError':!![]};}}default:throw new Error(_0x33c473(0x215)+_0xa3bb73);}}catch(_0x25d71f){const _0x40f6c8=_0x25d71f instanceof Error?_0x25d71f['message']:String(_0x25d71f);return reportMorphError({'error_message':_0x40f6c8,'error_type':_0x25d71f instanceof Error?_0x25d71f[_0x33c473(0x2e7)][_0x33c473(0x280)]:'UnknownError','context':{'tool':name,'arguments':args?JSON[_0x33c473(0x1da)](args)[_0x33c473(0x1f5)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x25d71f instanceof Error?_0x25d71f[_0x33c473(0x295)]:undefined,'source':'mcp-filesystem'})[_0x33c473(0x287)](()=>{}),{'content':[{'type':_0x33c473(0x29f),'text':_0x33c473(0x27e)+_0x40f6c8}],'isError':!![]};}});function a0_0x56fe(_0x5f5dc4,_0x458b18){_0x5f5dc4=_0x5f5dc4-0x1d2;const _0x77c66=a0_0x77c6();let _0x56fe22=_0x77c66[_0x5f5dc4];return _0x56fe22;}async function updateAllowedDirectoriesFromRoots(_0x4171e8){const _0x4c75ab=a0_0x4ac72e,_0x34d5aa=await getValidRootDirectories(_0x4171e8);if(_0x34d5aa[_0x4c75ab(0x230)]>0x0)allowedDirectories=[..._0x34d5aa],console['error'](_0x4c75ab(0x297)+_0x34d5aa['length']+_0x4c75ab(0x28d));else{console[_0x4c75ab(0x234)](_0x4c75ab(0x27d));if(ENABLE_WORKSPACE_MODE)try{const _0x44a2b5=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x44a2b5&&(allowedDirectories=[_0x44a2b5],console[_0x4c75ab(0x234)](_0x4c75ab(0x1ea)+_0x44a2b5));}catch(_0x4d9c0d){console[_0x4c75ab(0x234)](_0x4c75ab(0x2e0)+_0x4d9c0d);}}}server[a0_0x4ac72e(0x2b7)](RootsListChangedNotificationSchema,async()=>{const _0x50d0c9=a0_0x4ac72e;try{const _0x3e45cb=await server[_0x50d0c9(0x2ce)]();_0x3e45cb&&_0x50d0c9(0x221)in _0x3e45cb&&await updateAllowedDirectoriesFromRoots(_0x3e45cb[_0x50d0c9(0x221)]);}catch(_0x56ba1b){console[_0x50d0c9(0x234)](_0x50d0c9(0x2cc),_0x56ba1b instanceof Error?_0x56ba1b[_0x50d0c9(0x21a)]:String(_0x56ba1b));}}),server[a0_0x4ac72e(0x1fe)]=async()=>{const _0x324672=a0_0x4ac72e,_0x4c0b78=server[_0x324672(0x2d7)]();if(_0x4c0b78?.['roots'])try{const _0x2b9abf=await server[_0x324672(0x2ce)]();_0x2b9abf&&_0x324672(0x221)in _0x2b9abf?await updateAllowedDirectoriesFromRoots(_0x2b9abf[_0x324672(0x221)]):console[_0x324672(0x234)](_0x324672(0x2b8));}catch(_0x38fc53){console['error'](_0x324672(0x257),_0x38fc53 instanceof Error?_0x38fc53['message']:String(_0x38fc53));}else{if(allowedDirectories[_0x324672(0x230)]>0x0)console[_0x324672(0x234)]('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x324672(0x234)](_0x324672(0x216));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 _0xdf596a=a0_0x4ac72e,_0x46c1ca=new StdioServerTransport();await server[_0xdf596a(0x20d)](_0x46c1ca),console[_0xdf596a(0x234)](_0xdf596a(0x219)),allowedDirectories[_0xdf596a(0x230)]===0x0&&console[_0xdf596a(0x234)]('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x4ac72e(0x287)](_0x315b2e=>{const _0x1d0fb4=a0_0x4ac72e;console[_0x1d0fb4(0x234)](_0x1d0fb4(0x298),_0x315b2e),process[_0x1d0fb4(0x226)](0x1);});
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x31624f,_0x51baf0){const _0x2b8065=a1_0x53e8,_0x18d0a7=_0x31624f();while(!![]){try{const _0x4fc60f=-parseInt(_0x2b8065(0xa2))/0x1+parseInt(_0x2b8065(0xad))/0x2+parseInt(_0x2b8065(0xae))/0x3+parseInt(_0x2b8065(0xa6))/0x4*(parseInt(_0x2b8065(0xa8))/0x5)+-parseInt(_0x2b8065(0xb2))/0x6+parseInt(_0x2b8065(0xb3))/0x7*(parseInt(_0x2b8065(0xaf))/0x8)+parseInt(_0x2b8065(0xaa))/0x9*(-parseInt(_0x2b8065(0xa4))/0xa);if(_0x4fc60f===_0x51baf0)break;else _0x18d0a7['push'](_0x18d0a7['shift']());}catch(_0x1d8ab3){_0x18d0a7['push'](_0x18d0a7['shift']());}}}(a1_0x7d94,0xd7cbe));function a1_0x53e8(_0x1ee4ad,_0x1ddab7){_0x1ee4ad=_0x1ee4ad-0x9f;const _0x7d94a6=a1_0x7d94();let _0x53e8e2=_0x7d94a6[_0x1ee4ad];return _0x53e8e2;}import a1_0x5e4552 from'path';import a1_0x1290de from'os';function a1_0x7d94(){const _0x44c8ef=['4535765WvLPoA','slice','391554fGmwek','match','trim','104496ioUKOr','3194400EoGMxr','712rTEkFk','join','normalize','2059332QESYjE','9303anDYjZ','toUpperCase','substring','replace','test','homedir','610816dhKEuh','charAt','70iRPKmy','/mnt/','4efEgzD','startsWith'];a1_0x7d94=function(){return _0x44c8ef;};return a1_0x7d94();}export function convertToWindowsPath(_0x118854){const _0x564ee3=a1_0x53e8;if(_0x118854[_0x564ee3(0xa7)](_0x564ee3(0xa5))){const _0x3f992f=_0x118854[_0x564ee3(0xa3)](0x5)['toUpperCase'](),_0x317b05=_0x118854[_0x564ee3(0xa9)](0x6)[_0x564ee3(0x9f)](/\//g,'\x5c');return _0x3f992f+':'+_0x317b05;}if(_0x118854['match'](/^\/[a-zA-Z]\//)){const _0x306681=_0x118854[_0x564ee3(0xa3)](0x1)[_0x564ee3(0xb4)](),_0x57f162=_0x118854[_0x564ee3(0xa9)](0x2)[_0x564ee3(0x9f)](/\//g,'\x5c');return _0x306681+':'+_0x57f162;}if(_0x118854['match'](/^[a-zA-Z]:/))return _0x118854[_0x564ee3(0x9f)](/\//g,'\x5c');return _0x118854;}export function normalizePath(_0x388dbb){const _0x44c1a8=a1_0x53e8;_0x388dbb=_0x388dbb[_0x44c1a8(0xac)]()['replace'](/^["']|["']$/g,'');const _0x1139ac=_0x388dbb[_0x44c1a8(0xa7)]('/')&&!_0x388dbb[_0x44c1a8(0xab)](/^\/mnt\/[a-z]\//i)&&!_0x388dbb[_0x44c1a8(0xab)](/^\/[a-zA-Z]\//);if(_0x1139ac)return _0x388dbb['replace'](/\/+/g,'/')[_0x44c1a8(0x9f)](/\/+$/,'');_0x388dbb=convertToWindowsPath(_0x388dbb);if(_0x388dbb[_0x44c1a8(0xa7)]('\x5c\x5c')){let _0x4c80d7=_0x388dbb;_0x4c80d7=_0x4c80d7[_0x44c1a8(0x9f)](/^\\{2,}/,'\x5c\x5c');const _0x2ed849=_0x4c80d7[_0x44c1a8(0xb5)](0x2)[_0x44c1a8(0x9f)](/\\\\/g,'\x5c');_0x388dbb='\x5c\x5c'+_0x2ed849;}else _0x388dbb=_0x388dbb[_0x44c1a8(0x9f)](/\\\\/g,'\x5c');let _0x45fd43=a1_0x5e4552[_0x44c1a8(0xb1)](_0x388dbb);_0x388dbb[_0x44c1a8(0xa7)]('\x5c\x5c')&&!_0x45fd43[_0x44c1a8(0xa7)]('\x5c\x5c')&&(_0x45fd43='\x5c'+_0x45fd43);if(_0x45fd43[_0x44c1a8(0xab)](/^[a-zA-Z]:/)){let _0x58c956=_0x45fd43[_0x44c1a8(0x9f)](/\//g,'\x5c');return/^[a-z]:/[_0x44c1a8(0xa0)](_0x58c956)&&(_0x58c956=_0x58c956['charAt'](0x0)[_0x44c1a8(0xb4)]()+_0x58c956['slice'](0x1)),_0x58c956;}return _0x45fd43['replace'](/\//g,'\x5c');}export function expandHome(_0x35df53){const _0x3fa7a8=a1_0x53e8;if(_0x35df53[_0x3fa7a8(0xa7)]('~/')||_0x35df53==='~')return a1_0x5e4552[_0x3fa7a8(0xb0)](a1_0x1290de[_0x3fa7a8(0xa1)](),_0x35df53[_0x3fa7a8(0xa9)](0x1));return _0x35df53;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a2_0x2f21(_0x1062ec,_0x4027ea){_0x1062ec=_0x1062ec-0x9b;const _0x415bf9=a2_0x415b();let _0x2f21ce=_0x415bf9[_0x1062ec];return _0x2f21ce;}function a2_0x415b(){const _0x45c8e3=['includes','sep','9ickqYx','44GHHTLW','isArray','21hPMjUe','464560BsDZkm','41964JzhPgL','136526rdjWCX','637624MuJucE','length','129133LAoiKz','resolve','3312309bePQNW','normalize','startsWith','10ffnxNL','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','isAbsolute','string','386598lzfoMD'];a2_0x415b=function(){return _0x45c8e3;};return a2_0x415b();}(function(_0x50e80d,_0x51621b){const _0x2150f1=a2_0x2f21,_0x2617f5=_0x50e80d();while(!![]){try{const _0x1b89f5=-parseInt(_0x2150f1(0xab))/0x1+-parseInt(_0x2150f1(0xa8))/0x2+-parseInt(_0x2150f1(0xa7))/0x3*(parseInt(_0x2150f1(0xa3))/0x4)+parseInt(_0x2150f1(0xa6))/0x5+parseInt(_0x2150f1(0x9f))/0x6*(parseInt(_0x2150f1(0xa5))/0x7)+parseInt(_0x2150f1(0xa9))/0x8*(-parseInt(_0x2150f1(0xa2))/0x9)+parseInt(_0x2150f1(0x9b))/0xa*(parseInt(_0x2150f1(0xad))/0xb);if(_0x1b89f5===_0x51621b)break;else _0x2617f5['push'](_0x2617f5['shift']());}catch(_0x8df46b){_0x2617f5['push'](_0x2617f5['shift']());}}}(a2_0x415b,0x262cb));import a2_0x50d175 from'path';export function isPathWithinAllowedDirectories(_0x204ea7,_0x378ba4){const _0x3874d6=a2_0x2f21;if(typeof _0x204ea7!=='string'||!Array[_0x3874d6(0xa4)](_0x378ba4))return![];if(!_0x204ea7||_0x378ba4[_0x3874d6(0xaa)]===0x0)return![];if(_0x204ea7[_0x3874d6(0xa0)]('\x00'))return![];let _0x4d432b;try{_0x4d432b=a2_0x50d175[_0x3874d6(0xac)](a2_0x50d175[_0x3874d6(0xae)](_0x204ea7));}catch{return![];}if(!a2_0x50d175[_0x3874d6(0x9d)](_0x4d432b))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x378ba4['some'](_0x7c69ea=>{const _0x60909f=_0x3874d6;if(typeof _0x7c69ea!==_0x60909f(0x9e)||!_0x7c69ea)return![];if(_0x7c69ea[_0x60909f(0xa0)]('\x00'))return![];let _0x1b1f5d;try{_0x1b1f5d=a2_0x50d175['resolve'](a2_0x50d175['normalize'](_0x7c69ea));}catch{return![];}if(!a2_0x50d175['isAbsolute'](_0x1b1f5d))throw new Error(_0x60909f(0x9c));if(_0x4d432b===_0x1b1f5d)return!![];if(_0x1b1f5d===a2_0x50d175[_0x60909f(0xa1)])return _0x4d432b[_0x60909f(0xaf)](a2_0x50d175[_0x60909f(0xa1)]);return _0x4d432b[_0x60909f(0xaf)](_0x1b1f5d+a2_0x50d175[_0x60909f(0xa1)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x5981f5,_0x2a6bfd){const _0x254d2b=a3_0x582a,_0x55c509=_0x5981f5();while(!![]){try{const _0x55c9fe=-parseInt(_0x254d2b(0x1a9))/0x1+-parseInt(_0x254d2b(0x1b5))/0x2+-parseInt(_0x254d2b(0x1aa))/0x3*(-parseInt(_0x254d2b(0x1b6))/0x4)+parseInt(_0x254d2b(0x1b8))/0x5+-parseInt(_0x254d2b(0x1b2))/0x6+-parseInt(_0x254d2b(0x1ae))/0x7+parseInt(_0x254d2b(0x1bf))/0x8;if(_0x55c9fe===_0x2a6bfd)break;else _0x55c509['push'](_0x55c509['shift']());}catch(_0x5728c4){_0x55c509['push'](_0x55c509['shift']());}}}(a3_0x1755,0x88ca2));function a3_0x582a(_0x6f2006,_0x175dbc){_0x6f2006=_0x6f2006-0x1a9;const _0x175557=a3_0x1755();let _0x582ae6=_0x175557[_0x6f2006];return _0x582ae6;}function a3_0x1755(){const _0x3f7f68=['message','4737610IOmoZY','stat','error','\x20due\x20to\x20error:\x20','realpath','file://','resolve','4984368bBkFVJ','989652CDXwea','57rZWfru','Skipping\x20','uri','isDirectory','1443498BVyPjW','startsWith','invalid\x20path\x20or\x20inaccessible','slice','4521240PFRhZD','join','Skipping\x20invalid\x20directory:\x20','304882qJVgih','229804EFTVEU'];a3_0x1755=function(){return _0x3f7f68;};return a3_0x1755();}import{promises as a3_0x455aeb}from'fs';import a3_0x5152b2 from'path';import a3_0x57fec9 from'os';import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x510396){const _0x4558d0=a3_0x582a;try{const _0x4a72a9=_0x510396['startsWith'](_0x4558d0(0x1bd))?_0x510396[_0x4558d0(0x1b1)](0x7):_0x510396,_0x37fb0b=_0x4a72a9[_0x4558d0(0x1af)]('~/')||_0x4a72a9==='~'?a3_0x5152b2[_0x4558d0(0x1b3)](a3_0x57fec9['homedir'](),_0x4a72a9[_0x4558d0(0x1b1)](0x1)):_0x4a72a9,_0x4cc163=a3_0x5152b2[_0x4558d0(0x1be)](_0x37fb0b),_0x2b7641=await a3_0x455aeb[_0x4558d0(0x1bc)](_0x4cc163);return normalizePath(_0x2b7641);}catch{return null;}}function formatDirectoryError(_0x483e6f,_0x37a9eb,_0x282e38){const _0x578e0f=a3_0x582a;if(_0x282e38)return _0x578e0f(0x1ab)+_0x282e38+':\x20'+_0x483e6f;const _0x574216=_0x37a9eb instanceof Error?_0x37a9eb[_0x578e0f(0x1b7)]:String(_0x37a9eb);return _0x578e0f(0x1b4)+_0x483e6f+_0x578e0f(0x1bb)+_0x574216;}export async function getValidRootDirectories(_0x553947){const _0x32847f=a3_0x582a,_0x2eb1e0=[];for(const _0x1c9dd9 of _0x553947){const _0x247957=await parseRootUri(_0x1c9dd9[_0x32847f(0x1ac)]);if(!_0x247957){console[_0x32847f(0x1ba)](formatDirectoryError(_0x1c9dd9[_0x32847f(0x1ac)],undefined,_0x32847f(0x1b0)));continue;}try{const _0x4a8f7e=await a3_0x455aeb[_0x32847f(0x1b9)](_0x247957);_0x4a8f7e[_0x32847f(0x1ad)]()?_0x2eb1e0['push'](_0x247957):console['error'](formatDirectoryError(_0x247957,undefined,'non-directory\x20root'));}catch(_0x524e0a){console[_0x32847f(0x1ba)](formatDirectoryError(_0x247957,_0x524e0a));}}return _0x2eb1e0;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.112",
|
|
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.128",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|