@morphllm/morphmcp 0.8.80 → 0.8.81
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_0x57c7fb=a0_0x4122;(function(_0x3fd8ab,_0x27966e){const _0x47b1b5=a0_0x4122,_0x478d68=_0x3fd8ab();while(!![]){try{const _0x428ab2=-parseInt(_0x47b1b5(0x190))/0x1+parseInt(_0x47b1b5(0x165))/0x2+parseInt(_0x47b1b5(0x1d2))/0x3+-parseInt(_0x47b1b5(0x239))/0x4*(parseInt(_0x47b1b5(0x1d1))/0x5)+-parseInt(_0x47b1b5(0x198))/0x6+parseInt(_0x47b1b5(0x16d))/0x7+-parseInt(_0x47b1b5(0x195))/0x8*(-parseInt(_0x47b1b5(0x1ad))/0x9);if(_0x428ab2===_0x27966e)break;else _0x478d68['push'](_0x478d68['shift']());}catch(_0x96db24){_0x478d68['push'](_0x478d68['shift']());}}}(a0_0xf7cf,0x6a069));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_0x188d76 from'fs/promises';import a0_0x4fd06a from'path';import a0_0x4fc1f2 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}from'@morphllm/morphsdk/tools/warp-grep';import{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';function a0_0x4122(_0x4ecdd8,_0x4fb321){_0x4ecdd8=_0x4ecdd8-0x15a;const _0xf7cfda=a0_0xf7cf();let _0x4122f2=_0xf7cfda[_0x4ecdd8];return _0x4122f2;}import a0_0x5dba8f from'axios';function fixPathRepetition(_0x3673c9){const _0x52b1a7=a0_0x4122,_0x199312=_0x3673c9[_0x52b1a7(0x19e)](a0_0x4fd06a[_0x52b1a7(0x206)])['filter'](Boolean);if(_0x199312[_0x52b1a7(0x21a)]<0x2)return null;for(let _0x4136aa=Math['floor'](_0x199312[_0x52b1a7(0x21a)]/0x2);_0x4136aa>=0x1;_0x4136aa--){for(let _0x40b7af=0x0;_0x40b7af<=_0x199312[_0x52b1a7(0x21a)]-0x2*_0x4136aa;_0x40b7af++){const _0x29fe5c=_0x199312[_0x52b1a7(0x1a1)](_0x40b7af,_0x40b7af+_0x4136aa),_0x1356a3=_0x199312[_0x52b1a7(0x1a1)](_0x40b7af+_0x4136aa,_0x40b7af+0x2*_0x4136aa);if(_0x29fe5c[_0x52b1a7(0x201)]((_0x2b99e4,_0x18003e)=>_0x2b99e4===_0x1356a3[_0x18003e])){const _0x44521b=[..._0x199312['slice'](0x0,_0x40b7af),..._0x199312[_0x52b1a7(0x1a1)](_0x40b7af+_0x4136aa)];return a0_0x4fd06a[_0x52b1a7(0x206)]+_0x44521b[_0x52b1a7(0x1cd)](a0_0x4fd06a['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x328b6f=a0_0x4122;try{const _0x2c25ff=require('../package.json');return _0x2c25ff[_0x328b6f(0x22a)]??_0x328b6f(0x179);}catch(_0x5861ff){return console[_0x328b6f(0x230)](_0x328b6f(0x1cc),_0x5861ff),_0x328b6f(0x179);}}function printHelp(){const _0x1e8f37=a0_0x4122;console[_0x1e8f37(0x24b)](_0x1e8f37(0x23e)+getPackageVersion()),console['log'](_0x1e8f37(0x242)),console[_0x1e8f37(0x24b)]('\x0aOptions:'),console[_0x1e8f37(0x24b)](_0x1e8f37(0x15c)),console[_0x1e8f37(0x24b)](_0x1e8f37(0x1f6)),console[_0x1e8f37(0x24b)](_0x1e8f37(0x24d)),console[_0x1e8f37(0x24b)](_0x1e8f37(0x1be)),console[_0x1e8f37(0x24b)](_0x1e8f37(0x221));}const cliArgs=process['argv'][a0_0x57c7fb(0x1a1)](0x2),VERSION_FLAGS=new Set([a0_0x57c7fb(0x1bf),'-v','-V']),HELP_FLAGS=new Set([a0_0x57c7fb(0x15d),'-h']);cliArgs[a0_0x57c7fb(0x1ea)](_0x2906df=>VERSION_FLAGS['has'](_0x2906df))&&(console[a0_0x57c7fb(0x24b)](a0_0x57c7fb(0x23e)+getPackageVersion()),process[a0_0x57c7fb(0x194)](0x0));cliArgs[a0_0x57c7fb(0x1ea)](_0x32f526=>HELP_FLAGS[a0_0x57c7fb(0x244)](_0x32f526))&&(printHelp(),process[a0_0x57c7fb(0x194)](0x0));const args=cliArgs[a0_0x57c7fb(0x241)](_0x28b859=>!VERSION_FLAGS[a0_0x57c7fb(0x244)](_0x28b859)&&!HELP_FLAGS[a0_0x57c7fb(0x244)](_0x28b859)),ALL_TOOLS=[a0_0x57c7fb(0x160),a0_0x57c7fb(0x20c),a0_0x57c7fb(0x1f0)],DEFAULT_TOOLS=['edit_file','warpgrep_codebase_search'],ENABLED_TOOLS=process[a0_0x57c7fb(0x1a3)][a0_0x57c7fb(0x189)]?process['env'][a0_0x57c7fb(0x189)]===a0_0x57c7fb(0x18c)?ALL_TOOLS:process[a0_0x57c7fb(0x1a3)]['ENABLED_TOOLS'][a0_0x57c7fb(0x19e)](',')[a0_0x57c7fb(0x1ef)](_0x265e06=>_0x265e06[a0_0x57c7fb(0x171)]()):DEFAULT_TOOLS;console[a0_0x57c7fb(0x230)](a0_0x57c7fb(0x1d7)+ENABLED_TOOLS['join'](',\x20'));const WORKSPACE_ROOT=process[a0_0x57c7fb(0x1a3)][a0_0x57c7fb(0x1b5)]||process[a0_0x57c7fb(0x1a3)][a0_0x57c7fb(0x1bc)]||process[a0_0x57c7fb(0x15b)](),ENABLE_WORKSPACE_MODE=process[a0_0x57c7fb(0x1a3)]['ENABLE_WORKSPACE_MODE']!==a0_0x57c7fb(0x1b1),MORPH_API_KEY=process['env'][a0_0x57c7fb(0x250)],MORPH_API_URL=process['env'][a0_0x57c7fb(0x1ba)],MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x57c7fb(0x1f3)]?parseInt(process['env'][a0_0x57c7fb(0x1f3)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x57c7fb(0x202)]('sk-')&&!MORPH_API_KEY[a0_0x57c7fb(0x202)](a0_0x57c7fb(0x22d))&&console[a0_0x57c7fb(0x230)](a0_0x57c7fb(0x1f8));async function reportMorphError(_0x46cc3a){const _0x39c65e=a0_0x57c7fb;try{await a0_0x5dba8f['post'](_0x39c65e(0x185),{..._0x46cc3a,'timestamp':new Date()[_0x39c65e(0x251)](),'source':_0x46cc3a[_0x39c65e(0x23d)]||_0x39c65e(0x164)},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}args[a0_0x57c7fb(0x21a)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x57c7fb(0x230)](a0_0x57c7fb(0x17c)),console['error'](a0_0x57c7fb(0x18f)),console['error'](a0_0x57c7fb(0x1ac)),console['error'](a0_0x57c7fb(0x208)),console[a0_0x57c7fb(0x230)](a0_0x57c7fb(0x227)),console['error']('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0xa08cf){return a0_0x4fd06a['normalize'](_0xa08cf);}function a0_0xf7cf(){const _0x29c016=['-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','ENABLED_TOOLS','\x20is\x20not\x20a\x20directory','Preview\x20changes\x20without\x20applying\x20them.','all','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','push','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','820781hRiWmT','etimedout','\x22>\x0aError\x20reading\x20file:\x20','optional','exit','336xwIIUH','\x0a...\x20(truncated,\x20total:\x20','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','468336ntPSjU','toFixed','assistant','\x20results\x20in\x20','requiresApiKey','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','split','access','success','slice','Rules:\x0a','env','Max\x20results\x20to\x20return','name','morph-mcp','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','resolve','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','dirname','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','67086RRNmKv','ENOENT','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','default','false','Workspace\x20mode\x20enabled:\x20Using\x20','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','WORKSPACE_ROOT','\x20\x20\x20','search_string','endLine','linesAdded','MORPH_API_URL','query','PWD','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','\x20\x20morph-mcp','--version','data','text','FileReadError','added\x20','.git','oninitialized','startLine','listRoots','unknown\x20error','Invalid\x20arguments:\x20','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','basename','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','join','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','0.2.0','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','5JPHQvz','2415396LpGVFt','catch','path','Benefits:\x0a','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','Enabled\x20tools:\x20','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','Failed\x20to\x20request\x20roots\x20from\x20client:','lines','Morph\x20Edit\x20Preview','No\x20results\x20found\x20for\x20query:\x20\x22','message','Parent\x20directory\x20does\x20not\x20exist:\x20','morph-warp-grep-v1-1111v0','Error\x20running\x20fast\x20context\x20search:\x20','terminated','Warning:\x20Workspace\x20fallback\x20failed:\x20','array','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','morph-v3-fast','repoId','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.','timed\x20out','toLowerCase','some','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Failed\x20to\x20read\x20file:\x20','isArray','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','map','codebase_search','rerankScore','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','MORPH_WARP_GREP_TIMEOUT',',\x20removed\x20','stats','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','...','filepath','limit','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','realpath','composer.json','every','startsWith','The\x20search\x20term\x20should\x20be\x20a\x20targeted\x20natural\x20language\x20query\x20based\x20on\x20what\x20you\x20are\x20trying\x20to\x20accomplish,\x20like\x20\x27Find\x20where\x20authentication\x20requests\x20are\x20handled\x20in\x20the\x20Express\x20routes\x27\x20or\x20\x27Modify\x20the\x20agentic\x20rollout\x20to\x20use\x20the\x20new\x20tokenizer\x20and\x20chat\x20template\x27\x20or\x20\x27Fix\x20the\x20bug\x20where\x20the\x20user\x20gets\x20redirected\x20from\x20the\x20/feed\x20page\x27.\x20','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Warning:\x20','sep','code_edit','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','describe','dryRun','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','warpgrep_codebase_search','terminationReason','changes','object','TimeoutError','go.mod','linesRemoved','Unknown\x20error','Search\x20failed:\x20','utf-8','\x20(new\x20file)','results','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','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','length','description','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Error:\x20','WarpGrepError','number','\x20\x20morph-mcp\x20~/repo','readFile','files','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20',',\x20modified\x20','boolean','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','repo_path','version','Applied','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','morph-','instruction','UnknownError','error','Repository\x20identifier','includes','errors','timeout','branch','package.json','content','Morph\x20Edit\x20','2378276ghRVrG','isDirectory','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','\x27\x20in\x20`','source','@morphllm/morphmcp\x20','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','homedir','filter','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','code','has','stat','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','match','commitHash','messages','timings','log','File\x20read\x20error:','\x0aExamples:','setRequestHandler','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','MORPH_API_KEY','toISOString','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','For\x20deletions:\x0a','cwd','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','--help','constructor','Morph\x20FastApply\x20failed\x20without\x20error\x20message','edit_file','Cargo.toml','pyproject.toml','safeParse','mcp-filesystem','1001624ePyRZf','ms:\x0a\x0a','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','role','</file>','<file\x20path=\x22','string','Here\x20is\x20the\x20content\x20of\x20files:\x0a','2160725eltxEo','finish','Specific\x20commit\x20hash\x20to\x20search','\x0a</file>','trim','tsconfig.json','Fatal\x20error\x20running\x20server:','[could\x20not\x20read\x20file:\x20','-\x20Listed\x20directory\x20`','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','.\x20Path:\x20','substring','unknown','stack','stringify','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','targetDirectories','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','getClientCapabilities','\x20as\x20allowed\x20directory','metadata','roots','.\x20Changes:\x20','Created\x20File','https://morphllm.com/api/error-report','completed_with_file_errors','-\x20Grepped\x20\x27'];a0_0xf7cf=function(){return _0x29c016;};return a0_0xf7cf();}function expandHome(_0x31de62){const _0x97240f=a0_0x57c7fb;if(_0x31de62[_0x97240f(0x202)]('~/')||_0x31de62==='~')return a0_0x4fd06a[_0x97240f(0x1cd)](a0_0x4fc1f2[_0x97240f(0x240)](),_0x31de62[_0x97240f(0x1a1)](0x1));return _0x31de62;}let allowedDirectories=await Promise['all'](args[a0_0x57c7fb(0x1ef)](async _0x5473b7=>{const _0x15361b=a0_0x57c7fb,_0x403932=expandHome(_0x5473b7),_0x4b578f=a0_0x4fd06a[_0x15361b(0x1a9)](_0x403932);try{const _0x20b5e3=await a0_0x188d76[_0x15361b(0x1ff)](_0x4b578f);return normalizePath(_0x20b5e3);}catch(_0x26eb77){return normalizePath(_0x4b578f);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x57c7fb(0x21a)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x57c7fb(0x18e)](workspaceDir),console[a0_0x57c7fb(0x230)](a0_0x57c7fb(0x1b2)+workspaceDir+a0_0x57c7fb(0x180)));}catch(a0_0x5db7e8){console['error'](a0_0x57c7fb(0x1aa)+a0_0x5db7e8);}async function detectWorkspaceRoot(_0x230608){const _0x45dc0e=a0_0x57c7fb;let _0x262be4=a0_0x4fd06a[_0x45dc0e(0x1a9)](_0x230608);const _0x18392d=[_0x45dc0e(0x1c4),'.vscode',_0x45dc0e(0x236),_0x45dc0e(0x161),_0x45dc0e(0x162),_0x45dc0e(0x211),'.cursor',_0x45dc0e(0x172),_0x45dc0e(0x200)];while(_0x262be4!==a0_0x4fd06a[_0x45dc0e(0x1ab)](_0x262be4)){for(const _0x167d28 of _0x18392d){const _0x392489=a0_0x4fd06a[_0x45dc0e(0x1cd)](_0x262be4,_0x167d28);try{return await a0_0x188d76[_0x45dc0e(0x19f)](_0x392489),normalizePath(_0x262be4);}catch{}}_0x262be4=a0_0x4fd06a['dirname'](_0x262be4);}return normalizePath(_0x230608);}await Promise[a0_0x57c7fb(0x18c)](args[a0_0x57c7fb(0x1ef)](async _0x13dc45=>{const _0xff370d=a0_0x57c7fb;try{const _0x4fc8ba=await a0_0x188d76[_0xff370d(0x245)](expandHome(_0x13dc45));!_0x4fc8ba[_0xff370d(0x23a)]()&&(console['error'](_0xff370d(0x21e)+_0x13dc45+_0xff370d(0x18a)),process[_0xff370d(0x194)](0x1));}catch(_0x1f594c){console[_0xff370d(0x230)]('Error\x20accessing\x20directory\x20'+_0x13dc45+':',_0x1f594c),process[_0xff370d(0x194)](0x1);}}));async function validatePath(_0x37db17){const _0x235998=a0_0x57c7fb,_0x191fe5=expandHome(_0x37db17),_0x56d643=a0_0x4fd06a[_0x235998(0x1a9)](_0x191fe5);try{const _0x25c722=await a0_0x188d76[_0x235998(0x1ff)](_0x56d643);return _0x25c722;}catch(_0x7efe0b){if(_0x7efe0b[_0x235998(0x243)]===_0x235998(0x1ae)){const _0x3f16d1=a0_0x4fd06a[_0x235998(0x1ab)](_0x56d643);try{const _0x3e0ae4=await a0_0x188d76['realpath'](_0x3f16d1);return a0_0x4fd06a['join'](_0x3e0ae4,a0_0x4fd06a[_0x235998(0x1cb)](_0x56d643));}catch{throw new Error(_0x235998(0x1de)+_0x3f16d1);}}throw _0x7efe0b;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x57c7fb(0x16b)](),'code_edit':z[a0_0x57c7fb(0x16b)]()[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x1b4)),'instruction':z[a0_0x57c7fb(0x16b)]()[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x1a8)),'dryRun':z[a0_0x57c7fb(0x226)]()['default'](![])[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x18b))}),WarpGrepArgsSchema=z[a0_0x57c7fb(0x20f)]({'search_string':z['string']()[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x1e4)),'repo_path':z['string']()['describe'](a0_0x57c7fb(0x19d))}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0x57c7fb(0x16b)]()[a0_0x57c7fb(0x209)]('Natural\x20language\x20query\x20to\x20search\x20for\x20code'),'repoId':z['string']()[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x231)),'branch':z[a0_0x57c7fb(0x16b)]()['optional']()[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x23f)),'commitHash':z[a0_0x57c7fb(0x16b)]()[a0_0x57c7fb(0x193)]()[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x16f)),'targetDirectories':z[a0_0x57c7fb(0x1e3)](z[a0_0x57c7fb(0x16b)]())[a0_0x57c7fb(0x1b0)]([])[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x18d)),'limit':z[a0_0x57c7fb(0x220)]()[a0_0x57c7fb(0x193)]()[a0_0x57c7fb(0x1b0)](0xa)[a0_0x57c7fb(0x209)](a0_0x57c7fb(0x1a4))}),server=new Server({'name':a0_0x57c7fb(0x1a6),'version':'0.2.0'},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0xf10340=a0_0x57c7fb,_0x5ec5f1=[{'name':_0xf10340(0x160),'description':_0xf10340(0x17e)+_0xf10340(0x176)+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+'IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a'+_0xf10340(0x1d5)+_0xf10340(0x1d0)+_0xf10340(0x24f)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+_0xf10340(0x1ca)+_0xf10340(0x1ce)+_0xf10340(0x15a)+_0xf10340(0x1bd)+_0xf10340(0x204)+_0xf10340(0x1a2)+_0xf10340(0x1fc)+_0xf10340(0x228)+_0xf10340(0x1eb)+_0xf10340(0x188)+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+_0xf10340(0x1f2)+_0xf10340(0x219),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0xf10340(0x20c),'description':_0xf10340(0x1ee)+'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'+_0xf10340(0x203)+_0xf10340(0x1fd)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.'+'Note:\x20The\x20files\x20and\x20line\x20ranges\x20returned\x20by\x20this\x20tool\x20may\x20be\x20some\x20of\x20the\x20ones\x20needed\x20to\x20complete\x20the\x20user\x27s\x20request,\x20but\x20you\x20should\x20be\x20careful\x20in\x20evaluating\x20the\x20relevance\x20of\x20the\x20results,\x20since\x20the\x20subagent\x20might\x20make\x20mistakes.\x20'+_0xf10340(0x1d8)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':'codebase_search','description':'**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a'+'⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a'+_0xf10340(0x1f7)+'Benefits:\x0a'+_0xf10340(0x252)+_0xf10340(0x23b)+'-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a'+_0xf10340(0x246)+_0xf10340(0x1a7)+_0xf10340(0x224)+_0xf10340(0x197),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x44105a=_0x5ec5f1['filter'](_0x5a8c4d=>{const _0x2db299=_0xf10340;if(!ENABLED_TOOLS[_0x2db299(0x232)](_0x5a8c4d['name']))return![];if(_0x2db299(0x19c)in _0x5a8c4d&&_0x5a8c4d[_0x2db299(0x19c)]&&!MORPH_API_KEY)return console[_0x2db299(0x230)](_0x2db299(0x205)+_0x5a8c4d[_0x2db299(0x1a5)]+_0x2db299(0x253)),![];return!![];});return{'tools':_0x44105a[_0xf10340(0x1ef)](_0x123482=>({'name':_0x123482[_0xf10340(0x1a5)],'description':_0x123482[_0xf10340(0x21b)],'inputSchema':_0x123482['inputSchema']}))};}),server[a0_0x57c7fb(0x24e)](CallToolRequestSchema,async _0x354e22=>{const _0x166d8a=a0_0x57c7fb;try{const {name:_0x457a0b,arguments:_0x2c280a}=_0x354e22['params'];switch(_0x457a0b){case _0x166d8a(0x160):{const _0x448853=MorphEditFileArgsSchema[_0x166d8a(0x163)](_0x2c280a);if(!_0x448853[_0x166d8a(0x1a0)])throw new Error(_0x166d8a(0x1d6)+_0x448853[_0x166d8a(0x230)]);const _0x24a9d8=await validatePath(_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x1d4)]);let _0xaf34e1=null,_0x5b0b0f=!![],_0x1b771f=null;try{_0xaf34e1=await a0_0x188d76[_0x166d8a(0x222)](_0x24a9d8,_0x166d8a(0x215));}catch(_0x45df29){const _0x58dfa0=_0x45df29[_0x166d8a(0x243)];_0x58dfa0===_0x166d8a(0x1ae)?(_0x5b0b0f=![],_0xaf34e1=''):(_0x1b771f=_0x166d8a(0x1ec)+(_0x58dfa0||_0x166d8a(0x179))+'\x20-\x20'+(_0x45df29 instanceof Error?_0x45df29[_0x166d8a(0x1dd)]:String(_0x45df29)),console[_0x166d8a(0x230)](_0x166d8a(0x205)+_0x1b771f));}try{const _0x3d5dc6=MORPH_API_KEY;if(!_0x3d5dc6)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x4e5a6a=a0_0x4fd06a[_0x166d8a(0x1ab)](_0x24a9d8),_0x34bc80=a0_0x4fd06a[_0x166d8a(0x1cb)](_0x24a9d8),_0x31c3d7=await executeEditFile({'target_filepath':_0x34bc80,'code_edit':_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x207)],'instructions':_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x22e)]},{'morphApiKey':_0x3d5dc6,'morphApiUrl':MORPH_API_URL,'baseDir':_0x4e5a6a,'autoWrite':!_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x20a)],'generateUdiff':![],'debug':![]});if(!_0x31c3d7[_0x166d8a(0x1a0)])throw new Error(_0x31c3d7[_0x166d8a(0x230)]||_0x166d8a(0x15f));const _0x231e9a=_0x31c3d7[_0x166d8a(0x20e)],_0xbf6664=_0x166d8a(0x1c3)+_0x231e9a[_0x166d8a(0x1b9)]+_0x166d8a(0x1f4)+_0x231e9a[_0x166d8a(0x212)]+_0x166d8a(0x225)+_0x231e9a['linesModified'];if(_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x20a)])return{'content':[{'type':_0x166d8a(0x1c1),'text':_0x166d8a(0x1db)+(_0x5b0b0f?'':_0x166d8a(0x216))+':\x20'+_0x448853[_0x166d8a(0x1c0)]['instruction']+_0x166d8a(0x183)+_0xbf6664+_0x166d8a(0x177)+_0x448853['data']['path']+'.'}]};return{'content':[{'type':'text','text':_0x166d8a(0x238)+(_0x5b0b0f?_0x166d8a(0x22b):_0x166d8a(0x184))+':\x20'+_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x22e)]+'.\x20Changes:\x20'+_0xbf6664+_0x166d8a(0x177)+_0x448853[_0x166d8a(0x1c0)]['path']+'.'}]};}catch(_0x413534){const _0x27f663=_0x413534 instanceof Error?_0x413534[_0x166d8a(0x1dd)]:String(_0x413534);return reportMorphError({'error_message':_0x27f663,'error_type':_0x413534 instanceof Error?_0x413534[_0x166d8a(0x15e)][_0x166d8a(0x1a5)]:_0x166d8a(0x22f),'context':{'tool':'edit_file','file_path':_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x1d4)],'validated_path':_0x24a9d8,'instruction':_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x22e)],'model':_0x166d8a(0x1e5),'dry_run':_0x448853['data'][_0x166d8a(0x20a)],'file_exists':_0x5b0b0f,'file_read_error':_0x1b771f,'file_readable':_0xaf34e1!==null,'request_content':{'path':_0x448853[_0x166d8a(0x1c0)][_0x166d8a(0x1d4)],'code_edit':_0x448853[_0x166d8a(0x1c0)]['code_edit'],'instruction':_0x448853['data']['instruction'],'original_code':_0xaf34e1!==null?_0xaf34e1[_0x166d8a(0x21a)]>0xc350?_0xaf34e1[_0x166d8a(0x178)](0x0,0xc350)+_0x166d8a(0x196)+_0xaf34e1[_0x166d8a(0x21a)]+'\x20chars)':_0xaf34e1:_0x166d8a(0x174)+(_0x1b771f||_0x166d8a(0x1c8))+']','original_code_length':_0xaf34e1?.[_0x166d8a(0x21a)]??0x0,'model':_0x166d8a(0x1e5),'dry_run':_0x448853['data']['dryRun']}},'stack_trace':_0x413534 instanceof Error?_0x413534[_0x166d8a(0x17a)]:undefined,'source':_0x166d8a(0x164)})['catch'](()=>{}),{'content':[{'type':_0x166d8a(0x1c1),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x27f663}],'isError':!![]};}}case _0x166d8a(0x20c):{const _0x1238ae=WarpGrepArgsSchema[_0x166d8a(0x163)](_0x2c280a);if(!_0x1238ae[_0x166d8a(0x1a0)])return{'content':[{'type':_0x166d8a(0x1c1),'text':'Invalid\x20arguments:\x20'+_0x1238ae[_0x166d8a(0x230)]}],'isError':!![]};const _0x3a96f4=_0x3c5a13=>{const _0x119fad=_0x166d8a,_0x96ba4a=[];for(const _0x35a4c8 of _0x3c5a13||[]){const _0xe7b179=_0x35a4c8[_0x119fad(0x168)],_0x220a7b=_0x35a4c8[_0x119fad(0x237)];if(_0xe7b179===_0x119fad(0x19a)&&_0x220a7b){const _0x30b809=_0x220a7b[_0x119fad(0x19e)]('\x0a')[_0x119fad(0x241)](_0xc7dc3a=>_0xc7dc3a[_0x119fad(0x171)]());for(const _0x3bb397 of _0x30b809){const _0x57e753=_0x3bb397[_0x119fad(0x247)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x57e753){_0x96ba4a['push']('grep\x20\x27'+_0x57e753[0x1]+'\x27\x20'+_0x57e753[0x2]);continue;}const _0x62696a=_0x3bb397[_0x119fad(0x247)](/^read\s+(.+)$/);if(_0x62696a){_0x96ba4a['push']('read\x20'+_0x62696a[0x1]);continue;}const _0x177b13=_0x3bb397[_0x119fad(0x247)](/^list_directory\s+(.+)$/);if(_0x177b13){_0x96ba4a['push']('list_directory\x20'+_0x177b13[0x1]);continue;}}}}return _0x96ba4a;};try{const _0x48f27d=a0_0x4fd06a[_0x166d8a(0x1a9)](_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x229)]),_0x143063=new LocalRipgrepProvider(_0x48f27d),_0x385f9d=await runWarpGrep({'query':_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x1b7)],'repoRoot':_0x48f27d,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x143063});let _0x1759eb='';if(_0x385f9d[_0x166d8a(0x20d)]==='completed'&&_0x385f9d[_0x166d8a(0x16e)]?.[_0x166d8a(0x181)]?.[_0x166d8a(0x223)]){const _0xb47a30=_0x385f9d[_0x166d8a(0x16e)][_0x166d8a(0x181)]['files'],_0x2cd370=[],_0x287eba=[_0x166d8a(0x1b3)];for(const _0x2cd83a of _0x385f9d[_0x166d8a(0x249)]){const _0x423864=_0x2cd83a[_0x166d8a(0x168)],_0x3c28a6=_0x2cd83a[_0x166d8a(0x237)];if(_0x423864===_0x166d8a(0x19a)&&_0x3c28a6){const _0x180f02=_0x3c28a6[_0x166d8a(0x19e)]('\x0a')[_0x166d8a(0x241)](_0xd5de2c=>_0xd5de2c[_0x166d8a(0x171)]());for(const _0x3a3024 of _0x180f02){const _0x3aa367=_0x3a3024[_0x166d8a(0x247)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x3aa367){_0x287eba[_0x166d8a(0x18e)](_0x166d8a(0x187)+_0x3aa367[0x1]+_0x166d8a(0x23c)+_0x3aa367[0x2]+'`');continue;}const _0x56d969=_0x3a3024[_0x166d8a(0x247)](/^read\s+(.+)$/);if(_0x56d969){_0x287eba[_0x166d8a(0x18e)]('-\x20Read\x20file\x20`'+_0x56d969[0x1]+'`');continue;}const _0x2e334d=_0x3a3024['match'](/^list_directory\s+(.+)$/);if(_0x2e334d){_0x287eba[_0x166d8a(0x18e)](_0x166d8a(0x175)+_0x2e334d[0x1]+'`');continue;}}}}_0x2cd370[_0x166d8a(0x18e)](_0x287eba[_0x166d8a(0x1cd)]('\x0a'));const _0xf2473d=['','Relevant\x20context\x20found:'];for(const _0x6b6c3d of _0xb47a30){if(_0x6b6c3d['lines']==='*')_0xf2473d[_0x166d8a(0x18e)]('-\x20'+_0x6b6c3d[_0x166d8a(0x1d4)]+':*');else{if(Array[_0x166d8a(0x1ed)](_0x6b6c3d[_0x166d8a(0x1da)])){const _0x42db02=_0x6b6c3d['lines'][_0x166d8a(0x1ef)](([_0x446032,_0x4c888e])=>{if(_0x446032===_0x4c888e)return''+_0x446032;return _0x446032+'-'+_0x4c888e;});_0xf2473d['push']('-\x20'+_0x6b6c3d[_0x166d8a(0x1d4)]+':'+_0x42db02[_0x166d8a(0x1cd)](','));}else _0xf2473d[_0x166d8a(0x18e)]('-\x20'+_0x6b6c3d['path']+':*');}}_0xf2473d[_0x166d8a(0x18e)](''),_0x2cd370[_0x166d8a(0x18e)](_0xf2473d[_0x166d8a(0x1cd)]('\x0a')),_0x2cd370[_0x166d8a(0x18e)](_0x166d8a(0x16c));const _0x2d6e10=[];for(const _0x34419c of _0xb47a30){let _0x478f64=a0_0x4fd06a['resolve'](_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x229)],_0x34419c[_0x166d8a(0x1d4)]),_0x280aa6=null,_0x380dcb=null;try{_0x280aa6=await a0_0x188d76['readFile'](_0x478f64,{'encoding':_0x166d8a(0x215)});}catch(_0x109a7b){const _0x40516c=fixPathRepetition(_0x478f64);if(_0x40516c)try{_0x280aa6=await a0_0x188d76[_0x166d8a(0x222)](_0x40516c,{'encoding':_0x166d8a(0x215)}),_0x478f64=_0x40516c;}catch{_0x380dcb=_0x109a7b instanceof Error?_0x109a7b:new Error(String(_0x109a7b));}else _0x380dcb=_0x109a7b instanceof Error?_0x109a7b:new Error(String(_0x109a7b));}if(_0x280aa6!==null){const _0x3aabec=_0x280aa6[_0x166d8a(0x19e)](/\r?\n/),_0x424966=['<file\x20path=\x22'+_0x34419c[_0x166d8a(0x1d4)]+'\x22>'];if(_0x34419c['lines']==='*'||!Array['isArray'](_0x34419c[_0x166d8a(0x1da)]))for(let _0x44e08a=0x1;_0x44e08a<=_0x3aabec[_0x166d8a(0x21a)];_0x44e08a++){const _0x4ed95b=_0x3aabec[_0x44e08a-0x1];_0x424966[_0x166d8a(0x18e)](_0x44e08a+'|\x20'+_0x4ed95b);}else for(const [_0x197d59,_0x19685a]of _0x34419c[_0x166d8a(0x1da)]){_0x424966['length']>0x1&&_0x424966['push']('');for(let _0x10f678=_0x197d59;_0x10f678<=_0x19685a&&_0x10f678<=_0x3aabec['length'];_0x10f678++){const _0xbd46c4=_0x3aabec[_0x10f678-0x1];_0x424966[_0x166d8a(0x18e)](_0x10f678+'|\x20'+_0xbd46c4);}}_0x424966['push'](_0x166d8a(0x169)),_0x2d6e10[_0x166d8a(0x18e)](_0x424966['join']('\x0a'));}else _0x2d6e10[_0x166d8a(0x18e)](_0x166d8a(0x16a)+_0x34419c['path']+_0x166d8a(0x192)+(_0x380dcb?.[_0x166d8a(0x1dd)]||_0x166d8a(0x213))+_0x166d8a(0x170));}_0x2cd370[_0x166d8a(0x18e)](_0x2d6e10['join']('\x0a\x0a')),_0x1759eb=_0x2cd370[_0x166d8a(0x1cd)]('\x0a');const _0x53838e=_0x385f9d['errors']?.[_0x166d8a(0x241)](_0x4e3444=>_0x4e3444[_0x166d8a(0x1dd)]?.[_0x166d8a(0x202)](_0x166d8a(0x24c)))||[];if(_0x53838e[_0x166d8a(0x21a)]>0x0){const _0x71f20=_0x53838e['map'](_0x6cd040=>_0x6cd040[_0x166d8a(0x1dd)])[_0x166d8a(0x1cd)](';\x20');reportMorphError({'error_message':_0x71f20,'error_type':_0x166d8a(0x1c2),'context':{'tool':_0x166d8a(0x20c),'repo_path':_0x1238ae['data'][_0x166d8a(0x229)],'query':_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x1b7)],'model':_0x166d8a(0x1df),'termination_reason':_0x166d8a(0x186),'error_count':_0x53838e[_0x166d8a(0x21a)],'is_timeout':![],'timings':_0x385f9d[_0x166d8a(0x24a)],'files_attempted':_0xb47a30[_0x166d8a(0x1ef)](_0x31c3b2=>({'path':_0x31c3b2[_0x166d8a(0x1d4)],'lines':_0x31c3b2[_0x166d8a(0x1da)]})),'tool_calls':_0x3a96f4(_0x385f9d[_0x166d8a(0x249)]),'messages':_0x385f9d['messages']?.['map'](_0x2f452c=>({'role':_0x2f452c[_0x166d8a(0x168)],'content':_0x2f452c[_0x166d8a(0x237)]})),'request_content':{'query':_0x1238ae['data']['search_string'],'repo_path':_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x229)],'repoRoot':a0_0x4fd06a[_0x166d8a(0x1a9)](_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x229)]),'model':_0x166d8a(0x1df)}},'source':_0x166d8a(0x164)})[_0x166d8a(0x1d3)](()=>{});}}else{if(_0x385f9d[_0x166d8a(0x20d)]===_0x166d8a(0x1e1)&&_0x385f9d['errors'][_0x166d8a(0x21a)]>0x0){const _0x1542e2=_0x385f9d[_0x166d8a(0x233)][_0x166d8a(0x1ef)](_0x1c9b56=>_0x1c9b56[_0x166d8a(0x1dd)])[_0x166d8a(0x1cd)](';\x20');_0x1759eb=_0x166d8a(0x21e)+_0x1542e2;const _0x1a0b63=_0x1542e2[_0x166d8a(0x1e9)]()['includes'](_0x166d8a(0x234))||_0x1542e2['toLowerCase']()[_0x166d8a(0x232)](_0x166d8a(0x1e8))||_0x1542e2[_0x166d8a(0x1e9)]()['includes'](_0x166d8a(0x191)),_0x56d861=_0x385f9d[_0x166d8a(0x16e)]?.[_0x166d8a(0x181)]?.[_0x166d8a(0x223)],_0x10c8f1=_0x385f9d[_0x166d8a(0x233)][0x0];reportMorphError({'error_message':_0x1542e2,'error_type':_0x1a0b63?_0x166d8a(0x210):_0x10c8f1?.[_0x166d8a(0x15e)]?.['name']||_0x166d8a(0x21f),'context':{'tool':_0x166d8a(0x20c),'repo_path':_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x229)],'query':_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x1b7)],'model':_0x166d8a(0x1df),'termination_reason':_0x385f9d[_0x166d8a(0x20d)],'error_count':_0x385f9d[_0x166d8a(0x233)][_0x166d8a(0x21a)],'is_timeout':_0x1a0b63,'timings':_0x385f9d[_0x166d8a(0x24a)],'files_attempted':_0x56d861?.['map'](_0x5b2d3c=>({'path':_0x5b2d3c[_0x166d8a(0x1d4)],'lines':_0x5b2d3c[_0x166d8a(0x1da)]})),'tool_calls':_0x3a96f4(_0x385f9d[_0x166d8a(0x249)]),'messages':_0x385f9d[_0x166d8a(0x249)]?.[_0x166d8a(0x1ef)](_0x3c22dc=>({'role':_0x3c22dc[_0x166d8a(0x168)],'content':_0x3c22dc[_0x166d8a(0x237)]})),'request_content':{'query':_0x1238ae[_0x166d8a(0x1c0)]['search_string'],'repo_path':_0x1238ae['data'][_0x166d8a(0x229)],'repoRoot':a0_0x4fd06a[_0x166d8a(0x1a9)](_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x229)]),'model':_0x166d8a(0x1df)}},'stack_trace':_0x10c8f1?.[_0x166d8a(0x17a)]||undefined,'source':_0x166d8a(0x164)})['catch'](()=>{});}else _0x1759eb=_0x166d8a(0x22c);}return{'content':[{'type':'text','text':_0x1759eb}]};}catch(_0x573d83){const _0x380212=_0x573d83 instanceof Error?_0x573d83['message']:String(_0x573d83),_0x95b473=_0x380212[_0x166d8a(0x1e9)]()[_0x166d8a(0x232)]('timeout')||_0x380212[_0x166d8a(0x1e9)]()[_0x166d8a(0x232)](_0x166d8a(0x1e8))||_0x380212[_0x166d8a(0x1e9)]()[_0x166d8a(0x232)](_0x166d8a(0x191))||_0x573d83 instanceof Error&&_0x573d83[_0x166d8a(0x1a5)]===_0x166d8a(0x210);return reportMorphError({'error_message':_0x380212,'error_type':_0x95b473?_0x166d8a(0x210):_0x573d83 instanceof Error?_0x573d83[_0x166d8a(0x15e)][_0x166d8a(0x1a5)]:_0x166d8a(0x22f),'context':{'tool':_0x166d8a(0x20c),'repo_path':_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x229)],'query':_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x1b7)],'model':'morph-warp-grep-v1-1111v0','is_timeout':_0x95b473,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x1238ae[_0x166d8a(0x1c0)][_0x166d8a(0x1b7)],'repo_path':_0x1238ae[_0x166d8a(0x1c0)]['repo_path'],'repoRoot':a0_0x4fd06a['resolve'](_0x1238ae['data'][_0x166d8a(0x229)]),'model':_0x166d8a(0x1df)}},'stack_trace':_0x573d83 instanceof Error?_0x573d83['stack']:undefined,'source':_0x166d8a(0x164)})[_0x166d8a(0x1d3)](()=>{}),{'content':[{'type':_0x166d8a(0x1c1),'text':_0x166d8a(0x1e0)+_0x380212}],'isError':![]};}}case'codebase_search':{const _0x203f3b=CodebaseSearchArgsSchema[_0x166d8a(0x163)](_0x2c280a);if(!_0x203f3b[_0x166d8a(0x1a0)])return{'content':[{'type':_0x166d8a(0x1c1),'text':_0x166d8a(0x1c9)+_0x203f3b['error']}],'isError':!![]};try{const _0xe1599=MORPH_API_KEY;if(!_0xe1599)throw new Error(_0x166d8a(0x167));const _0x768fa6=_0x203f3b[_0x166d8a(0x1c0)][_0x166d8a(0x17d)],_0x4acbdc=await executeCodebaseSearch({'query':_0x203f3b[_0x166d8a(0x1c0)][_0x166d8a(0x1bb)],'target_directories':_0x768fa6,'limit':_0x203f3b[_0x166d8a(0x1c0)][_0x166d8a(0x1fb)]},{'apiKey':_0xe1599,'repoId':_0x203f3b[_0x166d8a(0x1c0)][_0x166d8a(0x1e6)],'branch':_0x203f3b[_0x166d8a(0x1c0)][_0x166d8a(0x235)],'commitHash':_0x203f3b[_0x166d8a(0x1c0)][_0x166d8a(0x248)],'debug':![]});if(!_0x4acbdc['success'])return{'content':[{'type':_0x166d8a(0x1c1),'text':_0x166d8a(0x214)+_0x4acbdc[_0x166d8a(0x230)]}],'isError':!![]};const _0x54a226=_0x4acbdc[_0x166d8a(0x217)][_0x166d8a(0x21a)]===0x0?_0x166d8a(0x1dc)+_0x203f3b[_0x166d8a(0x1c0)]['query']+'\x22':'Found\x20'+_0x4acbdc['results'][_0x166d8a(0x21a)]+_0x166d8a(0x19b)+_0x4acbdc[_0x166d8a(0x1f5)]['searchTimeMs']+_0x166d8a(0x166)+_0x4acbdc[_0x166d8a(0x217)][_0x166d8a(0x1ef)]((_0x36cf26,_0x5694e3)=>_0x5694e3+0x1+'.\x20'+_0x36cf26[_0x166d8a(0x1fa)]+'\x20('+(_0x36cf26[_0x166d8a(0x1f1)]*0x64)[_0x166d8a(0x199)](0x1)+'%\x20match)\x0a'+('\x20\x20\x20Lines\x20'+_0x36cf26[_0x166d8a(0x1c6)]+'-'+_0x36cf26[_0x166d8a(0x1b8)]+'\x0a')+(_0x166d8a(0x1b6)+_0x36cf26['content']['substring'](0x0,0xc8)+(_0x36cf26[_0x166d8a(0x237)][_0x166d8a(0x21a)]>0xc8?_0x166d8a(0x1f9):'')+'\x0a'))[_0x166d8a(0x1cd)]('\x0a');return{'content':[{'type':_0x166d8a(0x1c1),'text':_0x54a226}]};}catch(_0x107e07){const _0x154c20=_0x107e07 instanceof Error?_0x107e07[_0x166d8a(0x1dd)]:String(_0x107e07);return reportMorphError({'error_message':_0x154c20,'error_type':_0x107e07 instanceof Error?_0x107e07[_0x166d8a(0x15e)]['name']:'UnknownError','context':{'tool':_0x166d8a(0x1f0),'query':_0x203f3b[_0x166d8a(0x1c0)]['query'],'repo_id':_0x203f3b['data'][_0x166d8a(0x1e6)],'target_directories':_0x203f3b[_0x166d8a(0x1c0)][_0x166d8a(0x17d)]},'stack_trace':_0x107e07 instanceof Error?_0x107e07[_0x166d8a(0x17a)]:undefined,'source':_0x166d8a(0x164)})[_0x166d8a(0x1d3)](()=>{}),{'content':[{'type':_0x166d8a(0x1c1),'text':_0x166d8a(0x21e)+_0x154c20}],'isError':!![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x457a0b);}}catch(_0x4e77bb){const _0x200398=_0x4e77bb instanceof Error?_0x4e77bb[_0x166d8a(0x1dd)]:String(_0x4e77bb);return reportMorphError({'error_message':_0x200398,'error_type':_0x4e77bb instanceof Error?_0x4e77bb['constructor'][_0x166d8a(0x1a5)]:_0x166d8a(0x22f),'context':{'tool':name,'arguments':args?JSON[_0x166d8a(0x17b)](args)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x166d8a(0x1cf)},'stack_trace':_0x4e77bb instanceof Error?_0x4e77bb['stack']:undefined,'source':_0x166d8a(0x164)})[_0x166d8a(0x1d3)](()=>{}),{'content':[{'type':_0x166d8a(0x1c1),'text':_0x166d8a(0x21e)+_0x200398}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x330c79){const _0x100749=a0_0x57c7fb,_0x3c2353=await getValidRootDirectories(_0x330c79);if(_0x3c2353['length']>0x0)allowedDirectories=[..._0x3c2353],console[_0x100749(0x230)](_0x100749(0x218)+_0x3c2353[_0x100749(0x21a)]+'\x20valid\x20directories');else{console[_0x100749(0x230)](_0x100749(0x1fe));if(ENABLE_WORKSPACE_MODE)try{const _0x440280=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x440280&&(allowedDirectories=[_0x440280],console[_0x100749(0x230)]('Fallback:\x20Using\x20workspace\x20root\x20'+_0x440280));}catch(_0x17da7c){console[_0x100749(0x230)](_0x100749(0x1e2)+_0x17da7c);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x1193e8=a0_0x57c7fb;try{const _0x58444d=await server[_0x1193e8(0x1c7)]();_0x58444d&&_0x1193e8(0x182)in _0x58444d&&await updateAllowedDirectoriesFromRoots(_0x58444d[_0x1193e8(0x182)]);}catch(_0x4b5ff1){console[_0x1193e8(0x230)](_0x1193e8(0x1d9),_0x4b5ff1 instanceof Error?_0x4b5ff1[_0x1193e8(0x1dd)]:String(_0x4b5ff1));}}),server[a0_0x57c7fb(0x1c5)]=async()=>{const _0x1e97a4=a0_0x57c7fb,_0x537fc4=server[_0x1e97a4(0x17f)]();if(_0x537fc4?.[_0x1e97a4(0x182)])try{const _0xedadad=await server[_0x1e97a4(0x1c7)]();_0xedadad&&_0x1e97a4(0x182)in _0xedadad?await updateAllowedDirectoriesFromRoots(_0xedadad[_0x1e97a4(0x182)]):console['error'](_0x1e97a4(0x21c));}catch(_0x404797){console[_0x1e97a4(0x230)]('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x404797 instanceof Error?_0x404797[_0x1e97a4(0x1dd)]:String(_0x404797));}else{if(allowedDirectories[_0x1e97a4(0x21a)]>0x0)console[_0x1e97a4(0x230)](_0x1e97a4(0x1af),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x1e97a4(0x230)](_0x1e97a4(0x21d));else throw new Error(_0x1e97a4(0x1e7));}}};async function runServer(){const _0x269a3f=a0_0x57c7fb,_0x5f474d=new StdioServerTransport();await server['connect'](_0x5f474d),console[_0x269a3f(0x230)](_0x269a3f(0x20b)),allowedDirectories[_0x269a3f(0x21a)]===0x0&&console[_0x269a3f(0x230)]('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x57c7fb(0x1d3)](_0x30eb75=>{const _0x22b8d6=a0_0x57c7fb;console[_0x22b8d6(0x230)](_0x22b8d6(0x173),_0x30eb75),process[_0x22b8d6(0x194)](0x1);});
|
|
2
|
+
const a0_0x2070f9=a0_0x286d;(function(_0x3d1bdf,_0x36a303){const _0x23e15c=a0_0x286d,_0x172bd9=_0x3d1bdf();while(!![]){try{const _0xdcce4b=parseInt(_0x23e15c(0x251))/0x1*(-parseInt(_0x23e15c(0x250))/0x2)+parseInt(_0x23e15c(0x1de))/0x3*(parseInt(_0x23e15c(0x28f))/0x4)+-parseInt(_0x23e15c(0x209))/0x5+parseInt(_0x23e15c(0x2a6))/0x6*(-parseInt(_0x23e15c(0x1e4))/0x7)+parseInt(_0x23e15c(0x294))/0x8*(parseInt(_0x23e15c(0x1fa))/0x9)+parseInt(_0x23e15c(0x264))/0xa*(-parseInt(_0x23e15c(0x1f3))/0xb)+parseInt(_0x23e15c(0x1f2))/0xc;if(_0xdcce4b===_0x36a303)break;else _0x172bd9['push'](_0x172bd9['shift']());}catch(_0xd0a9ec){_0x172bd9['push'](_0x172bd9['shift']());}}}(a0_0xba54,0x80968));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_0x17cd17 from'fs/promises';import a0_0x257b4c from'path';import a0_0x3d747d 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}from'@morphllm/morphsdk/tools/warp-grep';import{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';import a0_0x1b3de0 from'axios';function fixPathRepetition(_0x16d54f){const _0xa6f56c=a0_0x286d,_0x53a8b0=_0x16d54f[_0xa6f56c(0x21c)](a0_0x257b4c[_0xa6f56c(0x28d)])[_0xa6f56c(0x2a7)](Boolean);if(_0x53a8b0[_0xa6f56c(0x24c)]<0x2)return null;for(let _0x2bbbe7=Math['floor'](_0x53a8b0['length']/0x2);_0x2bbbe7>=0x1;_0x2bbbe7--){for(let _0x49503e=0x0;_0x49503e<=_0x53a8b0[_0xa6f56c(0x24c)]-0x2*_0x2bbbe7;_0x49503e++){const _0x5408b9=_0x53a8b0['slice'](_0x49503e,_0x49503e+_0x2bbbe7),_0x2881de=_0x53a8b0[_0xa6f56c(0x24f)](_0x49503e+_0x2bbbe7,_0x49503e+0x2*_0x2bbbe7);if(_0x5408b9[_0xa6f56c(0x25b)]((_0x5b9820,_0x5b7d94)=>_0x5b9820===_0x2881de[_0x5b7d94])){const _0x5971a6=[..._0x53a8b0[_0xa6f56c(0x24f)](0x0,_0x49503e),..._0x53a8b0[_0xa6f56c(0x24f)](_0x49503e+_0x2bbbe7)];return a0_0x257b4c[_0xa6f56c(0x28d)]+_0x5971a6[_0xa6f56c(0x20a)](a0_0x257b4c[_0xa6f56c(0x28d)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x47c683=a0_0x286d;try{const _0x1b97c7=require(_0x47c683(0x20b));return _0x1b97c7[_0x47c683(0x1ec)]??_0x47c683(0x29a);}catch(_0xb34647){return console[_0x47c683(0x299)]('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0xb34647),_0x47c683(0x29a);}}function printHelp(){const _0x4e3be4=a0_0x286d;console[_0x4e3be4(0x2b4)](_0x4e3be4(0x1ea)+getPackageVersion()),console[_0x4e3be4(0x2b4)](_0x4e3be4(0x1e0)),console[_0x4e3be4(0x2b4)](_0x4e3be4(0x2ac)),console[_0x4e3be4(0x2b4)](_0x4e3be4(0x233)),console[_0x4e3be4(0x2b4)](_0x4e3be4(0x29f)),console[_0x4e3be4(0x2b4)](_0x4e3be4(0x297)),console['log'](_0x4e3be4(0x243)),console[_0x4e3be4(0x2b4)]('\x20\x20morph-mcp\x20~/repo');}const cliArgs=process['argv']['slice'](0x2),VERSION_FLAGS=new Set([a0_0x2070f9(0x2c4),'-v','-V']),HELP_FLAGS=new Set([a0_0x2070f9(0x1f4),'-h']);cliArgs['some'](_0x58aee4=>VERSION_FLAGS[a0_0x2070f9(0x249)](_0x58aee4))&&(console[a0_0x2070f9(0x2b4)]('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x2070f9(0x1e2)](0x0));cliArgs['some'](_0x10fc1a=>HELP_FLAGS[a0_0x2070f9(0x249)](_0x10fc1a))&&(printHelp(),process[a0_0x2070f9(0x1e2)](0x0));const args=cliArgs[a0_0x2070f9(0x2a7)](_0x2be24e=>!VERSION_FLAGS[a0_0x2070f9(0x249)](_0x2be24e)&&!HELP_FLAGS[a0_0x2070f9(0x249)](_0x2be24e)),ALL_TOOLS=['edit_file','warpgrep_codebase_search',a0_0x2070f9(0x2a5)],DEFAULT_TOOLS=[a0_0x2070f9(0x204),a0_0x2070f9(0x236)],ENABLED_TOOLS=process[a0_0x2070f9(0x2a4)]['ENABLED_TOOLS']?process[a0_0x2070f9(0x2a4)][a0_0x2070f9(0x23f)]===a0_0x2070f9(0x26e)?ALL_TOOLS:process['env'][a0_0x2070f9(0x23f)]['split'](',')['map'](_0x58748f=>_0x58748f[a0_0x2070f9(0x290)]()):DEFAULT_TOOLS;console['error']('Enabled\x20tools:\x20'+ENABLED_TOOLS[a0_0x2070f9(0x20a)](',\x20'));const WORKSPACE_ROOT=process[a0_0x2070f9(0x2a4)][a0_0x2070f9(0x201)]||process[a0_0x2070f9(0x2a4)][a0_0x2070f9(0x1fe)]||process[a0_0x2070f9(0x1f8)](),ENABLE_WORKSPACE_MODE=process['env'][a0_0x2070f9(0x282)]!=='false',MORPH_API_KEY=process[a0_0x2070f9(0x2a4)][a0_0x2070f9(0x26b)],MORPH_API_URL=process[a0_0x2070f9(0x2a4)][a0_0x2070f9(0x25d)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x2070f9(0x2a4)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x2070f9(0x2a4)][a0_0x2070f9(0x245)],0xa):undefined;function a0_0xba54(){const _0x263324=['\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','setNotificationHandler','exit','stringify','3175361PEiXLX','sk-','number','dryRun','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','mcp-filesystem','@morphllm/morphmcp\x20','terminated','version','❌\x20Morph\x20Edit\x20Failed:\x20','stat','completed_with_file_errors','filepath','results','11480796wOMutc','2928541tIZWen','--help','endLine','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','cwd','params','9uhGwpy','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','morph-warp-grep-v1-1111v0','assistant','PWD','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','listRoots','WORKSPACE_ROOT','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','source','edit_file','search_string','homedir','\x20\x20\x20','stats','12030UIFSiI','join','../package.json','metadata','Error:\x20','Repository\x20identifier','No\x20results\x20found\x20for\x20query:\x20\x22','Bearer\x20','string','changes','-\x20Read\x20file\x20`','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','utf-8','Failed\x20to\x20read\x20file:\x20','\x0a</file>','name','branch','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','requiresApiKey','split','limit','Workspace\x20mode\x20enabled:\x20Using\x20','getClientCapabilities','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','timeout','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','readFile','isDirectory','inputSchema','\x20results\x20in\x20','files','Found\x20','instruction','dirname','describe','Here\x20is\x20the\x20content\x20of\x20files:\x0a','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','code','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','match','terminationReason','pyproject.toml','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','access','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','warpgrep_codebase_search','.cursor','\x0a...\x20(truncated,\x20total:\x20','optional','toFixed','boolean','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','query','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','ENABLED_TOOLS','resolve','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','setRequestHandler','\x20\x20morph-mcp','Morph\x20Edit\x20','MORPH_WARP_GREP_TIMEOUT','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','Preview\x20changes\x20without\x20applying\x20them.','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','has','\x20as\x20allowed\x20directory','rerankScore','length','startsWith','unknown\x20error','slice','48536CQWEPi','9zfhxGQ','data','Parent\x20directory\x20does\x20not\x20exist:\x20','ENOENT','...','Failed\x20to\x20request\x20roots\x20from\x20client:','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','Warning:\x20','\x20-\x20','code_edit','every','repo_path','MORPH_API_URL','runWarpGrep_call','object','searchTimeMs','tsconfig.json','list_directory\x20','\x20(new\x20file)','10AgyESQ','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','linesModified','array','catch','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','MORPH_API_KEY','\x22>\x0aError\x20reading\x20file:\x20','post','all','\x20chars)','Natural\x20language\x20query\x20to\x20search\x20for\x20code','path','-\x20Listed\x20directory\x20`',',\x20removed\x20','targetDirectories','Unknown\x20tool:\x20','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','morph-','includes','ms:\x0a\x0a','<file\x20path=\x22','Invalid\x20arguments:\x20','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','Benefits:\x0a','Morph\x20FastApply\x20failed\x20without\x20error\x20message','\x20valid\x20directories','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','timings','ENABLE_WORKSPACE_MODE','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','stack','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','etimedout','oninitialized','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','This\x20tool\x20invokes\x20a\x20subagent\x20that\x20runs\x20parallel\x20grep\x20and\x20readfile\x20calls\x20over\x20multiple\x20turns\x20to\x20locate\x20line\x20ranges\x20and\x20files\x20which\x20might\x20be\x20relevant\x20to\x20the\x20request.\x20','substring','.vscode','sep','message','151020vmrzoI','trim','roots','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','constructor','1975304cyQfHA','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','toLowerCase','\x0aExamples:','%\x20match)\x0a','error','unknown','lines','linesAdded','.\x20Changes:\x20','The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','morph-v3-fast','timed\x20out','package.json','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','env','codebase_search','12TsZpWT','filter','\x20\x20\x20Lines\x20','completed','go.mod','normalize','\x0aOptions:','Fatal\x20error\x20running\x20server:','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','linesRemoved','finish','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','-\x20Grepped\x20\x27','Cargo.toml','log','composer.json','push','errors','content','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','read\x20','basename','</file>','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','success','File\x20read\x20error:','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','description','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.','UnknownError','--version','default','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','map','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','text','messages','.git','connect','realpath','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','Created\x20File','role','application/json','safeParse','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','isArray','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','0.2.0','57kTFfUg','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a'];a0_0xba54=function(){return _0x263324;};return a0_0xba54();}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x2070f9(0x24d)](a0_0x2070f9(0x1e5))&&!MORPH_API_KEY[a0_0x2070f9(0x24d)](a0_0x2070f9(0x277))&&console['error']('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x5af026){const _0x179c4=a0_0x2070f9;try{await a0_0x1b3de0[_0x179c4(0x26d)]('https://morphllm.com/api/error-report',{..._0x5af026,'timestamp':new Date()['toISOString'](),'source':_0x5af026[_0x179c4(0x203)]||'mcp-filesystem'},{'timeout':0x1388,'headers':{'Content-Type':_0x179c4(0x1d7),'Authorization':_0x179c4(0x210)+MORPH_API_KEY}});}catch{}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(console['error'](a0_0x2070f9(0x22f)),console[a0_0x2070f9(0x299)](a0_0x2070f9(0x2a3)),console['error']('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),console[a0_0x2070f9(0x299)]('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),console[a0_0x2070f9(0x299)](a0_0x2070f9(0x21a)),console[a0_0x2070f9(0x299)](a0_0x2070f9(0x1f7)));function normalizePath(_0x3bca0d){const _0x1cd2f0=a0_0x2070f9;return a0_0x257b4c[_0x1cd2f0(0x2ab)](_0x3bca0d);}function expandHome(_0x2ea407){const _0xd84a97=a0_0x2070f9;if(_0x2ea407[_0xd84a97(0x24d)]('~/')||_0x2ea407==='~')return a0_0x257b4c['join'](a0_0x3d747d[_0xd84a97(0x206)](),_0x2ea407[_0xd84a97(0x24f)](0x1));return _0x2ea407;}let allowedDirectories=await Promise['all'](args['map'](async _0xd84061=>{const _0x2860d8=a0_0x2070f9,_0x2235c4=expandHome(_0xd84061),_0x2e6907=a0_0x257b4c[_0x2860d8(0x240)](_0x2235c4);try{const _0x124c3e=await a0_0x17cd17[_0x2860d8(0x2ce)](_0x2e6907);return normalizePath(_0x124c3e);}catch(_0x36affd){return normalizePath(_0x2e6907);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),console[a0_0x2070f9(0x299)](a0_0x2070f9(0x21e)+workspaceDir+a0_0x2070f9(0x24a)));}catch(a0_0x331a38){console[a0_0x2070f9(0x299)](a0_0x2070f9(0x280)+a0_0x331a38);}async function detectWorkspaceRoot(_0x394c9b){const _0x56c425=a0_0x2070f9;let _0x2734b6=a0_0x257b4c[_0x56c425(0x240)](_0x394c9b);const _0x11601e=[_0x56c425(0x2cc),_0x56c425(0x28c),_0x56c425(0x2a2),_0x56c425(0x2b3),_0x56c425(0x232),_0x56c425(0x2aa),_0x56c425(0x237),_0x56c425(0x261),_0x56c425(0x2b5)];while(_0x2734b6!==a0_0x257b4c[_0x56c425(0x22a)](_0x2734b6)){for(const _0xe4e2eb of _0x11601e){const _0x39366b=a0_0x257b4c['join'](_0x2734b6,_0xe4e2eb);try{return await a0_0x17cd17[_0x56c425(0x234)](_0x39366b),normalizePath(_0x2734b6);}catch{}}_0x2734b6=a0_0x257b4c[_0x56c425(0x22a)](_0x2734b6);}return normalizePath(_0x394c9b);}await Promise[a0_0x2070f9(0x26e)](args[a0_0x2070f9(0x2c8)](async _0x40df3e=>{const _0x58c443=a0_0x2070f9;try{const _0x55d597=await a0_0x17cd17[_0x58c443(0x1ee)](expandHome(_0x40df3e));!_0x55d597[_0x58c443(0x224)]()&&(console[_0x58c443(0x299)](_0x58c443(0x20d)+_0x40df3e+'\x20is\x20not\x20a\x20directory'),process[_0x58c443(0x1e2)](0x1));}catch(_0xf78eb3){console[_0x58c443(0x299)]('Error\x20accessing\x20directory\x20'+_0x40df3e+':',_0xf78eb3),process[_0x58c443(0x1e2)](0x1);}}));async function validatePath(_0x17fc68){const _0x3bb74c=a0_0x2070f9,_0x4a1b19=expandHome(_0x17fc68),_0x1996cc=a0_0x257b4c[_0x3bb74c(0x240)](_0x4a1b19);try{const _0x6a0cc7=await a0_0x17cd17['realpath'](_0x1996cc);return _0x6a0cc7;}catch(_0xac8dc3){if(_0xac8dc3[_0x3bb74c(0x22e)]===_0x3bb74c(0x254)){const _0x1e4c33=a0_0x257b4c['dirname'](_0x1996cc);try{const _0x84785e=await a0_0x17cd17[_0x3bb74c(0x2ce)](_0x1e4c33);return a0_0x257b4c[_0x3bb74c(0x20a)](_0x84785e,a0_0x257b4c[_0x3bb74c(0x2bb)](_0x1996cc));}catch{throw new Error(_0x3bb74c(0x253)+_0x1e4c33);}}throw _0xac8dc3;}}const MorphEditFileArgsSchema=z[a0_0x2070f9(0x25f)]({'path':z[a0_0x2070f9(0x211)](),'code_edit':z[a0_0x2070f9(0x211)]()[a0_0x2070f9(0x22b)](a0_0x2070f9(0x1dc)),'instruction':z[a0_0x2070f9(0x211)]()[a0_0x2070f9(0x22b)](a0_0x2070f9(0x2b1)),'dryRun':z[a0_0x2070f9(0x23b)]()['default'](![])['describe'](a0_0x2070f9(0x247))}),WarpGrepArgsSchema=z[a0_0x2070f9(0x25f)]({'search_string':z[a0_0x2070f9(0x211)]()[a0_0x2070f9(0x22b)](a0_0x2070f9(0x235)),'repo_path':z[a0_0x2070f9(0x211)]()['describe'](a0_0x2070f9(0x29e))}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0x2070f9(0x211)]()[a0_0x2070f9(0x22b)](a0_0x2070f9(0x270)),'repoId':z['string']()['describe'](a0_0x2070f9(0x20e)),'branch':z['string']()[a0_0x2070f9(0x239)]()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x2070f9(0x211)]()[a0_0x2070f9(0x239)]()[a0_0x2070f9(0x22b)]('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x2070f9(0x268)](z[a0_0x2070f9(0x211)]())[a0_0x2070f9(0x2c5)]([])[a0_0x2070f9(0x22b)]('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z[a0_0x2070f9(0x1e6)]()['optional']()[a0_0x2070f9(0x2c5)](0xa)['describe']('Max\x20results\x20to\x20return')}),server=new Server({'name':'morph-mcp','version':'0.2.0'},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x2660c9=a0_0x2070f9,_0x38a5f5=[{'name':'edit_file','description':_0x2660c9(0x257)+_0x2660c9(0x22d)+_0x2660c9(0x265)+_0x2660c9(0x1d9)+_0x2660c9(0x27d)+_0x2660c9(0x246)+_0x2660c9(0x2c9)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x2660c9(0x266)+_0x2660c9(0x2c7)+_0x2660c9(0x276)+_0x2660c9(0x1fb)+'For\x20deletions:\x0a'+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x2660c9(0x289)+'Rules:\x0a'+_0x2660c9(0x1e8)+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x2660c9(0x23e)+_0x2660c9(0x2c0)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x2660c9(0x1ff),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x2660c9(0x236),'description':_0x2660c9(0x285)+_0x2660c9(0x28a)+'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'+_0x2660c9(0x1f6)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.'+_0x2660c9(0x2bd)+_0x2660c9(0x202)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':_0x2660c9(0x2a5),'description':_0x2660c9(0x288)+_0x2660c9(0x1df)+_0x2660c9(0x2cf)+_0x2660c9(0x27d)+_0x2660c9(0x26a)+'-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a'+_0x2660c9(0x2c6)+_0x2660c9(0x27c)+'Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20'+_0x2660c9(0x214)+_0x2660c9(0x2b9),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x5513df=_0x38a5f5[_0x2660c9(0x2a7)](_0x6aab09=>{const _0x38e84a=_0x2660c9;if(!ENABLED_TOOLS[_0x38e84a(0x278)](_0x6aab09[_0x38e84a(0x218)]))return![];if(_0x38e84a(0x21b)in _0x6aab09&&_0x6aab09[_0x38e84a(0x21b)]&&!MORPH_API_KEY)return console[_0x38e84a(0x299)](_0x38e84a(0x258)+_0x6aab09[_0x38e84a(0x218)]+_0x38e84a(0x23c)),![];return!![];});return{'tools':_0x5513df[_0x2660c9(0x2c8)](_0x3d7836=>({'name':_0x3d7836['name'],'description':_0x3d7836[_0x2660c9(0x2c1)],'inputSchema':_0x3d7836[_0x2660c9(0x225)]}))};}),server[a0_0x2070f9(0x242)](CallToolRequestSchema,async _0x38c741=>{const _0x5cb0c2=a0_0x2070f9;try{const {name:_0x33083a,arguments:_0x3858d3}=_0x38c741[_0x5cb0c2(0x1f9)];switch(_0x33083a){case _0x5cb0c2(0x204):{const _0x2e3d55=MorphEditFileArgsSchema[_0x5cb0c2(0x1d8)](_0x3858d3);if(!_0x2e3d55[_0x5cb0c2(0x2be)])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x2e3d55[_0x5cb0c2(0x299)]);const _0x384e3e=await validatePath(_0x2e3d55[_0x5cb0c2(0x252)][_0x5cb0c2(0x271)]);let _0x310f69=null,_0x470f28=!![],_0x10d904=null;try{_0x310f69=await a0_0x17cd17[_0x5cb0c2(0x223)](_0x384e3e,_0x5cb0c2(0x215));}catch(_0x3ce5c6){const _0x494cf2=_0x3ce5c6[_0x5cb0c2(0x22e)];_0x494cf2===_0x5cb0c2(0x254)?(_0x470f28=![],_0x310f69=''):(_0x10d904=_0x5cb0c2(0x216)+(_0x494cf2||_0x5cb0c2(0x29a))+_0x5cb0c2(0x259)+(_0x3ce5c6 instanceof Error?_0x3ce5c6[_0x5cb0c2(0x28e)]:String(_0x3ce5c6)),console[_0x5cb0c2(0x299)](_0x5cb0c2(0x258)+_0x10d904));}try{const _0x260dc3=MORPH_API_KEY;if(!_0x260dc3)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x6377bc=a0_0x257b4c['dirname'](_0x384e3e),_0x2550be=a0_0x257b4c['basename'](_0x384e3e),_0x591ed9=await executeEditFile({'target_filepath':_0x2550be,'code_edit':_0x2e3d55['data'][_0x5cb0c2(0x25a)],'instructions':_0x2e3d55[_0x5cb0c2(0x252)][_0x5cb0c2(0x229)]},{'morphApiKey':_0x260dc3,'morphApiUrl':MORPH_API_URL,'baseDir':_0x6377bc,'autoWrite':!_0x2e3d55[_0x5cb0c2(0x252)][_0x5cb0c2(0x1e7)],'generateUdiff':![],'debug':![]});if(!_0x591ed9[_0x5cb0c2(0x2be)])throw new Error(_0x591ed9[_0x5cb0c2(0x299)]||_0x5cb0c2(0x27e));const _0xe1f7d5=_0x591ed9[_0x5cb0c2(0x212)],_0x2e96e4='added\x20'+_0xe1f7d5[_0x5cb0c2(0x29c)]+_0x5cb0c2(0x273)+_0xe1f7d5[_0x5cb0c2(0x2af)]+',\x20modified\x20'+_0xe1f7d5[_0x5cb0c2(0x267)];if(_0x2e3d55[_0x5cb0c2(0x252)][_0x5cb0c2(0x1e7)])return{'content':[{'type':_0x5cb0c2(0x2ca),'text':'Morph\x20Edit\x20Preview'+(_0x470f28?'':_0x5cb0c2(0x263))+':\x20'+_0x2e3d55[_0x5cb0c2(0x252)][_0x5cb0c2(0x229)]+_0x5cb0c2(0x29d)+_0x2e96e4+'.\x20Path:\x20'+_0x2e3d55['data']['path']+'.'}]};return{'content':[{'type':_0x5cb0c2(0x2ca),'text':_0x5cb0c2(0x244)+(_0x470f28?'Applied':_0x5cb0c2(0x2d0))+':\x20'+_0x2e3d55[_0x5cb0c2(0x252)][_0x5cb0c2(0x229)]+_0x5cb0c2(0x29d)+_0x2e96e4+'.\x20Path:\x20'+_0x2e3d55[_0x5cb0c2(0x252)][_0x5cb0c2(0x271)]+'.'}]};}catch(_0x3a3e97){const _0x43990a=_0x3a3e97 instanceof Error?_0x3a3e97['message']:String(_0x3a3e97);return reportMorphError({'error_message':_0x43990a,'error_type':_0x3a3e97 instanceof Error?_0x3a3e97[_0x5cb0c2(0x293)][_0x5cb0c2(0x218)]:_0x5cb0c2(0x2c3),'context':{'tool':'edit_file','file_path':_0x2e3d55['data'][_0x5cb0c2(0x271)],'validated_path':_0x384e3e,'instruction':_0x2e3d55[_0x5cb0c2(0x252)][_0x5cb0c2(0x229)],'model':'morph-v3-fast','dry_run':_0x2e3d55[_0x5cb0c2(0x252)][_0x5cb0c2(0x1e7)],'file_exists':_0x470f28,'file_read_error':_0x10d904,'file_readable':_0x310f69!==null,'request_content':{'path':_0x2e3d55[_0x5cb0c2(0x252)][_0x5cb0c2(0x271)],'code_edit':_0x2e3d55[_0x5cb0c2(0x252)][_0x5cb0c2(0x25a)],'instruction':_0x2e3d55[_0x5cb0c2(0x252)][_0x5cb0c2(0x229)],'original_code':_0x310f69!==null?_0x310f69[_0x5cb0c2(0x24c)]>0xc350?_0x310f69[_0x5cb0c2(0x28b)](0x0,0xc350)+_0x5cb0c2(0x238)+_0x310f69[_0x5cb0c2(0x24c)]+_0x5cb0c2(0x26f):_0x310f69:'[could\x20not\x20read\x20file:\x20'+(_0x10d904||_0x5cb0c2(0x24e))+']','original_code_length':_0x310f69?.[_0x5cb0c2(0x24c)]??0x0,'model':_0x5cb0c2(0x2a0),'dry_run':_0x2e3d55[_0x5cb0c2(0x252)][_0x5cb0c2(0x1e7)]}},'stack_trace':_0x3a3e97 instanceof Error?_0x3a3e97[_0x5cb0c2(0x284)]:undefined,'source':_0x5cb0c2(0x1e9)})[_0x5cb0c2(0x269)](()=>{}),{'content':[{'type':_0x5cb0c2(0x2ca),'text':_0x5cb0c2(0x1ed)+_0x43990a}],'isError':!![]};}}case _0x5cb0c2(0x236):{const _0xa78113=WarpGrepArgsSchema['safeParse'](_0x3858d3);if(!_0xa78113[_0x5cb0c2(0x2be)])return{'content':[{'type':_0x5cb0c2(0x2ca),'text':'Invalid\x20arguments:\x20'+_0xa78113['error']}],'isError':!![]};const _0x245f28=_0x1e6ad9=>{const _0x42abe2=_0x5cb0c2,_0x1a3f9c=[];for(const _0x358efe of _0x1e6ad9||[]){const _0x4af08c=_0x358efe['role'],_0x51d693=_0x358efe[_0x42abe2(0x2b8)];if(_0x4af08c===_0x42abe2(0x1fd)&&_0x51d693){const _0x1c74f5=_0x51d693[_0x42abe2(0x21c)]('\x0a')[_0x42abe2(0x2a7)](_0x580ed1=>_0x580ed1[_0x42abe2(0x290)]());for(const _0x401a0b of _0x1c74f5){const _0x159ea8=_0x401a0b[_0x42abe2(0x230)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x159ea8){_0x1a3f9c[_0x42abe2(0x2b6)]('grep\x20\x27'+_0x159ea8[0x1]+'\x27\x20'+_0x159ea8[0x2]);continue;}const _0x43f90b=_0x401a0b[_0x42abe2(0x230)](/^read\s+(.+)$/);if(_0x43f90b){_0x1a3f9c['push'](_0x42abe2(0x2ba)+_0x43f90b[0x1]);continue;}const _0x41a3a8=_0x401a0b[_0x42abe2(0x230)](/^list_directory\s+(.+)$/);if(_0x41a3a8){_0x1a3f9c[_0x42abe2(0x2b6)](_0x42abe2(0x262)+_0x41a3a8[0x1]);continue;}}}}return _0x1a3f9c;};try{const _0x14b9f3=a0_0x257b4c[_0x5cb0c2(0x240)](_0xa78113[_0x5cb0c2(0x252)][_0x5cb0c2(0x25c)]),_0x562878=new LocalRipgrepProvider(_0x14b9f3),_0x1f2cdc=await runWarpGrep({'query':_0xa78113['data'][_0x5cb0c2(0x205)],'repoRoot':_0x14b9f3,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x562878});let _0x5c14c9='';if(_0x1f2cdc[_0x5cb0c2(0x231)]===_0x5cb0c2(0x2a9)&&_0x1f2cdc[_0x5cb0c2(0x2b0)]?.['metadata']?.[_0x5cb0c2(0x227)]){const _0x397972=_0x1f2cdc[_0x5cb0c2(0x2b0)][_0x5cb0c2(0x20c)][_0x5cb0c2(0x227)],_0x353d35=[],_0x2290cf=[_0x5cb0c2(0x222)];for(const _0x5589e0 of _0x1f2cdc[_0x5cb0c2(0x2cb)]){const _0xb976dc=_0x5589e0[_0x5cb0c2(0x1d6)],_0x24af8e=_0x5589e0['content'];if(_0xb976dc===_0x5cb0c2(0x1fd)&&_0x24af8e){const _0x5090c6=_0x24af8e[_0x5cb0c2(0x21c)]('\x0a')[_0x5cb0c2(0x2a7)](_0x26e14f=>_0x26e14f[_0x5cb0c2(0x290)]());for(const _0xafc933 of _0x5090c6){const _0x28d022=_0xafc933[_0x5cb0c2(0x230)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x28d022){_0x2290cf[_0x5cb0c2(0x2b6)](_0x5cb0c2(0x2b2)+_0x28d022[0x1]+'\x27\x20in\x20`'+_0x28d022[0x2]+'`');continue;}const _0x4e70f8=_0xafc933[_0x5cb0c2(0x230)](/^read\s+(.+)$/);if(_0x4e70f8){_0x2290cf[_0x5cb0c2(0x2b6)](_0x5cb0c2(0x213)+_0x4e70f8[0x1]+'`');continue;}const _0x1dd267=_0xafc933[_0x5cb0c2(0x230)](/^list_directory\s+(.+)$/);if(_0x1dd267){_0x2290cf[_0x5cb0c2(0x2b6)](_0x5cb0c2(0x272)+_0x1dd267[0x1]+'`');continue;}}}}_0x353d35['push'](_0x2290cf[_0x5cb0c2(0x20a)]('\x0a'));const _0x2b9eb0=['','Relevant\x20context\x20found:'];for(const _0x21c9fb of _0x397972){if(_0x21c9fb[_0x5cb0c2(0x29b)]==='*')_0x2b9eb0[_0x5cb0c2(0x2b6)]('-\x20'+_0x21c9fb[_0x5cb0c2(0x271)]+':*');else{if(Array[_0x5cb0c2(0x1da)](_0x21c9fb[_0x5cb0c2(0x29b)])){const _0x5e2e24=_0x21c9fb[_0x5cb0c2(0x29b)][_0x5cb0c2(0x2c8)](([_0x26e5be,_0x3bc5d6])=>{if(_0x26e5be===_0x3bc5d6)return''+_0x26e5be;return _0x26e5be+'-'+_0x3bc5d6;});_0x2b9eb0['push']('-\x20'+_0x21c9fb[_0x5cb0c2(0x271)]+':'+_0x5e2e24[_0x5cb0c2(0x20a)](','));}else _0x2b9eb0[_0x5cb0c2(0x2b6)]('-\x20'+_0x21c9fb[_0x5cb0c2(0x271)]+':*');}}_0x2b9eb0[_0x5cb0c2(0x2b6)](''),_0x353d35[_0x5cb0c2(0x2b6)](_0x2b9eb0[_0x5cb0c2(0x20a)]('\x0a')),_0x353d35[_0x5cb0c2(0x2b6)](_0x5cb0c2(0x22c));const _0x9b37d=[];for(const _0x406d36 of _0x397972){let _0x758626=a0_0x257b4c[_0x5cb0c2(0x240)](_0xa78113[_0x5cb0c2(0x252)][_0x5cb0c2(0x25c)],_0x406d36[_0x5cb0c2(0x271)]),_0x1c7233=null,_0x28c0cc=null;try{_0x1c7233=await a0_0x17cd17[_0x5cb0c2(0x223)](_0x758626,{'encoding':_0x5cb0c2(0x215)});}catch(_0xc0966d){const _0x3ed87b=fixPathRepetition(_0x758626);if(_0x3ed87b)try{_0x1c7233=await a0_0x17cd17['readFile'](_0x3ed87b,{'encoding':'utf-8'}),_0x758626=_0x3ed87b;}catch{_0x28c0cc=_0xc0966d instanceof Error?_0xc0966d:new Error(String(_0xc0966d));}else _0x28c0cc=_0xc0966d instanceof Error?_0xc0966d:new Error(String(_0xc0966d));}if(_0x1c7233!==null){const _0x5133e6=_0x1c7233['split'](/\r?\n/),_0x393af4=['<file\x20path=\x22'+_0x406d36[_0x5cb0c2(0x271)]+'\x22>'];if(_0x406d36[_0x5cb0c2(0x29b)]==='*'||!Array[_0x5cb0c2(0x1da)](_0x406d36['lines']))for(let _0x1a0892=0x1;_0x1a0892<=_0x5133e6[_0x5cb0c2(0x24c)];_0x1a0892++){const _0x526e34=_0x5133e6[_0x1a0892-0x1];_0x393af4[_0x5cb0c2(0x2b6)](_0x1a0892+'|\x20'+_0x526e34);}else for(const [_0x2e3c60,_0xd7b0c9]of _0x406d36[_0x5cb0c2(0x29b)]){_0x393af4[_0x5cb0c2(0x24c)]>0x1&&_0x393af4[_0x5cb0c2(0x2b6)]('');for(let _0x430410=_0x2e3c60;_0x430410<=_0xd7b0c9&&_0x430410<=_0x5133e6[_0x5cb0c2(0x24c)];_0x430410++){const _0x4d459c=_0x5133e6[_0x430410-0x1];_0x393af4[_0x5cb0c2(0x2b6)](_0x430410+'|\x20'+_0x4d459c);}}_0x393af4[_0x5cb0c2(0x2b6)](_0x5cb0c2(0x2bc)),_0x9b37d[_0x5cb0c2(0x2b6)](_0x393af4[_0x5cb0c2(0x20a)]('\x0a'));}else _0x9b37d[_0x5cb0c2(0x2b6)](_0x5cb0c2(0x27a)+_0x406d36[_0x5cb0c2(0x271)]+_0x5cb0c2(0x26c)+(_0x28c0cc?.[_0x5cb0c2(0x28e)]||'Unknown\x20error')+_0x5cb0c2(0x217));}_0x353d35[_0x5cb0c2(0x2b6)](_0x9b37d[_0x5cb0c2(0x20a)]('\x0a\x0a')),_0x5c14c9=_0x353d35[_0x5cb0c2(0x20a)]('\x0a');const _0x340ba8=_0x1f2cdc['errors']?.[_0x5cb0c2(0x2a7)](_0x2350d5=>_0x2350d5['message']?.[_0x5cb0c2(0x24d)](_0x5cb0c2(0x2bf)))||[];if(_0x340ba8[_0x5cb0c2(0x24c)]>0x0){const _0x434151=_0x340ba8[_0x5cb0c2(0x2c8)](_0x25f9d1=>_0x25f9d1[_0x5cb0c2(0x28e)])[_0x5cb0c2(0x20a)](';\x20');reportMorphError({'error_message':_0x434151,'error_type':'FileReadError','context':{'tool':'warpgrep_codebase_search','repo_path':_0xa78113[_0x5cb0c2(0x252)][_0x5cb0c2(0x25c)],'query':_0xa78113[_0x5cb0c2(0x252)][_0x5cb0c2(0x205)],'model':_0x5cb0c2(0x1fc),'termination_reason':_0x5cb0c2(0x1ef),'error_count':_0x340ba8['length'],'is_timeout':![],'timings':_0x1f2cdc[_0x5cb0c2(0x281)],'files_attempted':_0x397972[_0x5cb0c2(0x2c8)](_0xf73b3d=>({'path':_0xf73b3d['path'],'lines':_0xf73b3d['lines']})),'tool_calls':_0x245f28(_0x1f2cdc[_0x5cb0c2(0x2cb)]),'messages':_0x1f2cdc[_0x5cb0c2(0x2cb)]?.[_0x5cb0c2(0x2c8)](_0x44ca6c=>({'role':_0x44ca6c[_0x5cb0c2(0x1d6)],'content':_0x44ca6c['content']})),'request_content':{'query':_0xa78113[_0x5cb0c2(0x252)][_0x5cb0c2(0x205)],'repo_path':_0xa78113['data'][_0x5cb0c2(0x25c)],'repoRoot':a0_0x257b4c[_0x5cb0c2(0x240)](_0xa78113['data']['repo_path']),'model':_0x5cb0c2(0x1fc)}},'source':'mcp-filesystem'})[_0x5cb0c2(0x269)](()=>{});}}else{if(_0x1f2cdc[_0x5cb0c2(0x231)]===_0x5cb0c2(0x1eb)&&_0x1f2cdc[_0x5cb0c2(0x2b7)][_0x5cb0c2(0x24c)]>0x0){const _0x5dca92=_0x1f2cdc[_0x5cb0c2(0x2b7)]['map'](_0x2bd07b=>_0x2bd07b['message'])[_0x5cb0c2(0x20a)](';\x20');_0x5c14c9=_0x5cb0c2(0x20d)+_0x5dca92;const _0x5d518e=_0x5dca92['toLowerCase']()['includes'](_0x5cb0c2(0x221))||_0x5dca92['toLowerCase']()[_0x5cb0c2(0x278)]('timed\x20out')||_0x5dca92[_0x5cb0c2(0x296)]()[_0x5cb0c2(0x278)](_0x5cb0c2(0x286)),_0x464f95=_0x1f2cdc[_0x5cb0c2(0x2b0)]?.[_0x5cb0c2(0x20c)]?.[_0x5cb0c2(0x227)],_0x587bc8=_0x1f2cdc[_0x5cb0c2(0x2b7)][0x0];reportMorphError({'error_message':_0x5dca92,'error_type':_0x5d518e?'TimeoutError':_0x587bc8?.[_0x5cb0c2(0x293)]?.['name']||'WarpGrepError','context':{'tool':_0x5cb0c2(0x236),'repo_path':_0xa78113['data'][_0x5cb0c2(0x25c)],'query':_0xa78113[_0x5cb0c2(0x252)][_0x5cb0c2(0x205)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x1f2cdc[_0x5cb0c2(0x231)],'error_count':_0x1f2cdc[_0x5cb0c2(0x2b7)][_0x5cb0c2(0x24c)],'is_timeout':_0x5d518e,'timings':_0x1f2cdc[_0x5cb0c2(0x281)],'files_attempted':_0x464f95?.[_0x5cb0c2(0x2c8)](_0x3586e1=>({'path':_0x3586e1[_0x5cb0c2(0x271)],'lines':_0x3586e1[_0x5cb0c2(0x29b)]})),'tool_calls':_0x245f28(_0x1f2cdc[_0x5cb0c2(0x2cb)]),'messages':_0x1f2cdc[_0x5cb0c2(0x2cb)]?.['map'](_0x59d483=>({'role':_0x59d483['role'],'content':_0x59d483['content']})),'request_content':{'query':_0xa78113['data']['search_string'],'repo_path':_0xa78113[_0x5cb0c2(0x252)][_0x5cb0c2(0x25c)],'repoRoot':a0_0x257b4c[_0x5cb0c2(0x240)](_0xa78113[_0x5cb0c2(0x252)][_0x5cb0c2(0x25c)]),'model':_0x5cb0c2(0x1fc)}},'stack_trace':_0x587bc8?.['stack']||undefined,'source':_0x5cb0c2(0x1e9)})[_0x5cb0c2(0x269)](()=>{});}else _0x5c14c9=_0x5cb0c2(0x248);}return{'content':[{'type':'text','text':_0x5c14c9}]};}catch(_0x4d600d){const _0x46c48e=_0x4d600d instanceof Error?_0x4d600d[_0x5cb0c2(0x28e)]:String(_0x4d600d),_0x455a1a=_0x46c48e['toLowerCase']()[_0x5cb0c2(0x278)](_0x5cb0c2(0x221))||_0x46c48e[_0x5cb0c2(0x296)]()[_0x5cb0c2(0x278)](_0x5cb0c2(0x2a1))||_0x46c48e[_0x5cb0c2(0x296)]()[_0x5cb0c2(0x278)](_0x5cb0c2(0x286))||_0x4d600d instanceof Error&&_0x4d600d[_0x5cb0c2(0x218)]==='TimeoutError';return reportMorphError({'error_message':_0x46c48e,'error_type':_0x455a1a?'TimeoutError':_0x4d600d instanceof Error?_0x4d600d[_0x5cb0c2(0x293)][_0x5cb0c2(0x218)]:_0x5cb0c2(0x2c3),'context':{'tool':_0x5cb0c2(0x236),'repo_path':_0xa78113[_0x5cb0c2(0x252)][_0x5cb0c2(0x25c)],'query':_0xa78113[_0x5cb0c2(0x252)]['search_string'],'model':'morph-warp-grep-v1-1111v0','is_timeout':_0x455a1a,'exception_phase':_0x5cb0c2(0x25e),'request_content':{'query':_0xa78113[_0x5cb0c2(0x252)][_0x5cb0c2(0x205)],'repo_path':_0xa78113[_0x5cb0c2(0x252)][_0x5cb0c2(0x25c)],'repoRoot':a0_0x257b4c[_0x5cb0c2(0x240)](_0xa78113[_0x5cb0c2(0x252)][_0x5cb0c2(0x25c)]),'model':_0x5cb0c2(0x1fc)}},'stack_trace':_0x4d600d instanceof Error?_0x4d600d[_0x5cb0c2(0x284)]:undefined,'source':_0x5cb0c2(0x1e9)})['catch'](()=>{}),{'content':[{'type':_0x5cb0c2(0x2ca),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x46c48e}],'isError':![]};}}case'codebase_search':{const _0x30e596=CodebaseSearchArgsSchema['safeParse'](_0x3858d3);if(!_0x30e596[_0x5cb0c2(0x2be)])return{'content':[{'type':_0x5cb0c2(0x2ca),'text':_0x5cb0c2(0x27b)+_0x30e596[_0x5cb0c2(0x299)]}],'isError':!![]};try{const _0x519146=MORPH_API_KEY;if(!_0x519146)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.');const _0x21ffe6=_0x30e596[_0x5cb0c2(0x252)]['targetDirectories'],_0x121abc=await executeCodebaseSearch({'query':_0x30e596[_0x5cb0c2(0x252)]['query'],'target_directories':_0x21ffe6,'limit':_0x30e596['data'][_0x5cb0c2(0x21d)]},{'apiKey':_0x519146,'repoId':_0x30e596[_0x5cb0c2(0x252)]['repoId'],'branch':_0x30e596['data'][_0x5cb0c2(0x219)],'commitHash':_0x30e596[_0x5cb0c2(0x252)]['commitHash'],'debug':![]});if(!_0x121abc[_0x5cb0c2(0x2be)])return{'content':[{'type':'text','text':'Search\x20failed:\x20'+_0x121abc[_0x5cb0c2(0x299)]}],'isError':!![]};const _0x10a948=_0x121abc[_0x5cb0c2(0x1f1)][_0x5cb0c2(0x24c)]===0x0?_0x5cb0c2(0x20f)+_0x30e596[_0x5cb0c2(0x252)][_0x5cb0c2(0x23d)]+'\x22':_0x5cb0c2(0x228)+_0x121abc['results'][_0x5cb0c2(0x24c)]+_0x5cb0c2(0x226)+_0x121abc[_0x5cb0c2(0x208)][_0x5cb0c2(0x260)]+_0x5cb0c2(0x279)+_0x121abc[_0x5cb0c2(0x1f1)][_0x5cb0c2(0x2c8)]((_0x4ae179,_0x4d260c)=>_0x4d260c+0x1+'.\x20'+_0x4ae179[_0x5cb0c2(0x1f0)]+'\x20('+(_0x4ae179[_0x5cb0c2(0x24b)]*0x64)[_0x5cb0c2(0x23a)](0x1)+_0x5cb0c2(0x298)+(_0x5cb0c2(0x2a8)+_0x4ae179['startLine']+'-'+_0x4ae179[_0x5cb0c2(0x1f5)]+'\x0a')+(_0x5cb0c2(0x207)+_0x4ae179['content']['substring'](0x0,0xc8)+(_0x4ae179[_0x5cb0c2(0x2b8)][_0x5cb0c2(0x24c)]>0xc8?_0x5cb0c2(0x255):'')+'\x0a'))['join']('\x0a');return{'content':[{'type':_0x5cb0c2(0x2ca),'text':_0x10a948}]};}catch(_0x340863){const _0x31ab14=_0x340863 instanceof Error?_0x340863[_0x5cb0c2(0x28e)]:String(_0x340863);return reportMorphError({'error_message':_0x31ab14,'error_type':_0x340863 instanceof Error?_0x340863[_0x5cb0c2(0x293)][_0x5cb0c2(0x218)]:_0x5cb0c2(0x2c3),'context':{'tool':_0x5cb0c2(0x2a5),'query':_0x30e596[_0x5cb0c2(0x252)][_0x5cb0c2(0x23d)],'repo_id':_0x30e596[_0x5cb0c2(0x252)]['repoId'],'target_directories':_0x30e596[_0x5cb0c2(0x252)][_0x5cb0c2(0x274)]},'stack_trace':_0x340863 instanceof Error?_0x340863[_0x5cb0c2(0x284)]:undefined,'source':_0x5cb0c2(0x1e9)})['catch'](()=>{}),{'content':[{'type':_0x5cb0c2(0x2ca),'text':_0x5cb0c2(0x20d)+_0x31ab14}],'isError':!![]};}}default:throw new Error(_0x5cb0c2(0x275)+_0x33083a);}}catch(_0x448283){const _0x1c0950=_0x448283 instanceof Error?_0x448283[_0x5cb0c2(0x28e)]:String(_0x448283);return reportMorphError({'error_message':_0x1c0950,'error_type':_0x448283 instanceof Error?_0x448283[_0x5cb0c2(0x293)][_0x5cb0c2(0x218)]:'UnknownError','context':{'tool':name,'arguments':args?JSON[_0x5cb0c2(0x1e3)](args)[_0x5cb0c2(0x28b)](0x0,0x1f4):undefined,'mcp_server_version':_0x5cb0c2(0x1dd)},'stack_trace':_0x448283 instanceof Error?_0x448283[_0x5cb0c2(0x284)]:undefined,'source':_0x5cb0c2(0x1e9)})[_0x5cb0c2(0x269)](()=>{}),{'content':[{'type':_0x5cb0c2(0x2ca),'text':'Error:\x20'+_0x1c0950}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x4d6d15){const _0x578638=a0_0x2070f9,_0x121b5d=await getValidRootDirectories(_0x4d6d15);if(_0x121b5d[_0x578638(0x24c)]>0x0)allowedDirectories=[..._0x121b5d],console[_0x578638(0x299)](_0x578638(0x283)+_0x121b5d[_0x578638(0x24c)]+_0x578638(0x27f));else{console['error'](_0x578638(0x1db));if(ENABLE_WORKSPACE_MODE)try{const _0x1177ce=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x1177ce&&(allowedDirectories=[_0x1177ce],console[_0x578638(0x299)]('Fallback:\x20Using\x20workspace\x20root\x20'+_0x1177ce));}catch(_0x296d49){console['error']('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x296d49);}}}server[a0_0x2070f9(0x1e1)](RootsListChangedNotificationSchema,async()=>{const _0x289398=a0_0x2070f9;try{const _0x25f7c0=await server[_0x289398(0x200)]();_0x25f7c0&&_0x289398(0x291)in _0x25f7c0&&await updateAllowedDirectoriesFromRoots(_0x25f7c0[_0x289398(0x291)]);}catch(_0x527930){console[_0x289398(0x299)](_0x289398(0x256),_0x527930 instanceof Error?_0x527930[_0x289398(0x28e)]:String(_0x527930));}}),server[a0_0x2070f9(0x287)]=async()=>{const _0x4b5c69=a0_0x2070f9,_0x5a06ea=server[_0x4b5c69(0x21f)]();if(_0x5a06ea?.[_0x4b5c69(0x291)])try{const _0x3fc0a4=await server[_0x4b5c69(0x200)]();_0x3fc0a4&&'roots'in _0x3fc0a4?await updateAllowedDirectoriesFromRoots(_0x3fc0a4[_0x4b5c69(0x291)]):console['error'](_0x4b5c69(0x220));}catch(_0x2fe4cc){console['error'](_0x4b5c69(0x2ae),_0x2fe4cc instanceof Error?_0x2fe4cc[_0x4b5c69(0x28e)]:String(_0x2fe4cc));}else{if(allowedDirectories['length']>0x0)console[_0x4b5c69(0x299)](_0x4b5c69(0x292),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x4b5c69(0x299)](_0x4b5c69(0x241));else throw new Error(_0x4b5c69(0x2c2));}}};async function runServer(){const _0x4d1fca=a0_0x2070f9,_0x5aed7b=new StdioServerTransport();await server[_0x4d1fca(0x2cd)](_0x5aed7b),console['error']('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x4d1fca(0x24c)]===0x0&&console[_0x4d1fca(0x299)](_0x4d1fca(0x295));}function a0_0x286d(_0x181130,_0x3a3769){_0x181130=_0x181130-0x1d6;const _0xba545=a0_0xba54();let _0x286db1=_0xba545[_0x181130];return _0x286db1;}runServer()['catch'](_0x4d9dbe=>{const _0x63c5d7=a0_0x2070f9;console[_0x63c5d7(0x299)](_0x63c5d7(0x2ad),_0x4d9dbe),process['exit'](0x1);});
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x44209c,_0x3b6951){const _0xc62c28=a1_0x2a8a,_0x5c7dca=_0x44209c();while(!![]){try{const _0x23a9be=parseInt(_0xc62c28(0x1ec))/0x1+parseInt(_0xc62c28(0x1ed))/0x2*(-parseInt(_0xc62c28(0x1e0))/0x3)+-parseInt(_0xc62c28(0x1e3))/0x4*(parseInt(_0xc62c28(0x1e2))/0x5)+-parseInt(_0xc62c28(0x1e7))/0x6*(parseInt(_0xc62c28(0x1f1))/0x7)+-parseInt(_0xc62c28(0x1f3))/0x8*(-parseInt(_0xc62c28(0x1f0))/0x9)+-parseInt(_0xc62c28(0x1e1))/0xa*(-parseInt(_0xc62c28(0x1e6))/0xb)+parseInt(_0xc62c28(0x1f6))/0xc*(-parseInt(_0xc62c28(0x1f7))/0xd);if(_0x23a9be===_0x3b6951)break;else _0x5c7dca['push'](_0x5c7dca['shift']());}catch(_0x5e5751){_0x5c7dca['push'](_0x5c7dca['shift']());}}}(a1_0xe762,0xed708));import a1_0x1e5d42 from'path';import a1_0x62121e from'os';function a1_0x2a8a(_0x476978,_0x2e5826){_0x476978=_0x476978-0x1df;const _0xe76235=a1_0xe762();let _0x2a8af0=_0xe76235[_0x476978];return _0x2a8af0;}export function convertToWindowsPath(_0x286b96){const _0x216baa=a1_0x2a8a;if(_0x286b96[_0x216baa(0x1e8)](_0x216baa(0x1ee))){const _0x1e9782=_0x286b96[_0x216baa(0x1ef)](0x5)[_0x216baa(0x1f5)](),_0x5134ec=_0x286b96[_0x216baa(0x1ea)](0x6)[_0x216baa(0x1e5)](/\//g,'\x5c');return _0x1e9782+':'+_0x5134ec;}if(_0x286b96[_0x216baa(0x1e4)](/^\/[a-zA-Z]\//)){const _0x34cd1e=_0x286b96[_0x216baa(0x1ef)](0x1)['toUpperCase'](),_0x1e2395=_0x286b96[_0x216baa(0x1ea)](0x2)[_0x216baa(0x1e5)](/\//g,'\x5c');return _0x34cd1e+':'+_0x1e2395;}if(_0x286b96['match'](/^[a-zA-Z]:/))return _0x286b96[_0x216baa(0x1e5)](/\//g,'\x5c');return _0x286b96;}function a1_0xe762(){const _0x1f83d8=['join','111015RTtpPf','110VLUZoB','52355ENVjJN','188psQYhJ','match','replace','1680547zXwlAu','3355614sHFFaN','startsWith','trim','slice','normalize','729127wAbRbL','38QPStaQ','/mnt/','charAt','135MDdgXG','7wrSWbo','substring','1035320STCmfp','homedir','toUpperCase','984mWNyeD','257439Vsxiwu'];a1_0xe762=function(){return _0x1f83d8;};return a1_0xe762();}export function normalizePath(_0x32f754){const _0x15fbe9=a1_0x2a8a;_0x32f754=_0x32f754[_0x15fbe9(0x1e9)]()[_0x15fbe9(0x1e5)](/^["']|["']$/g,'');const _0x4cec37=_0x32f754[_0x15fbe9(0x1e8)]('/')&&!_0x32f754[_0x15fbe9(0x1e4)](/^\/mnt\/[a-z]\//i)&&!_0x32f754[_0x15fbe9(0x1e4)](/^\/[a-zA-Z]\//);if(_0x4cec37)return _0x32f754[_0x15fbe9(0x1e5)](/\/+/g,'/')[_0x15fbe9(0x1e5)](/\/+$/,'');_0x32f754=convertToWindowsPath(_0x32f754);if(_0x32f754['startsWith']('\x5c\x5c')){let _0x1825d8=_0x32f754;_0x1825d8=_0x1825d8[_0x15fbe9(0x1e5)](/^\\{2,}/,'\x5c\x5c');const _0x51f3c6=_0x1825d8[_0x15fbe9(0x1f2)](0x2)['replace'](/\\\\/g,'\x5c');_0x32f754='\x5c\x5c'+_0x51f3c6;}else _0x32f754=_0x32f754[_0x15fbe9(0x1e5)](/\\\\/g,'\x5c');let _0x49f36c=a1_0x1e5d42[_0x15fbe9(0x1eb)](_0x32f754);_0x32f754['startsWith']('\x5c\x5c')&&!_0x49f36c['startsWith']('\x5c\x5c')&&(_0x49f36c='\x5c'+_0x49f36c);if(_0x49f36c[_0x15fbe9(0x1e4)](/^[a-zA-Z]:/)){let _0x28cf6a=_0x49f36c['replace'](/\//g,'\x5c');return/^[a-z]:/['test'](_0x28cf6a)&&(_0x28cf6a=_0x28cf6a[_0x15fbe9(0x1ef)](0x0)[_0x15fbe9(0x1f5)]()+_0x28cf6a[_0x15fbe9(0x1ea)](0x1)),_0x28cf6a;}return _0x49f36c[_0x15fbe9(0x1e5)](/\//g,'\x5c');}export function expandHome(_0x1ca073){const _0x3ba27b=a1_0x2a8a;if(_0x1ca073[_0x3ba27b(0x1e8)]('~/')||_0x1ca073==='~')return a1_0x1e5d42[_0x3ba27b(0x1df)](a1_0x62121e[_0x3ba27b(0x1f4)](),_0x1ca073[_0x3ba27b(0x1ea)](0x1));return _0x1ca073;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a2_0x49b8(){const _0x1527f0=['isAbsolute','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','sep','startsWith','normalize','string','65239TheiFG','847820WNjtgT','162850KLDuYs','1113623QMTdZh','Path\x20must\x20be\x20absolute\x20after\x20normalization','10908EtgOXX','isArray','43670JnxybA','108eWQmFH','includes','4anaNqi','some','787149OlqOQp','resolve','3632DCRJZw'];a2_0x49b8=function(){return _0x1527f0;};return a2_0x49b8();}(function(_0x334e88,_0x42ba2a){const _0x24e1fb=a2_0x27fc,_0x56fb26=_0x334e88();while(!![]){try{const _0x210b07=-parseInt(_0x24e1fb(0x17c))/0x1+parseInt(_0x24e1fb(0x169))/0x2+parseInt(_0x24e1fb(0x173))/0x3*(parseInt(_0x24e1fb(0x171))/0x4)+parseInt(_0x24e1fb(0x16e))/0x5*(-parseInt(_0x24e1fb(0x16f))/0x6)+parseInt(_0x24e1fb(0x16a))/0x7+-parseInt(_0x24e1fb(0x175))/0x8*(-parseInt(_0x24e1fb(0x16c))/0x9)+parseInt(_0x24e1fb(0x17d))/0xa;if(_0x210b07===_0x42ba2a)break;else _0x56fb26['push'](_0x56fb26['shift']());}catch(_0x4df8e8){_0x56fb26['push'](_0x56fb26['shift']());}}}(a2_0x49b8,0xdf814));import a2_0x407c6c from'path';function a2_0x27fc(_0x3a2111,_0x5217d1){_0x3a2111=_0x3a2111-0x169;const _0x49b83c=a2_0x49b8();let _0x27fc22=_0x49b83c[_0x3a2111];return _0x27fc22;}export function isPathWithinAllowedDirectories(_0x5449b2,_0x14539d){const _0x558e07=a2_0x27fc;if(typeof _0x5449b2!==_0x558e07(0x17b)||!Array[_0x558e07(0x16d)](_0x14539d))return![];if(!_0x5449b2||_0x14539d['length']===0x0)return![];if(_0x5449b2[_0x558e07(0x170)]('\x00'))return![];let _0x2ed26e;try{_0x2ed26e=a2_0x407c6c[_0x558e07(0x174)](a2_0x407c6c[_0x558e07(0x17a)](_0x5449b2));}catch{return![];}if(!a2_0x407c6c[_0x558e07(0x176)](_0x2ed26e))throw new Error(_0x558e07(0x16b));return _0x14539d[_0x558e07(0x172)](_0x5bd1e5=>{const _0x564846=_0x558e07;if(typeof _0x5bd1e5!==_0x564846(0x17b)||!_0x5bd1e5)return![];if(_0x5bd1e5[_0x564846(0x170)]('\x00'))return![];let _0x4fb2fe;try{_0x4fb2fe=a2_0x407c6c[_0x564846(0x174)](a2_0x407c6c[_0x564846(0x17a)](_0x5bd1e5));}catch{return![];}if(!a2_0x407c6c['isAbsolute'](_0x4fb2fe))throw new Error(_0x564846(0x177));if(_0x2ed26e===_0x4fb2fe)return!![];if(_0x4fb2fe===a2_0x407c6c[_0x564846(0x178)])return _0x2ed26e[_0x564846(0x179)](a2_0x407c6c[_0x564846(0x178)]);return _0x2ed26e['startsWith'](_0x4fb2fe+a2_0x407c6c['sep']);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x34831e,_0x55b636){const _0x2d5a8f=a3_0x4d1f,_0x5e27cc=_0x34831e();while(!![]){try{const _0x33cbe7=-parseInt(_0x2d5a8f(0x11a))/0x1+parseInt(_0x2d5a8f(0x125))/0x2+-parseInt(_0x2d5a8f(0x11b))/0x3+-parseInt(_0x2d5a8f(0x121))/0x4+-parseInt(_0x2d5a8f(0x128))/0x5+parseInt(_0x2d5a8f(0x12a))/0x6*(-parseInt(_0x2d5a8f(0x11f))/0x7)+parseInt(_0x2d5a8f(0x11e))/0x8;if(_0x33cbe7===_0x55b636)break;else _0x5e27cc['push'](_0x5e27cc['shift']());}catch(_0x149743){_0x5e27cc['push'](_0x5e27cc['shift']());}}}(a3_0x519d,0x95761));import{promises as a3_0x1052a2}from'fs';import a3_0x5c5bef from'path';function a3_0x4d1f(_0x3ac443,_0x3b6b42){_0x3ac443=_0x3ac443-0x11a;const _0x519d64=a3_0x519d();let _0x4d1f4c=_0x519d64[_0x3ac443];return _0x4d1f4c;}import a3_0x10b7b6 from'os';import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x3611bb){const _0x2d57bf=a3_0x4d1f;try{const _0x451e0d=_0x3611bb[_0x2d57bf(0x122)]('file://')?_0x3611bb[_0x2d57bf(0x126)](0x7):_0x3611bb,_0x358de0=_0x451e0d[_0x2d57bf(0x122)]('~/')||_0x451e0d==='~'?a3_0x5c5bef['join'](a3_0x10b7b6['homedir'](),_0x451e0d[_0x2d57bf(0x126)](0x1)):_0x451e0d,_0x20c02b=a3_0x5c5bef['resolve'](_0x358de0),_0x54413c=await a3_0x1052a2[_0x2d57bf(0x127)](_0x20c02b);return normalizePath(_0x54413c);}catch{return null;}}function formatDirectoryError(_0x5155c5,_0x251b91,_0x332a99){const _0x128891=a3_0x4d1f;if(_0x332a99)return'Skipping\x20'+_0x332a99+':\x20'+_0x5155c5;const _0x2d2c57=_0x251b91 instanceof Error?_0x251b91[_0x128891(0x11c)]:String(_0x251b91);return'Skipping\x20invalid\x20directory:\x20'+_0x5155c5+'\x20due\x20to\x20error:\x20'+_0x2d2c57;}export async function getValidRootDirectories(_0x5c09ef){const _0x32da9e=a3_0x4d1f,_0x873b7d=[];for(const _0xfe51b3 of _0x5c09ef){const _0x4af0a1=await parseRootUri(_0xfe51b3[_0x32da9e(0x124)]);if(!_0x4af0a1){console['error'](formatDirectoryError(_0xfe51b3[_0x32da9e(0x124)],undefined,_0x32da9e(0x120)));continue;}try{const _0x50898c=await a3_0x1052a2[_0x32da9e(0x123)](_0x4af0a1);_0x50898c['isDirectory']()?_0x873b7d[_0x32da9e(0x12b)](_0x4af0a1):console[_0x32da9e(0x11d)](formatDirectoryError(_0x4af0a1,undefined,_0x32da9e(0x129)));}catch(_0x4ac8b3){console[_0x32da9e(0x11d)](formatDirectoryError(_0x4af0a1,_0x4ac8b3));}}return _0x873b7d;}function a3_0x519d(){const _0x5ce0fb=['2290300tDbmvc','non-directory\x20root','288HfnTwg','push','413301rXRIkp','6375RvCcGt','message','error','19393464FLKEYs','89299QwHTaP','invalid\x20path\x20or\x20inaccessible','3699324zOukWq','startsWith','stat','uri','1197326JbkLTM','slice','realpath'];a3_0x519d=function(){return _0x5ce0fb;};return a3_0x519d();}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.81",
|
|
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.105",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|