@morphllm/morphmcp 0.8.109 → 0.8.110
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_0x5ef1d8=a0_0x1c3c;(function(_0x228206,_0x24d480){const _0xa13ecd=a0_0x1c3c,_0x45da02=_0x228206();while(!![]){try{const _0x2a3dbd=-parseInt(_0xa13ecd(0x2bb))/0x1*(-parseInt(_0xa13ecd(0x278))/0x2)+parseInt(_0xa13ecd(0x26f))/0x3+-parseInt(_0xa13ecd(0x2ba))/0x4+parseInt(_0xa13ecd(0x265))/0x5+parseInt(_0xa13ecd(0x1e8))/0x6*(parseInt(_0xa13ecd(0x266))/0x7)+parseInt(_0xa13ecd(0x219))/0x8+parseInt(_0xa13ecd(0x23b))/0x9;if(_0x2a3dbd===_0x24d480)break;else _0x45da02['push'](_0x45da02['shift']());}catch(_0x25bca4){_0x45da02['push'](_0x45da02['shift']());}}}(a0_0x2039,0x995d1));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_0x4ce217 from'fs/promises';import a0_0x5d50c6 from'path';import a0_0x3b9010 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';function a0_0x1c3c(_0x8bb9c,_0x20b97e){_0x8bb9c=_0x8bb9c-0x1a7;const _0x2039b1=a0_0x2039();let _0x1c3c31=_0x2039b1[_0x8bb9c];return _0x1c3c31;}import a0_0x19a3cd from'axios';function fixPathRepetition(_0x4d1fd3){const _0x8348e3=a0_0x1c3c,_0x3a6688=_0x4d1fd3['split'](a0_0x5d50c6[_0x8348e3(0x2b3)])[_0x8348e3(0x226)](Boolean);if(_0x3a6688[_0x8348e3(0x2c1)]<0x2)return null;for(let _0x388850=Math['floor'](_0x3a6688[_0x8348e3(0x2c1)]/0x2);_0x388850>=0x1;_0x388850--){for(let _0x1299d1=0x0;_0x1299d1<=_0x3a6688[_0x8348e3(0x2c1)]-0x2*_0x388850;_0x1299d1++){const _0x4c72b4=_0x3a6688[_0x8348e3(0x25a)](_0x1299d1,_0x1299d1+_0x388850),_0x50a867=_0x3a6688[_0x8348e3(0x25a)](_0x1299d1+_0x388850,_0x1299d1+0x2*_0x388850);if(_0x4c72b4[_0x8348e3(0x1cc)]((_0x173d84,_0x88afbb)=>_0x173d84===_0x50a867[_0x88afbb])){const _0x208535=[..._0x3a6688['slice'](0x0,_0x1299d1),..._0x3a6688[_0x8348e3(0x25a)](_0x1299d1+_0x388850)];return a0_0x5d50c6[_0x8348e3(0x2b3)]+_0x208535[_0x8348e3(0x299)](a0_0x5d50c6[_0x8348e3(0x2b3)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x20580d=a0_0x1c3c;try{const _0x49d85b=require(_0x20580d(0x1f3));return _0x49d85b[_0x20580d(0x284)]??'unknown';}catch(_0x4babe9){return console[_0x20580d(0x237)](_0x20580d(0x2bf),_0x4babe9),_0x20580d(0x2a6);}}function printHelp(){const _0x4f02ef=a0_0x1c3c;console[_0x4f02ef(0x234)](_0x4f02ef(0x1ec)+getPackageVersion()),console[_0x4f02ef(0x234)](_0x4f02ef(0x1f0)),console[_0x4f02ef(0x234)](_0x4f02ef(0x279)),console[_0x4f02ef(0x234)](_0x4f02ef(0x205)),console['log'](_0x4f02ef(0x1a7)),console[_0x4f02ef(0x234)](_0x4f02ef(0x1e7)),console['log']('\x0aExamples:'),console[_0x4f02ef(0x234)]('\x20\x20morph-mcp'),console[_0x4f02ef(0x234)](_0x4f02ef(0x24f));}const cliArgs=process['argv']['slice'](0x2),VERSION_FLAGS=new Set([a0_0x5ef1d8(0x1f4),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs['some'](_0x5d7ed6=>VERSION_FLAGS['has'](_0x5d7ed6))&&(console[a0_0x5ef1d8(0x234)](a0_0x5ef1d8(0x1ec)+getPackageVersion()),process[a0_0x5ef1d8(0x1e3)](0x0));cliArgs[a0_0x5ef1d8(0x1b3)](_0x457fdc=>HELP_FLAGS[a0_0x5ef1d8(0x2a8)](_0x457fdc))&&(printHelp(),process[a0_0x5ef1d8(0x1e3)](0x0));function getCliArg(_0x2cb745){const _0x2c4e9d=a0_0x5ef1d8;for(let _0x1653bf=0x0;_0x1653bf<cliArgs[_0x2c4e9d(0x2c1)];_0x1653bf++){const _0x2a3e7d=cliArgs[_0x1653bf];if(_0x2a3e7d[_0x2c4e9d(0x2b5)]('--'+_0x2cb745+'='))return _0x2a3e7d['slice'](('--'+_0x2cb745+'=')[_0x2c4e9d(0x2c1)]);if(_0x2a3e7d==='--'+_0x2cb745&&_0x1653bf+0x1<cliArgs['length'])return cliArgs[_0x1653bf+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0x5ef1d8(0x2a8)](arg))continue;if(arg[a0_0x5ef1d8(0x2b5)]('--api-key='))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x5ef1d8(0x1c6)](arg);}const ALL_TOOLS=[a0_0x5ef1d8(0x258),a0_0x5ef1d8(0x2bc),a0_0x5ef1d8(0x281),a0_0x5ef1d8(0x216)],DEFAULT_TOOLS=[a0_0x5ef1d8(0x258),'warpgrep_codebase_search',a0_0x5ef1d8(0x281)],ENABLED_TOOLS=process['env'][a0_0x5ef1d8(0x23d)]?process[a0_0x5ef1d8(0x1b1)]['ENABLED_TOOLS']===a0_0x5ef1d8(0x273)?ALL_TOOLS:process[a0_0x5ef1d8(0x1b1)]['ENABLED_TOOLS'][a0_0x5ef1d8(0x1f7)](',')[a0_0x5ef1d8(0x1f1)](_0x50aa18=>_0x50aa18['trim']()):DEFAULT_TOOLS;console['error'](a0_0x5ef1d8(0x21b)+ENABLED_TOOLS['join'](',\x20'));const WORKSPACE_ROOT=process[a0_0x5ef1d8(0x1b1)][a0_0x5ef1d8(0x26a)]||process['env'][a0_0x5ef1d8(0x2c4)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process['env']['ENABLE_WORKSPACE_MODE']!==a0_0x5ef1d8(0x238),MORPH_API_KEY=getCliArg(a0_0x5ef1d8(0x1c2))??process[a0_0x5ef1d8(0x1b1)][a0_0x5ef1d8(0x247)],MORPH_API_URL=process[a0_0x5ef1d8(0x1b1)][a0_0x5ef1d8(0x282)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x5ef1d8(0x1b1)][a0_0x5ef1d8(0x27b)]?parseInt(process[a0_0x5ef1d8(0x1b1)][a0_0x5ef1d8(0x27b)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5ef1d8(0x2b5)](a0_0x5ef1d8(0x235))&&!MORPH_API_KEY[a0_0x5ef1d8(0x2b5)]('morph-')&&console[a0_0x5ef1d8(0x237)](a0_0x5ef1d8(0x217));async function reportMorphError(_0x4c9737){const _0x3441b2=a0_0x5ef1d8;try{await a0_0x19a3cd[_0x3441b2(0x1e6)](_0x3441b2(0x2b8),{..._0x4c9737,'timestamp':new Date()[_0x3441b2(0x1c5)](),'source':_0x4c9737[_0x3441b2(0x268)]||_0x3441b2(0x1ae)},{'timeout':0x1388,'headers':{'Content-Type':_0x3441b2(0x1fd),'Authorization':_0x3441b2(0x25f)+MORPH_API_KEY}});}catch{}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x5ef1d8(0x237)](a0_0x5ef1d8(0x249)),console['error'](a0_0x5ef1d8(0x1fb)),console['error'](a0_0x5ef1d8(0x29b)),console['error'](a0_0x5ef1d8(0x1cd)),console[a0_0x5ef1d8(0x237)](a0_0x5ef1d8(0x269)),console['error'](a0_0x5ef1d8(0x1d5)));function normalizePath(_0x240521){const _0x4356b0=a0_0x5ef1d8;return a0_0x5d50c6[_0x4356b0(0x1c3)](_0x240521);}function expandHome(_0x1858d3){const _0x35fff7=a0_0x5ef1d8;if(_0x1858d3[_0x35fff7(0x2b5)]('~/')||_0x1858d3==='~')return a0_0x5d50c6[_0x35fff7(0x299)](a0_0x3b9010[_0x35fff7(0x27a)](),_0x1858d3[_0x35fff7(0x25a)](0x1));return _0x1858d3;}let allowedDirectories=await Promise[a0_0x5ef1d8(0x273)](args[a0_0x5ef1d8(0x1f1)](async _0x22f5e4=>{const _0x1edad5=a0_0x5ef1d8,_0x10e06a=expandHome(_0x22f5e4),_0xdfc0ab=a0_0x5d50c6['resolve'](_0x10e06a);try{const _0x3398f2=await a0_0x4ce217[_0x1edad5(0x2b1)](_0xdfc0ab);return normalizePath(_0x3398f2);}catch(_0x3932e1){return normalizePath(_0xdfc0ab);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5ef1d8(0x2c1)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),console[a0_0x5ef1d8(0x237)](a0_0x5ef1d8(0x1ef)+workspaceDir+a0_0x5ef1d8(0x241)));}catch(a0_0x45c4a2){console['error'](a0_0x5ef1d8(0x2bd)+a0_0x45c4a2);}async function detectWorkspaceRoot(_0x44e943){const _0x6352d8=a0_0x5ef1d8;let _0x2a48d2=a0_0x5d50c6['resolve'](_0x44e943);const _0x3dd57b=[_0x6352d8(0x1b7),_0x6352d8(0x1d8),_0x6352d8(0x275),'Cargo.toml',_0x6352d8(0x1dc),_0x6352d8(0x1dd),_0x6352d8(0x223),_0x6352d8(0x23a),'composer.json'];while(_0x2a48d2!==a0_0x5d50c6[_0x6352d8(0x295)](_0x2a48d2)){for(const _0x4c88a4 of _0x3dd57b){const _0x3b3908=a0_0x5d50c6[_0x6352d8(0x299)](_0x2a48d2,_0x4c88a4);try{return await a0_0x4ce217[_0x6352d8(0x285)](_0x3b3908),normalizePath(_0x2a48d2);}catch{}}_0x2a48d2=a0_0x5d50c6[_0x6352d8(0x295)](_0x2a48d2);}return normalizePath(_0x44e943);}await Promise['all'](args[a0_0x5ef1d8(0x1f1)](async _0x365c26=>{const _0x127020=a0_0x5ef1d8;try{const _0x59fdc6=await a0_0x4ce217[_0x127020(0x20a)](expandHome(_0x365c26));!_0x59fdc6[_0x127020(0x1e9)]()&&(console[_0x127020(0x237)](_0x127020(0x29f)+_0x365c26+_0x127020(0x1c0)),process[_0x127020(0x1e3)](0x1));}catch(_0x3babb4){console[_0x127020(0x237)](_0x127020(0x248)+_0x365c26+':',_0x3babb4),process[_0x127020(0x1e3)](0x1);}}));function a0_0x2039(){const _0x1ea68d=['every','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','\x27\x20in\x20`','.\x20Path:\x20','object','setRequestHandler','\x20chars)','ENOENT','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','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','timings','.vscode','\x20valid\x20directories','constructor','string','pyproject.toml','go.mod','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','completed_with_file_errors','Unknown\x20tool:\x20','results','exit','unknown\x20error','description','post','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','12hOcFfs','isDirectory','assistant','errors','@morphllm/morphmcp\x20','read','message','Workspace\x20mode\x20enabled:\x20Using\x20','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','map','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','../package.json','--version','SubToolError','Fatal\x20error\x20running\x20server:','split','Failed\x20to\x20read\x20file:\x20','rerankScore','\x22>\x0aError\x20reading\x20file:\x20','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','inputSchema','application/json','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','query_type','listRoots','path','[warpgrep_github_search]\x20Failed\x20in\x20','completionId','repoId','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)',',\x20removed\x20','\x20(new\x20file)','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','warn','stat','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Warning:\x20','morph-v3-fast','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','role','oninitialized','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','Here\x20is\x20the\x20content\x20of\x20files:\x0a','lines','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','codebase_search','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','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','1379584pEkYuI','content','Enabled\x20tools:\x20','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','ms:\x0a\x0a','roots','morph-warp-grep-v1-1111v0','SymlinkError','.cursor','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','filter','etimedout','grep','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','match','Morph\x20Edit\x20Preview','stack','requiresApiKey','resolve','UnknownError','name','Rules:\x0a','instruction','log','sk-','dryRun','error','false','\x20error(s)','tsconfig.json','1797579CVuyWR','\x0a</file>','ENABLED_TOOLS','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','enum','.\x20Changes:\x20','\x20as\x20allowed\x20directory','toFixed','ReadError','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','indexOf','isArray','MORPH_API_KEY','Error\x20accessing\x20directory\x20','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','toLowerCase','Search\x20failed:\x20','params','GitHub\x20search\x20failed:\x20','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Max\x20results\x20to\x20return','payload','limit','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','Failed\x20to\x20request\x20roots\x20from\x20client:','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','basename','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.','edit_file','readFile','slice','Morph\x20FastApply\x20failed\x20without\x20error\x20message','No\x20results\x20found\x20for\x20query:\x20\x22','targetDirectories','Morph\x20Edit\x20','Bearer\x20','FileReadError','finish','terminated','text','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','1735925AJaDqw','741503bxIcYc','substring','source','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','WORKSPACE_ROOT',',\x20modified\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','branch','catch','724989lfCaKP','Relevant\x20context\x20found:','morph-mcp','ms:','all','messages','package.json','Warning:\x20Workspace\x20fallback\x20failed:\x20','linesAdded','593372fVFGOU','\x0aOptions:','homedir','MORPH_WARP_GREP_TIMEOUT','trim','setNotificationHandler','-\x20Grepped\x20\x27','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','FileNotFound','warpgrep_github_search','MORPH_API_URL','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','version','access','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','...','Specific\x20commit\x20hash\x20to\x20search','query','RipgrepNotAvailable','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','Fallback:\x20Using\x20workspace\x20root\x20','read\x20','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','node_modules','now','timed\x20out','Benefits:\x0a','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','terminationReason','dirname','Repository\x20identifier','files','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','join','array','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','describe','\x20\x20\x20','BinaryFile','Error:\x20','File\x20read\x20error:','repo_path','\x20for:\x20\x22','runWarpGrep_call','[could\x20not\x20read\x20file:\x20','success','unknown','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','has','code','stringify','</file>','search_string','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Natural\x20language\x20query\x20to\x20search\x20for\x20code','includes','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','realpath','optional','sep','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','startsWith','added\x20','safeParse','https://morphllm.com/api/error-report','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','4552320BTsKIA','2HWFSda','warpgrep_codebase_search','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','searchGitHub','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','WarpGrep\x20sub-tool\x20errors:\x20','length','number','commitHash','PWD','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','Created\x20File','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','TimeoutError','ToolException','\x20results\x20in\x20','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','metadata','stats','WarpGrepError','<file\x20path=\x22','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','mcp-filesystem','Unknown\x20error','❌\x20Morph\x20Edit\x20Failed:\x20','env','RipgrepError','some','PathError','getClientCapabilities','completed','.git','data','Invalid\x20arguments:\x20','-\x20Listed\x20directory\x20`','timeout','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.','min','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','default','\x20is\x20not\x20a\x20directory','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','api-key','normalize','utf-8','toISOString','push','Parent\x20directory\x20does\x20not\x20exist:\x20','%\x20match)\x0a','github_url','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\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'];a0_0x2039=function(){return _0x1ea68d;};return a0_0x2039();}async function validatePath(_0x113caa){const _0x2fbf5a=a0_0x5ef1d8,_0x290110=expandHome(_0x113caa),_0x54caf8=a0_0x5d50c6[_0x2fbf5a(0x22f)](_0x290110);try{const _0x20a702=await a0_0x4ce217['realpath'](_0x54caf8);return _0x20a702;}catch(_0x6bc8d4){if(_0x6bc8d4[_0x2fbf5a(0x2a9)]===_0x2fbf5a(0x1d3)){const _0x433dca=a0_0x5d50c6['dirname'](_0x54caf8);try{const _0x1f45ae=await a0_0x4ce217[_0x2fbf5a(0x2b1)](_0x433dca);return a0_0x5d50c6[_0x2fbf5a(0x299)](_0x1f45ae,a0_0x5d50c6[_0x2fbf5a(0x256)](_0x54caf8));}catch{throw new Error(_0x2fbf5a(0x1c7)+_0x433dca);}}throw _0x6bc8d4;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x5ef1d8(0x1db)](),'code_edit':z[a0_0x5ef1d8(0x1db)]()['describe'](a0_0x5ef1d8(0x1d6)),'instruction':z[a0_0x5ef1d8(0x1db)]()[a0_0x5ef1d8(0x29c)](a0_0x5ef1d8(0x1f2)),'dryRun':z['boolean']()[a0_0x5ef1d8(0x1bf)](![])[a0_0x5ef1d8(0x29c)]('Preview\x20changes\x20without\x20applying\x20them.')}),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x5ef1d8(0x1db)]()['describe'](a0_0x5ef1d8(0x253)),'repo_path':z[a0_0x5ef1d8(0x1db)]()[a0_0x5ef1d8(0x29c)](a0_0x5ef1d8(0x1d4)),'query_type':z[a0_0x5ef1d8(0x23f)]([a0_0x5ef1d8(0x1bf),a0_0x5ef1d8(0x28f)])[a0_0x5ef1d8(0x2b2)]()['describe']('Query\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x5ef1d8(0x1db)]()[a0_0x5ef1d8(0x29c)](a0_0x5ef1d8(0x253)),'github_url':z[a0_0x5ef1d8(0x1db)]()[a0_0x5ef1d8(0x2b2)]()[a0_0x5ef1d8(0x29c)](a0_0x5ef1d8(0x1bc)),'owner_repo':z[a0_0x5ef1d8(0x1db)]()['optional']()['describe']('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x5ef1d8(0x1db)]()[a0_0x5ef1d8(0x2b2)]()[a0_0x5ef1d8(0x29c)](a0_0x5ef1d8(0x21c))}),CodebaseSearchArgsSchema=z[a0_0x5ef1d8(0x1d0)]({'query':z[a0_0x5ef1d8(0x1db)]()[a0_0x5ef1d8(0x29c)](a0_0x5ef1d8(0x2ae)),'repoId':z['string']()[a0_0x5ef1d8(0x29c)](a0_0x5ef1d8(0x296)),'branch':z['string']()[a0_0x5ef1d8(0x2b2)]()['describe'](a0_0x5ef1d8(0x24a)),'commitHash':z['string']()[a0_0x5ef1d8(0x2b2)]()[a0_0x5ef1d8(0x29c)](a0_0x5ef1d8(0x288)),'targetDirectories':z[a0_0x5ef1d8(0x29a)](z[a0_0x5ef1d8(0x1db)]())[a0_0x5ef1d8(0x1bf)]([])[a0_0x5ef1d8(0x29c)](a0_0x5ef1d8(0x286)),'limit':z[a0_0x5ef1d8(0x2c2)]()[a0_0x5ef1d8(0x2b2)]()[a0_0x5ef1d8(0x1bf)](0xa)[a0_0x5ef1d8(0x29c)](a0_0x5ef1d8(0x250))}),server=new Server({'name':a0_0x5ef1d8(0x271),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x5ef1d8(0x1d1)](ListToolsRequestSchema,async()=>{const _0x9ef3a0=a0_0x5ef1d8,_0x56ab73=[{'name':'edit_file','description':_0x9ef3a0(0x1be)+_0x9ef3a0(0x1df)+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+_0x9ef3a0(0x27f)+_0x9ef3a0(0x292)+_0x9ef3a0(0x255)+'-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a'+_0x9ef3a0(0x21d)+_0x9ef3a0(0x208)+_0x9ef3a0(0x1de)+_0x9ef3a0(0x2b4)+_0x9ef3a0(0x1fe)+'For\x20deletions:\x0a'+_0x9ef3a0(0x283)+_0x9ef3a0(0x1ca)+_0x9ef3a0(0x232)+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+_0x9ef3a0(0x22a)+_0x9ef3a0(0x2ad)+_0x9ef3a0(0x23e)+_0x9ef3a0(0x298)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x9ef3a0(0x28b),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x9ef3a0(0x2bc),'description':'A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20'+_0x9ef3a0(0x1cb)+_0x9ef3a0(0x218)+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20'+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.'+_0x9ef3a0(0x215)+_0x9ef3a0(0x1a8)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':_0x9ef3a0(0x216),'description':'**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a'+_0x9ef3a0(0x2b9)+_0x9ef3a0(0x2c5)+_0x9ef3a0(0x292)+_0x9ef3a0(0x20f)+_0x9ef3a0(0x224)+'-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a'+_0x9ef3a0(0x212)+_0x9ef3a0(0x20b)+_0x9ef3a0(0x293)+_0x9ef3a0(0x1ad),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x1fbfd0=_0x56ab73[_0x9ef3a0(0x226)](_0x3fb40f=>{const _0x535217=_0x9ef3a0;if(!ENABLED_TOOLS[_0x535217(0x2af)](_0x3fb40f[_0x535217(0x231)]))return![];if(_0x535217(0x22e)in _0x3fb40f&&_0x3fb40f['requiresApiKey']&&!MORPH_API_KEY)return console[_0x535217(0x237)]('Warning:\x20'+_0x3fb40f[_0x535217(0x231)]+_0x535217(0x28e)),![];return!![];});return{'tools':_0x1fbfd0[_0x9ef3a0(0x1f1)](_0xa0de98=>({'name':_0xa0de98['name'],'description':_0xa0de98[_0x9ef3a0(0x1e5)],'inputSchema':_0xa0de98[_0x9ef3a0(0x1fc)]}))};}),server[a0_0x5ef1d8(0x1d1)](CallToolRequestSchema,async _0x537ea0=>{const _0x3717ce=a0_0x5ef1d8;try{const {name:_0x2b3512,arguments:_0x55511b}=_0x537ea0[_0x3717ce(0x24d)];switch(_0x2b3512){case _0x3717ce(0x258):{const _0x425172=MorphEditFileArgsSchema[_0x3717ce(0x2b7)](_0x55511b);if(!_0x425172[_0x3717ce(0x2a5)])throw new Error(_0x3717ce(0x1c1)+_0x425172[_0x3717ce(0x237)]);const _0x347bc0=await validatePath(_0x425172[_0x3717ce(0x1b8)][_0x3717ce(0x201)]);let _0x5b77c2=null,_0x5411d1=!![],_0x450cbc=null;try{_0x5b77c2=await a0_0x4ce217['readFile'](_0x347bc0,_0x3717ce(0x1c4));}catch(_0x3ec849){const _0x104551=_0x3ec849[_0x3717ce(0x2a9)];_0x104551==='ENOENT'?(_0x5411d1=![],_0x5b77c2=''):(_0x450cbc=_0x3717ce(0x1f8)+(_0x104551||_0x3717ce(0x2a6))+'\x20-\x20'+(_0x3ec849 instanceof Error?_0x3ec849[_0x3717ce(0x1ee)]:String(_0x3ec849)),console['error'](_0x3717ce(0x20d)+_0x450cbc));}let _0x1ace39;try{const _0x1065c0=MORPH_API_KEY;if(!_0x1065c0)throw new Error(_0x3717ce(0x229));const _0x27b3a9=a0_0x5d50c6['dirname'](_0x347bc0),_0x45aa1f=a0_0x5d50c6[_0x3717ce(0x256)](_0x347bc0),_0x1dbdd3=await executeEditFile({'target_filepath':_0x45aa1f,'code_edit':_0x425172[_0x3717ce(0x1b8)]['code_edit'],'instructions':_0x425172['data'][_0x3717ce(0x233)]},{'morphApiKey':_0x1065c0,'morphApiUrl':MORPH_API_URL,'baseDir':_0x27b3a9,'autoWrite':!_0x425172[_0x3717ce(0x1b8)]['dryRun'],'generateUdiff':![],'debug':![]});_0x1ace39=_0x1dbdd3[_0x3717ce(0x203)];if(!_0x1dbdd3[_0x3717ce(0x2a5)])throw new Error(_0x1dbdd3[_0x3717ce(0x237)]||_0x3717ce(0x25b));const _0x1567e4=_0x1dbdd3['changes'],_0x44c738=_0x3717ce(0x2b6)+_0x1567e4[_0x3717ce(0x277)]+_0x3717ce(0x206)+_0x1567e4['linesRemoved']+_0x3717ce(0x26b)+_0x1567e4['linesModified'];if(_0x425172[_0x3717ce(0x1b8)]['dryRun'])return{'content':[{'type':_0x3717ce(0x263),'text':_0x3717ce(0x22c)+(_0x5411d1?'':_0x3717ce(0x207))+':\x20'+_0x425172[_0x3717ce(0x1b8)][_0x3717ce(0x233)]+'.\x20Changes:\x20'+_0x44c738+_0x3717ce(0x1cf)+_0x425172['data'][_0x3717ce(0x201)]+'.'}]};return{'content':[{'type':_0x3717ce(0x263),'text':_0x3717ce(0x25e)+(_0x5411d1?'Applied':_0x3717ce(0x2c6))+':\x20'+_0x425172[_0x3717ce(0x1b8)][_0x3717ce(0x233)]+_0x3717ce(0x240)+_0x44c738+'.\x20Path:\x20'+_0x425172['data']['path']+'.'}]};}catch(_0x508f61){const _0x5b6d25=_0x508f61 instanceof Error?_0x508f61[_0x3717ce(0x1ee)]:String(_0x508f61);return reportMorphError({'error_message':_0x5b6d25,'error_type':_0x508f61 instanceof Error?_0x508f61[_0x3717ce(0x1da)][_0x3717ce(0x231)]:_0x3717ce(0x230),'context':{'tool':_0x3717ce(0x258),'completion_id':_0x1ace39,'file_path':_0x425172[_0x3717ce(0x1b8)][_0x3717ce(0x201)],'validated_path':_0x347bc0,'instruction':_0x425172[_0x3717ce(0x1b8)][_0x3717ce(0x233)],'model':_0x3717ce(0x20e),'dry_run':_0x425172[_0x3717ce(0x1b8)][_0x3717ce(0x236)],'file_exists':_0x5411d1,'file_read_error':_0x450cbc,'file_readable':_0x5b77c2!==null,'request_content':{'path':_0x425172[_0x3717ce(0x1b8)][_0x3717ce(0x201)],'code_edit':_0x425172['data']['code_edit'],'instruction':_0x425172[_0x3717ce(0x1b8)]['instruction'],'original_code':_0x5b77c2!==null?_0x5b77c2[_0x3717ce(0x2c1)]>0xc350?_0x5b77c2[_0x3717ce(0x267)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x5b77c2['length']+_0x3717ce(0x1d2):_0x5b77c2:_0x3717ce(0x2a4)+(_0x450cbc||_0x3717ce(0x1e4))+']','original_code_length':_0x5b77c2?.[_0x3717ce(0x2c1)]??0x0,'model':_0x3717ce(0x20e),'dry_run':_0x425172[_0x3717ce(0x1b8)][_0x3717ce(0x236)]}},'stack_trace':_0x508f61 instanceof Error?_0x508f61[_0x3717ce(0x22d)]:undefined,'source':'mcp-filesystem'})[_0x3717ce(0x26e)](()=>{}),{'content':[{'type':'text','text':_0x3717ce(0x1b0)+_0x5b6d25}],'isError':!![]};}}case _0x3717ce(0x2bc):{const _0x14a260=WarpGrepArgsSchema[_0x3717ce(0x2b7)](_0x55511b);if(!_0x14a260[_0x3717ce(0x2a5)])return{'content':[{'type':_0x3717ce(0x263),'text':'Invalid\x20arguments:\x20'+_0x14a260['error']}],'isError':!![]};const _0xfaf413=_0x3ff138=>{const _0x1300e8=_0x3717ce,_0x1a4aca=[];for(const _0x3bb036 of _0x3ff138||[]){const _0x5c46b6=_0x3bb036[_0x1300e8(0x210)],_0x211fc7=_0x3bb036[_0x1300e8(0x21a)];if(_0x5c46b6===_0x1300e8(0x1ea)&&_0x211fc7){const _0x29b166=_0x211fc7[_0x1300e8(0x1f7)]('\x0a')['filter'](_0x1f68c1=>_0x1f68c1[_0x1300e8(0x27c)]());for(const _0x4d474e of _0x29b166){const _0xacf422=_0x4d474e[_0x1300e8(0x22b)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0xacf422){_0x1a4aca[_0x1300e8(0x1c6)]('grep\x20\x27'+_0xacf422[0x1]+'\x27\x20'+_0xacf422[0x2]);continue;}const _0x2084a5=_0x4d474e[_0x1300e8(0x22b)](/^read\s+(.+)$/);if(_0x2084a5){_0x1a4aca[_0x1300e8(0x1c6)](_0x1300e8(0x28d)+_0x2084a5[0x1]);continue;}const _0x58149c=_0x4d474e[_0x1300e8(0x22b)](/^list_directory\s+(.+)$/);if(_0x58149c){_0x1a4aca[_0x1300e8(0x1c6)]('list_directory\x20'+_0x58149c[0x1]);continue;}}}}return _0x1a4aca;},_0xc636fc=_0x39e8d0=>{const _0x2b433e=_0x3717ce,_0x452500=[];if(!_0x39e8d0||!Array[_0x2b433e(0x246)](_0x39e8d0))return _0x452500;const _0x121438=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x2b433e(0x280),'tool':_0x2b433e(0x1ed)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x2b433e(0x1b4),'tool':_0x2b433e(0x1ed)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x2b433e(0x29e),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x2b433e(0x1b2),'tool':_0x2b433e(0x228)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x2b433e(0x28a),'tool':_0x2b433e(0x228)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x2b433e(0x29e),'tool':_0x2b433e(0x1ed)},{'pattern':/\[SYMLINK\]/,'error_type':_0x2b433e(0x222),'tool':'read'},{'pattern':/not a text file/,'error_type':_0x2b433e(0x29e),'tool':_0x2b433e(0x1ed)},{'pattern':/symbolic link/,'error_type':_0x2b433e(0x222),'tool':_0x2b433e(0x1ed)},{'pattern':/Error reading file:/,'error_type':_0x2b433e(0x243),'tool':_0x2b433e(0x1ed)},{'pattern':/status="error"/,'error_type':_0x2b433e(0x2c9),'tool':_0x2b433e(0x2a6)}];let _0x1df4a8=0x0;for(const _0x3d3bdc of _0x39e8d0){if(_0x3d3bdc[_0x2b433e(0x210)]==='user'){_0x1df4a8++;const _0x3bc3f4=_0x3d3bdc['content'];if(!_0x3bc3f4||typeof _0x3bc3f4!==_0x2b433e(0x1db))continue;for(const {pattern:_0x394c02,error_type:_0x5c8f59,tool:_0x2fcec8}of _0x121438){const _0x4571f1=_0x3bc3f4[_0x2b433e(0x22b)](new RegExp(_0x394c02[_0x2b433e(0x268)],'g'));if(_0x4571f1)for(const _0x12e125 of _0x4571f1){const _0x3c27fe=_0x3bc3f4[_0x2b433e(0x245)](_0x12e125),_0x285734=_0x3bc3f4['substring'](_0x3c27fe,Math[_0x2b433e(0x1bd)](_0x3c27fe+0xc8,_0x3bc3f4[_0x2b433e(0x2c1)]));_0x452500['push']({'tool':_0x2fcec8,'error_type':_0x5c8f59,'error_message':_0x285734['split']('\x0a')[0x0],'turn':_0x1df4a8});}}}}return _0x452500;};try{const _0x5d480e=a0_0x5d50c6[_0x3717ce(0x22f)](_0x14a260[_0x3717ce(0x1b8)][_0x3717ce(0x2a1)]),_0x2d21e1=_0x14a260[_0x3717ce(0x1b8)][_0x3717ce(0x1ff)],_0x3c1db8=_0x2d21e1==='node_modules'?{'allowNames':['node_modules']}:undefined,_0x44b006=new LocalRipgrepProvider(_0x5d480e,undefined,_0x3c1db8),_0x414302=await runWarpGrep({'query':_0x14a260['data']['search_string'],'repoRoot':_0x5d480e,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x44b006,'query_type':_0x2d21e1}),_0x4c911e=_0xc636fc(_0x414302[_0x3717ce(0x274)]);_0x4c911e['length']>0x0&&reportMorphError({'error_message':_0x3717ce(0x2c0)+_0x4c911e[_0x3717ce(0x2c1)]+_0x3717ce(0x239),'error_type':_0x3717ce(0x1f5),'level':_0x3717ce(0x209),'tool':'warpgrep_codebase_search','context':{'repo_path':_0x14a260['data'][_0x3717ce(0x2a1)],'query':_0x14a260[_0x3717ce(0x1b8)][_0x3717ce(0x2ac)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x414302['terminationReason'],'sub_tool_errors':_0x4c911e,'timings':_0x414302[_0x3717ce(0x1d7)],'tool_calls':_0xfaf413(_0x414302[_0x3717ce(0x274)]),'messages':_0x414302[_0x3717ce(0x274)]?.['map'](_0x45b0da=>({'role':_0x45b0da[_0x3717ce(0x210)],'content':_0x45b0da['content']}))},'source':_0x3717ce(0x1ae)})[_0x3717ce(0x26e)](()=>{});let _0x1d3f9a='';if(_0x414302[_0x3717ce(0x294)]===_0x3717ce(0x1b6)&&_0x414302[_0x3717ce(0x261)]?.[_0x3717ce(0x1a9)]?.[_0x3717ce(0x297)]){const _0x35e69e=_0x414302[_0x3717ce(0x261)]['metadata'][_0x3717ce(0x297)];if(_0x35e69e['length']===0x0)return _0x1d3f9a=_0x414302[_0x3717ce(0x261)][_0x3717ce(0x251)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x3717ce(0x263),'text':_0x1d3f9a}]};const _0x2a76f4=[],_0x1c8e41=[_0x3717ce(0x20c)];for(const _0x32a762 of _0x414302['messages']){const _0x511d4e=_0x32a762[_0x3717ce(0x210)],_0x35b758=_0x32a762[_0x3717ce(0x21a)];if(_0x511d4e==='assistant'&&_0x35b758){const _0x12ac8a=_0x35b758['split']('\x0a')[_0x3717ce(0x226)](_0x25a28c=>_0x25a28c[_0x3717ce(0x27c)]());for(const _0x1a7523 of _0x12ac8a){const _0x1fcce7=_0x1a7523[_0x3717ce(0x22b)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x1fcce7){_0x1c8e41['push'](_0x3717ce(0x27e)+_0x1fcce7[0x1]+_0x3717ce(0x1ce)+_0x1fcce7[0x2]+'`');continue;}const _0x18b52e=_0x1a7523[_0x3717ce(0x22b)](/^read\s+(.+)$/);if(_0x18b52e){_0x1c8e41[_0x3717ce(0x1c6)]('-\x20Read\x20file\x20`'+_0x18b52e[0x1]+'`');continue;}const _0x21f023=_0x1a7523[_0x3717ce(0x22b)](/^list_directory\s+(.+)$/);if(_0x21f023){_0x1c8e41[_0x3717ce(0x1c6)](_0x3717ce(0x1ba)+_0x21f023[0x1]+'`');continue;}}}}_0x2a76f4[_0x3717ce(0x1c6)](_0x1c8e41['join']('\x0a'));const _0x558168=['',_0x3717ce(0x270)];for(const _0x26cc40 of _0x35e69e){if(_0x26cc40[_0x3717ce(0x214)]==='*')_0x558168[_0x3717ce(0x1c6)]('-\x20'+_0x26cc40[_0x3717ce(0x201)]+':*');else{if(Array[_0x3717ce(0x246)](_0x26cc40['lines'])){const _0x47e323=_0x26cc40['lines'][_0x3717ce(0x1f1)](([_0x4b2cb8,_0x40c383])=>{if(_0x4b2cb8===_0x40c383)return''+_0x4b2cb8;return _0x4b2cb8+'-'+_0x40c383;});_0x558168[_0x3717ce(0x1c6)]('-\x20'+_0x26cc40['path']+':'+_0x47e323[_0x3717ce(0x299)](','));}else _0x558168[_0x3717ce(0x1c6)]('-\x20'+_0x26cc40[_0x3717ce(0x201)]+':*');}}_0x558168['push'](''),_0x2a76f4[_0x3717ce(0x1c6)](_0x558168[_0x3717ce(0x299)]('\x0a')),_0x2a76f4[_0x3717ce(0x1c6)](_0x3717ce(0x213));const _0x285bca=[];for(const _0x1010d1 of _0x35e69e){let _0x41419f=a0_0x5d50c6[_0x3717ce(0x22f)](_0x14a260[_0x3717ce(0x1b8)][_0x3717ce(0x2a1)],_0x1010d1['path']),_0x13f321=null,_0x142c50=null;try{_0x13f321=await a0_0x4ce217[_0x3717ce(0x259)](_0x41419f,{'encoding':_0x3717ce(0x1c4)});}catch(_0x57c56d){const _0x33e49f=fixPathRepetition(_0x41419f);if(_0x33e49f)try{_0x13f321=await a0_0x4ce217[_0x3717ce(0x259)](_0x33e49f,{'encoding':'utf-8'}),_0x41419f=_0x33e49f;}catch{_0x142c50=_0x57c56d instanceof Error?_0x57c56d:new Error(String(_0x57c56d));}else _0x142c50=_0x57c56d instanceof Error?_0x57c56d:new Error(String(_0x57c56d));}if(_0x13f321!==null){const _0x56b655=_0x13f321[_0x3717ce(0x1f7)](/\r?\n/),_0x3d3b0f=['<file\x20path=\x22'+_0x1010d1[_0x3717ce(0x201)]+'\x22>'];if(_0x1010d1[_0x3717ce(0x214)]==='*'||!Array[_0x3717ce(0x246)](_0x1010d1[_0x3717ce(0x214)]))for(let _0x3c05f2=0x1;_0x3c05f2<=_0x56b655[_0x3717ce(0x2c1)];_0x3c05f2++){const _0x3c5913=_0x56b655[_0x3c05f2-0x1];_0x3d3b0f[_0x3717ce(0x1c6)](_0x3c05f2+'|\x20'+_0x3c5913);}else for(const [_0x201e1f,_0x18eb54]of _0x1010d1[_0x3717ce(0x214)]){_0x3d3b0f['length']>0x1&&_0x3d3b0f['push']('');for(let _0x10e838=_0x201e1f;_0x10e838<=_0x18eb54&&_0x10e838<=_0x56b655[_0x3717ce(0x2c1)];_0x10e838++){const _0x2ff84a=_0x56b655[_0x10e838-0x1];_0x3d3b0f[_0x3717ce(0x1c6)](_0x10e838+'|\x20'+_0x2ff84a);}}_0x3d3b0f[_0x3717ce(0x1c6)](_0x3717ce(0x2ab)),_0x285bca['push'](_0x3d3b0f['join']('\x0a'));}else _0x285bca[_0x3717ce(0x1c6)](_0x3717ce(0x1ac)+_0x1010d1[_0x3717ce(0x201)]+_0x3717ce(0x1fa)+(_0x142c50?.[_0x3717ce(0x1ee)]||_0x3717ce(0x1af))+_0x3717ce(0x23c));}_0x2a76f4['push'](_0x285bca[_0x3717ce(0x299)]('\x0a\x0a')),_0x1d3f9a=_0x2a76f4['join']('\x0a');const _0x22e1cf=_0x414302[_0x3717ce(0x1eb)]?.['filter'](_0xa2bcfd=>_0xa2bcfd['message']?.[_0x3717ce(0x2b5)](_0x3717ce(0x2a0)))||[];if(_0x22e1cf[_0x3717ce(0x2c1)]>0x0){const _0x1f8fd1=_0x22e1cf[_0x3717ce(0x1f1)](_0x256814=>_0x256814[_0x3717ce(0x1ee)])[_0x3717ce(0x299)](';\x20');reportMorphError({'error_message':_0x1f8fd1,'error_type':_0x3717ce(0x260),'context':{'tool':_0x3717ce(0x2bc),'repo_path':_0x14a260['data']['repo_path'],'query':_0x14a260[_0x3717ce(0x1b8)]['search_string'],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x3717ce(0x1e0),'error_count':_0x22e1cf[_0x3717ce(0x2c1)],'is_timeout':![],'timings':_0x414302['timings'],'files_attempted':_0x35e69e[_0x3717ce(0x1f1)](_0x50b603=>({'path':_0x50b603[_0x3717ce(0x201)],'lines':_0x50b603[_0x3717ce(0x214)]})),'tool_calls':_0xfaf413(_0x414302['messages']),'messages':_0x414302[_0x3717ce(0x274)]?.['map'](_0x3d47b6=>({'role':_0x3d47b6[_0x3717ce(0x210)],'content':_0x3d47b6['content']})),'request_content':{'query':_0x14a260[_0x3717ce(0x1b8)][_0x3717ce(0x2ac)],'repo_path':_0x14a260['data'][_0x3717ce(0x2a1)],'repoRoot':a0_0x5d50c6[_0x3717ce(0x22f)](_0x14a260[_0x3717ce(0x1b8)]['repo_path']),'model':'morph-warp-grep-v1-1111v0'}},'source':_0x3717ce(0x1ae)})['catch'](()=>{});}}else{if(_0x414302[_0x3717ce(0x294)]===_0x3717ce(0x262)&&_0x414302['errors'][_0x3717ce(0x2c1)]>0x0){const _0x10b627=_0x414302[_0x3717ce(0x1eb)]['map'](_0x283b93=>_0x283b93[_0x3717ce(0x1ee)])['join'](';\x20');_0x1d3f9a=_0x3717ce(0x29f)+_0x10b627;const _0xbd4dbb=_0x10b627[_0x3717ce(0x24b)]()['includes'](_0x3717ce(0x1bb))||_0x10b627[_0x3717ce(0x24b)]()[_0x3717ce(0x2af)](_0x3717ce(0x291))||_0x10b627[_0x3717ce(0x24b)]()[_0x3717ce(0x2af)](_0x3717ce(0x227)),_0x2467a5=_0x414302[_0x3717ce(0x261)]?.[_0x3717ce(0x1a9)]?.['files'],_0x46cf04=_0x414302['errors'][0x0];reportMorphError({'error_message':_0x10b627,'error_type':_0xbd4dbb?_0x3717ce(0x2c8):_0x46cf04?.[_0x3717ce(0x1da)]?.['name']||_0x3717ce(0x1ab),'context':{'tool':_0x3717ce(0x2bc),'repo_path':_0x14a260['data']['repo_path'],'query':_0x14a260[_0x3717ce(0x1b8)][_0x3717ce(0x2ac)],'model':_0x3717ce(0x221),'termination_reason':_0x414302[_0x3717ce(0x294)],'error_count':_0x414302['errors']['length'],'is_timeout':_0xbd4dbb,'timings':_0x414302[_0x3717ce(0x1d7)],'files_attempted':_0x2467a5?.['map'](_0x31ab36=>({'path':_0x31ab36[_0x3717ce(0x201)],'lines':_0x31ab36['lines']})),'tool_calls':_0xfaf413(_0x414302[_0x3717ce(0x274)]),'messages':_0x414302[_0x3717ce(0x274)]?.[_0x3717ce(0x1f1)](_0x3bacd8=>({'role':_0x3bacd8['role'],'content':_0x3bacd8[_0x3717ce(0x21a)]})),'request_content':{'query':_0x14a260[_0x3717ce(0x1b8)][_0x3717ce(0x2ac)],'repo_path':_0x14a260[_0x3717ce(0x1b8)][_0x3717ce(0x2a1)],'repoRoot':a0_0x5d50c6['resolve'](_0x14a260[_0x3717ce(0x1b8)][_0x3717ce(0x2a1)]),'model':_0x3717ce(0x221)}},'stack_trace':_0x46cf04?.[_0x3717ce(0x22d)]||undefined,'source':_0x3717ce(0x1ae)})[_0x3717ce(0x26e)](()=>{});}else _0x1d3f9a='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0x3717ce(0x263),'text':_0x1d3f9a}]};}catch(_0x258832){const _0x5160e3=_0x258832 instanceof Error?_0x258832['message']:String(_0x258832),_0x3b662f=_0x5160e3['toLowerCase']()['includes'](_0x3717ce(0x1bb))||_0x5160e3[_0x3717ce(0x24b)]()[_0x3717ce(0x2af)](_0x3717ce(0x291))||_0x5160e3['toLowerCase']()[_0x3717ce(0x2af)](_0x3717ce(0x227))||_0x258832 instanceof Error&&_0x258832[_0x3717ce(0x231)]==='TimeoutError';return reportMorphError({'error_message':_0x5160e3,'error_type':_0x3b662f?_0x3717ce(0x2c8):_0x258832 instanceof Error?_0x258832[_0x3717ce(0x1da)]['name']:'UnknownError','context':{'tool':_0x3717ce(0x2bc),'repo_path':_0x14a260[_0x3717ce(0x1b8)][_0x3717ce(0x2a1)],'query':_0x14a260['data']['search_string'],'model':_0x3717ce(0x221),'is_timeout':_0x3b662f,'exception_phase':_0x3717ce(0x2a3),'request_content':{'query':_0x14a260[_0x3717ce(0x1b8)][_0x3717ce(0x2ac)],'repo_path':_0x14a260[_0x3717ce(0x1b8)]['repo_path'],'repoRoot':a0_0x5d50c6[_0x3717ce(0x22f)](_0x14a260[_0x3717ce(0x1b8)][_0x3717ce(0x2a1)]),'model':_0x3717ce(0x221)}},'stack_trace':_0x258832 instanceof Error?_0x258832['stack']:undefined,'source':_0x3717ce(0x1ae)})['catch'](()=>{}),{'content':[{'type':_0x3717ce(0x263),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x5160e3}],'isError':![]};}}case _0x3717ce(0x281):{const _0x3ae9b2=WarpGrepGitHubArgsSchema[_0x3717ce(0x2b7)](_0x55511b);if(!_0x3ae9b2[_0x3717ce(0x2a5)])return{'content':[{'type':_0x3717ce(0x263),'text':_0x3717ce(0x1b9)+_0x3ae9b2['error']}],'isError':!![]};const _0x3a5120=_0x3ae9b2[_0x3717ce(0x1b8)][_0x3717ce(0x1c9)]||_0x3ae9b2['data']['owner_repo'];if(!_0x3a5120)return{'content':[{'type':_0x3717ce(0x263),'text':_0x3717ce(0x225)}],'isError':!![]};const _0x3a784c=MORPH_API_KEY;if(!_0x3a784c)throw new Error(_0x3717ce(0x229));const _0x56d3a5=Date[_0x3717ce(0x290)]();console[_0x3717ce(0x237)]('[warpgrep_github_search]\x20Searching\x20'+_0x3a5120+_0x3717ce(0x2a2)+_0x3ae9b2[_0x3717ce(0x1b8)][_0x3717ce(0x2ac)]+'\x22');try{const _0x4e2cde=new WarpGrepClient({'morphApiKey':_0x3a784c,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x248cbb=await _0x4e2cde[_0x3717ce(0x2be)]({'query':_0x3ae9b2['data']['search_string'],'github':_0x3a5120,'branch':_0x3ae9b2[_0x3717ce(0x1b8)][_0x3717ce(0x26d)]}),_0x32e3d9=Date[_0x3717ce(0x290)]()-_0x56d3a5;console[_0x3717ce(0x237)]('[warpgrep_github_search]\x20Done\x20in\x20'+_0x32e3d9+'ms.\x20Success:\x20'+_0x248cbb[_0x3717ce(0x2a5)]);const _0x322607=formatResult(_0x248cbb);return{'content':[{'type':'text','text':_0x322607}]};}catch(_0xb62c98){const _0x1269c6=Date[_0x3717ce(0x290)]()-_0x56d3a5,_0x352f65=_0xb62c98 instanceof Error?_0xb62c98[_0x3717ce(0x1ee)]:String(_0xb62c98);return console[_0x3717ce(0x237)](_0x3717ce(0x202)+_0x1269c6+_0x3717ce(0x272),_0x352f65),reportMorphError({'error_message':_0x352f65,'error_type':_0xb62c98 instanceof Error?_0xb62c98[_0x3717ce(0x1da)][_0x3717ce(0x231)]:'UnknownError','context':{'tool':_0x3717ce(0x281),'github_url':_0x3a5120,'search_string':_0x3ae9b2[_0x3717ce(0x1b8)][_0x3717ce(0x2ac)],'branch':_0x3ae9b2[_0x3717ce(0x1b8)]['branch']},'stack_trace':_0xb62c98 instanceof Error?_0xb62c98[_0x3717ce(0x22d)]:undefined,'source':_0x3717ce(0x1ae),'tool':_0x3717ce(0x281),'latency_ms':_0x1269c6})[_0x3717ce(0x26e)](()=>{}),{'content':[{'type':_0x3717ce(0x263),'text':_0x3717ce(0x24e)+_0x352f65}],'isError':![]};}}case'codebase_search':{const _0x5ba5c=CodebaseSearchArgsSchema[_0x3717ce(0x2b7)](_0x55511b);if(!_0x5ba5c[_0x3717ce(0x2a5)])return{'content':[{'type':_0x3717ce(0x263),'text':'Invalid\x20arguments:\x20'+_0x5ba5c[_0x3717ce(0x237)]}],'isError':!![]};try{const _0x73254b=MORPH_API_KEY;if(!_0x73254b)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.');const _0x4818ea=_0x5ba5c[_0x3717ce(0x1b8)][_0x3717ce(0x25d)],_0x4c4d51=await executeCodebaseSearch({'query':_0x5ba5c['data'][_0x3717ce(0x289)],'target_directories':_0x4818ea,'limit':_0x5ba5c[_0x3717ce(0x1b8)][_0x3717ce(0x252)]},{'apiKey':_0x73254b,'repoId':_0x5ba5c[_0x3717ce(0x1b8)][_0x3717ce(0x204)],'branch':_0x5ba5c[_0x3717ce(0x1b8)][_0x3717ce(0x26d)],'commitHash':_0x5ba5c[_0x3717ce(0x1b8)][_0x3717ce(0x2c3)],'debug':![]});if(!_0x4c4d51[_0x3717ce(0x2a5)])return{'content':[{'type':'text','text':_0x3717ce(0x24c)+_0x4c4d51[_0x3717ce(0x237)]}],'isError':!![]};const _0x482f64=_0x4c4d51['results'][_0x3717ce(0x2c1)]===0x0?_0x3717ce(0x25c)+_0x5ba5c[_0x3717ce(0x1b8)][_0x3717ce(0x289)]+'\x22':'Found\x20'+_0x4c4d51[_0x3717ce(0x1e2)]['length']+_0x3717ce(0x2ca)+_0x4c4d51[_0x3717ce(0x1aa)]['searchTimeMs']+_0x3717ce(0x21f)+_0x4c4d51[_0x3717ce(0x1e2)]['map']((_0x41272a,_0x1b70ca)=>_0x1b70ca+0x1+'.\x20'+_0x41272a['filepath']+'\x20('+(_0x41272a[_0x3717ce(0x1f9)]*0x64)[_0x3717ce(0x242)](0x1)+_0x3717ce(0x1c8)+('\x20\x20\x20Lines\x20'+_0x41272a['startLine']+'-'+_0x41272a['endLine']+'\x0a')+(_0x3717ce(0x29d)+_0x41272a['content'][_0x3717ce(0x267)](0x0,0xc8)+(_0x41272a[_0x3717ce(0x21a)][_0x3717ce(0x2c1)]>0xc8?_0x3717ce(0x287):'')+'\x0a'))[_0x3717ce(0x299)]('\x0a');return{'content':[{'type':_0x3717ce(0x263),'text':_0x482f64}]};}catch(_0x25422e){const _0x512f1b=_0x25422e instanceof Error?_0x25422e['message']:String(_0x25422e);return reportMorphError({'error_message':_0x512f1b,'error_type':_0x25422e instanceof Error?_0x25422e[_0x3717ce(0x1da)][_0x3717ce(0x231)]:_0x3717ce(0x230),'context':{'tool':_0x3717ce(0x216),'query':_0x5ba5c[_0x3717ce(0x1b8)]['query'],'repo_id':_0x5ba5c[_0x3717ce(0x1b8)][_0x3717ce(0x204)],'target_directories':_0x5ba5c[_0x3717ce(0x1b8)][_0x3717ce(0x25d)]},'stack_trace':_0x25422e instanceof Error?_0x25422e[_0x3717ce(0x22d)]:undefined,'source':_0x3717ce(0x1ae)})[_0x3717ce(0x26e)](()=>{}),{'content':[{'type':'text','text':_0x3717ce(0x29f)+_0x512f1b}],'isError':!![]};}}default:throw new Error(_0x3717ce(0x1e1)+_0x2b3512);}}catch(_0x142a30){const _0x10aa4c=_0x142a30 instanceof Error?_0x142a30[_0x3717ce(0x1ee)]:String(_0x142a30);return reportMorphError({'error_message':_0x10aa4c,'error_type':_0x142a30 instanceof Error?_0x142a30['constructor'][_0x3717ce(0x231)]:'UnknownError','context':{'tool':name,'arguments':args?JSON[_0x3717ce(0x2aa)](args)[_0x3717ce(0x267)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x142a30 instanceof Error?_0x142a30[_0x3717ce(0x22d)]:undefined,'source':_0x3717ce(0x1ae)})[_0x3717ce(0x26e)](()=>{}),{'content':[{'type':'text','text':_0x3717ce(0x29f)+_0x10aa4c}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x35144d){const _0x244df1=a0_0x5ef1d8,_0x3964d3=await getValidRootDirectories(_0x35144d);if(_0x3964d3['length']>0x0)allowedDirectories=[..._0x3964d3],console[_0x244df1(0x237)](_0x244df1(0x244)+_0x3964d3['length']+_0x244df1(0x1d9));else{console[_0x244df1(0x237)](_0x244df1(0x264));if(ENABLE_WORKSPACE_MODE)try{const _0x3882c4=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3882c4&&(allowedDirectories=[_0x3882c4],console['error'](_0x244df1(0x28c)+_0x3882c4));}catch(_0x13af98){console[_0x244df1(0x237)](_0x244df1(0x276)+_0x13af98);}}}server[a0_0x5ef1d8(0x27d)](RootsListChangedNotificationSchema,async()=>{const _0x218695=a0_0x5ef1d8;try{const _0x2a22b6=await server[_0x218695(0x200)]();_0x2a22b6&&'roots'in _0x2a22b6&&await updateAllowedDirectoriesFromRoots(_0x2a22b6[_0x218695(0x220)]);}catch(_0x4d3663){console[_0x218695(0x237)](_0x218695(0x254),_0x4d3663 instanceof Error?_0x4d3663[_0x218695(0x1ee)]:String(_0x4d3663));}}),server[a0_0x5ef1d8(0x211)]=async()=>{const _0x2d123c=a0_0x5ef1d8,_0x73209e=server[_0x2d123c(0x1b5)]();if(_0x73209e?.[_0x2d123c(0x220)])try{const _0xa4e45f=await server[_0x2d123c(0x200)]();_0xa4e45f&&_0x2d123c(0x220)in _0xa4e45f?await updateAllowedDirectoriesFromRoots(_0xa4e45f[_0x2d123c(0x220)]):console[_0x2d123c(0x237)](_0x2d123c(0x2a7));}catch(_0x30b687){console[_0x2d123c(0x237)](_0x2d123c(0x2c7),_0x30b687 instanceof Error?_0x30b687[_0x2d123c(0x1ee)]:String(_0x30b687));}else{if(allowedDirectories[_0x2d123c(0x2c1)]>0x0)console[_0x2d123c(0x237)](_0x2d123c(0x2b0),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x2d123c(0x237)](_0x2d123c(0x26c));else throw new Error(_0x2d123c(0x257));}}};async function runServer(){const _0x2c5526=a0_0x5ef1d8,_0x2db193=new StdioServerTransport();await server['connect'](_0x2db193),console[_0x2c5526(0x237)](_0x2c5526(0x21e)),allowedDirectories[_0x2c5526(0x2c1)]===0x0&&console['error']('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x5ef1d8(0x26e)](_0x1fcfe2=>{const _0x3f5dd6=a0_0x5ef1d8;console['error'](_0x3f5dd6(0x1f6),_0x1fcfe2),process[_0x3f5dd6(0x1e3)](0x1);});
|
|
2
|
+
const a0_0x1f8383=a0_0x2756;(function(_0x2851b0,_0x438d41){const _0x1ed1b2=a0_0x2756,_0x5d5fbc=_0x2851b0();while(!![]){try{const _0x2429dd=parseInt(_0x1ed1b2(0x289))/0x1+-parseInt(_0x1ed1b2(0x23b))/0x2+-parseInt(_0x1ed1b2(0x232))/0x3+parseInt(_0x1ed1b2(0x1b6))/0x4*(parseInt(_0x1ed1b2(0x19a))/0x5)+-parseInt(_0x1ed1b2(0x207))/0x6+-parseInt(_0x1ed1b2(0x1ac))/0x7*(parseInt(_0x1ed1b2(0x1a8))/0x8)+parseInt(_0x1ed1b2(0x283))/0x9;if(_0x2429dd===_0x438d41)break;else _0x5d5fbc['push'](_0x5d5fbc['shift']());}catch(_0x29887b){_0x5d5fbc['push'](_0x5d5fbc['shift']());}}}(a0_0x5655,0x52bb4));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_0x41cac1 from'fs/promises';import a0_0x59b14c from'path';import a0_0x490833 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_0x436e9f from'axios';function fixPathRepetition(_0x4a5830){const _0x4e9710=a0_0x2756,_0x213d8a=_0x4a5830[_0x4e9710(0x1ec)](a0_0x59b14c[_0x4e9710(0x276)])[_0x4e9710(0x1d4)](Boolean);if(_0x213d8a[_0x4e9710(0x269)]<0x2)return null;for(let _0x37db86=Math[_0x4e9710(0x1e6)](_0x213d8a[_0x4e9710(0x269)]/0x2);_0x37db86>=0x1;_0x37db86--){for(let _0x153b73=0x0;_0x153b73<=_0x213d8a[_0x4e9710(0x269)]-0x2*_0x37db86;_0x153b73++){const _0xaf44f8=_0x213d8a[_0x4e9710(0x220)](_0x153b73,_0x153b73+_0x37db86),_0x6f9814=_0x213d8a[_0x4e9710(0x220)](_0x153b73+_0x37db86,_0x153b73+0x2*_0x37db86);if(_0xaf44f8['every']((_0x337824,_0x3b6c5b)=>_0x337824===_0x6f9814[_0x3b6c5b])){const _0x45935e=[..._0x213d8a[_0x4e9710(0x220)](0x0,_0x153b73),..._0x213d8a[_0x4e9710(0x220)](_0x153b73+_0x37db86)];return a0_0x59b14c[_0x4e9710(0x276)]+_0x45935e[_0x4e9710(0x250)](a0_0x59b14c[_0x4e9710(0x276)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x47ac9f=a0_0x2756;try{const _0x100d5b=require(_0x47ac9f(0x26f));return _0x100d5b[_0x47ac9f(0x1fa)]??'unknown';}catch(_0xb4a1fa){return console[_0x47ac9f(0x28e)](_0x47ac9f(0x277),_0xb4a1fa),_0x47ac9f(0x2ab);}}function printHelp(){const _0x22f072=a0_0x2756;console[_0x22f072(0x278)](_0x22f072(0x264)+getPackageVersion()),console[_0x22f072(0x278)](_0x22f072(0x1d8)),console[_0x22f072(0x278)](_0x22f072(0x294)),console[_0x22f072(0x278)](_0x22f072(0x27b)),console[_0x22f072(0x278)](_0x22f072(0x1db)),console[_0x22f072(0x278)](_0x22f072(0x1de)),console['log'](_0x22f072(0x1c5)),console[_0x22f072(0x278)]('\x20\x20morph-mcp'),console[_0x22f072(0x278)](_0x22f072(0x209));}function a0_0x5655(){const _0x5725d1=['-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','slice','Max\x20results\x20to\x20return','Error\x20accessing\x20directory\x20','Unknown\x20tool:\x20','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','toLowerCase','isDirectory','description','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','--help','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','WORKSPACE_ROOT','BinaryFile','listRoots','ENOENT','SymlinkError','\x20for:\x20\x22','data','1474278FJDMzD','morph-warp-grep-v1-1111v0','constructor','includes','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','isArray','Relevant\x20context\x20found:','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.','\x20\x20\x20','1258742UEYTUt','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','success','\x20error(s)','changes','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','[could\x20not\x20read\x20file:\x20','substring','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','composer.json','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','limit','<file\x20path=\x22','MORPH_WARP_GREP_TIMEOUT','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','%\x20match)\x0a','Natural\x20language\x20query\x20to\x20search\x20for\x20code','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','RipgrepNotAvailable','name','codebase_search','join','Morph\x20FastApply\x20failed\x20without\x20error\x20message','...','\x20is\x20not\x20a\x20directory','[warpgrep_github_search]\x20Searching\x20','This\x20tool\x20invokes\x20a\x20subagent\x20that\x20runs\x20parallel\x20grep\x20and\x20readfile\x20calls\x20over\x20multiple\x20turns\x20to\x20locate\x20line\x20ranges\x20and\x20files\x20which\x20might\x20be\x20relevant\x20to\x20the\x20request.\x20','results','min','getClientCapabilities','query_type','inputSchema','rerankScore','pyproject.toml','ENABLED_TOOLS','Warning:\x20Workspace\x20fallback\x20failed:\x20','Search\x20failed:\x20','code','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','Benefits:\x0a','enum','@morphllm/morphmcp\x20','-\x20Read\x20file\x20`','timings','FileReadError','read','length','WarpGrep\x20sub-tool\x20errors:\x20','Here\x20is\x20the\x20content\x20of\x20files:\x0a','source','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','metadata','../package.json','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','package.json','resolve','search_string','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','UnknownError','sep','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','log','requiresApiKey','query','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','WarpGrepError','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','warpgrep_codebase_search','realpath','false','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','application/json','12095748anrDkQ','optional','.git','Error:\x20','morph-','.\x20Changes:\x20','521793sRsqzk','text','timed\x20out','stack','some','error','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','grep','message','node_modules','Enabled\x20tools:\x20','\x0aOptions:','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','completed_with_file_errors','unknown\x20error','\x20results\x20in\x20','GitHub\x20search\x20failed:\x20','stats','owner_repo','instruction','toISOString','.vscode','ENABLE_WORKSPACE_MODE','lines','warpgrep_github_search','mcp-filesystem','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','content','morph-v3-fast','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','env','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','unknown','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','path','terminationReason','safeParse','object','searchTimeMs','sk-','targetDirectories','basename','[warpgrep_github_search]\x20Failed\x20in\x20','\x20as\x20allowed\x20directory','PathError','ms:','1285405sFgDMv','added\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','cwd','filepath',',\x20removed\x20','indexOf','now','.cursor','PWD','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','terminated','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','push','8DjPDdn','-\x20Listed\x20directory\x20`','linesModified','For\x20deletions:\x0a','3191587kzxbWE','repoId','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','utf-8','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','access','role','all','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','\x20-\x20','8xdxbSA','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','tsconfig.json','--api-key=','boolean','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','Warning:\x20','startsWith','connect','branch','MORPH_API_URL','TimeoutError','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','readFile','user','\x0aExamples:','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','0.2.0','finish','repo_path','messages','runWarpGrep_call','morph-mcp','[warpgrep_github_search]\x20Done\x20in\x20','--version','params','--api-key','warn','map','setRequestHandler','filter','Cargo.toml','searchGitHub','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','exit','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','describe','string','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','\x20\x20\x20Lines\x20','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','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.','linesAdded','\x27\x20in\x20`','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','floor','completionId','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','etimedout','FileNotFound','Morph\x20Edit\x20Preview','split','ReadError','.\x20Path:\x20','dirname','completed','default','timeout','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','SubToolError','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','setNotificationHandler','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','Repository\x20identifier','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','version','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','roots','files','Failed\x20to\x20read\x20file:\x20','homedir','-\x20Grepped\x20\x27','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','Invalid\x20arguments:\x20','assistant','startLine','errors','2785926pFdcGQ','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','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','trim','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','Query\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','number','edit_file','Error\x20running\x20fast\x20context\x20search:\x20','ToolException','api-key','match','\x0a...\x20(truncated,\x20total:\x20','oninitialized','catch','RipgrepError','has','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','File\x20read\x20error:','dryRun','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a'];a0_0x5655=function(){return _0x5725d1;};return a0_0x5655();}const cliArgs=process['argv'][a0_0x1f8383(0x220)](0x2),VERSION_FLAGS=new Set([a0_0x1f8383(0x1ce),'-v','-V']),HELP_FLAGS=new Set([a0_0x1f8383(0x229),'-h']);function a0_0x2756(_0x1ae602,_0x222eea){_0x1ae602=_0x1ae602-0x18f;const _0x5655ef=a0_0x5655();let _0x27569e=_0x5655ef[_0x1ae602];return _0x27569e;}cliArgs[a0_0x1f8383(0x28d)](_0xb2553d=>VERSION_FLAGS['has'](_0xb2553d))&&(console[a0_0x1f8383(0x278)](a0_0x1f8383(0x264)+getPackageVersion()),process[a0_0x1f8383(0x1d9)](0x0));cliArgs['some'](_0x1e568d=>HELP_FLAGS[a0_0x1f8383(0x219)](_0x1e568d))&&(printHelp(),process[a0_0x1f8383(0x1d9)](0x0));function getCliArg(_0x236a82){const _0x5df50a=a0_0x1f8383;for(let _0x268773=0x0;_0x268773<cliArgs[_0x5df50a(0x269)];_0x268773++){const _0x562ae9=cliArgs[_0x268773];if(_0x562ae9[_0x5df50a(0x1bd)]('--'+_0x236a82+'='))return _0x562ae9[_0x5df50a(0x220)](('--'+_0x236a82+'=')['length']);if(_0x562ae9==='--'+_0x236a82&&_0x268773+0x1<cliArgs[_0x5df50a(0x269)])return cliArgs[_0x268773+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x1f8383(0x269)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x1f8383(0x219)](arg)||HELP_FLAGS['has'](arg))continue;if(arg[a0_0x1f8383(0x1bd)](a0_0x1f8383(0x1b9)))continue;if(arg===a0_0x1f8383(0x1d0)){i++;continue;}args[a0_0x1f8383(0x1a7)](arg);}const ALL_TOOLS=[a0_0x1f8383(0x210),a0_0x1f8383(0x27e),a0_0x1f8383(0x2a3),'codebase_search'],DEFAULT_TOOLS=['edit_file',a0_0x1f8383(0x27e),a0_0x1f8383(0x2a3)],ENABLED_TOOLS=process[a0_0x1f8383(0x2a9)][a0_0x1f8383(0x25d)]?process[a0_0x1f8383(0x2a9)]['ENABLED_TOOLS']===a0_0x1f8383(0x1b3)?ALL_TOOLS:process[a0_0x1f8383(0x2a9)]['ENABLED_TOOLS']['split'](',')[a0_0x1f8383(0x1d2)](_0x128045=>_0x128045[a0_0x1f8383(0x20a)]()):DEFAULT_TOOLS;console[a0_0x1f8383(0x28e)](a0_0x1f8383(0x293)+ENABLED_TOOLS[a0_0x1f8383(0x250)](',\x20'));const WORKSPACE_ROOT=process[a0_0x1f8383(0x2a9)][a0_0x1f8383(0x22b)]||process[a0_0x1f8383(0x2a9)][a0_0x1f8383(0x1a3)]||process[a0_0x1f8383(0x19d)](),ENABLE_WORKSPACE_MODE=process['env'][a0_0x1f8383(0x2a1)]!==a0_0x1f8383(0x280),MORPH_API_KEY=getCliArg(a0_0x1f8383(0x213))??process['env']['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x1f8383(0x2a9)][a0_0x1f8383(0x1c0)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x1f8383(0x2a9)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x1f8383(0x2a9)][a0_0x1f8383(0x248)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x1f8383(0x1bd)](a0_0x1f8383(0x193))&&!MORPH_API_KEY[a0_0x1f8383(0x1bd)](a0_0x1f8383(0x287))&&console['error'](a0_0x1f8383(0x1a4));async function reportMorphError(_0x20a05d){const _0x531954=a0_0x1f8383;try{await a0_0x436e9f['post']('https://morphllm.com/api/error-report',{..._0x20a05d,'timestamp':new Date()[_0x531954(0x29f)](),'source':_0x20a05d[_0x531954(0x26c)]||_0x531954(0x2a4)},{'timeout':0x1388,'headers':{'Content-Type':_0x531954(0x282),'Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}args[a0_0x1f8383(0x269)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x1f8383(0x28e)](a0_0x1f8383(0x274)),console[a0_0x1f8383(0x28e)](a0_0x1f8383(0x1b4)),console['error'](a0_0x1f8383(0x281)),console[a0_0x1f8383(0x28e)](a0_0x1f8383(0x28f)),console[a0_0x1f8383(0x28e)](a0_0x1f8383(0x1a6)),console[a0_0x1f8383(0x28e)](a0_0x1f8383(0x1e5)));function normalizePath(_0x43b8c0){return a0_0x59b14c['normalize'](_0x43b8c0);}function expandHome(_0x59173c){const _0x445111=a0_0x1f8383;if(_0x59173c[_0x445111(0x1bd)]('~/')||_0x59173c==='~')return a0_0x59b14c['join'](a0_0x490833[_0x445111(0x200)](),_0x59173c[_0x445111(0x220)](0x1));return _0x59173c;}let allowedDirectories=await Promise[a0_0x1f8383(0x1b3)](args[a0_0x1f8383(0x1d2)](async _0x4a31d2=>{const _0x4fccc1=a0_0x1f8383,_0x49efa6=expandHome(_0x4a31d2),_0x4ab0da=a0_0x59b14c[_0x4fccc1(0x272)](_0x49efa6);try{const _0x176b56=await a0_0x41cac1['realpath'](_0x4ab0da);return normalizePath(_0x176b56);}catch(_0x4a2052){return normalizePath(_0x4ab0da);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x1f8383(0x1a7)](workspaceDir),console[a0_0x1f8383(0x28e)]('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0x1f8383(0x197)));}catch(a0_0x4e8d1b){console[a0_0x1f8383(0x28e)](a0_0x1f8383(0x202)+a0_0x4e8d1b);}async function detectWorkspaceRoot(_0x18e996){const _0x573e3f=a0_0x1f8383;let _0x1d90a4=a0_0x59b14c[_0x573e3f(0x272)](_0x18e996);const _0x5d76f1=[_0x573e3f(0x285),_0x573e3f(0x2a0),_0x573e3f(0x271),_0x573e3f(0x1d5),_0x573e3f(0x25c),'go.mod',_0x573e3f(0x1a2),_0x573e3f(0x1b8),_0x573e3f(0x244)];while(_0x1d90a4!==a0_0x59b14c['dirname'](_0x1d90a4)){for(const _0x3e8260 of _0x5d76f1){const _0x1bd6ba=a0_0x59b14c[_0x573e3f(0x250)](_0x1d90a4,_0x3e8260);try{return await a0_0x41cac1[_0x573e3f(0x1b1)](_0x1bd6ba),normalizePath(_0x1d90a4);}catch{}}_0x1d90a4=a0_0x59b14c['dirname'](_0x1d90a4);}return normalizePath(_0x18e996);}await Promise['all'](args[a0_0x1f8383(0x1d2)](async _0x15efe6=>{const _0x3fdcc2=a0_0x1f8383;try{const _0x3e91c5=await a0_0x41cac1['stat'](expandHome(_0x15efe6));!_0x3e91c5[_0x3fdcc2(0x226)]()&&(console[_0x3fdcc2(0x28e)](_0x3fdcc2(0x286)+_0x15efe6+_0x3fdcc2(0x253)),process[_0x3fdcc2(0x1d9)](0x1));}catch(_0x79a507){console[_0x3fdcc2(0x28e)](_0x3fdcc2(0x222)+_0x15efe6+':',_0x79a507),process[_0x3fdcc2(0x1d9)](0x1);}}));async function validatePath(_0x587462){const _0x158185=a0_0x1f8383,_0x10d591=expandHome(_0x587462),_0x4b4213=a0_0x59b14c[_0x158185(0x272)](_0x10d591);try{const _0x5eccd8=await a0_0x41cac1['realpath'](_0x4b4213);return _0x5eccd8;}catch(_0x2f3869){if(_0x2f3869[_0x158185(0x260)]===_0x158185(0x22e)){const _0x413d55=a0_0x59b14c[_0x158185(0x1ef)](_0x4b4213);try{const _0x58cb4a=await a0_0x41cac1[_0x158185(0x27f)](_0x413d55);return a0_0x59b14c[_0x158185(0x250)](_0x58cb4a,a0_0x59b14c[_0x158185(0x195)](_0x4b4213));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x413d55);}}throw _0x2f3869;}}const MorphEditFileArgsSchema=z[a0_0x1f8383(0x191)]({'path':z[a0_0x1f8383(0x1dd)](),'code_edit':z[a0_0x1f8383(0x1dd)]()[a0_0x1f8383(0x1dc)](a0_0x1f8383(0x243)),'instruction':z[a0_0x1f8383(0x1dd)]()[a0_0x1f8383(0x1dc)](a0_0x1f8383(0x297)),'dryRun':z[a0_0x1f8383(0x1ba)]()[a0_0x1f8383(0x1f1)](![])['describe']('Preview\x20changes\x20without\x20applying\x20them.')}),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x1f8383(0x1dd)]()[a0_0x1f8383(0x1dc)](a0_0x1f8383(0x27d)),'repo_path':z[a0_0x1f8383(0x1dd)]()[a0_0x1f8383(0x1dc)](a0_0x1f8383(0x1f9)),'query_type':z[a0_0x1f8383(0x263)]([a0_0x1f8383(0x1f1),a0_0x1f8383(0x292)])[a0_0x1f8383(0x284)]()[a0_0x1f8383(0x1dc)](a0_0x1f8383(0x20e))}),WarpGrepGitHubArgsSchema=z[a0_0x1f8383(0x191)]({'search_string':z[a0_0x1f8383(0x1dd)]()[a0_0x1f8383(0x1dc)](a0_0x1f8383(0x27d)),'github_url':z['string']()[a0_0x1f8383(0x284)]()[a0_0x1f8383(0x1dc)](a0_0x1f8383(0x1e2)),'owner_repo':z[a0_0x1f8383(0x1dd)]()[a0_0x1f8383(0x284)]()['describe'](a0_0x1f8383(0x21a)),'branch':z[a0_0x1f8383(0x1dd)]()[a0_0x1f8383(0x284)]()[a0_0x1f8383(0x1dc)]('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z[a0_0x1f8383(0x191)]({'query':z[a0_0x1f8383(0x1dd)]()[a0_0x1f8383(0x1dc)](a0_0x1f8383(0x24b)),'repoId':z['string']()[a0_0x1f8383(0x1dc)](a0_0x1f8383(0x1f8)),'branch':z[a0_0x1f8383(0x1dd)]()['optional']()[a0_0x1f8383(0x1dc)](a0_0x1f8383(0x1f7)),'commitHash':z[a0_0x1f8383(0x1dd)]()[a0_0x1f8383(0x284)]()['describe']('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z['array'](z[a0_0x1f8383(0x1dd)]())[a0_0x1f8383(0x1f1)]([])[a0_0x1f8383(0x1dc)]('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z[a0_0x1f8383(0x20f)]()[a0_0x1f8383(0x284)]()['default'](0xa)[a0_0x1f8383(0x1dc)](a0_0x1f8383(0x221))}),server=new Server({'name':a0_0x1f8383(0x1cc),'version':a0_0x1f8383(0x1c7)},{'capabilities':{'tools':{}}});server[a0_0x1f8383(0x1d3)](ListToolsRequestSchema,async()=>{const _0xd5f4d4=a0_0x1f8383,_0x5cdce8=[{'name':_0xd5f4d4(0x210),'description':_0xd5f4d4(0x23c)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0xd5f4d4(0x21b)+'IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a'+_0xd5f4d4(0x262)+_0xd5f4d4(0x295)+_0xd5f4d4(0x21e)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0xd5f4d4(0x1fc)+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+_0xd5f4d4(0x1f3)+_0xd5f4d4(0x228)+_0xd5f4d4(0x1ab)+_0xd5f4d4(0x240)+_0xd5f4d4(0x20b)+'Rules:\x0a'+_0xd5f4d4(0x21f)+_0xd5f4d4(0x1e1)+_0xd5f4d4(0x2ac)+_0xd5f4d4(0x296)+_0xd5f4d4(0x224)+_0xd5f4d4(0x1d7)+_0xd5f4d4(0x1bb),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0xd5f4d4(0x27e),'description':_0xd5f4d4(0x1b0)+_0xd5f4d4(0x255)+_0xd5f4d4(0x208)+_0xd5f4d4(0x2a5)+_0xd5f4d4(0x245)+'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'+_0xd5f4d4(0x24c)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':_0xd5f4d4(0x24f),'description':'**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a'+_0xd5f4d4(0x20d)+_0xd5f4d4(0x1f5)+_0xd5f4d4(0x262)+'-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a'+_0xd5f4d4(0x2a8)+_0xd5f4d4(0x1c2)+'-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a'+'Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20'+_0xd5f4d4(0x261)+_0xd5f4d4(0x1b7),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x4ab8b0=_0x5cdce8['filter'](_0x52df27=>{const _0x161880=_0xd5f4d4;if(!ENABLED_TOOLS['includes'](_0x52df27['name']))return![];if(_0x161880(0x279)in _0x52df27&&_0x52df27[_0x161880(0x279)]&&!MORPH_API_KEY)return console[_0x161880(0x28e)](_0x161880(0x1bc)+_0x52df27[_0x161880(0x24e)]+_0x161880(0x1c6)),![];return!![];});return{'tools':_0x4ab8b0[_0xd5f4d4(0x1d2)](_0x54a475=>({'name':_0x54a475[_0xd5f4d4(0x24e)],'description':_0x54a475[_0xd5f4d4(0x227)],'inputSchema':_0x54a475[_0xd5f4d4(0x25a)]}))};}),server[a0_0x1f8383(0x1d3)](CallToolRequestSchema,async _0x37a752=>{const _0x1b4e68=a0_0x1f8383;try{const {name:_0x305adc,arguments:_0x55427b}=_0x37a752[_0x1b4e68(0x1cf)];switch(_0x305adc){case _0x1b4e68(0x210):{const _0x217260=MorphEditFileArgsSchema[_0x1b4e68(0x190)](_0x55427b);if(!_0x217260[_0x1b4e68(0x23d)])throw new Error(_0x1b4e68(0x26d)+_0x217260[_0x1b4e68(0x28e)]);const _0x18849d=await validatePath(_0x217260[_0x1b4e68(0x231)][_0x1b4e68(0x2ad)]);let _0x5b1df5=null,_0x3f6b7c=!![],_0xb803eb=null;try{_0x5b1df5=await a0_0x41cac1[_0x1b4e68(0x1c3)](_0x18849d,_0x1b4e68(0x1af));}catch(_0x362913){const _0x3a5973=_0x362913['code'];_0x3a5973==='ENOENT'?(_0x3f6b7c=![],_0x5b1df5=''):(_0xb803eb=_0x1b4e68(0x1ff)+(_0x3a5973||_0x1b4e68(0x2ab))+_0x1b4e68(0x1b5)+(_0x362913 instanceof Error?_0x362913[_0x1b4e68(0x291)]:String(_0x362913)),console[_0x1b4e68(0x28e)](_0x1b4e68(0x1bc)+_0xb803eb));}let _0x5d4834;try{const _0x269db9=MORPH_API_KEY;if(!_0x269db9)throw new Error(_0x1b4e68(0x236));const _0x5df2f6=a0_0x59b14c[_0x1b4e68(0x1ef)](_0x18849d),_0x34cbc9=a0_0x59b14c[_0x1b4e68(0x195)](_0x18849d),_0x6ed28c=await executeEditFile({'target_filepath':_0x34cbc9,'code_edit':_0x217260[_0x1b4e68(0x231)]['code_edit'],'instructions':_0x217260[_0x1b4e68(0x231)][_0x1b4e68(0x29e)]},{'morphApiKey':_0x269db9,'morphApiUrl':MORPH_API_URL,'baseDir':_0x5df2f6,'autoWrite':!_0x217260[_0x1b4e68(0x231)][_0x1b4e68(0x21d)],'generateUdiff':![],'debug':![]});_0x5d4834=_0x6ed28c[_0x1b4e68(0x1e7)];if(!_0x6ed28c[_0x1b4e68(0x23d)])throw new Error(_0x6ed28c[_0x1b4e68(0x28e)]||_0x1b4e68(0x251));const _0x397acb=_0x6ed28c[_0x1b4e68(0x23f)],_0xdc687c=_0x1b4e68(0x19b)+_0x397acb[_0x1b4e68(0x1e3)]+_0x1b4e68(0x19f)+_0x397acb['linesRemoved']+',\x20modified\x20'+_0x397acb[_0x1b4e68(0x1aa)];if(_0x217260[_0x1b4e68(0x231)][_0x1b4e68(0x21d)])return{'content':[{'type':_0x1b4e68(0x28a),'text':_0x1b4e68(0x1eb)+(_0x3f6b7c?'':'\x20(new\x20file)')+':\x20'+_0x217260[_0x1b4e68(0x231)][_0x1b4e68(0x29e)]+'.\x20Changes:\x20'+_0xdc687c+_0x1b4e68(0x1ee)+_0x217260['data'][_0x1b4e68(0x2ad)]+'.'}]};return{'content':[{'type':_0x1b4e68(0x28a),'text':'Morph\x20Edit\x20'+(_0x3f6b7c?'Applied':'Created\x20File')+':\x20'+_0x217260[_0x1b4e68(0x231)][_0x1b4e68(0x29e)]+_0x1b4e68(0x288)+_0xdc687c+_0x1b4e68(0x1ee)+_0x217260['data'][_0x1b4e68(0x2ad)]+'.'}]};}catch(_0x3a7cca){const _0x37c6fa=_0x3a7cca instanceof Error?_0x3a7cca[_0x1b4e68(0x291)]:String(_0x3a7cca);return reportMorphError({'error_message':_0x37c6fa,'error_type':_0x3a7cca instanceof Error?_0x3a7cca[_0x1b4e68(0x234)][_0x1b4e68(0x24e)]:'UnknownError','context':{'tool':_0x1b4e68(0x210),'completion_id':_0x5d4834,'file_path':_0x217260[_0x1b4e68(0x231)][_0x1b4e68(0x2ad)],'validated_path':_0x18849d,'instruction':_0x217260[_0x1b4e68(0x231)][_0x1b4e68(0x29e)],'model':_0x1b4e68(0x2a7),'dry_run':_0x217260[_0x1b4e68(0x231)]['dryRun'],'file_exists':_0x3f6b7c,'file_read_error':_0xb803eb,'file_readable':_0x5b1df5!==null,'request_content':{'path':_0x217260['data'][_0x1b4e68(0x2ad)],'code_edit':_0x217260[_0x1b4e68(0x231)]['code_edit'],'instruction':_0x217260[_0x1b4e68(0x231)][_0x1b4e68(0x29e)],'original_code':_0x5b1df5!==null?_0x5b1df5['length']>0xc350?_0x5b1df5['substring'](0x0,0xc350)+_0x1b4e68(0x215)+_0x5b1df5[_0x1b4e68(0x269)]+'\x20chars)':_0x5b1df5:_0x1b4e68(0x241)+(_0xb803eb||_0x1b4e68(0x299))+']','original_code_length':_0x5b1df5?.[_0x1b4e68(0x269)]??0x0,'model':_0x1b4e68(0x2a7),'dry_run':_0x217260[_0x1b4e68(0x231)][_0x1b4e68(0x21d)]}},'stack_trace':_0x3a7cca instanceof Error?_0x3a7cca[_0x1b4e68(0x28c)]:undefined,'source':_0x1b4e68(0x2a4)})[_0x1b4e68(0x217)](()=>{}),{'content':[{'type':_0x1b4e68(0x28a),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x37c6fa}],'isError':!![]};}}case _0x1b4e68(0x27e):{const _0x474cec=WarpGrepArgsSchema[_0x1b4e68(0x190)](_0x55427b);if(!_0x474cec[_0x1b4e68(0x23d)])return{'content':[{'type':_0x1b4e68(0x28a),'text':_0x1b4e68(0x203)+_0x474cec[_0x1b4e68(0x28e)]}],'isError':!![]};const _0x3db202=_0x316714=>{const _0x500647=_0x1b4e68,_0xf8f343=[];for(const _0x1ec788 of _0x316714||[]){const _0x2c4448=_0x1ec788[_0x500647(0x1b2)],_0x2be555=_0x1ec788['content'];if(_0x2c4448==='assistant'&&_0x2be555){const _0x1275ca=_0x2be555[_0x500647(0x1ec)]('\x0a')[_0x500647(0x1d4)](_0x2fb3c5=>_0x2fb3c5[_0x500647(0x20a)]());for(const _0x331568 of _0x1275ca){const _0x37d730=_0x331568[_0x500647(0x214)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x37d730){_0xf8f343[_0x500647(0x1a7)]('grep\x20\x27'+_0x37d730[0x1]+'\x27\x20'+_0x37d730[0x2]);continue;}const _0x1002b5=_0x331568[_0x500647(0x214)](/^read\s+(.+)$/);if(_0x1002b5){_0xf8f343[_0x500647(0x1a7)]('read\x20'+_0x1002b5[0x1]);continue;}const _0x304c93=_0x331568[_0x500647(0x214)](/^list_directory\s+(.+)$/);if(_0x304c93){_0xf8f343['push']('list_directory\x20'+_0x304c93[0x1]);continue;}}}}return _0xf8f343;},_0x5a8065=_0x12e1d4=>{const _0x2f61c3=_0x1b4e68,_0x1370cb=[];if(!_0x12e1d4||!Array['isArray'](_0x12e1d4))return _0x1370cb;const _0x4e26c2=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x2f61c3(0x1ea),'tool':_0x2f61c3(0x268)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x2f61c3(0x198),'tool':_0x2f61c3(0x268)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x2f61c3(0x22c),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x2f61c3(0x218),'tool':_0x2f61c3(0x290)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x2f61c3(0x24d),'tool':_0x2f61c3(0x290)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x2f61c3(0x22c),'tool':_0x2f61c3(0x268)},{'pattern':/\[SYMLINK\]/,'error_type':_0x2f61c3(0x22f),'tool':'read'},{'pattern':/not a text file/,'error_type':_0x2f61c3(0x22c),'tool':'read'},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x2f61c3(0x268)},{'pattern':/Error reading file:/,'error_type':_0x2f61c3(0x1ed),'tool':_0x2f61c3(0x268)},{'pattern':/status="error"/,'error_type':_0x2f61c3(0x212),'tool':_0x2f61c3(0x2ab)}];let _0x129dd7=0x0;for(const _0x5d958c of _0x12e1d4){if(_0x5d958c[_0x2f61c3(0x1b2)]===_0x2f61c3(0x1c4)){_0x129dd7++;const _0x575070=_0x5d958c[_0x2f61c3(0x2a6)];if(!_0x575070||typeof _0x575070!==_0x2f61c3(0x1dd))continue;for(const {pattern:_0x4db972,error_type:_0x4acb31,tool:_0x49ec05}of _0x4e26c2){const _0x2a629b=_0x575070[_0x2f61c3(0x214)](new RegExp(_0x4db972[_0x2f61c3(0x26c)],'g'));if(_0x2a629b)for(const _0x439dfb of _0x2a629b){const _0x50c849=_0x575070[_0x2f61c3(0x1a0)](_0x439dfb),_0x13cfe8=_0x575070['substring'](_0x50c849,Math[_0x2f61c3(0x257)](_0x50c849+0xc8,_0x575070['length']));_0x1370cb[_0x2f61c3(0x1a7)]({'tool':_0x49ec05,'error_type':_0x4acb31,'error_message':_0x13cfe8[_0x2f61c3(0x1ec)]('\x0a')[0x0],'turn':_0x129dd7});}}}}return _0x1370cb;};try{const _0x422766=a0_0x59b14c[_0x1b4e68(0x272)](_0x474cec['data'][_0x1b4e68(0x1c9)]),_0x1ad61f=_0x474cec[_0x1b4e68(0x231)][_0x1b4e68(0x259)],_0x14f72f=_0x1ad61f===_0x1b4e68(0x292)?{'allowNames':[_0x1b4e68(0x292)]}:undefined,_0x15b8a2=new LocalRipgrepProvider(_0x422766,undefined,_0x14f72f),_0x30d1c1=await runWarpGrep({'query':_0x474cec['data']['search_string'],'repoRoot':_0x422766,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x15b8a2,'query_type':_0x1ad61f}),_0x972c1=_0x5a8065(_0x30d1c1[_0x1b4e68(0x1ca)]);_0x972c1[_0x1b4e68(0x269)]>0x0&&reportMorphError({'error_message':_0x1b4e68(0x26a)+_0x972c1[_0x1b4e68(0x269)]+_0x1b4e68(0x23e),'error_type':_0x1b4e68(0x1f4),'level':_0x1b4e68(0x1d1),'tool':_0x1b4e68(0x27e),'context':{'repo_path':_0x474cec['data'][_0x1b4e68(0x1c9)],'query':_0x474cec[_0x1b4e68(0x231)][_0x1b4e68(0x273)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x30d1c1[_0x1b4e68(0x18f)],'sub_tool_errors':_0x972c1,'timings':_0x30d1c1[_0x1b4e68(0x266)],'tool_calls':_0x3db202(_0x30d1c1['messages']),'messages':_0x30d1c1[_0x1b4e68(0x1ca)]?.[_0x1b4e68(0x1d2)](_0x28f843=>({'role':_0x28f843['role'],'content':_0x28f843[_0x1b4e68(0x2a6)]}))},'source':'mcp-filesystem'})[_0x1b4e68(0x217)](()=>{});let _0x4eb1ee='';if(_0x30d1c1[_0x1b4e68(0x18f)]===_0x1b4e68(0x1f0)&&_0x30d1c1[_0x1b4e68(0x1c8)]?.[_0x1b4e68(0x26e)]?.['files']){const _0x2fb14c=_0x30d1c1[_0x1b4e68(0x1c8)][_0x1b4e68(0x26e)][_0x1b4e68(0x1fe)];if(_0x2fb14c['length']===0x0)return _0x4eb1ee=_0x30d1c1[_0x1b4e68(0x1c8)]['payload']||_0x1b4e68(0x2aa),{'content':[{'type':_0x1b4e68(0x28a),'text':_0x4eb1ee}]};const _0x39dbb0=[],_0x5208b9=[_0x1b4e68(0x1da)];for(const _0x117b6a of _0x30d1c1[_0x1b4e68(0x1ca)]){const _0x3c4a17=_0x117b6a[_0x1b4e68(0x1b2)],_0x2c96c1=_0x117b6a[_0x1b4e68(0x2a6)];if(_0x3c4a17===_0x1b4e68(0x204)&&_0x2c96c1){const _0x410487=_0x2c96c1[_0x1b4e68(0x1ec)]('\x0a')[_0x1b4e68(0x1d4)](_0x57a1ad=>_0x57a1ad[_0x1b4e68(0x20a)]());for(const _0x48515d of _0x410487){const _0x3e4719=_0x48515d['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x3e4719){_0x5208b9[_0x1b4e68(0x1a7)](_0x1b4e68(0x201)+_0x3e4719[0x1]+_0x1b4e68(0x1e4)+_0x3e4719[0x2]+'`');continue;}const _0x2ed798=_0x48515d[_0x1b4e68(0x214)](/^read\s+(.+)$/);if(_0x2ed798){_0x5208b9[_0x1b4e68(0x1a7)](_0x1b4e68(0x265)+_0x2ed798[0x1]+'`');continue;}const _0x4806ed=_0x48515d[_0x1b4e68(0x214)](/^list_directory\s+(.+)$/);if(_0x4806ed){_0x5208b9[_0x1b4e68(0x1a7)](_0x1b4e68(0x1a9)+_0x4806ed[0x1]+'`');continue;}}}}_0x39dbb0[_0x1b4e68(0x1a7)](_0x5208b9['join']('\x0a'));const _0x1c7a92=['',_0x1b4e68(0x238)];for(const _0xf38ddc of _0x2fb14c){if(_0xf38ddc[_0x1b4e68(0x2a2)]==='*')_0x1c7a92[_0x1b4e68(0x1a7)]('-\x20'+_0xf38ddc[_0x1b4e68(0x2ad)]+':*');else{if(Array[_0x1b4e68(0x237)](_0xf38ddc[_0x1b4e68(0x2a2)])){const _0x3354b2=_0xf38ddc[_0x1b4e68(0x2a2)][_0x1b4e68(0x1d2)](([_0x24e8b1,_0x399c26])=>{if(_0x24e8b1===_0x399c26)return''+_0x24e8b1;return _0x24e8b1+'-'+_0x399c26;});_0x1c7a92[_0x1b4e68(0x1a7)]('-\x20'+_0xf38ddc[_0x1b4e68(0x2ad)]+':'+_0x3354b2['join'](','));}else _0x1c7a92[_0x1b4e68(0x1a7)]('-\x20'+_0xf38ddc[_0x1b4e68(0x2ad)]+':*');}}_0x1c7a92[_0x1b4e68(0x1a7)](''),_0x39dbb0['push'](_0x1c7a92[_0x1b4e68(0x250)]('\x0a')),_0x39dbb0[_0x1b4e68(0x1a7)](_0x1b4e68(0x26b));const _0x4009f0=[];for(const _0x16ce98 of _0x2fb14c){let _0x211afa=a0_0x59b14c[_0x1b4e68(0x272)](_0x474cec['data'][_0x1b4e68(0x1c9)],_0x16ce98[_0x1b4e68(0x2ad)]),_0x371a09=null,_0x374a39=null;try{_0x371a09=await a0_0x41cac1['readFile'](_0x211afa,{'encoding':_0x1b4e68(0x1af)});}catch(_0x16d876){const _0x2b3d02=fixPathRepetition(_0x211afa);if(_0x2b3d02)try{_0x371a09=await a0_0x41cac1[_0x1b4e68(0x1c3)](_0x2b3d02,{'encoding':_0x1b4e68(0x1af)}),_0x211afa=_0x2b3d02;}catch{_0x374a39=_0x16d876 instanceof Error?_0x16d876:new Error(String(_0x16d876));}else _0x374a39=_0x16d876 instanceof Error?_0x16d876:new Error(String(_0x16d876));}if(_0x371a09!==null){const _0xfec1=_0x371a09[_0x1b4e68(0x1ec)](/\r?\n/),_0x462712=[_0x1b4e68(0x247)+_0x16ce98[_0x1b4e68(0x2ad)]+'\x22>'];if(_0x16ce98['lines']==='*'||!Array[_0x1b4e68(0x237)](_0x16ce98[_0x1b4e68(0x2a2)]))for(let _0x458d2d=0x1;_0x458d2d<=_0xfec1[_0x1b4e68(0x269)];_0x458d2d++){const _0x95ce0e=_0xfec1[_0x458d2d-0x1];_0x462712['push'](_0x458d2d+'|\x20'+_0x95ce0e);}else for(const [_0x46aeae,_0x48d814]of _0x16ce98[_0x1b4e68(0x2a2)]){_0x462712[_0x1b4e68(0x269)]>0x1&&_0x462712[_0x1b4e68(0x1a7)]('');for(let _0x33b1cc=_0x46aeae;_0x33b1cc<=_0x48d814&&_0x33b1cc<=_0xfec1['length'];_0x33b1cc++){const _0x2c8e23=_0xfec1[_0x33b1cc-0x1];_0x462712[_0x1b4e68(0x1a7)](_0x33b1cc+'|\x20'+_0x2c8e23);}}_0x462712[_0x1b4e68(0x1a7)]('</file>'),_0x4009f0[_0x1b4e68(0x1a7)](_0x462712[_0x1b4e68(0x250)]('\x0a'));}else _0x4009f0[_0x1b4e68(0x1a7)](_0x1b4e68(0x247)+_0x16ce98[_0x1b4e68(0x2ad)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x374a39?.[_0x1b4e68(0x291)]||'Unknown\x20error')+'\x0a</file>');}_0x39dbb0[_0x1b4e68(0x1a7)](_0x4009f0[_0x1b4e68(0x250)]('\x0a\x0a')),_0x4eb1ee=_0x39dbb0[_0x1b4e68(0x250)]('\x0a');const _0x2065c5=_0x30d1c1[_0x1b4e68(0x206)]?.[_0x1b4e68(0x1d4)](_0x3cb8ba=>_0x3cb8ba[_0x1b4e68(0x291)]?.[_0x1b4e68(0x1bd)](_0x1b4e68(0x21c)))||[];if(_0x2065c5[_0x1b4e68(0x269)]>0x0){const _0x525140=_0x2065c5['map'](_0x426c82=>_0x426c82[_0x1b4e68(0x291)])['join'](';\x20');reportMorphError({'error_message':_0x525140,'error_type':_0x1b4e68(0x267),'context':{'tool':_0x1b4e68(0x27e),'repo_path':_0x474cec['data'][_0x1b4e68(0x1c9)],'query':_0x474cec[_0x1b4e68(0x231)]['search_string'],'model':_0x1b4e68(0x233),'termination_reason':_0x1b4e68(0x298),'error_count':_0x2065c5[_0x1b4e68(0x269)],'is_timeout':![],'timings':_0x30d1c1['timings'],'files_attempted':_0x2fb14c['map'](_0x191457=>({'path':_0x191457[_0x1b4e68(0x2ad)],'lines':_0x191457[_0x1b4e68(0x2a2)]})),'tool_calls':_0x3db202(_0x30d1c1[_0x1b4e68(0x1ca)]),'messages':_0x30d1c1[_0x1b4e68(0x1ca)]?.[_0x1b4e68(0x1d2)](_0x27652c=>({'role':_0x27652c[_0x1b4e68(0x1b2)],'content':_0x27652c['content']})),'request_content':{'query':_0x474cec[_0x1b4e68(0x231)][_0x1b4e68(0x273)],'repo_path':_0x474cec['data'][_0x1b4e68(0x1c9)],'repoRoot':a0_0x59b14c[_0x1b4e68(0x272)](_0x474cec[_0x1b4e68(0x231)][_0x1b4e68(0x1c9)]),'model':_0x1b4e68(0x233)}},'source':'mcp-filesystem'})[_0x1b4e68(0x217)](()=>{});}}else{if(_0x30d1c1['terminationReason']===_0x1b4e68(0x1a5)&&_0x30d1c1['errors'][_0x1b4e68(0x269)]>0x0){const _0x3e8ed9=_0x30d1c1['errors'][_0x1b4e68(0x1d2)](_0x167ae3=>_0x167ae3[_0x1b4e68(0x291)])[_0x1b4e68(0x250)](';\x20');_0x4eb1ee=_0x1b4e68(0x286)+_0x3e8ed9;const _0x256fd4=_0x3e8ed9[_0x1b4e68(0x225)]()[_0x1b4e68(0x235)]('timeout')||_0x3e8ed9['toLowerCase']()[_0x1b4e68(0x235)]('timed\x20out')||_0x3e8ed9[_0x1b4e68(0x225)]()[_0x1b4e68(0x235)](_0x1b4e68(0x1e9)),_0x56b2e7=_0x30d1c1['finish']?.[_0x1b4e68(0x26e)]?.[_0x1b4e68(0x1fe)],_0xe3ba2c=_0x30d1c1[_0x1b4e68(0x206)][0x0];reportMorphError({'error_message':_0x3e8ed9,'error_type':_0x256fd4?_0x1b4e68(0x1c1):_0xe3ba2c?.[_0x1b4e68(0x234)]?.[_0x1b4e68(0x24e)]||_0x1b4e68(0x27c),'context':{'tool':_0x1b4e68(0x27e),'repo_path':_0x474cec[_0x1b4e68(0x231)]['repo_path'],'query':_0x474cec['data'][_0x1b4e68(0x273)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x30d1c1[_0x1b4e68(0x18f)],'error_count':_0x30d1c1[_0x1b4e68(0x206)][_0x1b4e68(0x269)],'is_timeout':_0x256fd4,'timings':_0x30d1c1[_0x1b4e68(0x266)],'files_attempted':_0x56b2e7?.['map'](_0x155f2a=>({'path':_0x155f2a[_0x1b4e68(0x2ad)],'lines':_0x155f2a['lines']})),'tool_calls':_0x3db202(_0x30d1c1[_0x1b4e68(0x1ca)]),'messages':_0x30d1c1[_0x1b4e68(0x1ca)]?.['map'](_0x2634da=>({'role':_0x2634da[_0x1b4e68(0x1b2)],'content':_0x2634da[_0x1b4e68(0x2a6)]})),'request_content':{'query':_0x474cec[_0x1b4e68(0x231)][_0x1b4e68(0x273)],'repo_path':_0x474cec['data'][_0x1b4e68(0x1c9)],'repoRoot':a0_0x59b14c[_0x1b4e68(0x272)](_0x474cec['data'][_0x1b4e68(0x1c9)]),'model':_0x1b4e68(0x233)}},'stack_trace':_0xe3ba2c?.[_0x1b4e68(0x28c)]||undefined,'source':_0x1b4e68(0x2a4)})[_0x1b4e68(0x217)](()=>{});}else _0x4eb1ee=_0x1b4e68(0x1fb);}return{'content':[{'type':'text','text':_0x4eb1ee}]};}catch(_0x2acdef){const _0x2c9b5e=_0x2acdef instanceof Error?_0x2acdef[_0x1b4e68(0x291)]:String(_0x2acdef),_0xea0919=_0x2c9b5e[_0x1b4e68(0x225)]()[_0x1b4e68(0x235)](_0x1b4e68(0x1f2))||_0x2c9b5e[_0x1b4e68(0x225)]()[_0x1b4e68(0x235)](_0x1b4e68(0x28b))||_0x2c9b5e[_0x1b4e68(0x225)]()[_0x1b4e68(0x235)](_0x1b4e68(0x1e9))||_0x2acdef instanceof Error&&_0x2acdef[_0x1b4e68(0x24e)]==='TimeoutError';return reportMorphError({'error_message':_0x2c9b5e,'error_type':_0xea0919?'TimeoutError':_0x2acdef instanceof Error?_0x2acdef[_0x1b4e68(0x234)]['name']:'UnknownError','context':{'tool':'warpgrep_codebase_search','repo_path':_0x474cec[_0x1b4e68(0x231)][_0x1b4e68(0x1c9)],'query':_0x474cec[_0x1b4e68(0x231)][_0x1b4e68(0x273)],'model':_0x1b4e68(0x233),'is_timeout':_0xea0919,'exception_phase':_0x1b4e68(0x1cb),'request_content':{'query':_0x474cec[_0x1b4e68(0x231)][_0x1b4e68(0x273)],'repo_path':_0x474cec[_0x1b4e68(0x231)]['repo_path'],'repoRoot':a0_0x59b14c[_0x1b4e68(0x272)](_0x474cec[_0x1b4e68(0x231)][_0x1b4e68(0x1c9)]),'model':_0x1b4e68(0x233)}},'stack_trace':_0x2acdef instanceof Error?_0x2acdef[_0x1b4e68(0x28c)]:undefined,'source':_0x1b4e68(0x2a4)})[_0x1b4e68(0x217)](()=>{}),{'content':[{'type':_0x1b4e68(0x28a),'text':_0x1b4e68(0x211)+_0x2c9b5e}],'isError':![]};}}case _0x1b4e68(0x2a3):{const _0x56b48a=WarpGrepGitHubArgsSchema['safeParse'](_0x55427b);if(!_0x56b48a[_0x1b4e68(0x23d)])return{'content':[{'type':_0x1b4e68(0x28a),'text':'Invalid\x20arguments:\x20'+_0x56b48a['error']}],'isError':!![]};const _0x1b5408=_0x56b48a[_0x1b4e68(0x231)]['github_url']||_0x56b48a[_0x1b4e68(0x231)][_0x1b4e68(0x29d)];if(!_0x1b5408)return{'content':[{'type':_0x1b4e68(0x28a),'text':_0x1b4e68(0x1e8)}],'isError':!![]};const _0x4590f4=MORPH_API_KEY;if(!_0x4590f4)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x3d5b3e=Date[_0x1b4e68(0x1a1)]();console[_0x1b4e68(0x28e)](_0x1b4e68(0x254)+_0x1b5408+_0x1b4e68(0x230)+_0x56b48a[_0x1b4e68(0x231)]['search_string']+'\x22');try{const _0x3512aa=new WarpGrepClient({'morphApiKey':_0x4590f4,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x367e21=await _0x3512aa[_0x1b4e68(0x1d6)]({'query':_0x56b48a[_0x1b4e68(0x231)][_0x1b4e68(0x273)],'github':_0x1b5408,'branch':_0x56b48a[_0x1b4e68(0x231)][_0x1b4e68(0x1bf)]}),_0x3fd533=Date[_0x1b4e68(0x1a1)]()-_0x3d5b3e;console[_0x1b4e68(0x28e)](_0x1b4e68(0x1cd)+_0x3fd533+'ms.\x20Success:\x20'+_0x367e21[_0x1b4e68(0x23d)]);const _0x437802=formatResult(_0x367e21);return{'content':[{'type':_0x1b4e68(0x28a),'text':_0x437802}]};}catch(_0x15caee){const _0x14c047=Date[_0x1b4e68(0x1a1)]()-_0x3d5b3e,_0xac5a0=_0x15caee instanceof Error?_0x15caee[_0x1b4e68(0x291)]:String(_0x15caee);return console[_0x1b4e68(0x28e)](_0x1b4e68(0x196)+_0x14c047+_0x1b4e68(0x199),_0xac5a0),reportMorphError({'error_message':_0xac5a0,'error_type':_0x15caee instanceof Error?_0x15caee[_0x1b4e68(0x234)][_0x1b4e68(0x24e)]:_0x1b4e68(0x275),'context':{'tool':'warpgrep_github_search','github_url':_0x1b5408,'search_string':_0x56b48a[_0x1b4e68(0x231)][_0x1b4e68(0x273)],'branch':_0x56b48a[_0x1b4e68(0x231)]['branch']},'stack_trace':_0x15caee instanceof Error?_0x15caee[_0x1b4e68(0x28c)]:undefined,'source':_0x1b4e68(0x2a4),'tool':_0x1b4e68(0x2a3),'latency_ms':_0x14c047})[_0x1b4e68(0x217)](()=>{}),{'content':[{'type':_0x1b4e68(0x28a),'text':_0x1b4e68(0x29b)+_0xac5a0}],'isError':![]};}}case _0x1b4e68(0x24f):{const _0x54350a=CodebaseSearchArgsSchema[_0x1b4e68(0x190)](_0x55427b);if(!_0x54350a[_0x1b4e68(0x23d)])return{'content':[{'type':_0x1b4e68(0x28a),'text':_0x1b4e68(0x203)+_0x54350a['error']}],'isError':!![]};try{const _0x28d93d=MORPH_API_KEY;if(!_0x28d93d)throw new Error(_0x1b4e68(0x1ae));const _0xe0c9ef=_0x54350a[_0x1b4e68(0x231)][_0x1b4e68(0x194)],_0x574c46=await executeCodebaseSearch({'query':_0x54350a['data'][_0x1b4e68(0x27a)],'target_directories':_0xe0c9ef,'limit':_0x54350a['data'][_0x1b4e68(0x246)]},{'apiKey':_0x28d93d,'repoId':_0x54350a['data'][_0x1b4e68(0x1ad)],'branch':_0x54350a[_0x1b4e68(0x231)]['branch'],'commitHash':_0x54350a[_0x1b4e68(0x231)]['commitHash'],'debug':![]});if(!_0x574c46['success'])return{'content':[{'type':'text','text':_0x1b4e68(0x25f)+_0x574c46[_0x1b4e68(0x28e)]}],'isError':!![]};const _0x493adf=_0x574c46[_0x1b4e68(0x256)]['length']===0x0?'No\x20results\x20found\x20for\x20query:\x20\x22'+_0x54350a[_0x1b4e68(0x231)][_0x1b4e68(0x27a)]+'\x22':'Found\x20'+_0x574c46[_0x1b4e68(0x256)]['length']+_0x1b4e68(0x29a)+_0x574c46[_0x1b4e68(0x29c)][_0x1b4e68(0x192)]+'ms:\x0a\x0a'+_0x574c46[_0x1b4e68(0x256)][_0x1b4e68(0x1d2)]((_0x1b0bbb,_0x44da56)=>_0x44da56+0x1+'.\x20'+_0x1b0bbb[_0x1b4e68(0x19e)]+'\x20('+(_0x1b0bbb[_0x1b4e68(0x25b)]*0x64)['toFixed'](0x1)+_0x1b4e68(0x24a)+(_0x1b4e68(0x1e0)+_0x1b0bbb[_0x1b4e68(0x205)]+'-'+_0x1b0bbb['endLine']+'\x0a')+(_0x1b4e68(0x23a)+_0x1b0bbb[_0x1b4e68(0x2a6)]['substring'](0x0,0xc8)+(_0x1b0bbb[_0x1b4e68(0x2a6)][_0x1b4e68(0x269)]>0xc8?_0x1b4e68(0x252):'')+'\x0a'))[_0x1b4e68(0x250)]('\x0a');return{'content':[{'type':_0x1b4e68(0x28a),'text':_0x493adf}]};}catch(_0x24de63){const _0x51c5b7=_0x24de63 instanceof Error?_0x24de63['message']:String(_0x24de63);return reportMorphError({'error_message':_0x51c5b7,'error_type':_0x24de63 instanceof Error?_0x24de63[_0x1b4e68(0x234)][_0x1b4e68(0x24e)]:'UnknownError','context':{'tool':_0x1b4e68(0x24f),'query':_0x54350a[_0x1b4e68(0x231)][_0x1b4e68(0x27a)],'repo_id':_0x54350a[_0x1b4e68(0x231)]['repoId'],'target_directories':_0x54350a[_0x1b4e68(0x231)][_0x1b4e68(0x194)]},'stack_trace':_0x24de63 instanceof Error?_0x24de63[_0x1b4e68(0x28c)]:undefined,'source':_0x1b4e68(0x2a4)})['catch'](()=>{}),{'content':[{'type':_0x1b4e68(0x28a),'text':_0x1b4e68(0x286)+_0x51c5b7}],'isError':!![]};}}default:throw new Error(_0x1b4e68(0x223)+_0x305adc);}}catch(_0x3c635a){const _0x5b7af0=_0x3c635a instanceof Error?_0x3c635a[_0x1b4e68(0x291)]:String(_0x3c635a);return reportMorphError({'error_message':_0x5b7af0,'error_type':_0x3c635a instanceof Error?_0x3c635a[_0x1b4e68(0x234)][_0x1b4e68(0x24e)]:'UnknownError','context':{'tool':name,'arguments':args?JSON['stringify'](args)[_0x1b4e68(0x242)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x3c635a instanceof Error?_0x3c635a[_0x1b4e68(0x28c)]:undefined,'source':_0x1b4e68(0x2a4)})[_0x1b4e68(0x217)](()=>{}),{'content':[{'type':_0x1b4e68(0x28a),'text':_0x1b4e68(0x286)+_0x5b7af0}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x445d5a){const _0x5bfc27=a0_0x1f8383,_0x3a2c29=await getValidRootDirectories(_0x445d5a);if(_0x3a2c29[_0x5bfc27(0x269)]>0x0)allowedDirectories=[..._0x3a2c29],console[_0x5bfc27(0x28e)]('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x3a2c29[_0x5bfc27(0x269)]+'\x20valid\x20directories');else{console[_0x5bfc27(0x28e)](_0x5bfc27(0x270));if(ENABLE_WORKSPACE_MODE)try{const _0x553d72=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x553d72&&(allowedDirectories=[_0x553d72],console[_0x5bfc27(0x28e)]('Fallback:\x20Using\x20workspace\x20root\x20'+_0x553d72));}catch(_0x537d60){console['error'](_0x5bfc27(0x25e)+_0x537d60);}}}server[a0_0x1f8383(0x1f6)](RootsListChangedNotificationSchema,async()=>{const _0x56a453=a0_0x1f8383;try{const _0x5225b3=await server['listRoots']();_0x5225b3&&_0x56a453(0x1fd)in _0x5225b3&&await updateAllowedDirectoriesFromRoots(_0x5225b3[_0x56a453(0x1fd)]);}catch(_0x307349){console[_0x56a453(0x28e)]('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x307349 instanceof Error?_0x307349[_0x56a453(0x291)]:String(_0x307349));}}),server[a0_0x1f8383(0x216)]=async()=>{const _0x5eb64d=a0_0x1f8383,_0x305734=server[_0x5eb64d(0x258)]();if(_0x305734?.[_0x5eb64d(0x1fd)])try{const _0x56eb96=await server[_0x5eb64d(0x22d)]();_0x56eb96&&_0x5eb64d(0x1fd)in _0x56eb96?await updateAllowedDirectoriesFromRoots(_0x56eb96['roots']):console[_0x5eb64d(0x28e)](_0x5eb64d(0x1df));}catch(_0x59a34b){console[_0x5eb64d(0x28e)](_0x5eb64d(0x22a),_0x59a34b instanceof Error?_0x59a34b[_0x5eb64d(0x291)]:String(_0x59a34b));}else{if(allowedDirectories[_0x5eb64d(0x269)]>0x0)console['error'](_0x5eb64d(0x249),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x5eb64d(0x28e)](_0x5eb64d(0x19c));else throw new Error(_0x5eb64d(0x239));}}};async function runServer(){const _0x4e6308=a0_0x1f8383,_0x2ac8b7=new StdioServerTransport();await server[_0x4e6308(0x1be)](_0x2ac8b7),console[_0x4e6308(0x28e)]('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x4e6308(0x269)]===0x0&&console[_0x4e6308(0x28e)](_0x4e6308(0x20c));}runServer()[a0_0x1f8383(0x217)](_0x554ce7=>{const _0x34391a=a0_0x1f8383;console[_0x34391a(0x28e)]('Fatal\x20error\x20running\x20server:',_0x554ce7),process[_0x34391a(0x1d9)](0x1);});
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x44a0b5,_0x26c23){const _0xc4caec=a1_0x6d19,_0x5ac67a=_0x44a0b5();while(!![]){try{const _0x430103=-parseInt(_0xc4caec(0x167))/0x1+-parseInt(_0xc4caec(0x16f))/0x2+parseInt(_0xc4caec(0x171))/0x3*(parseInt(_0xc4caec(0x16c))/0x4)+-parseInt(_0xc4caec(0x161))/0x5*(-parseInt(_0xc4caec(0x166))/0x6)+-parseInt(_0xc4caec(0x16a))/0x7*(parseInt(_0xc4caec(0x162))/0x8)+-parseInt(_0xc4caec(0x16e))/0x9*(-parseInt(_0xc4caec(0x163))/0xa)+parseInt(_0xc4caec(0x16b))/0xb;if(_0x430103===_0x26c23)break;else _0x5ac67a['push'](_0x5ac67a['shift']());}catch(_0x58acc0){_0x5ac67a['push'](_0x5ac67a['shift']());}}}(a1_0x38a8,0x35022));function a1_0x6d19(_0x32b636,_0x11f712){_0x32b636=_0x32b636-0x15f;const _0x38a8d6=a1_0x38a8();let _0x6d1905=_0x38a8d6[_0x32b636];return _0x6d1905;}import a1_0x2b2a83 from'path';function a1_0x38a8(){const _0xee645b=['201914QczYXk','replace','1893mDMyGK','/mnt/','charAt','test','startsWith','match','join','11410yRqQcF','17384LcUmlC','10pLwJXO','normalize','substring','408SOxtdw','324716jiOnNr','toUpperCase','trim','1239QpCAEi','4694327dLwaSi','2736LqGmCk','slice','124911YqeJzo'];a1_0x38a8=function(){return _0xee645b;};return a1_0x38a8();}import a1_0x29c392 from'os';export function convertToWindowsPath(_0x232426){const _0x5edd47=a1_0x6d19;if(_0x232426['startsWith'](_0x5edd47(0x172))){const _0x32c29f=_0x232426[_0x5edd47(0x173)](0x5)[_0x5edd47(0x168)](),_0xf095ef=_0x232426[_0x5edd47(0x16d)](0x6)['replace'](/\//g,'\x5c');return _0x32c29f+':'+_0xf095ef;}if(_0x232426[_0x5edd47(0x15f)](/^\/[a-zA-Z]\//)){const _0x2cd1c9=_0x232426[_0x5edd47(0x173)](0x1)[_0x5edd47(0x168)](),_0x48bd35=_0x232426[_0x5edd47(0x16d)](0x2)[_0x5edd47(0x170)](/\//g,'\x5c');return _0x2cd1c9+':'+_0x48bd35;}if(_0x232426['match'](/^[a-zA-Z]:/))return _0x232426[_0x5edd47(0x170)](/\//g,'\x5c');return _0x232426;}export function normalizePath(_0x3180ec){const _0x22a2f3=a1_0x6d19;_0x3180ec=_0x3180ec[_0x22a2f3(0x169)]()['replace'](/^["']|["']$/g,'');const _0x53069e=_0x3180ec['startsWith']('/')&&!_0x3180ec[_0x22a2f3(0x15f)](/^\/mnt\/[a-z]\//i)&&!_0x3180ec[_0x22a2f3(0x15f)](/^\/[a-zA-Z]\//);if(_0x53069e)return _0x3180ec[_0x22a2f3(0x170)](/\/+/g,'/')[_0x22a2f3(0x170)](/\/+$/,'');_0x3180ec=convertToWindowsPath(_0x3180ec);if(_0x3180ec[_0x22a2f3(0x175)]('\x5c\x5c')){let _0x5b3ad1=_0x3180ec;_0x5b3ad1=_0x5b3ad1[_0x22a2f3(0x170)](/^\\{2,}/,'\x5c\x5c');const _0x551d52=_0x5b3ad1[_0x22a2f3(0x165)](0x2)['replace'](/\\\\/g,'\x5c');_0x3180ec='\x5c\x5c'+_0x551d52;}else _0x3180ec=_0x3180ec[_0x22a2f3(0x170)](/\\\\/g,'\x5c');let _0x43d5ee=a1_0x2b2a83[_0x22a2f3(0x164)](_0x3180ec);_0x3180ec[_0x22a2f3(0x175)]('\x5c\x5c')&&!_0x43d5ee['startsWith']('\x5c\x5c')&&(_0x43d5ee='\x5c'+_0x43d5ee);if(_0x43d5ee[_0x22a2f3(0x15f)](/^[a-zA-Z]:/)){let _0x2b41ac=_0x43d5ee[_0x22a2f3(0x170)](/\//g,'\x5c');return/^[a-z]:/[_0x22a2f3(0x174)](_0x2b41ac)&&(_0x2b41ac=_0x2b41ac['charAt'](0x0)[_0x22a2f3(0x168)]()+_0x2b41ac['slice'](0x1)),_0x2b41ac;}return _0x43d5ee[_0x22a2f3(0x170)](/\//g,'\x5c');}export function expandHome(_0x408bd2){const _0x56ad94=a1_0x6d19;if(_0x408bd2[_0x56ad94(0x175)]('~/')||_0x408bd2==='~')return a1_0x2b2a83[_0x56ad94(0x160)](a1_0x29c392['homedir'](),_0x408bd2[_0x56ad94(0x16d)](0x1));return _0x408bd2;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x5cce2c,_0x3c519c){const _0x5b0bf3=a2_0x6f4b,_0x57a7fb=_0x5cce2c();while(!![]){try{const _0x3536e1=parseInt(_0x5b0bf3(0xc2))/0x1*(parseInt(_0x5b0bf3(0xc8))/0x2)+-parseInt(_0x5b0bf3(0xc9))/0x3*(parseInt(_0x5b0bf3(0xd8))/0x4)+parseInt(_0x5b0bf3(0xc7))/0x5*(parseInt(_0x5b0bf3(0xcf))/0x6)+-parseInt(_0x5b0bf3(0xd7))/0x7*(parseInt(_0x5b0bf3(0xd9))/0x8)+parseInt(_0x5b0bf3(0xcb))/0x9*(-parseInt(_0x5b0bf3(0xce))/0xa)+-parseInt(_0x5b0bf3(0xc4))/0xb*(-parseInt(_0x5b0bf3(0xd0))/0xc)+-parseInt(_0x5b0bf3(0xd2))/0xd*(-parseInt(_0x5b0bf3(0xd5))/0xe);if(_0x3536e1===_0x3c519c)break;else _0x57a7fb['push'](_0x57a7fb['shift']());}catch(_0x1d6dd3){_0x57a7fb['push'](_0x57a7fb['shift']());}}}(a2_0x3d46,0xb6cc6));function a2_0x6f4b(_0x3a8749,_0x439b0b){_0x3a8749=_0x3a8749-0xc2;const _0x3d4666=a2_0x3d46();let _0x6f4baf=_0x3d4666[_0x3a8749];return _0x6f4baf;}function a2_0x3d46(){const _0x296697=['isArray','283735LUOaqF','2BBXaSi','6qxFKZT','normalize','32598CEkAkZ','sep','includes','1370COUbOc','42CFPfts','2184PVDcii','length','260MzgGEr','startsWith','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','975352FBMFMn','string','7CavzrL','1426004FatavP','11912176SNtqUe','285749IRzRkM','resolve','82841Bwjrfy','isAbsolute'];a2_0x3d46=function(){return _0x296697;};return a2_0x3d46();}import a2_0x55faa8 from'path';export function isPathWithinAllowedDirectories(_0x5493f2,_0x3289c5){const _0x128cd0=a2_0x6f4b;if(typeof _0x5493f2!==_0x128cd0(0xd6)||!Array[_0x128cd0(0xc6)](_0x3289c5))return![];if(!_0x5493f2||_0x3289c5[_0x128cd0(0xd1)]===0x0)return![];if(_0x5493f2[_0x128cd0(0xcd)]('\x00'))return![];let _0x5ed99a;try{_0x5ed99a=a2_0x55faa8[_0x128cd0(0xc3)](a2_0x55faa8[_0x128cd0(0xca)](_0x5493f2));}catch{return![];}if(!a2_0x55faa8[_0x128cd0(0xc5)](_0x5ed99a))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x3289c5['some'](_0x3217af=>{const _0x1932a7=_0x128cd0;if(typeof _0x3217af!==_0x1932a7(0xd6)||!_0x3217af)return![];if(_0x3217af[_0x1932a7(0xcd)]('\x00'))return![];let _0x4bee8f;try{_0x4bee8f=a2_0x55faa8[_0x1932a7(0xc3)](a2_0x55faa8['normalize'](_0x3217af));}catch{return![];}if(!a2_0x55faa8[_0x1932a7(0xc5)](_0x4bee8f))throw new Error(_0x1932a7(0xd4));if(_0x5ed99a===_0x4bee8f)return!![];if(_0x4bee8f===a2_0x55faa8[_0x1932a7(0xcc)])return _0x5ed99a['startsWith'](a2_0x55faa8['sep']);return _0x5ed99a[_0x1932a7(0xd3)](_0x4bee8f+a2_0x55faa8[_0x1932a7(0xcc)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x2698d0,_0x500b82){const _0x366455=a3_0x1547,_0x503fe6=_0x2698d0();while(!![]){try{const _0x3e86e9=parseInt(_0x366455(0x19e))/0x1*(parseInt(_0x366455(0x1a0))/0x2)+-parseInt(_0x366455(0x19b))/0x3*(-parseInt(_0x366455(0x195))/0x4)+parseInt(_0x366455(0x18e))/0x5*(-parseInt(_0x366455(0x18f))/0x6)+parseInt(_0x366455(0x192))/0x7*(-parseInt(_0x366455(0x19d))/0x8)+-parseInt(_0x366455(0x1a3))/0x9+parseInt(_0x366455(0x1a6))/0xa+parseInt(_0x366455(0x198))/0xb*(parseInt(_0x366455(0x196))/0xc);if(_0x3e86e9===_0x500b82)break;else _0x503fe6['push'](_0x503fe6['shift']());}catch(_0x38fbd7){_0x503fe6['push'](_0x503fe6['shift']());}}}(a3_0x9886,0x81a19));function a3_0x1547(_0x1df7c7,_0x4be11d){_0x1df7c7=_0x1df7c7-0x18d;const _0x98868c=a3_0x9886();let _0x1547f1=_0x98868c[_0x1df7c7];return _0x1547f1;}import{promises as a3_0x37f859}from'fs';import a3_0x452f61 from'path';import a3_0xbeb12f from'os';import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x58f219){const _0x4ec631=a3_0x1547;try{const _0x17bccb=_0x58f219['startsWith'](_0x4ec631(0x1a1))?_0x58f219[_0x4ec631(0x18d)](0x7):_0x58f219,_0x3e72ab=_0x17bccb[_0x4ec631(0x1a7)]('~/')||_0x17bccb==='~'?a3_0x452f61['join'](a3_0xbeb12f[_0x4ec631(0x19c)](),_0x17bccb['slice'](0x1)):_0x17bccb,_0xee50c8=a3_0x452f61[_0x4ec631(0x190)](_0x3e72ab),_0x111966=await a3_0x37f859[_0x4ec631(0x1a4)](_0xee50c8);return normalizePath(_0x111966);}catch{return null;}}function a3_0x9886(){const _0x63f6b=['uri','414JonVEe','homedir','5491088ZnOXpm','1AbzXoE','non-directory\x20root','2101186lhMNXW','file://','error','5225751qNPNex','realpath','invalid\x20path\x20or\x20inaccessible','830540jVYYIN','startsWith','Skipping\x20','slice','15aTXsjp','895836rPJkNW','resolve','Skipping\x20invalid\x20directory:\x20','7QZFzHP','\x20due\x20to\x20error:\x20','stat','17012tBNvFB','6304212gzTTzW','isDirectory','11nTMYvg','push'];a3_0x9886=function(){return _0x63f6b;};return a3_0x9886();}function formatDirectoryError(_0x1a1f91,_0x4a1219,_0x4ba62f){const _0x4727ac=a3_0x1547;if(_0x4ba62f)return _0x4727ac(0x1a8)+_0x4ba62f+':\x20'+_0x1a1f91;const _0x45e0ef=_0x4a1219 instanceof Error?_0x4a1219['message']:String(_0x4a1219);return _0x4727ac(0x191)+_0x1a1f91+_0x4727ac(0x193)+_0x45e0ef;}export async function getValidRootDirectories(_0x4d65dd){const _0x5eb0c1=a3_0x1547,_0x1bd33f=[];for(const _0x4231eb of _0x4d65dd){const _0x5e5acf=await parseRootUri(_0x4231eb['uri']);if(!_0x5e5acf){console[_0x5eb0c1(0x1a2)](formatDirectoryError(_0x4231eb[_0x5eb0c1(0x19a)],undefined,_0x5eb0c1(0x1a5)));continue;}try{const _0x3df140=await a3_0x37f859[_0x5eb0c1(0x194)](_0x5e5acf);_0x3df140[_0x5eb0c1(0x197)]()?_0x1bd33f[_0x5eb0c1(0x199)](_0x5e5acf):console[_0x5eb0c1(0x1a2)](formatDirectoryError(_0x5e5acf,undefined,_0x5eb0c1(0x19f)));}catch(_0x40c795){console['error'](formatDirectoryError(_0x5e5acf,_0x40c795));}}return _0x1bd33f;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.110",
|
|
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.127",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|