@morphllm/morphmcp 0.8.107 → 0.8.108
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_0xf26819=a0_0x3807;(function(_0x25fec2,_0x3dfbe6){const _0x23ccd5=a0_0x3807,_0x64b1e7=_0x25fec2();while(!![]){try{const _0x21f902=parseInt(_0x23ccd5(0x29a))/0x1+-parseInt(_0x23ccd5(0x2ad))/0x2*(-parseInt(_0x23ccd5(0x248))/0x3)+parseInt(_0x23ccd5(0x2c8))/0x4*(-parseInt(_0x23ccd5(0x235))/0x5)+-parseInt(_0x23ccd5(0x277))/0x6*(parseInt(_0x23ccd5(0x2a8))/0x7)+parseInt(_0x23ccd5(0x2cc))/0x8*(-parseInt(_0x23ccd5(0x214))/0x9)+parseInt(_0x23ccd5(0x2f7))/0xa+parseInt(_0x23ccd5(0x25e))/0xb*(-parseInt(_0x23ccd5(0x2c0))/0xc);if(_0x21f902===_0x3dfbe6)break;else _0x64b1e7['push'](_0x64b1e7['shift']());}catch(_0x47d89e){_0x64b1e7['push'](_0x64b1e7['shift']());}}}(a0_0x301f,0x9d036));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_0x2a0874 from'fs/promises';import a0_0x400803 from'path';import a0_0x11cd39 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_0x57d5ba from'axios';function fixPathRepetition(_0x3ea6f7){const _0x472001=a0_0x3807,_0x3489aa=_0x3ea6f7[_0x472001(0x287)](a0_0x400803[_0x472001(0x2ba)])[_0x472001(0x2a0)](Boolean);if(_0x3489aa['length']<0x2)return null;for(let _0x4a4921=Math[_0x472001(0x2e9)](_0x3489aa[_0x472001(0x2ee)]/0x2);_0x4a4921>=0x1;_0x4a4921--){for(let _0x141b1d=0x0;_0x141b1d<=_0x3489aa[_0x472001(0x2ee)]-0x2*_0x4a4921;_0x141b1d++){const _0x258e3a=_0x3489aa[_0x472001(0x2ac)](_0x141b1d,_0x141b1d+_0x4a4921),_0x35dff6=_0x3489aa[_0x472001(0x2ac)](_0x141b1d+_0x4a4921,_0x141b1d+0x2*_0x4a4921);if(_0x258e3a['every']((_0x17e51c,_0x4216ff)=>_0x17e51c===_0x35dff6[_0x4216ff])){const _0xcb501c=[..._0x3489aa['slice'](0x0,_0x141b1d),..._0x3489aa['slice'](_0x141b1d+_0x4a4921)];return a0_0x400803[_0x472001(0x2ba)]+_0xcb501c[_0x472001(0x247)](a0_0x400803[_0x472001(0x2ba)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x303c79=a0_0x3807;try{const _0x3add8c=require(_0x303c79(0x26a));return _0x3add8c[_0x303c79(0x29f)]??_0x303c79(0x2b0);}catch(_0x3e8795){return console['error'](_0x303c79(0x2b5),_0x3e8795),_0x303c79(0x2b0);}}function printHelp(){const _0x49cdff=a0_0x3807;console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x49cdff(0x244)](_0x49cdff(0x300)),console[_0x49cdff(0x244)](_0x49cdff(0x21e)),console['log'](_0x49cdff(0x24f)),console[_0x49cdff(0x244)](_0x49cdff(0x23b)),console[_0x49cdff(0x244)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x49cdff(0x244)](_0x49cdff(0x21f)),console[_0x49cdff(0x244)](_0x49cdff(0x219)),console['log'](_0x49cdff(0x256));}const cliArgs=process['argv']['slice'](0x2),VERSION_FLAGS=new Set([a0_0xf26819(0x2c2),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0xf26819(0x2a1)](_0x2e223b=>VERSION_FLAGS[a0_0xf26819(0x2a5)](_0x2e223b))&&(console[a0_0xf26819(0x244)](a0_0xf26819(0x2a4)+getPackageVersion()),process[a0_0xf26819(0x26d)](0x0));cliArgs[a0_0xf26819(0x2a1)](_0x5e52bd=>HELP_FLAGS[a0_0xf26819(0x2a5)](_0x5e52bd))&&(printHelp(),process[a0_0xf26819(0x26d)](0x0));function getCliArg(_0x1ddbad){const _0x42ead3=a0_0xf26819;for(let _0x8f99c7=0x0;_0x8f99c7<cliArgs['length'];_0x8f99c7++){const _0x496e6b=cliArgs[_0x8f99c7];if(_0x496e6b['startsWith']('--'+_0x1ddbad+'='))return _0x496e6b[_0x42ead3(0x2ac)](('--'+_0x1ddbad+'=')[_0x42ead3(0x2ee)]);if(_0x496e6b==='--'+_0x1ddbad&&_0x8f99c7+0x1<cliArgs['length'])return cliArgs[_0x8f99c7+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0xf26819(0x2ee)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0xf26819(0x2a5)](arg))continue;if(arg['startsWith'](a0_0xf26819(0x25b)))continue;if(arg===a0_0xf26819(0x2d9)){i++;continue;}args[a0_0xf26819(0x21b)](arg);}const ALL_TOOLS=[a0_0xf26819(0x2ab),a0_0xf26819(0x268),a0_0xf26819(0x27a),a0_0xf26819(0x21c)],DEFAULT_TOOLS=['edit_file','warpgrep_codebase_search',a0_0xf26819(0x27a)],ENABLED_TOOLS=process[a0_0xf26819(0x23a)]['ENABLED_TOOLS']?process[a0_0xf26819(0x23a)][a0_0xf26819(0x294)]===a0_0xf26819(0x223)?ALL_TOOLS:process[a0_0xf26819(0x23a)][a0_0xf26819(0x294)]['split'](',')[a0_0xf26819(0x273)](_0xd95d23=>_0xd95d23['trim']()):DEFAULT_TOOLS;console[a0_0xf26819(0x290)](a0_0xf26819(0x1f2)+ENABLED_TOOLS[a0_0xf26819(0x247)](',\x20'));function a0_0x3807(_0x1312a8,_0x5a728f){_0x1312a8=_0x1312a8-0x1ea;const _0x301f50=a0_0x301f();let _0x380747=_0x301f50[_0x1312a8];return _0x380747;}const WORKSPACE_ROOT=process['env'][a0_0xf26819(0x1fc)]||process[a0_0xf26819(0x23a)]['PWD']||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0xf26819(0x23a)][a0_0xf26819(0x302)]!==a0_0xf26819(0x2c6),MORPH_API_KEY=getCliArg('api-key')??process[a0_0xf26819(0x23a)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0xf26819(0x23a)][a0_0xf26819(0x288)],MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0xf26819(0x212)]?parseInt(process[a0_0xf26819(0x23a)][a0_0xf26819(0x212)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0xf26819(0x25a)](a0_0xf26819(0x2e7))&&!MORPH_API_KEY[a0_0xf26819(0x25a)](a0_0xf26819(0x228))&&console[a0_0xf26819(0x290)](a0_0xf26819(0x249));async function reportMorphError(_0x1ce3fc){const _0x4d69ba=a0_0xf26819;try{await a0_0x57d5ba['post'](_0x4d69ba(0x269),{..._0x1ce3fc,'timestamp':new Date()[_0x4d69ba(0x237)](),'source':_0x1ce3fc[_0x4d69ba(0x1ff)]||_0x4d69ba(0x281)},{'timeout':0x1388,'headers':{'Content-Type':_0x4d69ba(0x21d),'Authorization':_0x4d69ba(0x218)+MORPH_API_KEY}});}catch{}}args[a0_0xf26819(0x2ee)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console['error'](a0_0xf26819(0x29b)),console['error']('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),console[a0_0xf26819(0x290)](a0_0xf26819(0x22d)),console[a0_0xf26819(0x290)](a0_0xf26819(0x204)),console['error'](a0_0xf26819(0x267)),console['error'](a0_0xf26819(0x28d)));function normalizePath(_0x49e911){const _0x51701f=a0_0xf26819;return a0_0x400803[_0x51701f(0x278)](_0x49e911);}function expandHome(_0x24b67e){const _0x5f1e31=a0_0xf26819;if(_0x24b67e[_0x5f1e31(0x25a)]('~/')||_0x24b67e==='~')return a0_0x400803['join'](a0_0x11cd39['homedir'](),_0x24b67e[_0x5f1e31(0x2ac)](0x1));return _0x24b67e;}let allowedDirectories=await Promise[a0_0xf26819(0x223)](args[a0_0xf26819(0x273)](async _0x451648=>{const _0x34d30a=a0_0xf26819,_0x4bfdd6=expandHome(_0x451648),_0x16baa7=a0_0x400803['resolve'](_0x4bfdd6);try{const _0x3d39af=await a0_0x2a0874[_0x34d30a(0x1ef)](_0x16baa7);return normalizePath(_0x3d39af);}catch(_0x8f5f7a){return normalizePath(_0x16baa7);}}));function a0_0x301f(){const _0x4574ee=['Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','message','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','added\x20','version','filter','some','-\x20Read\x20file\x20`','object','@morphllm/morphmcp\x20','has','boolean','role','2015167APUHNA','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','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','edit_file','slice','1073602SbNNVX','Fallback:\x20Using\x20workspace\x20root\x20','timed\x20out','unknown','linesRemoved','WarpGrep\x20sub-tool\x20errors:\x20','SymlinkError','Created\x20File','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','FileReadError','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Warning:\x20Workspace\x20fallback\x20failed:\x20','Specific\x20commit\x20hash\x20to\x20search','sep','success','now','[could\x20not\x20read\x20file:\x20','ENOENT','Query\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','4398936JWCzhF','ms:','--version','Preview\x20changes\x20without\x20applying\x20them.','Found\x20','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','false','node_modules','154984aZYlCe','searchTimeMs','grep\x20\x27','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','2099256eczGit','requiresApiKey','files','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','Benefits:\x0a','.\x20Changes:\x20','morph-warp-grep-v1-1111v0','terminationReason','messages','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','repo_path','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','TimeoutError','--api-key','isArray','completed_with_file_errors','code','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.','FileNotFound','toFixed','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','getClientCapabilities','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','dryRun','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','UnknownError','sk-','Error\x20running\x20fast\x20context\x20search:\x20','floor','substring','match','Warning:\x20','endLine','length','optional','rerankScore','\x20results\x20in\x20','linesModified','GitHub\x20repository\x20URL\x20or\x20\x27owner/repo\x27\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27\x20or\x20\x27https://github.com/vercel/next.js\x27)','\x20-\x20','trim','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','6659940xNXfUc','params','grep','terminated','number','user','setRequestHandler','utf-8','\x20chars)','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','\x20is\x20not\x20a\x20directory','ENABLE_WORKSPACE_MODE','Search\x20failed:\x20','etimedout','targetDirectories','\x20(new\x20file)','Error:\x20','realpath','Max\x20results\x20to\x20return','search_string','Enabled\x20tools:\x20','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','\x20for:\x20\x22','errors','Cargo.toml','ReadError','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','-\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','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','WORKSPACE_ROOT','read','RipgrepNotAvailable','source','package.json','timings','dirname','stat','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','instruction','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','...','lines','code_edit','content','constructor','assistant','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','includes','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','Workspace\x20mode\x20enabled:\x20Using\x20','MORPH_WARP_GREP_TIMEOUT','safeParse','9ZuqucE','path','commitHash','metadata','Bearer\x20','\x20\x20morph-mcp','query','push','codebase_search','application/json','\x0aOptions:','\x0aExamples:','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','tsconfig.json','completed','all','\x20\x20\x20','query_type','Morph\x20Edit\x20','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','morph-','morph-mcp','array','.\x20Path:\x20','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','0.2.0','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','WarpGrepError','catch','Unknown\x20tool:\x20','pyproject.toml','finish','30ZonzoH','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','toISOString','[warpgrep_github_search]\x20Failed\x20in\x20','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','env','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','warn','toLowerCase','Error\x20accessing\x20directory\x20','describe','access','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','runWarpGrep_call','completionId','log','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','min','join','3JIpvWh','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','\x22>\x0aError\x20reading\x20file:\x20','❌\x20Morph\x20Edit\x20Failed:\x20','default','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','[warpgrep_github_search]\x20Searching\x20','stats','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','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','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','GitHub\x20search\x20failed:\x20','stack','startsWith','--api-key=','SubToolError','string','11MPpdua','BinaryFile','Repository\x20identifier','<file\x20path=\x22','branch','Applied','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','basename','name','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','warpgrep_codebase_search','https://morphllm.com/api/error-report','../package.json','enum','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','exit','repoId','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Parent\x20directory\x20does\x20not\x20exist:\x20',',\x20modified\x20','</file>','map','Fatal\x20error\x20running\x20server:','morph-v3-fast','searchGitHub','6EoUFzR','normalize','oninitialized','warpgrep_github_search','linesAdded','resolve','startLine','readFile','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Invalid\x20arguments:\x20','mcp-filesystem','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','listRoots','data','stringify','ms:\x0a\x0a','split','MORPH_API_URL','roots',',\x20removed\x20','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','-\x20Listed\x20directory\x20`','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','ToolException','description','error','setNotificationHandler','results','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','ENABLED_TOOLS','text','Morph\x20Edit\x20Preview','inputSchema','No\x20results\x20found\x20for\x20query:\x20\x22','github_url','589673MOpSJr'];a0_0x301f=function(){return _0x4574ee;};return a0_0x301f();}if(ENABLE_WORKSPACE_MODE&&args[a0_0xf26819(0x2ee)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),console[a0_0xf26819(0x290)](a0_0xf26819(0x211)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x42e7ba){console[a0_0xf26819(0x290)]('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x42e7ba);}async function detectWorkspaceRoot(_0x1a44b7){const _0x38d7ba=a0_0xf26819;let _0x292051=a0_0x400803[_0x38d7ba(0x27c)](_0x1a44b7);const _0x4ee4c6=['.git','.vscode',_0x38d7ba(0x200),_0x38d7ba(0x1f6),_0x38d7ba(0x233),'go.mod','.cursor',_0x38d7ba(0x221),'composer.json'];while(_0x292051!==a0_0x400803[_0x38d7ba(0x202)](_0x292051)){for(const _0x595164 of _0x4ee4c6){const _0xd8ab1=a0_0x400803[_0x38d7ba(0x247)](_0x292051,_0x595164);try{return await a0_0x2a0874[_0x38d7ba(0x240)](_0xd8ab1),normalizePath(_0x292051);}catch{}}_0x292051=a0_0x400803['dirname'](_0x292051);}return normalizePath(_0x1a44b7);}await Promise[a0_0xf26819(0x223)](args[a0_0xf26819(0x273)](async _0x45418e=>{const _0x98e17b=a0_0xf26819;try{const _0x4645db=await a0_0x2a0874[_0x98e17b(0x203)](expandHome(_0x45418e));!_0x4645db['isDirectory']()&&(console[_0x98e17b(0x290)]('Error:\x20'+_0x45418e+_0x98e17b(0x301)),process[_0x98e17b(0x26d)](0x1));}catch(_0x50f630){console[_0x98e17b(0x290)](_0x98e17b(0x23e)+_0x45418e+':',_0x50f630),process[_0x98e17b(0x26d)](0x1);}}));async function validatePath(_0x170e4e){const _0x8f0ebb=a0_0xf26819,_0x2b678c=expandHome(_0x170e4e),_0x1b584d=a0_0x400803[_0x8f0ebb(0x27c)](_0x2b678c);try{const _0x25f025=await a0_0x2a0874['realpath'](_0x1b584d);return _0x25f025;}catch(_0x538a96){if(_0x538a96[_0x8f0ebb(0x2dc)]===_0x8f0ebb(0x2be)){const _0x611a30=a0_0x400803['dirname'](_0x1b584d);try{const _0x482a7c=await a0_0x2a0874[_0x8f0ebb(0x1ef)](_0x611a30);return a0_0x400803[_0x8f0ebb(0x247)](_0x482a7c,a0_0x400803[_0x8f0ebb(0x265)](_0x1b584d));}catch{throw new Error(_0x8f0ebb(0x270)+_0x611a30);}}throw _0x538a96;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0xf26819(0x25d)](),'code_edit':z[a0_0xf26819(0x25d)]()[a0_0xf26819(0x23f)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0xf26819(0x25d)]()[a0_0xf26819(0x23f)](a0_0xf26819(0x239)),'dryRun':z[a0_0xf26819(0x2a6)]()['default'](![])[a0_0xf26819(0x23f)](a0_0xf26819(0x2c3))}),WarpGrepArgsSchema=z[a0_0xf26819(0x2a3)]({'search_string':z['string']()[a0_0xf26819(0x23f)](a0_0xf26819(0x2cf)),'repo_path':z[a0_0xf26819(0x25d)]()['describe'](a0_0xf26819(0x257)),'query_type':z[a0_0xf26819(0x26b)]([a0_0xf26819(0x24c),'node_modules'])[a0_0xf26819(0x2ef)]()[a0_0xf26819(0x23f)](a0_0xf26819(0x2bf))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z['string']()['describe'](a0_0xf26819(0x2cf)),'github_url':z[a0_0xf26819(0x25d)]()[a0_0xf26819(0x23f)](a0_0xf26819(0x2f3)),'branch':z[a0_0xf26819(0x25d)]()[a0_0xf26819(0x2ef)]()[a0_0xf26819(0x23f)](a0_0xf26819(0x1f3))}),CodebaseSearchArgsSchema=z[a0_0xf26819(0x2a3)]({'query':z[a0_0xf26819(0x25d)]()[a0_0xf26819(0x23f)]('Natural\x20language\x20query\x20to\x20search\x20for\x20code'),'repoId':z[a0_0xf26819(0x25d)]()[a0_0xf26819(0x23f)](a0_0xf26819(0x260)),'branch':z['string']()['optional']()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0xf26819(0x25d)]()['optional']()['describe'](a0_0xf26819(0x2b9)),'targetDirectories':z[a0_0xf26819(0x22a)](z[a0_0xf26819(0x25d)]())[a0_0xf26819(0x24c)]([])[a0_0xf26819(0x23f)](a0_0xf26819(0x28b)),'limit':z[a0_0xf26819(0x2fb)]()[a0_0xf26819(0x2ef)]()['default'](0xa)[a0_0xf26819(0x23f)](a0_0xf26819(0x1f0))}),server=new Server({'name':a0_0xf26819(0x229),'version':a0_0xf26819(0x22e)},{'capabilities':{'tools':{}}});server[a0_0xf26819(0x2fd)](ListToolsRequestSchema,async()=>{const _0x184635=a0_0xf26819,_0x73c421=[{'name':'edit_file','description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+_0x184635(0x22c)+_0x184635(0x22f)+_0x184635(0x1fa)+_0x184635(0x2d0)+_0x184635(0x206)+_0x184635(0x2e0)+_0x184635(0x20e)+_0x184635(0x2d5)+_0x184635(0x24e)+_0x184635(0x236)+_0x184635(0x250)+'For\x20deletions:\x0a'+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x184635(0x2e2)+'Rules:\x0a'+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0x184635(0x26f)+_0x184635(0x29d)+_0x184635(0x293)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x184635(0x245),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x184635(0x268),'description':_0x184635(0x2d7)+_0x184635(0x2e5)+_0x184635(0x2aa)+_0x184635(0x241)+_0x184635(0x282)+_0x184635(0x254)+_0x184635(0x1f8)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':_0x184635(0x21c),'description':'**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a'+_0x184635(0x220)+'🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a'+_0x184635(0x2d0)+_0x184635(0x24d)+_0x184635(0x26c)+'-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a'+'-\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'+_0x184635(0x2c5)+_0x184635(0x2e3),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x327f97=_0x73c421['filter'](_0x76872d=>{const _0xc4d73e=_0x184635;if(!ENABLED_TOOLS['includes'](_0x76872d[_0xc4d73e(0x266)]))return![];if(_0xc4d73e(0x2cd)in _0x76872d&&_0x76872d[_0xc4d73e(0x2cd)]&&!MORPH_API_KEY)return console['error'](_0xc4d73e(0x2ec)+_0x76872d[_0xc4d73e(0x266)]+_0xc4d73e(0x210)),![];return!![];});return{'tools':_0x327f97[_0x184635(0x273)](_0x523f2d=>({'name':_0x523f2d[_0x184635(0x266)],'description':_0x523f2d[_0x184635(0x28f)],'inputSchema':_0x523f2d[_0x184635(0x297)]}))};}),server[a0_0xf26819(0x2fd)](CallToolRequestSchema,async _0xc92c99=>{const _0x54e05e=a0_0xf26819;try{const {name:_0x51d0fe,arguments:_0x2ad7d0}=_0xc92c99[_0x54e05e(0x2f8)];switch(_0x51d0fe){case _0x54e05e(0x2ab):{const _0x198e5a=MorphEditFileArgsSchema[_0x54e05e(0x213)](_0x2ad7d0);if(!_0x198e5a[_0x54e05e(0x2bb)])throw new Error(_0x54e05e(0x2f6)+_0x198e5a['error']);const _0x3e004f=await validatePath(_0x198e5a[_0x54e05e(0x284)][_0x54e05e(0x215)]);let _0x398650=null,_0x32edf3=!![],_0x4fdb8c=null;try{_0x398650=await a0_0x2a0874[_0x54e05e(0x27e)](_0x3e004f,_0x54e05e(0x2fe));}catch(_0x29c095){const _0x5dcfe9=_0x29c095[_0x54e05e(0x2dc)];_0x5dcfe9==='ENOENT'?(_0x32edf3=![],_0x398650=''):(_0x4fdb8c='Failed\x20to\x20read\x20file:\x20'+(_0x5dcfe9||'unknown')+_0x54e05e(0x2f4)+(_0x29c095 instanceof Error?_0x29c095[_0x54e05e(0x29c)]:String(_0x29c095)),console[_0x54e05e(0x290)]('Warning:\x20'+_0x4fdb8c));}let _0x3c7e44;try{const _0x131b75=MORPH_API_KEY;if(!_0x131b75)throw new Error(_0x54e05e(0x27f));const _0x299bdb=a0_0x400803[_0x54e05e(0x202)](_0x3e004f),_0x4499a7=a0_0x400803[_0x54e05e(0x265)](_0x3e004f),_0x4e103e=await executeEditFile({'target_filepath':_0x4499a7,'code_edit':_0x198e5a[_0x54e05e(0x284)][_0x54e05e(0x209)],'instructions':_0x198e5a[_0x54e05e(0x284)]['instruction']},{'morphApiKey':_0x131b75,'morphApiUrl':MORPH_API_URL,'baseDir':_0x299bdb,'autoWrite':!_0x198e5a[_0x54e05e(0x284)]['dryRun'],'generateUdiff':![],'debug':![]});_0x3c7e44=_0x4e103e[_0x54e05e(0x243)];if(!_0x4e103e[_0x54e05e(0x2bb)])throw new Error(_0x4e103e['error']||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x445b34=_0x4e103e['changes'],_0x2310f8=_0x54e05e(0x29e)+_0x445b34[_0x54e05e(0x27b)]+_0x54e05e(0x28a)+_0x445b34[_0x54e05e(0x2b1)]+_0x54e05e(0x271)+_0x445b34[_0x54e05e(0x2f2)];if(_0x198e5a['data'][_0x54e05e(0x2e4)])return{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x296)+(_0x32edf3?'':_0x54e05e(0x1ed))+':\x20'+_0x198e5a['data'][_0x54e05e(0x205)]+_0x54e05e(0x2d1)+_0x2310f8+_0x54e05e(0x22b)+_0x198e5a[_0x54e05e(0x284)][_0x54e05e(0x215)]+'.'}]};return{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x226)+(_0x32edf3?_0x54e05e(0x263):_0x54e05e(0x2b4))+':\x20'+_0x198e5a['data'][_0x54e05e(0x205)]+'.\x20Changes:\x20'+_0x2310f8+_0x54e05e(0x22b)+_0x198e5a[_0x54e05e(0x284)][_0x54e05e(0x215)]+'.'}]};}catch(_0x1271a7){const _0x2d0baa=_0x1271a7 instanceof Error?_0x1271a7[_0x54e05e(0x29c)]:String(_0x1271a7);return reportMorphError({'error_message':_0x2d0baa,'error_type':_0x1271a7 instanceof Error?_0x1271a7[_0x54e05e(0x20b)][_0x54e05e(0x266)]:_0x54e05e(0x2e6),'context':{'tool':_0x54e05e(0x2ab),'completion_id':_0x3c7e44,'file_path':_0x198e5a[_0x54e05e(0x284)]['path'],'validated_path':_0x3e004f,'instruction':_0x198e5a[_0x54e05e(0x284)][_0x54e05e(0x205)],'model':_0x54e05e(0x275),'dry_run':_0x198e5a['data']['dryRun'],'file_exists':_0x32edf3,'file_read_error':_0x4fdb8c,'file_readable':_0x398650!==null,'request_content':{'path':_0x198e5a['data'][_0x54e05e(0x215)],'code_edit':_0x198e5a[_0x54e05e(0x284)]['code_edit'],'instruction':_0x198e5a['data'][_0x54e05e(0x205)],'original_code':_0x398650!==null?_0x398650[_0x54e05e(0x2ee)]>0xc350?_0x398650[_0x54e05e(0x2ea)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x398650[_0x54e05e(0x2ee)]+_0x54e05e(0x2ff):_0x398650:_0x54e05e(0x2bd)+(_0x4fdb8c||'unknown\x20error')+']','original_code_length':_0x398650?.[_0x54e05e(0x2ee)]??0x0,'model':'morph-v3-fast','dry_run':_0x198e5a[_0x54e05e(0x284)]['dryRun']}},'stack_trace':_0x1271a7 instanceof Error?_0x1271a7['stack']:undefined,'source':_0x54e05e(0x281)})[_0x54e05e(0x231)](()=>{}),{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x24b)+_0x2d0baa}],'isError':!![]};}}case'warpgrep_codebase_search':{const _0x295e95=WarpGrepArgsSchema[_0x54e05e(0x213)](_0x2ad7d0);if(!_0x295e95['success'])return{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x280)+_0x295e95['error']}],'isError':!![]};const _0x1d208d=_0x14c5de=>{const _0x55048e=_0x54e05e,_0x13b38c=[];for(const _0x9bed44 of _0x14c5de||[]){const _0x2fd379=_0x9bed44[_0x55048e(0x2a7)],_0x2568d5=_0x9bed44[_0x55048e(0x20a)];if(_0x2fd379==='assistant'&&_0x2568d5){const _0x45e44e=_0x2568d5['split']('\x0a')[_0x55048e(0x2a0)](_0x5c94e9=>_0x5c94e9[_0x55048e(0x2f5)]());for(const _0x2acfbe of _0x45e44e){const _0xe2bbb6=_0x2acfbe['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0xe2bbb6){_0x13b38c[_0x55048e(0x21b)](_0x55048e(0x2ca)+_0xe2bbb6[0x1]+'\x27\x20'+_0xe2bbb6[0x2]);continue;}const _0x1ac00d=_0x2acfbe[_0x55048e(0x2eb)](/^read\s+(.+)$/);if(_0x1ac00d){_0x13b38c[_0x55048e(0x21b)]('read\x20'+_0x1ac00d[0x1]);continue;}const _0xf0b48f=_0x2acfbe[_0x55048e(0x2eb)](/^list_directory\s+(.+)$/);if(_0xf0b48f){_0x13b38c[_0x55048e(0x21b)]('list_directory\x20'+_0xf0b48f[0x1]);continue;}}}}return _0x13b38c;},_0x3f0b91=_0x3d8018=>{const _0x39f229=_0x54e05e,_0x2e59d2=[];if(!_0x3d8018||!Array[_0x39f229(0x2da)](_0x3d8018))return _0x2e59d2;const _0x5dd9e4=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x39f229(0x2de),'tool':_0x39f229(0x1fd)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x39f229(0x1fd)},{'pattern':/\[READ ERROR\]/,'error_type':_0x39f229(0x1f7),'tool':_0x39f229(0x1fd)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x39f229(0x25f),'tool':_0x39f229(0x1fd)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':_0x39f229(0x2f9)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x39f229(0x1fe),'tool':_0x39f229(0x2f9)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x39f229(0x25f),'tool':_0x39f229(0x1fd)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x39f229(0x1fd)},{'pattern':/not a text file/,'error_type':_0x39f229(0x25f),'tool':_0x39f229(0x1fd)},{'pattern':/symbolic link/,'error_type':_0x39f229(0x2b3),'tool':_0x39f229(0x1fd)},{'pattern':/Error reading file:/,'error_type':_0x39f229(0x1f7),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x39f229(0x28e),'tool':_0x39f229(0x2b0)}];let _0x16379d=0x0;for(const _0x40bb0c of _0x3d8018){if(_0x40bb0c['role']===_0x39f229(0x2fc)){_0x16379d++;const _0x387e15=_0x40bb0c['content'];if(!_0x387e15||typeof _0x387e15!==_0x39f229(0x25d))continue;for(const {pattern:_0x3be962,error_type:_0x15fa6a,tool:_0x53bd40}of _0x5dd9e4){const _0x1c44b4=_0x387e15[_0x39f229(0x2eb)](new RegExp(_0x3be962[_0x39f229(0x1ff)],'g'));if(_0x1c44b4)for(const _0x31e3c5 of _0x1c44b4){const _0x3eca3c=_0x387e15['indexOf'](_0x31e3c5),_0x3ff5f8=_0x387e15['substring'](_0x3eca3c,Math[_0x39f229(0x246)](_0x3eca3c+0xc8,_0x387e15[_0x39f229(0x2ee)]));_0x2e59d2[_0x39f229(0x21b)]({'tool':_0x53bd40,'error_type':_0x15fa6a,'error_message':_0x3ff5f8[_0x39f229(0x287)]('\x0a')[0x0],'turn':_0x16379d});}}}}return _0x2e59d2;};try{const _0x4c1ab2=a0_0x400803['resolve'](_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x2d6)]),_0x594d9d=_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x225)],_0x138231=_0x594d9d===_0x54e05e(0x2c7)?{'allowNames':[_0x54e05e(0x2c7)]}:undefined,_0x3fd05d=new LocalRipgrepProvider(_0x4c1ab2,undefined,_0x138231),_0x520ba6=await runWarpGrep({'query':_0x295e95[_0x54e05e(0x284)]['search_string'],'repoRoot':_0x4c1ab2,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x3fd05d,'query_type':_0x594d9d}),_0x2c102c=_0x3f0b91(_0x520ba6['messages']);_0x2c102c[_0x54e05e(0x2ee)]>0x0&&reportMorphError({'error_message':_0x54e05e(0x2b2)+_0x2c102c[_0x54e05e(0x2ee)]+'\x20error(s)','error_type':_0x54e05e(0x25c),'level':_0x54e05e(0x23c),'tool':_0x54e05e(0x268),'context':{'repo_path':_0x295e95['data']['repo_path'],'query':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x1f1)],'model':_0x54e05e(0x2d2),'termination_reason':_0x520ba6['terminationReason'],'sub_tool_errors':_0x2c102c,'timings':_0x520ba6['timings'],'tool_calls':_0x1d208d(_0x520ba6[_0x54e05e(0x2d4)]),'messages':_0x520ba6[_0x54e05e(0x2d4)]?.[_0x54e05e(0x273)](_0x24ee9f=>({'role':_0x24ee9f['role'],'content':_0x24ee9f[_0x54e05e(0x20a)]}))},'source':_0x54e05e(0x281)})[_0x54e05e(0x231)](()=>{});let _0x5b173a='';if(_0x520ba6[_0x54e05e(0x2d3)]===_0x54e05e(0x222)&&_0x520ba6['finish']?.[_0x54e05e(0x217)]?.['files']){const _0x241989=_0x520ba6[_0x54e05e(0x234)][_0x54e05e(0x217)][_0x54e05e(0x2ce)];if(_0x241989[_0x54e05e(0x2ee)]===0x0)return _0x5b173a=_0x520ba6[_0x54e05e(0x234)]['payload']||_0x54e05e(0x2b7),{'content':[{'type':_0x54e05e(0x295),'text':_0x5b173a}]};const _0x2ec688=[],_0x221403=[_0x54e05e(0x264)];for(const _0x5ee522 of _0x520ba6['messages']){const _0x248d49=_0x5ee522[_0x54e05e(0x2a7)],_0x384216=_0x5ee522['content'];if(_0x248d49===_0x54e05e(0x20c)&&_0x384216){const _0xfcc725=_0x384216[_0x54e05e(0x287)]('\x0a')[_0x54e05e(0x2a0)](_0x4223c3=>_0x4223c3[_0x54e05e(0x2f5)]());for(const _0x7eab63 of _0xfcc725){const _0x163866=_0x7eab63[_0x54e05e(0x2eb)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x163866){_0x221403['push'](_0x54e05e(0x1f9)+_0x163866[0x1]+'\x27\x20in\x20`'+_0x163866[0x2]+'`');continue;}const _0x57c35e=_0x7eab63[_0x54e05e(0x2eb)](/^read\s+(.+)$/);if(_0x57c35e){_0x221403[_0x54e05e(0x21b)](_0x54e05e(0x2a2)+_0x57c35e[0x1]+'`');continue;}const _0x58aa25=_0x7eab63[_0x54e05e(0x2eb)](/^list_directory\s+(.+)$/);if(_0x58aa25){_0x221403[_0x54e05e(0x21b)](_0x54e05e(0x28c)+_0x58aa25[0x1]+'`');continue;}}}}_0x2ec688['push'](_0x221403[_0x54e05e(0x247)]('\x0a'));const _0x53cfe3=['','Relevant\x20context\x20found:'];for(const _0x36ae90 of _0x241989){if(_0x36ae90[_0x54e05e(0x208)]==='*')_0x53cfe3[_0x54e05e(0x21b)]('-\x20'+_0x36ae90[_0x54e05e(0x215)]+':*');else{if(Array[_0x54e05e(0x2da)](_0x36ae90['lines'])){const _0x1d8016=_0x36ae90[_0x54e05e(0x208)][_0x54e05e(0x273)](([_0x12fb3c,_0x462bc0])=>{if(_0x12fb3c===_0x462bc0)return''+_0x12fb3c;return _0x12fb3c+'-'+_0x462bc0;});_0x53cfe3[_0x54e05e(0x21b)]('-\x20'+_0x36ae90[_0x54e05e(0x215)]+':'+_0x1d8016[_0x54e05e(0x247)](','));}else _0x53cfe3[_0x54e05e(0x21b)]('-\x20'+_0x36ae90['path']+':*');}}_0x53cfe3[_0x54e05e(0x21b)](''),_0x2ec688[_0x54e05e(0x21b)](_0x53cfe3[_0x54e05e(0x247)]('\x0a')),_0x2ec688['push']('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x23f9a1=[];for(const _0x1cf5ee of _0x241989){let _0x153109=a0_0x400803['resolve'](_0x295e95[_0x54e05e(0x284)]['repo_path'],_0x1cf5ee[_0x54e05e(0x215)]),_0x2aa57e=null,_0x31140a=null;try{_0x2aa57e=await a0_0x2a0874['readFile'](_0x153109,{'encoding':_0x54e05e(0x2fe)});}catch(_0x4a74e8){const _0x58e8b7=fixPathRepetition(_0x153109);if(_0x58e8b7)try{_0x2aa57e=await a0_0x2a0874[_0x54e05e(0x27e)](_0x58e8b7,{'encoding':'utf-8'}),_0x153109=_0x58e8b7;}catch{_0x31140a=_0x4a74e8 instanceof Error?_0x4a74e8:new Error(String(_0x4a74e8));}else _0x31140a=_0x4a74e8 instanceof Error?_0x4a74e8:new Error(String(_0x4a74e8));}if(_0x2aa57e!==null){const _0x4a27d3=_0x2aa57e[_0x54e05e(0x287)](/\r?\n/),_0x21f059=[_0x54e05e(0x261)+_0x1cf5ee[_0x54e05e(0x215)]+'\x22>'];if(_0x1cf5ee['lines']==='*'||!Array[_0x54e05e(0x2da)](_0x1cf5ee[_0x54e05e(0x208)]))for(let _0x367e4a=0x1;_0x367e4a<=_0x4a27d3['length'];_0x367e4a++){const _0x288173=_0x4a27d3[_0x367e4a-0x1];_0x21f059['push'](_0x367e4a+'|\x20'+_0x288173);}else for(const [_0x17f200,_0x2f9526]of _0x1cf5ee[_0x54e05e(0x208)]){_0x21f059['length']>0x1&&_0x21f059[_0x54e05e(0x21b)]('');for(let _0x57f23a=_0x17f200;_0x57f23a<=_0x2f9526&&_0x57f23a<=_0x4a27d3[_0x54e05e(0x2ee)];_0x57f23a++){const _0xbcca89=_0x4a27d3[_0x57f23a-0x1];_0x21f059['push'](_0x57f23a+'|\x20'+_0xbcca89);}}_0x21f059[_0x54e05e(0x21b)](_0x54e05e(0x272)),_0x23f9a1[_0x54e05e(0x21b)](_0x21f059['join']('\x0a'));}else _0x23f9a1[_0x54e05e(0x21b)](_0x54e05e(0x261)+_0x1cf5ee[_0x54e05e(0x215)]+_0x54e05e(0x24a)+(_0x31140a?.[_0x54e05e(0x29c)]||'Unknown\x20error')+'\x0a</file>');}_0x2ec688['push'](_0x23f9a1[_0x54e05e(0x247)]('\x0a\x0a')),_0x5b173a=_0x2ec688[_0x54e05e(0x247)]('\x0a');const _0x1d7d25=_0x520ba6['errors']?.[_0x54e05e(0x2a0)](_0x57c761=>_0x57c761[_0x54e05e(0x29c)]?.['startsWith']('File\x20read\x20error:'))||[];if(_0x1d7d25['length']>0x0){const _0x24d21b=_0x1d7d25[_0x54e05e(0x273)](_0x2a6780=>_0x2a6780[_0x54e05e(0x29c)])[_0x54e05e(0x247)](';\x20');reportMorphError({'error_message':_0x24d21b,'error_type':_0x54e05e(0x2b6),'context':{'tool':_0x54e05e(0x268),'repo_path':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x2d6)],'query':_0x295e95['data'][_0x54e05e(0x1f1)],'model':_0x54e05e(0x2d2),'termination_reason':_0x54e05e(0x2db),'error_count':_0x1d7d25[_0x54e05e(0x2ee)],'is_timeout':![],'timings':_0x520ba6[_0x54e05e(0x201)],'files_attempted':_0x241989[_0x54e05e(0x273)](_0x3864d1=>({'path':_0x3864d1[_0x54e05e(0x215)],'lines':_0x3864d1['lines']})),'tool_calls':_0x1d208d(_0x520ba6[_0x54e05e(0x2d4)]),'messages':_0x520ba6[_0x54e05e(0x2d4)]?.[_0x54e05e(0x273)](_0x4ac9af=>({'role':_0x4ac9af[_0x54e05e(0x2a7)],'content':_0x4ac9af[_0x54e05e(0x20a)]})),'request_content':{'query':_0x295e95['data'][_0x54e05e(0x1f1)],'repo_path':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x2d6)],'repoRoot':a0_0x400803[_0x54e05e(0x27c)](_0x295e95['data'][_0x54e05e(0x2d6)]),'model':_0x54e05e(0x2d2)}},'source':_0x54e05e(0x281)})['catch'](()=>{});}}else{if(_0x520ba6[_0x54e05e(0x2d3)]===_0x54e05e(0x2fa)&&_0x520ba6[_0x54e05e(0x1f5)][_0x54e05e(0x2ee)]>0x0){const _0x1e9805=_0x520ba6['errors']['map'](_0x1c02fc=>_0x1c02fc['message'])[_0x54e05e(0x247)](';\x20');_0x5b173a=_0x54e05e(0x1ee)+_0x1e9805;const _0x2f6b87=_0x1e9805[_0x54e05e(0x23d)]()['includes']('timeout')||_0x1e9805[_0x54e05e(0x23d)]()['includes'](_0x54e05e(0x2af))||_0x1e9805[_0x54e05e(0x23d)]()['includes'](_0x54e05e(0x1eb)),_0x5672c2=_0x520ba6['finish']?.['metadata']?.[_0x54e05e(0x2ce)],_0x2b8b89=_0x520ba6['errors'][0x0];reportMorphError({'error_message':_0x1e9805,'error_type':_0x2f6b87?_0x54e05e(0x2d8):_0x2b8b89?.['constructor']?.[_0x54e05e(0x266)]||_0x54e05e(0x230),'context':{'tool':_0x54e05e(0x268),'repo_path':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x2d6)],'query':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x1f1)],'model':_0x54e05e(0x2d2),'termination_reason':_0x520ba6[_0x54e05e(0x2d3)],'error_count':_0x520ba6[_0x54e05e(0x1f5)][_0x54e05e(0x2ee)],'is_timeout':_0x2f6b87,'timings':_0x520ba6[_0x54e05e(0x201)],'files_attempted':_0x5672c2?.[_0x54e05e(0x273)](_0x323ab0=>({'path':_0x323ab0[_0x54e05e(0x215)],'lines':_0x323ab0[_0x54e05e(0x208)]})),'tool_calls':_0x1d208d(_0x520ba6['messages']),'messages':_0x520ba6[_0x54e05e(0x2d4)]?.['map'](_0x28786f=>({'role':_0x28786f['role'],'content':_0x28786f[_0x54e05e(0x20a)]})),'request_content':{'query':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x1f1)],'repo_path':_0x295e95['data'][_0x54e05e(0x2d6)],'repoRoot':a0_0x400803[_0x54e05e(0x27c)](_0x295e95[_0x54e05e(0x284)]['repo_path']),'model':_0x54e05e(0x2d2)}},'stack_trace':_0x2b8b89?.[_0x54e05e(0x259)]||undefined,'source':_0x54e05e(0x281)})['catch'](()=>{});}else _0x5b173a=_0x54e05e(0x1fb);}return{'content':[{'type':_0x54e05e(0x295),'text':_0x5b173a}]};}catch(_0x24f69f){const _0x209244=_0x24f69f instanceof Error?_0x24f69f[_0x54e05e(0x29c)]:String(_0x24f69f),_0x108dc1=_0x209244[_0x54e05e(0x23d)]()[_0x54e05e(0x20f)]('timeout')||_0x209244['toLowerCase']()['includes']('timed\x20out')||_0x209244[_0x54e05e(0x23d)]()[_0x54e05e(0x20f)](_0x54e05e(0x1eb))||_0x24f69f instanceof Error&&_0x24f69f[_0x54e05e(0x266)]===_0x54e05e(0x2d8);return reportMorphError({'error_message':_0x209244,'error_type':_0x108dc1?'TimeoutError':_0x24f69f instanceof Error?_0x24f69f[_0x54e05e(0x20b)][_0x54e05e(0x266)]:_0x54e05e(0x2e6),'context':{'tool':_0x54e05e(0x268),'repo_path':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x2d6)],'query':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x1f1)],'model':_0x54e05e(0x2d2),'is_timeout':_0x108dc1,'exception_phase':_0x54e05e(0x242),'request_content':{'query':_0x295e95['data'][_0x54e05e(0x1f1)],'repo_path':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x2d6)],'repoRoot':a0_0x400803['resolve'](_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x2d6)]),'model':_0x54e05e(0x2d2)}},'stack_trace':_0x24f69f instanceof Error?_0x24f69f[_0x54e05e(0x259)]:undefined,'source':_0x54e05e(0x281)})[_0x54e05e(0x231)](()=>{}),{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x2e8)+_0x209244}],'isError':![]};}}case _0x54e05e(0x27a):{const _0x4a4594=WarpGrepGitHubArgsSchema[_0x54e05e(0x213)](_0x2ad7d0);if(!_0x4a4594[_0x54e05e(0x2bb)])return{'content':[{'type':_0x54e05e(0x295),'text':'Invalid\x20arguments:\x20'+_0x4a4594['error']}],'isError':!![]};const _0x20ef02=MORPH_API_KEY;if(!_0x20ef02)throw new Error(_0x54e05e(0x27f));const _0x2c5bda=Date[_0x54e05e(0x2bc)]();console[_0x54e05e(0x290)](_0x54e05e(0x252)+_0x4a4594[_0x54e05e(0x284)][_0x54e05e(0x299)]+_0x54e05e(0x1f4)+_0x4a4594[_0x54e05e(0x284)][_0x54e05e(0x1f1)]+'\x22');try{const _0x3bb3c1=new WarpGrepClient({'morphApiKey':_0x20ef02,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x269103=await _0x3bb3c1[_0x54e05e(0x276)]({'query':_0x4a4594[_0x54e05e(0x284)][_0x54e05e(0x1f1)],'github':_0x4a4594[_0x54e05e(0x284)][_0x54e05e(0x299)],'branch':_0x4a4594[_0x54e05e(0x284)]['branch']}),_0x4608f9=Date[_0x54e05e(0x2bc)]()-_0x2c5bda;console['error']('[warpgrep_github_search]\x20Done\x20in\x20'+_0x4608f9+'ms.\x20Success:\x20'+_0x269103[_0x54e05e(0x2bb)]);const _0x55472d=formatResult(_0x269103);return{'content':[{'type':_0x54e05e(0x295),'text':_0x55472d}]};}catch(_0x3770ea){const _0x5df86d=Date[_0x54e05e(0x2bc)]()-_0x2c5bda,_0xd5762f=_0x3770ea instanceof Error?_0x3770ea['message']:String(_0x3770ea);return console[_0x54e05e(0x290)](_0x54e05e(0x238)+_0x5df86d+_0x54e05e(0x2c1),_0xd5762f),reportMorphError({'error_message':_0xd5762f,'error_type':_0x3770ea instanceof Error?_0x3770ea[_0x54e05e(0x20b)][_0x54e05e(0x266)]:'UnknownError','context':{'tool':'warpgrep_github_search','github_url':_0x4a4594[_0x54e05e(0x284)]['github_url'],'search_string':_0x4a4594[_0x54e05e(0x284)]['search_string'],'branch':_0x4a4594['data'][_0x54e05e(0x262)]},'stack_trace':_0x3770ea instanceof Error?_0x3770ea['stack']:undefined,'source':_0x54e05e(0x281),'tool':'warpgrep_github_search','latency_ms':_0x5df86d})[_0x54e05e(0x231)](()=>{}),{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x258)+_0xd5762f}],'isError':![]};}}case'codebase_search':{const _0x282a96=CodebaseSearchArgsSchema[_0x54e05e(0x213)](_0x2ad7d0);if(!_0x282a96[_0x54e05e(0x2bb)])return{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x280)+_0x282a96[_0x54e05e(0x290)]}],'isError':!![]};try{const _0x2481e9=MORPH_API_KEY;if(!_0x2481e9)throw new Error(_0x54e05e(0x227));const _0x18b314=_0x282a96[_0x54e05e(0x284)][_0x54e05e(0x1ec)],_0x43431a=await executeCodebaseSearch({'query':_0x282a96[_0x54e05e(0x284)][_0x54e05e(0x21a)],'target_directories':_0x18b314,'limit':_0x282a96['data']['limit']},{'apiKey':_0x2481e9,'repoId':_0x282a96[_0x54e05e(0x284)][_0x54e05e(0x26e)],'branch':_0x282a96[_0x54e05e(0x284)][_0x54e05e(0x262)],'commitHash':_0x282a96['data'][_0x54e05e(0x216)],'debug':![]});if(!_0x43431a['success'])return{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x1ea)+_0x43431a[_0x54e05e(0x290)]}],'isError':!![]};const _0x3500c3=_0x43431a[_0x54e05e(0x292)][_0x54e05e(0x2ee)]===0x0?_0x54e05e(0x298)+_0x282a96['data'][_0x54e05e(0x21a)]+'\x22':_0x54e05e(0x2c4)+_0x43431a['results']['length']+_0x54e05e(0x2f1)+_0x43431a[_0x54e05e(0x253)][_0x54e05e(0x2c9)]+_0x54e05e(0x286)+_0x43431a['results'][_0x54e05e(0x273)]((_0x1989fa,_0x1b8f96)=>_0x1b8f96+0x1+'.\x20'+_0x1989fa['filepath']+'\x20('+(_0x1989fa[_0x54e05e(0x2f0)]*0x64)[_0x54e05e(0x2df)](0x1)+'%\x20match)\x0a'+('\x20\x20\x20Lines\x20'+_0x1989fa[_0x54e05e(0x27d)]+'-'+_0x1989fa[_0x54e05e(0x2ed)]+'\x0a')+(_0x54e05e(0x224)+_0x1989fa['content']['substring'](0x0,0xc8)+(_0x1989fa['content'][_0x54e05e(0x2ee)]>0xc8?_0x54e05e(0x207):'')+'\x0a'))[_0x54e05e(0x247)]('\x0a');return{'content':[{'type':'text','text':_0x3500c3}]};}catch(_0x487ee5){const _0x938f50=_0x487ee5 instanceof Error?_0x487ee5['message']:String(_0x487ee5);return reportMorphError({'error_message':_0x938f50,'error_type':_0x487ee5 instanceof Error?_0x487ee5[_0x54e05e(0x20b)][_0x54e05e(0x266)]:'UnknownError','context':{'tool':_0x54e05e(0x21c),'query':_0x282a96[_0x54e05e(0x284)]['query'],'repo_id':_0x282a96['data'][_0x54e05e(0x26e)],'target_directories':_0x282a96[_0x54e05e(0x284)][_0x54e05e(0x1ec)]},'stack_trace':_0x487ee5 instanceof Error?_0x487ee5[_0x54e05e(0x259)]:undefined,'source':'mcp-filesystem'})[_0x54e05e(0x231)](()=>{}),{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x1ee)+_0x938f50}],'isError':!![]};}}default:throw new Error(_0x54e05e(0x232)+_0x51d0fe);}}catch(_0xb5f39d){const _0x438af3=_0xb5f39d instanceof Error?_0xb5f39d['message']:String(_0xb5f39d);return reportMorphError({'error_message':_0x438af3,'error_type':_0xb5f39d instanceof Error?_0xb5f39d[_0x54e05e(0x20b)][_0x54e05e(0x266)]:_0x54e05e(0x2e6),'context':{'tool':name,'arguments':args?JSON[_0x54e05e(0x285)](args)[_0x54e05e(0x2ea)](0x0,0x1f4):undefined,'mcp_server_version':_0x54e05e(0x22e)},'stack_trace':_0xb5f39d instanceof Error?_0xb5f39d[_0x54e05e(0x259)]:undefined,'source':_0x54e05e(0x281)})[_0x54e05e(0x231)](()=>{}),{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x1ee)+_0x438af3}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x19cc5e){const _0x22323f=a0_0xf26819,_0x4ae9f0=await getValidRootDirectories(_0x19cc5e);if(_0x4ae9f0[_0x22323f(0x2ee)]>0x0)allowedDirectories=[..._0x4ae9f0],console['error'](_0x22323f(0x2a9)+_0x4ae9f0[_0x22323f(0x2ee)]+'\x20valid\x20directories');else{console[_0x22323f(0x290)]('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x2e8f53=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x2e8f53&&(allowedDirectories=[_0x2e8f53],console[_0x22323f(0x290)](_0x22323f(0x2ae)+_0x2e8f53));}catch(_0x43978b){console[_0x22323f(0x290)](_0x22323f(0x2b8)+_0x43978b);}}}server[a0_0xf26819(0x291)](RootsListChangedNotificationSchema,async()=>{const _0x209cc9=a0_0xf26819;try{const _0x932176=await server[_0x209cc9(0x283)]();_0x932176&&_0x209cc9(0x289)in _0x932176&&await updateAllowedDirectoriesFromRoots(_0x932176[_0x209cc9(0x289)]);}catch(_0x1623d3){console[_0x209cc9(0x290)]('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x1623d3 instanceof Error?_0x1623d3[_0x209cc9(0x29c)]:String(_0x1623d3));}}),server[a0_0xf26819(0x279)]=async()=>{const _0x44d709=a0_0xf26819,_0x4b0514=server[_0x44d709(0x2e1)]();if(_0x4b0514?.[_0x44d709(0x289)])try{const _0x3848ed=await server['listRoots']();_0x3848ed&&_0x44d709(0x289)in _0x3848ed?await updateAllowedDirectoriesFromRoots(_0x3848ed['roots']):console['error'](_0x44d709(0x251));}catch(_0x11d5c7){console[_0x44d709(0x290)](_0x44d709(0x20d),_0x11d5c7 instanceof Error?_0x11d5c7[_0x44d709(0x29c)]:String(_0x11d5c7));}else{if(allowedDirectories[_0x44d709(0x2ee)]>0x0)console[_0x44d709(0x290)](_0x44d709(0x2cb),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console['error']('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x44d709(0x2dd));}}};async function runServer(){const _0x619a72=a0_0xf26819,_0xc8fc77=new StdioServerTransport();await server['connect'](_0xc8fc77),console[_0x619a72(0x290)](_0x619a72(0x255)),allowedDirectories[_0x619a72(0x2ee)]===0x0&&console[_0x619a72(0x290)]('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()['catch'](_0x18a647=>{const _0x3e98a6=a0_0xf26819;console[_0x3e98a6(0x290)](_0x3e98a6(0x274),_0x18a647),process[_0x3e98a6(0x26d)](0x1);});
|
|
2
|
+
const a0_0x514987=a0_0xc007;(function(_0xa17b4a,_0x3cae17){const _0x3b9810=a0_0xc007,_0x35a8b1=_0xa17b4a();while(!![]){try{const _0xafa5ab=-parseInt(_0x3b9810(0x21e))/0x1*(-parseInt(_0x3b9810(0x1cb))/0x2)+parseInt(_0x3b9810(0x2dc))/0x3*(parseInt(_0x3b9810(0x299))/0x4)+-parseInt(_0x3b9810(0x1c2))/0x5*(-parseInt(_0x3b9810(0x1f9))/0x6)+parseInt(_0x3b9810(0x28c))/0x7*(parseInt(_0x3b9810(0x2a6))/0x8)+-parseInt(_0x3b9810(0x1da))/0x9*(parseInt(_0x3b9810(0x1d4))/0xa)+-parseInt(_0x3b9810(0x229))/0xb+-parseInt(_0x3b9810(0x1d1))/0xc;if(_0xafa5ab===_0x3cae17)break;else _0x35a8b1['push'](_0x35a8b1['shift']());}catch(_0x6fe9e){_0x35a8b1['push'](_0x35a8b1['shift']());}}}(a0_0x3be4,0xc64f3));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_0x3d154a from'fs/promises';import a0_0x3c2000 from'path';import a0_0x3d97a1 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';function a0_0x3be4(){const _0x12fdc3=['MORPH_WARP_GREP_TIMEOUT','-\x20Listed\x20directory\x20`','roots','access','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','commitHash','880rOxdRh','ms:','Unknown\x20error','log','completed','.vscode','normalize','toLowerCase','.git','\x20\x20\x20Lines\x20','[warpgrep_github_search]\x20Searching\x20','9197243VqGHDR','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','Max\x20results\x20to\x20return','.\x20Path:\x20','success','stack','\x20valid\x20directories','Morph\x20Edit\x20Preview','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','searchGitHub','Invalid\x20arguments:\x20','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','edit_file','timeout','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','github_url','\x20error(s)','safeParse','TimeoutError','path','indexOf','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','codebase_search','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','runWarpGrep_call','metadata','WarpGrepError','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','--help','Benefits:\x0a','❌\x20Morph\x20Edit\x20Failed:\x20','endLine','filter','terminated','node_modules','-\x20Read\x20file\x20`','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','text','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','object','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','Fallback:\x20Using\x20workspace\x20root\x20','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','stringify','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','ENOENT','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','\x0aExamples:','completionId','setRequestHandler','Morph\x20FastApply\x20failed\x20without\x20error\x20message','now','join','push','\x20results\x20in\x20','branch','morph-','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','isDirectory','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','mcp-filesystem','--version','repoId','default','instruction','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','Warning:\x20Workspace\x20fallback\x20failed:\x20','grep','\x20is\x20not\x20a\x20directory','WarpGrep\x20sub-tool\x20errors:\x20','</file>','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','limit','.\x20Changes:\x20','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','ReadError','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','ms.\x20Success:\x20','../package.json','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','timings','application/json','FileNotFound','catch','targetDirectories','SymlinkError','MORPH_API_KEY','assistant','ms:\x0a\x0a','Created\x20File','getClientCapabilities','substring','includes','\x20\x20morph-mcp','startLine','340774gmWXcx','\x20-\x20','toISOString',',\x20removed\x20','Error:\x20','https://morphllm.com/api/error-report','warpgrep_github_search','version','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','dirname','[warpgrep_github_search]\x20Failed\x20in\x20','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','connect','4WoPzHv','ToolException','constructor','filepath','some','morph-mcp','rerankScore','describe','Unknown\x20tool:\x20','FileReadError','WORKSPACE_ROOT','tsconfig.json','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','184Qxswum','--api-key','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','Bearer\x20','argv','Error\x20accessing\x20directory\x20','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','read','content','ENABLED_TOOLS','lines','messages','sep','number','File\x20read\x20error:','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','Workspace\x20mode\x20enabled:\x20Using\x20','GitHub\x20search\x20failed:\x20','dryRun','data','linesModified','finish','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','read\x20','SubToolError','setNotificationHandler','PWD','0.2.0','homedir','startsWith','unknown','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.','code_edit','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','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','string','search_string','RipgrepError','realpath','slice','[could\x20not\x20read\x20file:\x20','exit','readFile','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Specific\x20commit\x20hash\x20to\x20search','\x20for:\x20\x22','min','linesAdded','unknown\x20error','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','\x22>\x0aError\x20reading\x20file:\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','split','sk-','835446mvCdoW','morph-v3-fast','pyproject.toml','isArray','every','name','\x0aOptions:','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','Relevant\x20context\x20found:','\x0a</file>','Enabled\x20tools:\x20','Here\x20is\x20the\x20content\x20of\x20files:\x0a','requiresApiKey','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','terminationReason','\x20(new\x20file)','false','...','floor','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','linesRemoved','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','155gRtuET','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','match','.cursor','added\x20','length','toFixed','GitHub\x20repository\x20URL\x20or\x20\x27owner/repo\x27\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27\x20or\x20\x27https://github.com/vercel/next.js\x27)','@morphllm/morphmcp\x20','212wgUxpI','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','Applied','grep\x20\x27','message','--api-key=','10301520DIpuhW','\x20chars)','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','2312340DLsIty','go.mod','\x0a...\x20(truncated,\x20total:\x20','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','list_directory\x20','Rules:\x0a','9PZQULK','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','stats','has','env','UnknownError','all','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','Failed\x20to\x20read\x20file:\x20','payload','oninitialized','api-key','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','optional','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','code','RipgrepNotAvailable','utf-8','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','role','composer.json','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','Warning:\x20','completed_with_file_errors','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','warpgrep_codebase_search','trim','[warpgrep_github_search]\x20Done\x20in\x20','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','241284gzNuOe','Found\x20','Cargo.toml','\x27\x20in\x20`','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','results','morph-warp-grep-v1-1111v0','enum','files','Query\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','boolean',',\x20modified\x20','listRoots','\x20\x20\x20','timed\x20out','repo_path','basename','warn','resolve','error','query_type','inputSchema','BinaryFile','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','source','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','errors','map','<file\x20path=\x22'];a0_0x3be4=function(){return _0x12fdc3;};return a0_0x3be4();}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_0x5be7c4 from'axios';function fixPathRepetition(_0x35147f){const _0x275fda=a0_0xc007,_0x280c66=_0x35147f['split'](a0_0x3c2000[_0x275fda(0x2b2)])['filter'](Boolean);if(_0x280c66['length']<0x2)return null;for(let _0x25f9dc=Math[_0x275fda(0x1be)](_0x280c66[_0x275fda(0x1c7)]/0x2);_0x25f9dc>=0x1;_0x25f9dc--){for(let _0x33ccb1=0x0;_0x33ccb1<=_0x280c66['length']-0x2*_0x25f9dc;_0x33ccb1++){const _0x591f7f=_0x280c66[_0x275fda(0x2cd)](_0x33ccb1,_0x33ccb1+_0x25f9dc),_0x103d12=_0x280c66[_0x275fda(0x2cd)](_0x33ccb1+_0x25f9dc,_0x33ccb1+0x2*_0x25f9dc);if(_0x591f7f[_0x275fda(0x1b0)]((_0x149405,_0x59916b)=>_0x149405===_0x103d12[_0x59916b])){const _0x166856=[..._0x280c66['slice'](0x0,_0x33ccb1),..._0x280c66['slice'](_0x33ccb1+_0x25f9dc)];return a0_0x3c2000[_0x275fda(0x2b2)]+_0x166856[_0x275fda(0x261)](a0_0x3c2000[_0x275fda(0x2b2)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x4ab9c7=a0_0xc007;try{const _0x21edff=require(_0x4ab9c7(0x27b));return _0x21edff[_0x4ab9c7(0x293)]??_0x4ab9c7(0x2c4);}catch(_0x2fad3e){return console['error'](_0x4ab9c7(0x279),_0x2fad3e),_0x4ab9c7(0x2c4);}}function printHelp(){const _0x52ccea=a0_0xc007;console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x52ccea(0x221)](_0x52ccea(0x294)),console[_0x52ccea(0x221)](_0x52ccea(0x1b2)),console['log'](_0x52ccea(0x1d3)),console[_0x52ccea(0x221)](_0x52ccea(0x1e9)),console[_0x52ccea(0x221)](_0x52ccea(0x1d7)),console[_0x52ccea(0x221)](_0x52ccea(0x25c)),console[_0x52ccea(0x221)](_0x52ccea(0x28a)),console[_0x52ccea(0x221)](_0x52ccea(0x252));}function a0_0xc007(_0x496cba,_0xe6e51f){_0x496cba=_0x496cba-0x1b0;const _0x3be4dd=a0_0x3be4();let _0xc00759=_0x3be4dd[_0x496cba];return _0xc00759;}const cliArgs=process[a0_0x514987(0x2aa)][a0_0x514987(0x2cd)](0x2),VERSION_FLAGS=new Set([a0_0x514987(0x26a),'-v','-V']),HELP_FLAGS=new Set([a0_0x514987(0x247),'-h']);cliArgs[a0_0x514987(0x29d)](_0x410bff=>VERSION_FLAGS[a0_0x514987(0x1dd)](_0x410bff))&&(console[a0_0x514987(0x221)](a0_0x514987(0x1ca)+getPackageVersion()),process['exit'](0x0));cliArgs['some'](_0x91d85=>HELP_FLAGS[a0_0x514987(0x1dd)](_0x91d85))&&(printHelp(),process[a0_0x514987(0x2cf)](0x0));function getCliArg(_0x3d541d){const _0x29295d=a0_0x514987;for(let _0x2d20cd=0x0;_0x2d20cd<cliArgs[_0x29295d(0x1c7)];_0x2d20cd++){const _0x117281=cliArgs[_0x2d20cd];if(_0x117281[_0x29295d(0x2c3)]('--'+_0x3d541d+'='))return _0x117281[_0x29295d(0x2cd)](('--'+_0x3d541d+'=')[_0x29295d(0x1c7)]);if(_0x117281==='--'+_0x3d541d&&_0x2d20cd+0x1<cliArgs[_0x29295d(0x1c7)])return cliArgs[_0x2d20cd+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x514987(0x1c7)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS['has'](arg))continue;if(arg[a0_0x514987(0x2c3)](a0_0x514987(0x1d0)))continue;if(arg===a0_0x514987(0x2a7)){i++;continue;}args[a0_0x514987(0x262)](arg);}const ALL_TOOLS=[a0_0x514987(0x237),a0_0x514987(0x1f5),a0_0x514987(0x292),a0_0x514987(0x241)],DEFAULT_TOOLS=[a0_0x514987(0x237),a0_0x514987(0x1f5),a0_0x514987(0x292)],ENABLED_TOOLS=process[a0_0x514987(0x1de)][a0_0x514987(0x2af)]?process[a0_0x514987(0x1de)][a0_0x514987(0x2af)]===a0_0x514987(0x1e0)?ALL_TOOLS:process[a0_0x514987(0x1de)][a0_0x514987(0x2af)][a0_0x514987(0x2da)](',')[a0_0x514987(0x215)](_0x33a0f3=>_0x33a0f3[a0_0x514987(0x1f6)]()):DEFAULT_TOOLS;console[a0_0x514987(0x20c)](a0_0x514987(0x1b6)+ENABLED_TOOLS['join'](',\x20'));const WORKSPACE_ROOT=process[a0_0x514987(0x1de)][a0_0x514987(0x2a3)]||process[a0_0x514987(0x1de)][a0_0x514987(0x2c0)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x514987(0x1de)]['ENABLE_WORKSPACE_MODE']!==a0_0x514987(0x1bc),MORPH_API_KEY=getCliArg(a0_0x514987(0x1e6))??process[a0_0x514987(0x1de)][a0_0x514987(0x283)],MORPH_API_URL=process[a0_0x514987(0x1de)]['MORPH_API_URL'],MORPH_WARP_GREP_TIMEOUT=process[a0_0x514987(0x1de)][a0_0x514987(0x217)]?parseInt(process[a0_0x514987(0x1de)][a0_0x514987(0x217)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x514987(0x2c3)](a0_0x514987(0x2db))&&!MORPH_API_KEY[a0_0x514987(0x2c3)](a0_0x514987(0x265))&&console[a0_0x514987(0x20c)](a0_0x514987(0x236));async function reportMorphError(_0x5c5f80){const _0x525e6a=a0_0x514987;try{await a0_0x5be7c4['post'](_0x525e6a(0x291),{..._0x5c5f80,'timestamp':new Date()[_0x525e6a(0x28e)](),'source':_0x5c5f80[_0x525e6a(0x211)]||_0x525e6a(0x269)},{'timeout':0x1388,'headers':{'Content-Type':_0x525e6a(0x27e),'Authorization':_0x525e6a(0x2a9)+MORPH_API_KEY}});}catch{}}args[a0_0x514987(0x1c7)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x514987(0x20c)](a0_0x514987(0x1e1)),console[a0_0x514987(0x20c)](a0_0x514987(0x297)),console[a0_0x514987(0x20c)](a0_0x514987(0x1e2)),console[a0_0x514987(0x20c)]('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),console[a0_0x514987(0x20c)]('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),console['error'](a0_0x514987(0x1fd)));function normalizePath(_0x28364b){const _0x18fa6d=a0_0x514987;return a0_0x3c2000[_0x18fa6d(0x224)](_0x28364b);}function expandHome(_0x5dab8f){const _0x2bf554=a0_0x514987;if(_0x5dab8f[_0x2bf554(0x2c3)]('~/')||_0x5dab8f==='~')return a0_0x3c2000[_0x2bf554(0x261)](a0_0x3d97a1[_0x2bf554(0x2c2)](),_0x5dab8f[_0x2bf554(0x2cd)](0x1));return _0x5dab8f;}let allowedDirectories=await Promise[a0_0x514987(0x1e0)](args[a0_0x514987(0x215)](async _0x367d3e=>{const _0x5f066f=a0_0x514987,_0x22d5ba=expandHome(_0x367d3e),_0x17bfa9=a0_0x3c2000[_0x5f066f(0x20b)](_0x22d5ba);try{const _0x7d832=await a0_0x3d154a['realpath'](_0x17bfa9);return normalizePath(_0x7d832);}catch(_0x51ffa6){return normalizePath(_0x17bfa9);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x514987(0x1c7)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),console['error'](a0_0x514987(0x2b6)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x53606e){console['error'](a0_0x514987(0x2b5)+a0_0x53606e);}async function detectWorkspaceRoot(_0x1f1858){const _0x12343f=a0_0x514987;let _0x7ee556=a0_0x3c2000[_0x12343f(0x20b)](_0x1f1858);const _0xf4c2fa=[_0x12343f(0x226),_0x12343f(0x223),'package.json',_0x12343f(0x1fb),_0x12343f(0x2de),_0x12343f(0x1d5),_0x12343f(0x1c5),_0x12343f(0x2a4),_0x12343f(0x1ef)];while(_0x7ee556!==a0_0x3c2000['dirname'](_0x7ee556)){for(const _0x109423 of _0xf4c2fa){const _0x359fd2=a0_0x3c2000[_0x12343f(0x261)](_0x7ee556,_0x109423);try{return await a0_0x3d154a[_0x12343f(0x21a)](_0x359fd2),normalizePath(_0x7ee556);}catch{}}_0x7ee556=a0_0x3c2000[_0x12343f(0x295)](_0x7ee556);}return normalizePath(_0x1f1858);}await Promise[a0_0x514987(0x1e0)](args[a0_0x514987(0x215)](async _0x1ce9ab=>{const _0x5e0951=a0_0x514987;try{const _0x1e1f83=await a0_0x3d154a['stat'](expandHome(_0x1ce9ab));!_0x1e1f83[_0x5e0951(0x267)]()&&(console[_0x5e0951(0x20c)](_0x5e0951(0x290)+_0x1ce9ab+_0x5e0951(0x271)),process[_0x5e0951(0x2cf)](0x1));}catch(_0x1f2889){console[_0x5e0951(0x20c)](_0x5e0951(0x2ab)+_0x1ce9ab+':',_0x1f2889),process[_0x5e0951(0x2cf)](0x1);}}));async function validatePath(_0x1e8c84){const _0xa93cb2=a0_0x514987,_0x82a2a=expandHome(_0x1e8c84),_0x282cf6=a0_0x3c2000['resolve'](_0x82a2a);try{const _0x2679fe=await a0_0x3d154a[_0xa93cb2(0x2cc)](_0x282cf6);return _0x2679fe;}catch(_0x2e1fa7){if(_0x2e1fa7[_0xa93cb2(0x1ea)]===_0xa93cb2(0x25a)){const _0x562da6=a0_0x3c2000['dirname'](_0x282cf6);try{const _0x32e010=await a0_0x3d154a['realpath'](_0x562da6);return a0_0x3c2000[_0xa93cb2(0x261)](_0x32e010,a0_0x3c2000[_0xa93cb2(0x209)](_0x282cf6));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x562da6);}}throw _0x2e1fa7;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x514987(0x2c9)](),'code_edit':z[a0_0x514987(0x2c9)]()['describe']('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0x514987(0x2c9)]()['describe'](a0_0x514987(0x1f8)),'dryRun':z[a0_0x514987(0x203)]()[a0_0x514987(0x26c)](![])['describe']('Preview\x20changes\x20without\x20applying\x20them.')}),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x514987(0x2c9)]()[a0_0x514987(0x2a0)](a0_0x514987(0x1f1)),'repo_path':z['string']()[a0_0x514987(0x2a0)](a0_0x514987(0x1f4)),'query_type':z[a0_0x514987(0x200)]([a0_0x514987(0x26c),a0_0x514987(0x24d)])['optional']()[a0_0x514987(0x2a0)](a0_0x514987(0x202))}),WarpGrepGitHubArgsSchema=z[a0_0x514987(0x253)]({'search_string':z[a0_0x514987(0x2c9)]()[a0_0x514987(0x2a0)](a0_0x514987(0x1f1)),'github_url':z['string']()[a0_0x514987(0x2a0)](a0_0x514987(0x1c9)),'branch':z[a0_0x514987(0x2c9)]()[a0_0x514987(0x1e8)]()[a0_0x514987(0x2a0)](a0_0x514987(0x1c3))}),CodebaseSearchArgsSchema=z[a0_0x514987(0x253)]({'query':z[a0_0x514987(0x2c9)]()[a0_0x514987(0x2a0)]('Natural\x20language\x20query\x20to\x20search\x20for\x20code'),'repoId':z[a0_0x514987(0x2c9)]()[a0_0x514987(0x2a0)]('Repository\x20identifier'),'branch':z[a0_0x514987(0x2c9)]()['optional']()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x514987(0x2c9)]()[a0_0x514987(0x1e8)]()[a0_0x514987(0x2a0)](a0_0x514987(0x2d2)),'targetDirectories':z['array'](z['string']())['default']([])[a0_0x514987(0x2a0)](a0_0x514987(0x2c7)),'limit':z[a0_0x514987(0x2b3)]()[a0_0x514987(0x1e8)]()[a0_0x514987(0x26c)](0xa)[a0_0x514987(0x2a0)](a0_0x514987(0x22b))}),server=new Server({'name':a0_0x514987(0x29e),'version':a0_0x514987(0x2c1)},{'capabilities':{'tools':{}}});server[a0_0x514987(0x25e)](ListToolsRequestSchema,async()=>{const _0x2397d7=a0_0x514987,_0x40df91=[{'name':_0x2397d7(0x237),'description':_0x2397d7(0x1cc)+_0x2397d7(0x240)+_0x2397d7(0x256)+_0x2397d7(0x246)+_0x2397d7(0x248)+_0x2397d7(0x254)+_0x2397d7(0x251)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x2397d7(0x235)+_0x2397d7(0x239)+_0x2397d7(0x27c)+_0x2397d7(0x26e)+'For\x20deletions:\x0a'+_0x2397d7(0x231)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x2397d7(0x1d9)+_0x2397d7(0x1ed)+_0x2397d7(0x277)+_0x2397d7(0x232)+'-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a'+_0x2397d7(0x268)+_0x2397d7(0x21c)+'IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x2397d7(0x1f5),'description':_0x2397d7(0x257)+_0x2397d7(0x1db)+_0x2397d7(0x2d7)+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20'+_0x2397d7(0x242)+_0x2397d7(0x2c8)+_0x2397d7(0x1bf)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':_0x2397d7(0x241),'description':_0x2397d7(0x1b3)+_0x2397d7(0x2ac)+'🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a'+'Benefits:\x0a'+_0x2397d7(0x1b9)+_0x2397d7(0x1c1)+_0x2397d7(0x2a8)+_0x2397d7(0x210)+_0x2397d7(0x2a5)+_0x2397d7(0x2bc)+_0x2397d7(0x266),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x3ffc77=_0x40df91[_0x2397d7(0x24b)](_0x50c152=>{const _0x5b467d=_0x2397d7;if(!ENABLED_TOOLS[_0x5b467d(0x289)](_0x50c152[_0x5b467d(0x1b1)]))return![];if('requiresApiKey'in _0x50c152&&_0x50c152[_0x5b467d(0x1b8)]&&!MORPH_API_KEY)return console[_0x5b467d(0x20c)]('Warning:\x20'+_0x50c152['name']+_0x5b467d(0x259)),![];return!![];});return{'tools':_0x3ffc77['map'](_0x281b69=>({'name':_0x281b69[_0x2397d7(0x1b1)],'description':_0x281b69['description'],'inputSchema':_0x281b69[_0x2397d7(0x20e)]}))};}),server[a0_0x514987(0x25e)](CallToolRequestSchema,async _0x49e7b8=>{const _0x5899f2=a0_0x514987;try{const {name:_0x4ee7c6,arguments:_0x4c9bb1}=_0x49e7b8['params'];switch(_0x4ee7c6){case _0x5899f2(0x237):{const _0x27fae7=MorphEditFileArgsSchema[_0x5899f2(0x23c)](_0x4c9bb1);if(!_0x27fae7[_0x5899f2(0x22d)])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x27fae7['error']);const _0x2e2e31=await validatePath(_0x27fae7['data']['path']);let _0x3d71e3=null,_0x45401f=!![],_0x10329f=null;try{_0x3d71e3=await a0_0x3d154a[_0x5899f2(0x2d0)](_0x2e2e31,_0x5899f2(0x1ec));}catch(_0x25e194){const _0x55b7bd=_0x25e194[_0x5899f2(0x1ea)];_0x55b7bd==='ENOENT'?(_0x45401f=![],_0x3d71e3=''):(_0x10329f=_0x5899f2(0x1e3)+(_0x55b7bd||_0x5899f2(0x2c4))+_0x5899f2(0x28d)+(_0x25e194 instanceof Error?_0x25e194[_0x5899f2(0x1cf)]:String(_0x25e194)),console['error'](_0x5899f2(0x1f2)+_0x10329f));}let _0x7a4cd6;try{const _0x418aaa=MORPH_API_KEY;if(!_0x418aaa)throw new Error(_0x5899f2(0x2d1));const _0x80e517=a0_0x3c2000[_0x5899f2(0x295)](_0x2e2e31),_0x3c303f=a0_0x3c2000['basename'](_0x2e2e31),_0x3e2a1a=await executeEditFile({'target_filepath':_0x3c303f,'code_edit':_0x27fae7['data'][_0x5899f2(0x2c6)],'instructions':_0x27fae7[_0x5899f2(0x2b9)][_0x5899f2(0x26d)]},{'morphApiKey':_0x418aaa,'morphApiUrl':MORPH_API_URL,'baseDir':_0x80e517,'autoWrite':!_0x27fae7[_0x5899f2(0x2b9)][_0x5899f2(0x2b8)],'generateUdiff':![],'debug':![]});_0x7a4cd6=_0x3e2a1a[_0x5899f2(0x25d)];if(!_0x3e2a1a[_0x5899f2(0x22d)])throw new Error(_0x3e2a1a[_0x5899f2(0x20c)]||_0x5899f2(0x25f));const _0x1080fd=_0x3e2a1a['changes'],_0x1700ae=_0x5899f2(0x1c6)+_0x1080fd[_0x5899f2(0x2d5)]+_0x5899f2(0x28f)+_0x1080fd[_0x5899f2(0x1c0)]+_0x5899f2(0x204)+_0x1080fd[_0x5899f2(0x2ba)];if(_0x27fae7['data'][_0x5899f2(0x2b8)])return{'content':[{'type':_0x5899f2(0x250),'text':_0x5899f2(0x230)+(_0x45401f?'':_0x5899f2(0x1bb))+':\x20'+_0x27fae7[_0x5899f2(0x2b9)][_0x5899f2(0x26d)]+_0x5899f2(0x276)+_0x1700ae+_0x5899f2(0x22c)+_0x27fae7[_0x5899f2(0x2b9)][_0x5899f2(0x23e)]+'.'}]};return{'content':[{'type':_0x5899f2(0x250),'text':'Morph\x20Edit\x20'+(_0x45401f?_0x5899f2(0x1cd):_0x5899f2(0x286))+':\x20'+_0x27fae7[_0x5899f2(0x2b9)]['instruction']+_0x5899f2(0x276)+_0x1700ae+_0x5899f2(0x22c)+_0x27fae7['data'][_0x5899f2(0x23e)]+'.'}]};}catch(_0x164754){const _0x3f5ac9=_0x164754 instanceof Error?_0x164754[_0x5899f2(0x1cf)]:String(_0x164754);return reportMorphError({'error_message':_0x3f5ac9,'error_type':_0x164754 instanceof Error?_0x164754[_0x5899f2(0x29b)][_0x5899f2(0x1b1)]:_0x5899f2(0x1df),'context':{'tool':_0x5899f2(0x237),'completion_id':_0x7a4cd6,'file_path':_0x27fae7[_0x5899f2(0x2b9)][_0x5899f2(0x23e)],'validated_path':_0x2e2e31,'instruction':_0x27fae7[_0x5899f2(0x2b9)][_0x5899f2(0x26d)],'model':_0x5899f2(0x2dd),'dry_run':_0x27fae7[_0x5899f2(0x2b9)]['dryRun'],'file_exists':_0x45401f,'file_read_error':_0x10329f,'file_readable':_0x3d71e3!==null,'request_content':{'path':_0x27fae7[_0x5899f2(0x2b9)][_0x5899f2(0x23e)],'code_edit':_0x27fae7[_0x5899f2(0x2b9)][_0x5899f2(0x2c6)],'instruction':_0x27fae7['data'][_0x5899f2(0x26d)],'original_code':_0x3d71e3!==null?_0x3d71e3[_0x5899f2(0x1c7)]>0xc350?_0x3d71e3[_0x5899f2(0x288)](0x0,0xc350)+_0x5899f2(0x1d6)+_0x3d71e3['length']+_0x5899f2(0x1d2):_0x3d71e3:_0x5899f2(0x2ce)+(_0x10329f||_0x5899f2(0x2d6))+']','original_code_length':_0x3d71e3?.[_0x5899f2(0x1c7)]??0x0,'model':'morph-v3-fast','dry_run':_0x27fae7[_0x5899f2(0x2b9)][_0x5899f2(0x2b8)]}},'stack_trace':_0x164754 instanceof Error?_0x164754[_0x5899f2(0x22e)]:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':_0x5899f2(0x250),'text':_0x5899f2(0x249)+_0x3f5ac9}],'isError':!![]};}}case _0x5899f2(0x1f5):{const _0x1ef080=WarpGrepArgsSchema[_0x5899f2(0x23c)](_0x4c9bb1);if(!_0x1ef080[_0x5899f2(0x22d)])return{'content':[{'type':_0x5899f2(0x250),'text':'Invalid\x20arguments:\x20'+_0x1ef080[_0x5899f2(0x20c)]}],'isError':!![]};const _0x3f2a55=_0x517dc2=>{const _0x2bc64e=_0x5899f2,_0x193485=[];for(const _0x41efbd of _0x517dc2||[]){const _0x160b5f=_0x41efbd[_0x2bc64e(0x1ee)],_0x55680d=_0x41efbd[_0x2bc64e(0x2ae)];if(_0x160b5f===_0x2bc64e(0x284)&&_0x55680d){const _0x1c3abe=_0x55680d['split']('\x0a')[_0x2bc64e(0x24b)](_0x2e6226=>_0x2e6226[_0x2bc64e(0x1f6)]());for(const _0x45a69f of _0x1c3abe){const _0x478ab1=_0x45a69f[_0x2bc64e(0x1c4)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x478ab1){_0x193485[_0x2bc64e(0x262)](_0x2bc64e(0x1ce)+_0x478ab1[0x1]+'\x27\x20'+_0x478ab1[0x2]);continue;}const _0x2aa5b2=_0x45a69f[_0x2bc64e(0x1c4)](/^read\s+(.+)$/);if(_0x2aa5b2){_0x193485[_0x2bc64e(0x262)](_0x2bc64e(0x2bd)+_0x2aa5b2[0x1]);continue;}const _0x2e8de2=_0x45a69f[_0x2bc64e(0x1c4)](/^list_directory\s+(.+)$/);if(_0x2e8de2){_0x193485['push'](_0x2bc64e(0x1d8)+_0x2e8de2[0x1]);continue;}}}}return _0x193485;},_0x45e50d=_0x133982=>{const _0x4ed7e0=_0x5899f2,_0x56bb1b=[];if(!_0x133982||!Array[_0x4ed7e0(0x2df)](_0x133982))return _0x56bb1b;const _0x5a26b2=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x4ed7e0(0x27f),'tool':_0x4ed7e0(0x2ad)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x4ed7e0(0x2ad)},{'pattern':/\[READ ERROR\]/,'error_type':_0x4ed7e0(0x278),'tool':_0x4ed7e0(0x2ad)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':_0x4ed7e0(0x2ad)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x4ed7e0(0x2cb),'tool':_0x4ed7e0(0x270)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x4ed7e0(0x1eb),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x4ed7e0(0x282),'tool':'read'},{'pattern':/not a text file/,'error_type':_0x4ed7e0(0x20f),'tool':_0x4ed7e0(0x2ad)},{'pattern':/symbolic link/,'error_type':_0x4ed7e0(0x282),'tool':_0x4ed7e0(0x2ad)},{'pattern':/Error reading file:/,'error_type':_0x4ed7e0(0x278),'tool':_0x4ed7e0(0x2ad)},{'pattern':/status="error"/,'error_type':_0x4ed7e0(0x29a),'tool':'unknown'}];let _0x3381e3=0x0;for(const _0x5d40a4 of _0x133982){if(_0x5d40a4['role']==='user'){_0x3381e3++;const _0x2c6bee=_0x5d40a4[_0x4ed7e0(0x2ae)];if(!_0x2c6bee||typeof _0x2c6bee!==_0x4ed7e0(0x2c9))continue;for(const {pattern:_0x2ff929,error_type:_0x17762e,tool:_0xf31927}of _0x5a26b2){const _0x14355a=_0x2c6bee[_0x4ed7e0(0x1c4)](new RegExp(_0x2ff929['source'],'g'));if(_0x14355a)for(const _0x1ee32b of _0x14355a){const _0x24c7bf=_0x2c6bee[_0x4ed7e0(0x23f)](_0x1ee32b),_0xdefa36=_0x2c6bee[_0x4ed7e0(0x288)](_0x24c7bf,Math[_0x4ed7e0(0x2d4)](_0x24c7bf+0xc8,_0x2c6bee['length']));_0x56bb1b[_0x4ed7e0(0x262)]({'tool':_0xf31927,'error_type':_0x17762e,'error_message':_0xdefa36['split']('\x0a')[0x0],'turn':_0x3381e3});}}}}return _0x56bb1b;};try{const _0x13952e=a0_0x3c2000[_0x5899f2(0x20b)](_0x1ef080[_0x5899f2(0x2b9)]['repo_path']),_0x1d87a1=_0x1ef080[_0x5899f2(0x2b9)][_0x5899f2(0x20d)],_0x4de88c=_0x1d87a1===_0x5899f2(0x24d)?{'allowNames':['node_modules']}:undefined,_0x6a1052=new LocalRipgrepProvider(_0x13952e,undefined,_0x4de88c),_0x2f63d3=await runWarpGrep({'query':_0x1ef080[_0x5899f2(0x2b9)][_0x5899f2(0x2ca)],'repoRoot':_0x13952e,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x6a1052,'query_type':_0x1d87a1}),_0x2f72c0=_0x45e50d(_0x2f63d3[_0x5899f2(0x2b1)]);_0x2f72c0[_0x5899f2(0x1c7)]>0x0&&reportMorphError({'error_message':_0x5899f2(0x272)+_0x2f72c0[_0x5899f2(0x1c7)]+_0x5899f2(0x23b),'error_type':_0x5899f2(0x2be),'level':_0x5899f2(0x20a),'tool':_0x5899f2(0x1f5),'context':{'repo_path':_0x1ef080[_0x5899f2(0x2b9)][_0x5899f2(0x208)],'query':_0x1ef080['data'][_0x5899f2(0x2ca)],'model':_0x5899f2(0x1ff),'termination_reason':_0x2f63d3['terminationReason'],'sub_tool_errors':_0x2f72c0,'timings':_0x2f63d3['timings'],'tool_calls':_0x3f2a55(_0x2f63d3[_0x5899f2(0x2b1)]),'messages':_0x2f63d3['messages']?.[_0x5899f2(0x215)](_0x3b0524=>({'role':_0x3b0524[_0x5899f2(0x1ee)],'content':_0x3b0524[_0x5899f2(0x2ae)]}))},'source':'mcp-filesystem'})['catch'](()=>{});let _0x3e0425='';if(_0x2f63d3[_0x5899f2(0x1ba)]===_0x5899f2(0x222)&&_0x2f63d3[_0x5899f2(0x2bb)]?.[_0x5899f2(0x244)]?.[_0x5899f2(0x201)]){const _0x4bcb93=_0x2f63d3['finish'][_0x5899f2(0x244)][_0x5899f2(0x201)];if(_0x4bcb93['length']===0x0)return _0x3e0425=_0x2f63d3['finish'][_0x5899f2(0x1e4)]||_0x5899f2(0x25b),{'content':[{'type':_0x5899f2(0x250),'text':_0x3e0425}]};const _0x495bff=[],_0x2592bb=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x78e1e4 of _0x2f63d3['messages']){const _0x2950ab=_0x78e1e4['role'],_0x32085e=_0x78e1e4[_0x5899f2(0x2ae)];if(_0x2950ab===_0x5899f2(0x284)&&_0x32085e){const _0x37aede=_0x32085e['split']('\x0a')[_0x5899f2(0x24b)](_0x422a2b=>_0x422a2b[_0x5899f2(0x1f6)]());for(const _0x195d59 of _0x37aede){const _0x579163=_0x195d59[_0x5899f2(0x1c4)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x579163){_0x2592bb['push']('-\x20Grepped\x20\x27'+_0x579163[0x1]+_0x5899f2(0x1fc)+_0x579163[0x2]+'`');continue;}const _0x46ae11=_0x195d59['match'](/^read\s+(.+)$/);if(_0x46ae11){_0x2592bb[_0x5899f2(0x262)](_0x5899f2(0x24e)+_0x46ae11[0x1]+'`');continue;}const _0x59a24b=_0x195d59['match'](/^list_directory\s+(.+)$/);if(_0x59a24b){_0x2592bb['push'](_0x5899f2(0x218)+_0x59a24b[0x1]+'`');continue;}}}}_0x495bff['push'](_0x2592bb[_0x5899f2(0x261)]('\x0a'));const _0x55cbfa=['',_0x5899f2(0x1b4)];for(const _0x42835c of _0x4bcb93){if(_0x42835c[_0x5899f2(0x2b0)]==='*')_0x55cbfa[_0x5899f2(0x262)]('-\x20'+_0x42835c[_0x5899f2(0x23e)]+':*');else{if(Array[_0x5899f2(0x2df)](_0x42835c[_0x5899f2(0x2b0)])){const _0x57df1b=_0x42835c[_0x5899f2(0x2b0)][_0x5899f2(0x215)](([_0xf46866,_0x1b9ac2])=>{if(_0xf46866===_0x1b9ac2)return''+_0xf46866;return _0xf46866+'-'+_0x1b9ac2;});_0x55cbfa[_0x5899f2(0x262)]('-\x20'+_0x42835c[_0x5899f2(0x23e)]+':'+_0x57df1b[_0x5899f2(0x261)](','));}else _0x55cbfa[_0x5899f2(0x262)]('-\x20'+_0x42835c[_0x5899f2(0x23e)]+':*');}}_0x55cbfa['push'](''),_0x495bff[_0x5899f2(0x262)](_0x55cbfa[_0x5899f2(0x261)]('\x0a')),_0x495bff['push'](_0x5899f2(0x1b7));const _0x14fb43=[];for(const _0x48196e of _0x4bcb93){let _0x3c9e1c=a0_0x3c2000[_0x5899f2(0x20b)](_0x1ef080[_0x5899f2(0x2b9)][_0x5899f2(0x208)],_0x48196e[_0x5899f2(0x23e)]),_0x146ffc=null,_0x592946=null;try{_0x146ffc=await a0_0x3d154a[_0x5899f2(0x2d0)](_0x3c9e1c,{'encoding':'utf-8'});}catch(_0x120f12){const _0x3b5a89=fixPathRepetition(_0x3c9e1c);if(_0x3b5a89)try{_0x146ffc=await a0_0x3d154a[_0x5899f2(0x2d0)](_0x3b5a89,{'encoding':_0x5899f2(0x1ec)}),_0x3c9e1c=_0x3b5a89;}catch{_0x592946=_0x120f12 instanceof Error?_0x120f12:new Error(String(_0x120f12));}else _0x592946=_0x120f12 instanceof Error?_0x120f12:new Error(String(_0x120f12));}if(_0x146ffc!==null){const _0x53f3fc=_0x146ffc[_0x5899f2(0x2da)](/\r?\n/),_0x4d48e6=[_0x5899f2(0x216)+_0x48196e[_0x5899f2(0x23e)]+'\x22>'];if(_0x48196e[_0x5899f2(0x2b0)]==='*'||!Array[_0x5899f2(0x2df)](_0x48196e[_0x5899f2(0x2b0)]))for(let _0x283265=0x1;_0x283265<=_0x53f3fc['length'];_0x283265++){const _0x2bef10=_0x53f3fc[_0x283265-0x1];_0x4d48e6[_0x5899f2(0x262)](_0x283265+'|\x20'+_0x2bef10);}else for(const [_0x1326e9,_0x597e72]of _0x48196e[_0x5899f2(0x2b0)]){_0x4d48e6[_0x5899f2(0x1c7)]>0x1&&_0x4d48e6[_0x5899f2(0x262)]('');for(let _0x3b8316=_0x1326e9;_0x3b8316<=_0x597e72&&_0x3b8316<=_0x53f3fc[_0x5899f2(0x1c7)];_0x3b8316++){const _0x364e75=_0x53f3fc[_0x3b8316-0x1];_0x4d48e6[_0x5899f2(0x262)](_0x3b8316+'|\x20'+_0x364e75);}}_0x4d48e6[_0x5899f2(0x262)](_0x5899f2(0x273)),_0x14fb43[_0x5899f2(0x262)](_0x4d48e6['join']('\x0a'));}else _0x14fb43[_0x5899f2(0x262)](_0x5899f2(0x216)+_0x48196e[_0x5899f2(0x23e)]+_0x5899f2(0x2d8)+(_0x592946?.[_0x5899f2(0x1cf)]||_0x5899f2(0x220))+_0x5899f2(0x1b5));}_0x495bff['push'](_0x14fb43['join']('\x0a\x0a')),_0x3e0425=_0x495bff[_0x5899f2(0x261)]('\x0a');const _0x2c2956=_0x2f63d3[_0x5899f2(0x214)]?.[_0x5899f2(0x24b)](_0x431f92=>_0x431f92[_0x5899f2(0x1cf)]?.[_0x5899f2(0x2c3)](_0x5899f2(0x2b4)))||[];if(_0x2c2956[_0x5899f2(0x1c7)]>0x0){const _0x4c3966=_0x2c2956['map'](_0x1ba44e=>_0x1ba44e[_0x5899f2(0x1cf)])[_0x5899f2(0x261)](';\x20');reportMorphError({'error_message':_0x4c3966,'error_type':_0x5899f2(0x2a2),'context':{'tool':_0x5899f2(0x1f5),'repo_path':_0x1ef080[_0x5899f2(0x2b9)]['repo_path'],'query':_0x1ef080[_0x5899f2(0x2b9)]['search_string'],'model':_0x5899f2(0x1ff),'termination_reason':_0x5899f2(0x1f3),'error_count':_0x2c2956[_0x5899f2(0x1c7)],'is_timeout':![],'timings':_0x2f63d3[_0x5899f2(0x27d)],'files_attempted':_0x4bcb93[_0x5899f2(0x215)](_0x11cc79=>({'path':_0x11cc79[_0x5899f2(0x23e)],'lines':_0x11cc79[_0x5899f2(0x2b0)]})),'tool_calls':_0x3f2a55(_0x2f63d3['messages']),'messages':_0x2f63d3['messages']?.[_0x5899f2(0x215)](_0x1aea54=>({'role':_0x1aea54['role'],'content':_0x1aea54[_0x5899f2(0x2ae)]})),'request_content':{'query':_0x1ef080[_0x5899f2(0x2b9)]['search_string'],'repo_path':_0x1ef080[_0x5899f2(0x2b9)]['repo_path'],'repoRoot':a0_0x3c2000['resolve'](_0x1ef080['data']['repo_path']),'model':_0x5899f2(0x1ff)}},'source':_0x5899f2(0x269)})[_0x5899f2(0x280)](()=>{});}}else{if(_0x2f63d3[_0x5899f2(0x1ba)]===_0x5899f2(0x24c)&&_0x2f63d3[_0x5899f2(0x214)][_0x5899f2(0x1c7)]>0x0){const _0x4d326c=_0x2f63d3[_0x5899f2(0x214)][_0x5899f2(0x215)](_0x76d105=>_0x76d105[_0x5899f2(0x1cf)])['join'](';\x20');_0x3e0425=_0x5899f2(0x290)+_0x4d326c;const _0x1bc0eb=_0x4d326c['toLowerCase']()[_0x5899f2(0x289)](_0x5899f2(0x238))||_0x4d326c[_0x5899f2(0x225)]()[_0x5899f2(0x289)](_0x5899f2(0x207))||_0x4d326c[_0x5899f2(0x225)]()['includes']('etimedout'),_0xf930f1=_0x2f63d3['finish']?.[_0x5899f2(0x244)]?.[_0x5899f2(0x201)],_0x2832ef=_0x2f63d3[_0x5899f2(0x214)][0x0];reportMorphError({'error_message':_0x4d326c,'error_type':_0x1bc0eb?'TimeoutError':_0x2832ef?.[_0x5899f2(0x29b)]?.[_0x5899f2(0x1b1)]||_0x5899f2(0x245),'context':{'tool':_0x5899f2(0x1f5),'repo_path':_0x1ef080[_0x5899f2(0x2b9)]['repo_path'],'query':_0x1ef080[_0x5899f2(0x2b9)][_0x5899f2(0x2ca)],'model':_0x5899f2(0x1ff),'termination_reason':_0x2f63d3[_0x5899f2(0x1ba)],'error_count':_0x2f63d3[_0x5899f2(0x214)][_0x5899f2(0x1c7)],'is_timeout':_0x1bc0eb,'timings':_0x2f63d3[_0x5899f2(0x27d)],'files_attempted':_0xf930f1?.[_0x5899f2(0x215)](_0x5ed6c2=>({'path':_0x5ed6c2['path'],'lines':_0x5ed6c2[_0x5899f2(0x2b0)]})),'tool_calls':_0x3f2a55(_0x2f63d3[_0x5899f2(0x2b1)]),'messages':_0x2f63d3[_0x5899f2(0x2b1)]?.[_0x5899f2(0x215)](_0x1a8d2d=>({'role':_0x1a8d2d[_0x5899f2(0x1ee)],'content':_0x1a8d2d[_0x5899f2(0x2ae)]})),'request_content':{'query':_0x1ef080[_0x5899f2(0x2b9)]['search_string'],'repo_path':_0x1ef080[_0x5899f2(0x2b9)][_0x5899f2(0x208)],'repoRoot':a0_0x3c2000[_0x5899f2(0x20b)](_0x1ef080[_0x5899f2(0x2b9)][_0x5899f2(0x208)]),'model':_0x5899f2(0x1ff)}},'stack_trace':_0x2832ef?.[_0x5899f2(0x22e)]||undefined,'source':_0x5899f2(0x269)})['catch'](()=>{});}else _0x3e0425=_0x5899f2(0x212);}return{'content':[{'type':_0x5899f2(0x250),'text':_0x3e0425}]};}catch(_0x474a4f){const _0x2db4ae=_0x474a4f instanceof Error?_0x474a4f[_0x5899f2(0x1cf)]:String(_0x474a4f),_0x221f84=_0x2db4ae['toLowerCase']()[_0x5899f2(0x289)](_0x5899f2(0x238))||_0x2db4ae[_0x5899f2(0x225)]()['includes']('timed\x20out')||_0x2db4ae['toLowerCase']()[_0x5899f2(0x289)]('etimedout')||_0x474a4f instanceof Error&&_0x474a4f['name']===_0x5899f2(0x23d);return reportMorphError({'error_message':_0x2db4ae,'error_type':_0x221f84?_0x5899f2(0x23d):_0x474a4f instanceof Error?_0x474a4f[_0x5899f2(0x29b)][_0x5899f2(0x1b1)]:_0x5899f2(0x1df),'context':{'tool':_0x5899f2(0x1f5),'repo_path':_0x1ef080['data'][_0x5899f2(0x208)],'query':_0x1ef080[_0x5899f2(0x2b9)][_0x5899f2(0x2ca)],'model':'morph-warp-grep-v1-1111v0','is_timeout':_0x221f84,'exception_phase':_0x5899f2(0x243),'request_content':{'query':_0x1ef080[_0x5899f2(0x2b9)][_0x5899f2(0x2ca)],'repo_path':_0x1ef080[_0x5899f2(0x2b9)][_0x5899f2(0x208)],'repoRoot':a0_0x3c2000['resolve'](_0x1ef080[_0x5899f2(0x2b9)][_0x5899f2(0x208)]),'model':_0x5899f2(0x1ff)}},'stack_trace':_0x474a4f instanceof Error?_0x474a4f[_0x5899f2(0x22e)]:undefined,'source':_0x5899f2(0x269)})[_0x5899f2(0x280)](()=>{}),{'content':[{'type':_0x5899f2(0x250),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x2db4ae}],'isError':![]};}}case _0x5899f2(0x292):{const _0x48184a=WarpGrepGitHubArgsSchema[_0x5899f2(0x23c)](_0x4c9bb1);if(!_0x48184a['success'])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x48184a[_0x5899f2(0x20c)]}],'isError':!![]};const _0x2a180d=MORPH_API_KEY;if(!_0x2a180d)throw new Error(_0x5899f2(0x2d1));const _0x40f269=Date[_0x5899f2(0x260)]();console['error'](_0x5899f2(0x228)+_0x48184a['data'][_0x5899f2(0x23a)]+_0x5899f2(0x2d3)+_0x48184a[_0x5899f2(0x2b9)]['search_string']+'\x22');try{const _0x45d79e=new WarpGrepClient({'morphApiKey':_0x2a180d,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x4d7d03=await _0x45d79e[_0x5899f2(0x233)]({'query':_0x48184a[_0x5899f2(0x2b9)][_0x5899f2(0x2ca)],'github':_0x48184a['data'][_0x5899f2(0x23a)],'branch':_0x48184a[_0x5899f2(0x2b9)][_0x5899f2(0x264)]}),_0x26a016=Date['now']()-_0x40f269;console[_0x5899f2(0x20c)](_0x5899f2(0x1f7)+_0x26a016+_0x5899f2(0x27a)+_0x4d7d03[_0x5899f2(0x22d)]);const _0x2c7f66=formatResult(_0x4d7d03);return{'content':[{'type':'text','text':_0x2c7f66}]};}catch(_0x33fffe){const _0x34da35=Date[_0x5899f2(0x260)]()-_0x40f269,_0x55f8e4=_0x33fffe instanceof Error?_0x33fffe[_0x5899f2(0x1cf)]:String(_0x33fffe);return console[_0x5899f2(0x20c)](_0x5899f2(0x296)+_0x34da35+_0x5899f2(0x21f),_0x55f8e4),reportMorphError({'error_message':_0x55f8e4,'error_type':_0x33fffe instanceof Error?_0x33fffe[_0x5899f2(0x29b)]['name']:'UnknownError','context':{'tool':_0x5899f2(0x292),'github_url':_0x48184a[_0x5899f2(0x2b9)][_0x5899f2(0x23a)],'search_string':_0x48184a[_0x5899f2(0x2b9)]['search_string'],'branch':_0x48184a['data'][_0x5899f2(0x264)]},'stack_trace':_0x33fffe instanceof Error?_0x33fffe['stack']:undefined,'source':_0x5899f2(0x269),'tool':_0x5899f2(0x292),'latency_ms':_0x34da35})['catch'](()=>{}),{'content':[{'type':'text','text':_0x5899f2(0x2b7)+_0x55f8e4}],'isError':![]};}}case _0x5899f2(0x241):{const _0x597b8e=CodebaseSearchArgsSchema[_0x5899f2(0x23c)](_0x4c9bb1);if(!_0x597b8e[_0x5899f2(0x22d)])return{'content':[{'type':_0x5899f2(0x250),'text':_0x5899f2(0x234)+_0x597b8e['error']}],'isError':!![]};try{const _0x11c4ae=MORPH_API_KEY;if(!_0x11c4ae)throw new Error(_0x5899f2(0x22a));const _0x21ec5a=_0x597b8e[_0x5899f2(0x2b9)]['targetDirectories'],_0x24cc53=await executeCodebaseSearch({'query':_0x597b8e[_0x5899f2(0x2b9)]['query'],'target_directories':_0x21ec5a,'limit':_0x597b8e[_0x5899f2(0x2b9)][_0x5899f2(0x275)]},{'apiKey':_0x11c4ae,'repoId':_0x597b8e[_0x5899f2(0x2b9)][_0x5899f2(0x26b)],'branch':_0x597b8e[_0x5899f2(0x2b9)][_0x5899f2(0x264)],'commitHash':_0x597b8e[_0x5899f2(0x2b9)][_0x5899f2(0x21d)],'debug':![]});if(!_0x24cc53[_0x5899f2(0x22d)])return{'content':[{'type':'text','text':'Search\x20failed:\x20'+_0x24cc53[_0x5899f2(0x20c)]}],'isError':!![]};const _0x5979a3=_0x24cc53['results'][_0x5899f2(0x1c7)]===0x0?'No\x20results\x20found\x20for\x20query:\x20\x22'+_0x597b8e[_0x5899f2(0x2b9)]['query']+'\x22':_0x5899f2(0x1fa)+_0x24cc53[_0x5899f2(0x1fe)]['length']+_0x5899f2(0x263)+_0x24cc53[_0x5899f2(0x1dc)]['searchTimeMs']+_0x5899f2(0x285)+_0x24cc53[_0x5899f2(0x1fe)][_0x5899f2(0x215)]((_0x262dda,_0x46757c)=>_0x46757c+0x1+'.\x20'+_0x262dda[_0x5899f2(0x29c)]+'\x20('+(_0x262dda[_0x5899f2(0x29f)]*0x64)[_0x5899f2(0x1c8)](0x1)+'%\x20match)\x0a'+(_0x5899f2(0x227)+_0x262dda[_0x5899f2(0x28b)]+'-'+_0x262dda[_0x5899f2(0x24a)]+'\x0a')+(_0x5899f2(0x206)+_0x262dda['content'][_0x5899f2(0x288)](0x0,0xc8)+(_0x262dda[_0x5899f2(0x2ae)]['length']>0xc8?_0x5899f2(0x1bd):'')+'\x0a'))[_0x5899f2(0x261)]('\x0a');return{'content':[{'type':'text','text':_0x5979a3}]};}catch(_0x38e4b0){const _0x4e8f27=_0x38e4b0 instanceof Error?_0x38e4b0[_0x5899f2(0x1cf)]:String(_0x38e4b0);return reportMorphError({'error_message':_0x4e8f27,'error_type':_0x38e4b0 instanceof Error?_0x38e4b0[_0x5899f2(0x29b)][_0x5899f2(0x1b1)]:'UnknownError','context':{'tool':_0x5899f2(0x241),'query':_0x597b8e['data']['query'],'repo_id':_0x597b8e[_0x5899f2(0x2b9)]['repoId'],'target_directories':_0x597b8e['data'][_0x5899f2(0x281)]},'stack_trace':_0x38e4b0 instanceof Error?_0x38e4b0[_0x5899f2(0x22e)]:undefined,'source':_0x5899f2(0x269)})[_0x5899f2(0x280)](()=>{}),{'content':[{'type':_0x5899f2(0x250),'text':_0x5899f2(0x290)+_0x4e8f27}],'isError':!![]};}}default:throw new Error(_0x5899f2(0x2a1)+_0x4ee7c6);}}catch(_0x256153){const _0x1a8853=_0x256153 instanceof Error?_0x256153['message']:String(_0x256153);return reportMorphError({'error_message':_0x1a8853,'error_type':_0x256153 instanceof Error?_0x256153[_0x5899f2(0x29b)]['name']:_0x5899f2(0x1df),'context':{'tool':name,'arguments':args?JSON[_0x5899f2(0x258)](args)[_0x5899f2(0x288)](0x0,0x1f4):undefined,'mcp_server_version':_0x5899f2(0x2c1)},'stack_trace':_0x256153 instanceof Error?_0x256153['stack']:undefined,'source':_0x5899f2(0x269)})['catch'](()=>{}),{'content':[{'type':_0x5899f2(0x250),'text':_0x5899f2(0x290)+_0x1a8853}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x4540ea){const _0xceaa87=a0_0x514987,_0x575fb5=await getValidRootDirectories(_0x4540ea);if(_0x575fb5[_0xceaa87(0x1c7)]>0x0)allowedDirectories=[..._0x575fb5],console[_0xceaa87(0x20c)](_0xceaa87(0x274)+_0x575fb5['length']+_0xceaa87(0x22f));else{console[_0xceaa87(0x20c)](_0xceaa87(0x1f0));if(ENABLE_WORKSPACE_MODE)try{const _0xa8521d=await detectWorkspaceRoot(WORKSPACE_ROOT);_0xa8521d&&(allowedDirectories=[_0xa8521d],console[_0xceaa87(0x20c)](_0xceaa87(0x255)+_0xa8521d));}catch(_0x2b4c40){console[_0xceaa87(0x20c)](_0xceaa87(0x26f)+_0x2b4c40);}}}server[a0_0x514987(0x2bf)](RootsListChangedNotificationSchema,async()=>{const _0x34387e=a0_0x514987;try{const _0x14b951=await server[_0x34387e(0x205)]();_0x14b951&&_0x34387e(0x219)in _0x14b951&&await updateAllowedDirectoriesFromRoots(_0x14b951[_0x34387e(0x219)]);}catch(_0x1ba307){console[_0x34387e(0x20c)]('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x1ba307 instanceof Error?_0x1ba307['message']:String(_0x1ba307));}}),server[a0_0x514987(0x1e5)]=async()=>{const _0x1d31ee=a0_0x514987,_0x2c9d5d=server[_0x1d31ee(0x287)]();if(_0x2c9d5d?.['roots'])try{const _0x255282=await server[_0x1d31ee(0x205)]();_0x255282&&_0x1d31ee(0x219)in _0x255282?await updateAllowedDirectoriesFromRoots(_0x255282['roots']):console[_0x1d31ee(0x20c)](_0x1d31ee(0x21b));}catch(_0x4007a2){console[_0x1d31ee(0x20c)](_0x1d31ee(0x1e7),_0x4007a2 instanceof Error?_0x4007a2[_0x1d31ee(0x1cf)]:String(_0x4007a2));}else{if(allowedDirectories[_0x1d31ee(0x1c7)]>0x0)console['error'](_0x1d31ee(0x2d9),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console['error'](_0x1d31ee(0x213));else throw new Error(_0x1d31ee(0x2c5));}}};async function runServer(){const _0x225032=a0_0x514987,_0x277a83=new StdioServerTransport();await server[_0x225032(0x298)](_0x277a83),console['error'](_0x225032(0x24f)),allowedDirectories[_0x225032(0x1c7)]===0x0&&console[_0x225032(0x20c)]('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x514987(0x280)](_0x16671c=>{const _0x22f074=a0_0x514987;console[_0x22f074(0x20c)]('Fatal\x20error\x20running\x20server:',_0x16671c),process[_0x22f074(0x2cf)](0x1);});
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0xcdeafb,_0x7ed588){const _0x3793a9=a1_0x44c2,_0x1e85f6=_0xcdeafb();while(!![]){try{const _0x5e8030=parseInt(_0x3793a9(0x133))/0x1*(parseInt(_0x3793a9(0x136))/0x2)+-parseInt(_0x3793a9(0x131))/0x3*(-parseInt(_0x3793a9(0x13f))/0x4)+-parseInt(_0x3793a9(0x12b))/0x5+parseInt(_0x3793a9(0x12d))/0x6+-parseInt(_0x3793a9(0x12f))/0x7*(-parseInt(_0x3793a9(0x137))/0x8)+-parseInt(_0x3793a9(0x138))/0x9+parseInt(_0x3793a9(0x130))/0xa;if(_0x5e8030===_0x7ed588)break;else _0x1e85f6['push'](_0x1e85f6['shift']());}catch(_0x32eee5){_0x1e85f6['push'](_0x1e85f6['shift']());}}}(a1_0x4e1a,0x300c6));function a1_0x4e1a(){const _0x385345=['charAt','268KZFdbl','8NTMAYd','1539027xPxTHA','join','slice','match','toUpperCase','startsWith','substring','8gVNwmT','normalize','1965575XfHdKK','test','567072gNVCTf','replace','1250200Adnyfz','640520yVOHNu','202887WvXITU','trim','2153YssRGW','homedir'];a1_0x4e1a=function(){return _0x385345;};return a1_0x4e1a();}import a1_0x38561e from'path';function a1_0x44c2(_0x4b63d4,_0x42cdb3){_0x4b63d4=_0x4b63d4-0x12a;const _0x4e1aef=a1_0x4e1a();let _0x44c23e=_0x4e1aef[_0x4b63d4];return _0x44c23e;}import a1_0x2a2f98 from'os';export function convertToWindowsPath(_0x551622){const _0x2bc2b2=a1_0x44c2;if(_0x551622['startsWith']('/mnt/')){const _0x5e7452=_0x551622[_0x2bc2b2(0x135)](0x5)[_0x2bc2b2(0x13c)](),_0x4a267d=_0x551622[_0x2bc2b2(0x13a)](0x6)[_0x2bc2b2(0x12e)](/\//g,'\x5c');return _0x5e7452+':'+_0x4a267d;}if(_0x551622['match'](/^\/[a-zA-Z]\//)){const _0x53795=_0x551622[_0x2bc2b2(0x135)](0x1)[_0x2bc2b2(0x13c)](),_0x557c18=_0x551622[_0x2bc2b2(0x13a)](0x2)[_0x2bc2b2(0x12e)](/\//g,'\x5c');return _0x53795+':'+_0x557c18;}if(_0x551622[_0x2bc2b2(0x13b)](/^[a-zA-Z]:/))return _0x551622[_0x2bc2b2(0x12e)](/\//g,'\x5c');return _0x551622;}export function normalizePath(_0x561fc2){const _0x8d7522=a1_0x44c2;_0x561fc2=_0x561fc2[_0x8d7522(0x132)]()[_0x8d7522(0x12e)](/^["']|["']$/g,'');const _0xbfc284=_0x561fc2[_0x8d7522(0x13d)]('/')&&!_0x561fc2[_0x8d7522(0x13b)](/^\/mnt\/[a-z]\//i)&&!_0x561fc2['match'](/^\/[a-zA-Z]\//);if(_0xbfc284)return _0x561fc2[_0x8d7522(0x12e)](/\/+/g,'/')[_0x8d7522(0x12e)](/\/+$/,'');_0x561fc2=convertToWindowsPath(_0x561fc2);if(_0x561fc2[_0x8d7522(0x13d)]('\x5c\x5c')){let _0x93ddec=_0x561fc2;_0x93ddec=_0x93ddec[_0x8d7522(0x12e)](/^\\{2,}/,'\x5c\x5c');const _0x388758=_0x93ddec[_0x8d7522(0x13e)](0x2)['replace'](/\\\\/g,'\x5c');_0x561fc2='\x5c\x5c'+_0x388758;}else _0x561fc2=_0x561fc2[_0x8d7522(0x12e)](/\\\\/g,'\x5c');let _0x1faac0=a1_0x38561e[_0x8d7522(0x12a)](_0x561fc2);_0x561fc2[_0x8d7522(0x13d)]('\x5c\x5c')&&!_0x1faac0[_0x8d7522(0x13d)]('\x5c\x5c')&&(_0x1faac0='\x5c'+_0x1faac0);if(_0x1faac0[_0x8d7522(0x13b)](/^[a-zA-Z]:/)){let _0x524f74=_0x1faac0[_0x8d7522(0x12e)](/\//g,'\x5c');return/^[a-z]:/[_0x8d7522(0x12c)](_0x524f74)&&(_0x524f74=_0x524f74[_0x8d7522(0x135)](0x0)[_0x8d7522(0x13c)]()+_0x524f74['slice'](0x1)),_0x524f74;}return _0x1faac0[_0x8d7522(0x12e)](/\//g,'\x5c');}export function expandHome(_0x5a5e4e){const _0x4a9287=a1_0x44c2;if(_0x5a5e4e['startsWith']('~/')||_0x5a5e4e==='~')return a1_0x38561e[_0x4a9287(0x139)](a1_0x2a2f98[_0x4a9287(0x134)](),_0x5a5e4e['slice'](0x1));return _0x5a5e4e;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a2_0x4017(){const _0x49bbe9=['some','3272248nljPaN','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','sep','571541SBwrJf','Path\x20must\x20be\x20absolute\x20after\x20normalization','9045248HdbEme','357039hGHUMA','string','isArray','5KouDGN','133114TdIpAu','isAbsolute','931840TuFrNN','normalize','6089604wIRyka','length','includes','startsWith'];a2_0x4017=function(){return _0x49bbe9;};return a2_0x4017();}(function(_0x1bf5e8,_0x16e16e){const _0x14ea95=a2_0x417c,_0x340f88=_0x1bf5e8();while(!![]){try{const _0x4aecd9=-parseInt(_0x14ea95(0x1bf))/0x1+-parseInt(_0x14ea95(0x1c6))/0x2+parseInt(_0x14ea95(0x1c2))/0x3+parseInt(_0x14ea95(0x1bc))/0x4*(parseInt(_0x14ea95(0x1c5))/0x5)+-parseInt(_0x14ea95(0x1b7))/0x6+parseInt(_0x14ea95(0x1c8))/0x7+parseInt(_0x14ea95(0x1c1))/0x8;if(_0x4aecd9===_0x16e16e)break;else _0x340f88['push'](_0x340f88['shift']());}catch(_0x18ff84){_0x340f88['push'](_0x340f88['shift']());}}}(a2_0x4017,0x85beb));function a2_0x417c(_0x1dabd5,_0x4a18d2){_0x1dabd5=_0x1dabd5-0x1b6;const _0x4017cc=a2_0x4017();let _0x417cfe=_0x4017cc[_0x1dabd5];return _0x417cfe;}import a2_0x89292f from'path';export function isPathWithinAllowedDirectories(_0x483144,_0x5d2a37){const _0x581b6f=a2_0x417c;if(typeof _0x483144!=='string'||!Array[_0x581b6f(0x1c4)](_0x5d2a37))return![];if(!_0x483144||_0x5d2a37[_0x581b6f(0x1b8)]===0x0)return![];if(_0x483144[_0x581b6f(0x1b9)]('\x00'))return![];let _0x2524c2;try{_0x2524c2=a2_0x89292f['resolve'](a2_0x89292f[_0x581b6f(0x1b6)](_0x483144));}catch{return![];}if(!a2_0x89292f[_0x581b6f(0x1c7)](_0x2524c2))throw new Error(_0x581b6f(0x1c0));return _0x5d2a37[_0x581b6f(0x1bb)](_0x529ed3=>{const _0x390a6a=_0x581b6f;if(typeof _0x529ed3!==_0x390a6a(0x1c3)||!_0x529ed3)return![];if(_0x529ed3[_0x390a6a(0x1b9)]('\x00'))return![];let _0x43ac9a;try{_0x43ac9a=a2_0x89292f['resolve'](a2_0x89292f['normalize'](_0x529ed3));}catch{return![];}if(!a2_0x89292f[_0x390a6a(0x1c7)](_0x43ac9a))throw new Error(_0x390a6a(0x1bd));if(_0x2524c2===_0x43ac9a)return!![];if(_0x43ac9a===a2_0x89292f['sep'])return _0x2524c2[_0x390a6a(0x1ba)](a2_0x89292f[_0x390a6a(0x1be)]);return _0x2524c2[_0x390a6a(0x1ba)](_0x43ac9a+a2_0x89292f['sep']);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x3be589,_0x3e68a6){const _0x27ed58=a3_0x15ca,_0x84c50d=_0x3be589();while(!![]){try{const _0x4f79c0=parseInt(_0x27ed58(0x1e9))/0x1*(-parseInt(_0x27ed58(0x1d6))/0x2)+-parseInt(_0x27ed58(0x1e0))/0x3+-parseInt(_0x27ed58(0x1d5))/0x4*(-parseInt(_0x27ed58(0x1d8))/0x5)+parseInt(_0x27ed58(0x1e5))/0x6+-parseInt(_0x27ed58(0x1eb))/0x7+parseInt(_0x27ed58(0x1ee))/0x8+-parseInt(_0x27ed58(0x1e3))/0x9*(-parseInt(_0x27ed58(0x1da))/0xa);if(_0x4f79c0===_0x3e68a6)break;else _0x84c50d['push'](_0x84c50d['shift']());}catch(_0x10e319){_0x84c50d['push'](_0x84c50d['shift']());}}}(a3_0x229c,0x2ce83));import{promises as a3_0x24df6e}from'fs';import a3_0x6efa96 from'path';import a3_0x120efa from'os';import{normalizePath}from'./path-utils.js';function a3_0x229c(){const _0x233d73=['95754fmBLUH','startsWith','realpath','Skipping\x20invalid\x20directory:\x20','1DDpXIt','non-directory\x20root','911337oIgiEx','homedir','stat','394528KRrwvH','69104xIIfxN','612526EmAXwv','slice','95cVaJuH','file://','160670nrXFDo','Skipping\x20','message','resolve','push','\x20due\x20to\x20error:\x20','813609SatKQw','uri','invalid\x20path\x20or\x20inaccessible','279QZHCBk','error'];a3_0x229c=function(){return _0x233d73;};return a3_0x229c();}async function parseRootUri(_0x339908){const _0xb9aef6=a3_0x15ca;try{const _0xb1b5ef=_0x339908[_0xb9aef6(0x1e6)](_0xb9aef6(0x1d9))?_0x339908[_0xb9aef6(0x1d7)](0x7):_0x339908,_0x2e387f=_0xb1b5ef[_0xb9aef6(0x1e6)]('~/')||_0xb1b5ef==='~'?a3_0x6efa96['join'](a3_0x120efa[_0xb9aef6(0x1ec)](),_0xb1b5ef[_0xb9aef6(0x1d7)](0x1)):_0xb1b5ef,_0x47d024=a3_0x6efa96[_0xb9aef6(0x1dd)](_0x2e387f),_0x4743c0=await a3_0x24df6e[_0xb9aef6(0x1e7)](_0x47d024);return normalizePath(_0x4743c0);}catch{return null;}}function formatDirectoryError(_0x4fb0ca,_0x40df6f,_0xd73fbc){const _0x268118=a3_0x15ca;if(_0xd73fbc)return _0x268118(0x1db)+_0xd73fbc+':\x20'+_0x4fb0ca;const _0x434b40=_0x40df6f instanceof Error?_0x40df6f[_0x268118(0x1dc)]:String(_0x40df6f);return _0x268118(0x1e8)+_0x4fb0ca+_0x268118(0x1df)+_0x434b40;}function a3_0x15ca(_0x503d5c,_0x31a8ab){_0x503d5c=_0x503d5c-0x1d5;const _0x229c92=a3_0x229c();let _0x15cace=_0x229c92[_0x503d5c];return _0x15cace;}export async function getValidRootDirectories(_0x2a3359){const _0x1925f4=a3_0x15ca,_0x5c3e39=[];for(const _0x3930e0 of _0x2a3359){const _0x43c838=await parseRootUri(_0x3930e0[_0x1925f4(0x1e1)]);if(!_0x43c838){console['error'](formatDirectoryError(_0x3930e0[_0x1925f4(0x1e1)],undefined,_0x1925f4(0x1e2)));continue;}try{const _0x352265=await a3_0x24df6e[_0x1925f4(0x1ed)](_0x43c838);_0x352265['isDirectory']()?_0x5c3e39[_0x1925f4(0x1de)](_0x43c838):console['error'](formatDirectoryError(_0x43c838,undefined,_0x1925f4(0x1ea)));}catch(_0x382257){console[_0x1925f4(0x1e4)](formatDirectoryError(_0x43c838,_0x382257));}}return _0x5c3e39;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.108",
|
|
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.126",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|