@morphllm/morphmcp 0.8.51 → 0.8.52
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_0x2878ee=a0_0x43c2;(function(_0x33e45e,_0x186855){const _0x23c676=a0_0x43c2,_0x30abed=_0x33e45e();while(!![]){try{const _0xc95a80=-parseInt(_0x23c676(0x138))/0x1+parseInt(_0x23c676(0x10c))/0x2*(parseInt(_0x23c676(0xf8))/0x3)+parseInt(_0x23c676(0x134))/0x4*(parseInt(_0x23c676(0xcd))/0x5)+parseInt(_0x23c676(0xfa))/0x6*(-parseInt(_0x23c676(0x11d))/0x7)+parseInt(_0x23c676(0x16e))/0x8*(parseInt(_0x23c676(0x17a))/0x9)+parseInt(_0x23c676(0xde))/0xa+-parseInt(_0x23c676(0x187))/0xb;if(_0xc95a80===_0x186855)break;else _0x30abed['push'](_0x30abed['shift']());}catch(_0x2feb47){_0x30abed['push'](_0x30abed['shift']());}}}(a0_0x2299,0xeffba));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_0x4e9f2c from'fs/promises';import a0_0x1442c6 from'path';import a0_0x589b3b from'os';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_0x592ca2 from'axios';function fixPathRepetition(_0x333203){const _0x1dbb44=a0_0x43c2,_0x5640b5=_0x333203['split'](a0_0x1442c6[_0x1dbb44(0xb0)])[_0x1dbb44(0x179)](Boolean);if(_0x5640b5[_0x1dbb44(0xab)]<0x2)return null;for(let _0x486274=Math[_0x1dbb44(0xf3)](_0x5640b5[_0x1dbb44(0xab)]/0x2);_0x486274>=0x1;_0x486274--){for(let _0x5a18a5=0x0;_0x5a18a5<=_0x5640b5['length']-0x2*_0x486274;_0x5a18a5++){const _0x25650e=_0x5640b5[_0x1dbb44(0x16d)](_0x5a18a5,_0x5a18a5+_0x486274),_0x58e2d9=_0x5640b5['slice'](_0x5a18a5+_0x486274,_0x5a18a5+0x2*_0x486274);if(_0x25650e['every']((_0x155937,_0x5c8dd1)=>_0x155937===_0x58e2d9[_0x5c8dd1])){const _0x3590ee=[..._0x5640b5[_0x1dbb44(0x16d)](0x0,_0x5a18a5),..._0x5640b5['slice'](_0x5a18a5+_0x486274)];return a0_0x1442c6[_0x1dbb44(0xb0)]+_0x3590ee[_0x1dbb44(0x120)](a0_0x1442c6[_0x1dbb44(0xb0)]);}}}return null;}const args=process[a0_0x2878ee(0xef)][a0_0x2878ee(0x16d)](0x2),ALL_TOOLS=['edit_file','warpgrep_codebase_search',a0_0x2878ee(0xd0)],DEFAULT_TOOLS=[a0_0x2878ee(0xc2),a0_0x2878ee(0xcc)],ENABLED_TOOLS=process[a0_0x2878ee(0x17e)][a0_0x2878ee(0xac)]?process[a0_0x2878ee(0x17e)]['ENABLED_TOOLS']===a0_0x2878ee(0x130)?ALL_TOOLS:process[a0_0x2878ee(0x17e)][a0_0x2878ee(0xac)][a0_0x2878ee(0x17f)](',')[a0_0x2878ee(0x124)](_0x3f0333=>_0x3f0333[a0_0x2878ee(0x139)]()):DEFAULT_TOOLS;console['error'](a0_0x2878ee(0xc7)+ENABLED_TOOLS[a0_0x2878ee(0x120)](',\x20'));const WORKSPACE_ROOT=process['env'][a0_0x2878ee(0xa0)]||process[a0_0x2878ee(0x17e)]['PWD']||process[a0_0x2878ee(0x159)](),ENABLE_WORKSPACE_MODE=process[a0_0x2878ee(0x17e)][a0_0x2878ee(0x177)]!==a0_0x2878ee(0x15f),MORPH_API_KEY=process[a0_0x2878ee(0x17e)][a0_0x2878ee(0x135)],MORPH_API_URL=process[a0_0x2878ee(0x17e)]['MORPH_API_URL'];MORPH_API_KEY&&!MORPH_API_KEY[a0_0x2878ee(0xdd)]('sk-')&&!MORPH_API_KEY['startsWith'](a0_0x2878ee(0xc9))&&console['error'](a0_0x2878ee(0x131));async function reportMorphError(_0x337774){const _0x2a6d64=a0_0x2878ee;try{await a0_0x592ca2[_0x2a6d64(0x116)]('https://morphllm.com/api/error-report',{..._0x337774,'timestamp':new Date()['toISOString'](),'source':_0x337774[_0x2a6d64(0x176)]||_0x2a6d64(0xb9)},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x2a6d64(0x152)+MORPH_API_KEY}});}catch{}}function a0_0x2299(){const _0x1d26b6=['split','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','readFile','applied\x20edits\x20to','ENOENT','dryRun','Natural\x20language\x20query\x20to\x20search\x20for\x20code','Warning:\x20Workspace\x20fallback\x20failed:\x20','5149375aDrGYo','WORKSPACE_ROOT','commitHash','content','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','push','oninitialized','unknown','Unknown\x20error','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','etimedout','safeParse','length','ENABLED_TOOLS','toLowerCase','-\x20Read\x20file\x20`','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','sep','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','TimeoutError','\x22>\x0aError\x20reading\x20file:\x20','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','describe','search_string','Rules:\x0a','mcp-filesystem','role','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','\x20(new\x20file)','roots','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','\x20is\x20not\x20a\x20directory','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','File\x20read\x20error:','edit_file','message','dirname','Workspace\x20mode\x20enabled:\x20Using\x20','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','Enabled\x20tools:\x20','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','morph-','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','Invalid\x20arguments:\x20','warpgrep_codebase_search','6780bOhtmG','results','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','codebase_search','<file\x20path=\x22','exit','error','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','target_directories','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','go.mod','Relevant\x20context\x20found:','Specific\x20commit\x20hash\x20to\x20search','object','constructor','startsWith','4314160yGFoxE','repo_path','pyproject.toml','text','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','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','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','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','package.json','array','Preview\x20changes\x20without\x20applying\x20them.','stack','searchTimeMs','completed_with_file_errors','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','argv','\x0a</file>','-\x20Grepped\x20\x27','setRequestHandler','floor','Warning:\x20','morph-warp-grep-v1-1111v0','realpath','access','3HJBbsU','lines','214494KcQARp','created','filepath','optional','\x20as\x20allowed\x20directory','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','timed\x20out','composer.json','setNotificationHandler','params','Search\x20failed:\x20','Found\x20','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\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','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','For\x20deletions:\x0a','3338818ayfHas','requiresApiKey','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','terminationReason','timeout','Benefits:\x0a','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','terminated','morph-v3-fast','post','match','default','utf-8','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','Error\x20running\x20fast\x20context\x20search:\x20','329YUQnSW','homedir','0.2.0','join','Applied','boolean','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','map','Fatal\x20error\x20running\x20server:','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','-\x20Listed\x20directory\x20`','repeat','Error\x20accessing\x20directory\x20','string','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','files','Error:\x20','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','instruction','all','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','metadata','1876mNMamz','MORPH_API_KEY','errors','branch','688974GfhSrh','trim','data','\x0a...\x20(truncated,\x20total:\x20','FileReadError','Cargo.toml','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','%\x20match)\x0a','No\x20results\x20found\x20for\x20query:\x20\x22','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','assistant','UnknownError','name','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','Failed\x20to\x20request\x20roots\x20from\x20client:','create\x20this\x20file','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','unknown\x20error','grep\x20\x27','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.','catch','toFixed','Created\x20File','\x20\x20\x20Lines\x20','listRoots','substring','Bearer\x20','success','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','diff\x0a','path','basename','Successfully\x20','cwd','finish','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','Morph\x20Edit\x20','isArray','...','false','query','Use\x20dryRun=false\x20to\x20','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','resolve','code','Repository\x20identifier','includes','\x20results\x20in\x20','\x27\x20in\x20`','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','number','read\x20','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','slice','24qvwKyy','\x20valid\x20directories','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Unknown\x20tool:\x20','udiff','endLine','code_edit','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','source','ENABLE_WORKSPACE_MODE','messages','filter','3250449UoYDom','\x20\x20\x20','[could\x20not\x20read\x20file:\x20','</file>','env'];a0_0x2299=function(){return _0x1d26b6;};return a0_0x2299();}args[a0_0x2878ee(0xab)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x2878ee(0xd3)](a0_0x2878ee(0xa3)),console['error']('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),console[a0_0x2878ee(0xd3)](a0_0x2878ee(0xd6)),console[a0_0x2878ee(0xd3)](a0_0x2878ee(0xe7)),console[a0_0x2878ee(0xd3)](a0_0x2878ee(0x148)),console[a0_0x2878ee(0xd3)](a0_0x2878ee(0xff)));function a0_0x43c2(_0x1f94f7,_0x41dbae){_0x1f94f7=_0x1f94f7-0xa0;const _0x229970=a0_0x2299();let _0x43c286=_0x229970[_0x1f94f7];return _0x43c286;}function normalizePath(_0x82fab5){return a0_0x1442c6['normalize'](_0x82fab5);}function expandHome(_0x571599){const _0x3a1573=a0_0x2878ee;if(_0x571599['startsWith']('~/')||_0x571599==='~')return a0_0x1442c6[_0x3a1573(0x120)](a0_0x589b3b[_0x3a1573(0x11e)](),_0x571599[_0x3a1573(0x16d)](0x1));return _0x571599;}let allowedDirectories=await Promise[a0_0x2878ee(0x130)](args[a0_0x2878ee(0x124)](async _0x2f6d21=>{const _0x5dbc7e=a0_0x2878ee,_0x46f320=expandHome(_0x2f6d21),_0x488bf3=a0_0x1442c6[_0x5dbc7e(0x163)](_0x46f320);try{const _0x1ef0bf=await a0_0x4e9f2c[_0x5dbc7e(0xf6)](_0x488bf3);return normalizePath(_0x1ef0bf);}catch(_0x4796b4){return normalizePath(_0x488bf3);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x2878ee(0xab)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x2878ee(0xa4)](workspaceDir),console['error'](a0_0x2878ee(0xc5)+workspaceDir+a0_0x2878ee(0xfe)));}catch(a0_0x290b22){console['error'](a0_0x2878ee(0x108)+a0_0x290b22);}async function detectWorkspaceRoot(_0x2c43ac){const _0x37b276=a0_0x2878ee;let _0x3e70cb=a0_0x1442c6[_0x37b276(0x163)](_0x2c43ac);const _0x1ff064=['.git','.vscode',_0x37b276(0xe8),_0x37b276(0x13d),_0x37b276(0xe0),_0x37b276(0xd8),'.cursor','tsconfig.json',_0x37b276(0x103)];while(_0x3e70cb!==a0_0x1442c6[_0x37b276(0xc4)](_0x3e70cb)){for(const _0x3716bc of _0x1ff064){const _0x493f51=a0_0x1442c6[_0x37b276(0x120)](_0x3e70cb,_0x3716bc);try{return await a0_0x4e9f2c[_0x37b276(0xf7)](_0x493f51),normalizePath(_0x3e70cb);}catch{}}_0x3e70cb=a0_0x1442c6['dirname'](_0x3e70cb);}return normalizePath(_0x2c43ac);}await Promise[a0_0x2878ee(0x130)](args['map'](async _0xf59a61=>{const _0x3bd5b0=a0_0x2878ee;try{const _0x517d20=await a0_0x4e9f2c['stat'](expandHome(_0xf59a61));!_0x517d20['isDirectory']()&&(console['error'](_0x3bd5b0(0x12d)+_0xf59a61+_0x3bd5b0(0xbf)),process[_0x3bd5b0(0xd2)](0x1));}catch(_0x45faef){console[_0x3bd5b0(0xd3)](_0x3bd5b0(0x129)+_0xf59a61+':',_0x45faef),process[_0x3bd5b0(0xd2)](0x1);}}));async function validatePath(_0x1fb78c){const _0xa5374d=a0_0x2878ee,_0x2487af=expandHome(_0x1fb78c),_0x8fb536=a0_0x1442c6[_0xa5374d(0x163)](_0x2487af);try{const _0x51fff6=await a0_0x4e9f2c[_0xa5374d(0xf6)](_0x8fb536);return _0x51fff6;}catch(_0x1d9f4d){if(_0x1d9f4d[_0xa5374d(0x164)]===_0xa5374d(0x183)){const _0x531cc4=a0_0x1442c6[_0xa5374d(0xc4)](_0x8fb536);try{const _0x3df03f=await a0_0x4e9f2c[_0xa5374d(0xf6)](_0x531cc4);return a0_0x1442c6[_0xa5374d(0x120)](_0x3df03f,a0_0x1442c6[_0xa5374d(0x157)](_0x8fb536));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x531cc4);}}throw _0x1d9f4d;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x2878ee(0x12a)](),'code_edit':z[a0_0x2878ee(0x12a)]()[a0_0x2878ee(0xb6)](a0_0x2878ee(0x10a)),'instruction':z[a0_0x2878ee(0x12a)]()[a0_0x2878ee(0xb6)](a0_0x2878ee(0xb2)),'dryRun':z[a0_0x2878ee(0x122)]()[a0_0x2878ee(0x118)](![])['describe'](a0_0x2878ee(0xea))}),WarpGrepArgsSchema=z[a0_0x2878ee(0xdb)]({'search_string':z[a0_0x2878ee(0x12a)]()['describe'](a0_0x2878ee(0xb1)),'repo_path':z[a0_0x2878ee(0x12a)]()[a0_0x2878ee(0xb6)](a0_0x2878ee(0x109))}),CodebaseSearchArgsSchema=z[a0_0x2878ee(0xdb)]({'query':z['string']()['describe'](a0_0x2878ee(0x185)),'repoId':z[a0_0x2878ee(0x12a)]()[a0_0x2878ee(0xb6)](a0_0x2878ee(0x165)),'branch':z[a0_0x2878ee(0x12a)]()[a0_0x2878ee(0xfd)]()[a0_0x2878ee(0xb6)](a0_0x2878ee(0x100)),'commitHash':z[a0_0x2878ee(0x12a)]()[a0_0x2878ee(0xfd)]()[a0_0x2878ee(0xb6)](a0_0x2878ee(0xda)),'target_directories':z[a0_0x2878ee(0xe9)](z[a0_0x2878ee(0x12a)]())[a0_0x2878ee(0x118)]([])['describe'](a0_0x2878ee(0xee)),'limit':z[a0_0x2878ee(0x16a)]()[a0_0x2878ee(0xfd)]()[a0_0x2878ee(0x118)](0xa)[a0_0x2878ee(0xb6)]('Max\x20results\x20to\x20return')}),server=new Server({'name':'morph-mcp','version':a0_0x2878ee(0x11f)},{'capabilities':{'tools':{}}});server[a0_0x2878ee(0xf2)](ListToolsRequestSchema,async()=>{const _0x332435=a0_0x2878ee,_0x25c1ac=[{'name':_0x332435(0xc2),'description':_0x332435(0x11b)+_0x332435(0x141)+_0x332435(0xc0)+_0x332435(0x112)+_0x332435(0x111)+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x332435(0x180)+_0x332435(0x170)+_0x332435(0x11a)+_0x332435(0xe5)+_0x332435(0xbb)+_0x332435(0x123)+_0x332435(0x10b)+_0x332435(0xe3)+_0x332435(0xbe)+_0x332435(0xb8)+_0x332435(0x12e)+_0x332435(0x175)+_0x332435(0x16c)+_0x332435(0xaf)+_0x332435(0x113)+_0x332435(0xcf)+_0x332435(0xe2),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':'warpgrep_codebase_search','description':_0x332435(0xca)+'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'+_0x332435(0x154)+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20'+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.'+_0x332435(0xe4)+'You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20'+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':'codebase_search','description':_0x332435(0xd4)+'⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a'+_0x332435(0xc6)+'Benefits:\x0a'+_0x332435(0x169)+'-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a'+_0x332435(0x101)+_0x332435(0x15b)+_0x332435(0x13e)+_0x332435(0x132)+'Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x27eacf=_0x25c1ac[_0x332435(0x179)](_0x2ddd9c=>{const _0x43ccd6=_0x332435;if(!ENABLED_TOOLS[_0x43ccd6(0x166)](_0x2ddd9c['name']))return![];if(_0x43ccd6(0x10d)in _0x2ddd9c&&_0x2ddd9c[_0x43ccd6(0x10d)]&&!MORPH_API_KEY)return console[_0x43ccd6(0xd3)](_0x43ccd6(0xf4)+_0x2ddd9c[_0x43ccd6(0x144)]+_0x43ccd6(0x145)),![];return!![];});return{'tools':_0x27eacf[_0x332435(0x124)](_0x5ba2b7=>({'name':_0x5ba2b7[_0x332435(0x144)],'description':_0x5ba2b7['description'],'inputSchema':_0x5ba2b7['inputSchema']}))};}),server[a0_0x2878ee(0xf2)](CallToolRequestSchema,async _0x5509cf=>{const _0x32dbaf=a0_0x2878ee;try{const {name:_0x4eb32a,arguments:_0x1066ed}=_0x5509cf[_0x32dbaf(0x105)];switch(_0x4eb32a){case _0x32dbaf(0xc2):{const _0x44e6e4=MorphEditFileArgsSchema[_0x32dbaf(0xaa)](_0x1066ed);if(!_0x44e6e4['success'])throw new Error(_0x32dbaf(0xa8)+_0x44e6e4['error']);const _0x5505ca=await validatePath(_0x44e6e4['data'][_0x32dbaf(0x156)]);let _0x386c5a=null,_0x109f44=!![],_0x4c0b53=null;try{_0x386c5a=await a0_0x4e9f2c[_0x32dbaf(0x181)](_0x5505ca,_0x32dbaf(0x119));}catch(_0x120495){const _0x201957=_0x120495[_0x32dbaf(0x164)];_0x201957==='ENOENT'?(_0x109f44=![],_0x386c5a=''):(_0x4c0b53='Failed\x20to\x20read\x20file:\x20'+(_0x201957||_0x32dbaf(0xa6))+'\x20-\x20'+(_0x120495 instanceof Error?_0x120495['message']:String(_0x120495)),console['error'](_0x32dbaf(0xf4)+_0x4c0b53));}try{const _0x5afebb=MORPH_API_KEY;if(!_0x5afebb)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x3d43bc=a0_0x1442c6[_0x32dbaf(0xc4)](_0x5505ca),_0x210880=a0_0x1442c6[_0x32dbaf(0x157)](_0x5505ca),_0x2a7867=await executeEditFile({'target_filepath':_0x210880,'code_edit':_0x44e6e4[_0x32dbaf(0x13a)][_0x32dbaf(0x174)],'instructions':_0x44e6e4[_0x32dbaf(0x13a)][_0x32dbaf(0x12f)]},{'morphApiKey':_0x5afebb,'morphApiUrl':MORPH_API_URL,'baseDir':_0x3d43bc,'autoWrite':!_0x44e6e4[_0x32dbaf(0x13a)][_0x32dbaf(0x184)],'generateUdiff':!![],'debug':![]});if(!_0x2a7867[_0x32dbaf(0x153)])throw new Error(_0x2a7867[_0x32dbaf(0xd3)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x536b1f=_0x2a7867[_0x32dbaf(0x172)]||'';let _0x41824a=0x3;while(_0x536b1f[_0x32dbaf(0x166)]('`'[_0x32dbaf(0x128)](_0x41824a))){_0x41824a++;}const _0xebad9a='`'['repeat'](_0x41824a)+_0x32dbaf(0x155)+_0x536b1f+'`'[_0x32dbaf(0x128)](_0x41824a)+'\x0a\x0a';if(_0x44e6e4[_0x32dbaf(0x13a)][_0x32dbaf(0x184)])return{'content':[{'type':_0x32dbaf(0xe1),'text':'🔍\x20Morph\x20Edit\x20Preview'+(_0x109f44?'':_0x32dbaf(0xbc))+':\x20'+_0x44e6e4[_0x32dbaf(0x13a)]['instruction']+'\x0a\x0a'+_0xebad9a+_0x32dbaf(0x161)+(_0x109f44?'apply\x20these\x20changes':_0x32dbaf(0x147))+'.'}]};return{'content':[{'type':_0x32dbaf(0xe1),'text':_0x32dbaf(0x15c)+(_0x109f44?_0x32dbaf(0x121):_0x32dbaf(0x14e))+':\x20'+_0x44e6e4[_0x32dbaf(0x13a)][_0x32dbaf(0x12f)]+'\x0a\x0a'+_0xebad9a+_0x32dbaf(0x158)+(_0x109f44?_0x32dbaf(0x182):_0x32dbaf(0xfb))+'\x20'+_0x44e6e4['data'][_0x32dbaf(0x156)]}]};}catch(_0x290644){const _0x3bfd96=_0x290644 instanceof Error?_0x290644[_0x32dbaf(0xc3)]:String(_0x290644);return reportMorphError({'error_message':_0x3bfd96,'error_type':_0x290644 instanceof Error?_0x290644[_0x32dbaf(0xdc)][_0x32dbaf(0x144)]:_0x32dbaf(0x143),'context':{'tool':'edit_file','file_path':_0x44e6e4[_0x32dbaf(0x13a)][_0x32dbaf(0x156)],'validated_path':_0x5505ca,'instruction':_0x44e6e4['data']['instruction'],'model':_0x32dbaf(0x115),'dry_run':_0x44e6e4['data'][_0x32dbaf(0x184)],'file_exists':_0x109f44,'file_read_error':_0x4c0b53,'file_readable':_0x386c5a!==null,'request_content':{'path':_0x44e6e4[_0x32dbaf(0x13a)][_0x32dbaf(0x156)],'code_edit':_0x44e6e4[_0x32dbaf(0x13a)][_0x32dbaf(0x174)],'instruction':_0x44e6e4[_0x32dbaf(0x13a)][_0x32dbaf(0x12f)],'original_code':_0x386c5a!==null?_0x386c5a['length']>0xc350?_0x386c5a['substring'](0x0,0xc350)+_0x32dbaf(0x13b)+_0x386c5a[_0x32dbaf(0xab)]+'\x20chars)':_0x386c5a:_0x32dbaf(0x17c)+(_0x4c0b53||_0x32dbaf(0x149))+']','original_code_length':_0x386c5a?.[_0x32dbaf(0xab)]??0x0,'model':_0x32dbaf(0x115),'dry_run':_0x44e6e4[_0x32dbaf(0x13a)][_0x32dbaf(0x184)]}},'stack_trace':_0x290644 instanceof Error?_0x290644[_0x32dbaf(0xeb)]:undefined,'source':_0x32dbaf(0xb9)})[_0x32dbaf(0x14c)](()=>{}),{'content':[{'type':_0x32dbaf(0xe1),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x3bfd96}],'isError':!![]};}}case _0x32dbaf(0xcc):{const _0x3619fe=WarpGrepArgsSchema[_0x32dbaf(0xaa)](_0x1066ed);if(!_0x3619fe['success'])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x3619fe[_0x32dbaf(0xd3)]}],'isError':!![]};const _0x175a7e=_0x1c69b0=>{const _0x5bf4a4=_0x32dbaf,_0x16d8fb=[];for(const _0x5feb14 of _0x1c69b0||[]){const _0x3701cc=_0x5feb14['role'],_0xd8e28=_0x5feb14['content'];if(_0x3701cc===_0x5bf4a4(0x142)&&_0xd8e28){const _0x199790=_0xd8e28['split']('\x0a')[_0x5bf4a4(0x179)](_0x45af79=>_0x45af79[_0x5bf4a4(0x139)]());for(const _0x45252f of _0x199790){const _0x4a4d09=_0x45252f['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x4a4d09){_0x16d8fb[_0x5bf4a4(0xa4)](_0x5bf4a4(0x14a)+_0x4a4d09[0x1]+'\x27\x20'+_0x4a4d09[0x2]);continue;}const _0x1a3f44=_0x45252f[_0x5bf4a4(0x117)](/^read\s+(.+)$/);if(_0x1a3f44){_0x16d8fb[_0x5bf4a4(0xa4)](_0x5bf4a4(0x16b)+_0x1a3f44[0x1]);continue;}const _0x38acae=_0x45252f[_0x5bf4a4(0x117)](/^list_directory\s+(.+)$/);if(_0x38acae){_0x16d8fb[_0x5bf4a4(0xa4)]('list_directory\x20'+_0x38acae[0x1]);continue;}}}}return _0x16d8fb;};try{const _0xefa848=a0_0x1442c6[_0x32dbaf(0x163)](_0x3619fe[_0x32dbaf(0x13a)][_0x32dbaf(0xdf)]),_0x1cf845=new LocalRipgrepProvider(_0xefa848),_0x122c1a=await runWarpGrep({'query':_0x3619fe[_0x32dbaf(0x13a)][_0x32dbaf(0xb7)],'repoRoot':_0xefa848,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'provider':_0x1cf845});let _0x150814='';if(_0x122c1a[_0x32dbaf(0x10f)]==='completed'&&_0x122c1a['finish']?.[_0x32dbaf(0x133)]?.[_0x32dbaf(0x12c)]){const _0x5cb1bd=_0x122c1a['finish'][_0x32dbaf(0x133)][_0x32dbaf(0x12c)],_0x456174=[],_0x468ae2=[_0x32dbaf(0x126)];for(const _0x266142 of _0x122c1a[_0x32dbaf(0x178)]){const _0x2fa9ad=_0x266142['role'],_0x2dc6a1=_0x266142[_0x32dbaf(0xa2)];if(_0x2fa9ad==='assistant'&&_0x2dc6a1){const _0x3ec2f8=_0x2dc6a1[_0x32dbaf(0x17f)]('\x0a')['filter'](_0x307c0a=>_0x307c0a[_0x32dbaf(0x139)]());for(const _0x31ad6e of _0x3ec2f8){const _0x5de0f4=_0x31ad6e[_0x32dbaf(0x117)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x5de0f4){_0x468ae2[_0x32dbaf(0xa4)](_0x32dbaf(0xf1)+_0x5de0f4[0x1]+_0x32dbaf(0x168)+_0x5de0f4[0x2]+'`');continue;}const _0x23d5e8=_0x31ad6e['match'](/^read\s+(.+)$/);if(_0x23d5e8){_0x468ae2[_0x32dbaf(0xa4)](_0x32dbaf(0xae)+_0x23d5e8[0x1]+'`');continue;}const _0xe9ad54=_0x31ad6e[_0x32dbaf(0x117)](/^list_directory\s+(.+)$/);if(_0xe9ad54){_0x468ae2[_0x32dbaf(0xa4)](_0x32dbaf(0x127)+_0xe9ad54[0x1]+'`');continue;}}}}_0x456174[_0x32dbaf(0xa4)](_0x468ae2[_0x32dbaf(0x120)]('\x0a'));const _0x457e75=['',_0x32dbaf(0xd9)];for(const _0x39319d of _0x5cb1bd){if(_0x39319d[_0x32dbaf(0xf9)]==='*')_0x457e75[_0x32dbaf(0xa4)]('-\x20'+_0x39319d[_0x32dbaf(0x156)]+':*');else{if(Array['isArray'](_0x39319d[_0x32dbaf(0xf9)])){const _0x5dc90f=_0x39319d[_0x32dbaf(0xf9)][_0x32dbaf(0x124)](([_0x2305d6,_0x749bc5])=>{if(_0x2305d6===_0x749bc5)return''+_0x2305d6;return _0x2305d6+'-'+_0x749bc5;});_0x457e75[_0x32dbaf(0xa4)]('-\x20'+_0x39319d[_0x32dbaf(0x156)]+':'+_0x5dc90f[_0x32dbaf(0x120)](','));}else _0x457e75[_0x32dbaf(0xa4)]('-\x20'+_0x39319d['path']+':*');}}_0x457e75[_0x32dbaf(0xa4)](''),_0x456174[_0x32dbaf(0xa4)](_0x457e75[_0x32dbaf(0x120)]('\x0a')),_0x456174[_0x32dbaf(0xa4)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x54ab9f=[];for(const _0x5cd529 of _0x5cb1bd){let _0xebf57f=a0_0x1442c6[_0x32dbaf(0x163)](_0x3619fe[_0x32dbaf(0x13a)][_0x32dbaf(0xdf)],_0x5cd529[_0x32dbaf(0x156)]),_0x1246e3=null,_0x2a40ed=null;try{_0x1246e3=await a0_0x4e9f2c[_0x32dbaf(0x181)](_0xebf57f,{'encoding':_0x32dbaf(0x119)});}catch(_0x5c47ab){const _0x5cc114=fixPathRepetition(_0xebf57f);if(_0x5cc114)try{_0x1246e3=await a0_0x4e9f2c[_0x32dbaf(0x181)](_0x5cc114,{'encoding':_0x32dbaf(0x119)}),_0xebf57f=_0x5cc114;}catch{_0x2a40ed=_0x5c47ab instanceof Error?_0x5c47ab:new Error(String(_0x5c47ab));}else _0x2a40ed=_0x5c47ab instanceof Error?_0x5c47ab:new Error(String(_0x5c47ab));}if(_0x1246e3!==null){const _0x7437bd=_0x1246e3['split'](/\r?\n/),_0x266bc1=[_0x32dbaf(0xd1)+_0x5cd529[_0x32dbaf(0x156)]+'\x22>'];if(_0x5cd529[_0x32dbaf(0xf9)]==='*'||!Array[_0x32dbaf(0x15d)](_0x5cd529['lines']))for(let _0x390483=0x1;_0x390483<=_0x7437bd[_0x32dbaf(0xab)];_0x390483++){const _0x5c43d3=_0x7437bd[_0x390483-0x1];_0x266bc1[_0x32dbaf(0xa4)](_0x390483+'|\x20'+_0x5c43d3);}else for(const [_0x575fbe,_0x1cb46d]of _0x5cd529[_0x32dbaf(0xf9)]){_0x266bc1['length']>0x1&&_0x266bc1[_0x32dbaf(0xa4)]('');for(let _0x3f5b6f=_0x575fbe;_0x3f5b6f<=_0x1cb46d&&_0x3f5b6f<=_0x7437bd[_0x32dbaf(0xab)];_0x3f5b6f++){const _0x3b9745=_0x7437bd[_0x3f5b6f-0x1];_0x266bc1[_0x32dbaf(0xa4)](_0x3f5b6f+'|\x20'+_0x3b9745);}}_0x266bc1[_0x32dbaf(0xa4)](_0x32dbaf(0x17d)),_0x54ab9f[_0x32dbaf(0xa4)](_0x266bc1[_0x32dbaf(0x120)]('\x0a'));}else _0x54ab9f[_0x32dbaf(0xa4)](_0x32dbaf(0xd1)+_0x5cd529['path']+_0x32dbaf(0xb4)+(_0x2a40ed?.[_0x32dbaf(0xc3)]||_0x32dbaf(0xa7))+_0x32dbaf(0xf0));}_0x456174[_0x32dbaf(0xa4)](_0x54ab9f[_0x32dbaf(0x120)]('\x0a\x0a')),_0x150814=_0x456174[_0x32dbaf(0x120)]('\x0a');const _0x592ddd=_0x122c1a[_0x32dbaf(0x136)]?.[_0x32dbaf(0x179)](_0x13a97f=>_0x13a97f[_0x32dbaf(0xc3)]?.['startsWith'](_0x32dbaf(0xc1)))||[];if(_0x592ddd[_0x32dbaf(0xab)]>0x0){const _0x594d25=_0x592ddd['map'](_0x5af9cc=>_0x5af9cc['message'])[_0x32dbaf(0x120)](';\x20');reportMorphError({'error_message':_0x594d25,'error_type':_0x32dbaf(0x13c),'context':{'tool':_0x32dbaf(0xcc),'repo_path':_0x3619fe[_0x32dbaf(0x13a)][_0x32dbaf(0xdf)],'query':_0x3619fe[_0x32dbaf(0x13a)][_0x32dbaf(0xb7)],'model':_0x32dbaf(0xf5),'termination_reason':_0x32dbaf(0xed),'error_count':_0x592ddd['length'],'is_timeout':![],'files_attempted':_0x5cb1bd['map'](_0x545342=>({'path':_0x545342[_0x32dbaf(0x156)],'lines':_0x545342[_0x32dbaf(0xf9)]})),'tool_calls':_0x175a7e(_0x122c1a[_0x32dbaf(0x178)]),'messages':_0x122c1a['messages']?.[_0x32dbaf(0x124)](_0x2a325c=>({'role':_0x2a325c[_0x32dbaf(0xba)],'content':_0x2a325c['content']})),'request_content':{'query':_0x3619fe['data'][_0x32dbaf(0xb7)],'repo_path':_0x3619fe[_0x32dbaf(0x13a)][_0x32dbaf(0xdf)],'repoRoot':a0_0x1442c6['resolve'](_0x3619fe[_0x32dbaf(0x13a)]['repo_path']),'model':_0x32dbaf(0xf5)}},'source':_0x32dbaf(0xb9)})[_0x32dbaf(0x14c)](()=>{});}}else{if(_0x122c1a[_0x32dbaf(0x10f)]===_0x32dbaf(0x114)&&_0x122c1a['errors']['length']>0x0){const _0x3bc5f3=_0x122c1a[_0x32dbaf(0x136)][_0x32dbaf(0x124)](_0x4c43c6=>_0x4c43c6[_0x32dbaf(0xc3)])[_0x32dbaf(0x120)](';\x20');_0x150814='Error:\x20'+_0x3bc5f3;const _0x5abe93=_0x3bc5f3[_0x32dbaf(0xad)]()[_0x32dbaf(0x166)](_0x32dbaf(0x110))||_0x3bc5f3[_0x32dbaf(0xad)]()[_0x32dbaf(0x166)](_0x32dbaf(0x102))||_0x3bc5f3[_0x32dbaf(0xad)]()[_0x32dbaf(0x166)](_0x32dbaf(0xa9)),_0x57302d=_0x122c1a[_0x32dbaf(0x15a)]?.[_0x32dbaf(0x133)]?.[_0x32dbaf(0x12c)],_0x86071=_0x122c1a[_0x32dbaf(0x136)][0x0];reportMorphError({'error_message':_0x3bc5f3,'error_type':_0x5abe93?_0x32dbaf(0xb3):_0x86071?.[_0x32dbaf(0xdc)]?.['name']||'WarpGrepError','context':{'tool':'warpgrep_codebase_search','repo_path':_0x3619fe['data']['repo_path'],'query':_0x3619fe[_0x32dbaf(0x13a)][_0x32dbaf(0xb7)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x122c1a[_0x32dbaf(0x10f)],'error_count':_0x122c1a['errors'][_0x32dbaf(0xab)],'is_timeout':_0x5abe93,'files_attempted':_0x57302d?.[_0x32dbaf(0x124)](_0x4a4376=>({'path':_0x4a4376[_0x32dbaf(0x156)],'lines':_0x4a4376['lines']})),'tool_calls':_0x175a7e(_0x122c1a[_0x32dbaf(0x178)]),'messages':_0x122c1a[_0x32dbaf(0x178)]?.[_0x32dbaf(0x124)](_0x5405c7=>({'role':_0x5405c7[_0x32dbaf(0xba)],'content':_0x5405c7['content']})),'request_content':{'query':_0x3619fe[_0x32dbaf(0x13a)]['search_string'],'repo_path':_0x3619fe[_0x32dbaf(0x13a)]['repo_path'],'repoRoot':a0_0x1442c6[_0x32dbaf(0x163)](_0x3619fe[_0x32dbaf(0x13a)][_0x32dbaf(0xdf)]),'model':'morph-warp-grep-v1-1111v0'}},'stack_trace':_0x86071?.[_0x32dbaf(0xeb)]||undefined,'source':_0x32dbaf(0xb9)})[_0x32dbaf(0x14c)](()=>{});}else _0x150814=_0x32dbaf(0x10e);}return{'content':[{'type':_0x32dbaf(0xe1),'text':_0x150814}]};}catch(_0x23a2d0){const _0xf611fa=_0x23a2d0 instanceof Error?_0x23a2d0['message']:String(_0x23a2d0),_0x33f135=_0xf611fa[_0x32dbaf(0xad)]()[_0x32dbaf(0x166)](_0x32dbaf(0x110))||_0xf611fa['toLowerCase']()[_0x32dbaf(0x166)](_0x32dbaf(0x102))||_0xf611fa[_0x32dbaf(0xad)]()['includes'](_0x32dbaf(0xa9))||_0x23a2d0 instanceof Error&&_0x23a2d0[_0x32dbaf(0x144)]==='TimeoutError';return reportMorphError({'error_message':_0xf611fa,'error_type':_0x33f135?_0x32dbaf(0xb3):_0x23a2d0 instanceof Error?_0x23a2d0[_0x32dbaf(0xdc)][_0x32dbaf(0x144)]:_0x32dbaf(0x143),'context':{'tool':_0x32dbaf(0xcc),'repo_path':_0x3619fe[_0x32dbaf(0x13a)][_0x32dbaf(0xdf)],'query':_0x3619fe[_0x32dbaf(0x13a)][_0x32dbaf(0xb7)],'model':'morph-warp-grep-v1-1111v0','is_timeout':_0x33f135,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x3619fe['data'][_0x32dbaf(0xb7)],'repo_path':_0x3619fe[_0x32dbaf(0x13a)][_0x32dbaf(0xdf)],'repoRoot':a0_0x1442c6[_0x32dbaf(0x163)](_0x3619fe['data'][_0x32dbaf(0xdf)]),'model':_0x32dbaf(0xf5)}},'stack_trace':_0x23a2d0 instanceof Error?_0x23a2d0['stack']:undefined,'source':_0x32dbaf(0xb9)})[_0x32dbaf(0x14c)](()=>{}),{'content':[{'type':_0x32dbaf(0xe1),'text':_0x32dbaf(0x11c)+_0xf611fa}],'isError':![]};}}case _0x32dbaf(0xd0):{const _0x495e8c=CodebaseSearchArgsSchema[_0x32dbaf(0xaa)](_0x1066ed);if(!_0x495e8c[_0x32dbaf(0x153)])return{'content':[{'type':_0x32dbaf(0xe1),'text':_0x32dbaf(0xcb)+_0x495e8c['error']}],'isError':!![]};try{const _0x52c143=MORPH_API_KEY;if(!_0x52c143)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.');const _0x3c3c7a=await executeCodebaseSearch({'query':_0x495e8c[_0x32dbaf(0x13a)][_0x32dbaf(0x160)],'target_directories':_0x495e8c[_0x32dbaf(0x13a)][_0x32dbaf(0xd5)],'limit':_0x495e8c[_0x32dbaf(0x13a)]['limit']},{'apiKey':_0x52c143,'repoId':_0x495e8c['data']['repoId'],'branch':_0x495e8c[_0x32dbaf(0x13a)][_0x32dbaf(0x137)],'commitHash':_0x495e8c[_0x32dbaf(0x13a)][_0x32dbaf(0xa1)],'debug':![]});if(!_0x3c3c7a[_0x32dbaf(0x153)])return{'content':[{'type':'text','text':_0x32dbaf(0x106)+_0x3c3c7a['error']}],'isError':!![]};const _0x4890ff=_0x3c3c7a[_0x32dbaf(0xce)][_0x32dbaf(0xab)]===0x0?_0x32dbaf(0x140)+_0x495e8c['data']['query']+'\x22':_0x32dbaf(0x107)+_0x3c3c7a[_0x32dbaf(0xce)]['length']+_0x32dbaf(0x167)+_0x3c3c7a['stats'][_0x32dbaf(0xec)]+'ms:\x0a\x0a'+_0x3c3c7a[_0x32dbaf(0xce)]['map']((_0xd5c00e,_0x511f68)=>_0x511f68+0x1+'.\x20'+_0xd5c00e[_0x32dbaf(0xfc)]+'\x20('+(_0xd5c00e['rerankScore']*0x64)[_0x32dbaf(0x14d)](0x1)+_0x32dbaf(0x13f)+(_0x32dbaf(0x14f)+_0xd5c00e['startLine']+'-'+_0xd5c00e[_0x32dbaf(0x173)]+'\x0a')+(_0x32dbaf(0x17b)+_0xd5c00e[_0x32dbaf(0xa2)][_0x32dbaf(0x151)](0x0,0xc8)+(_0xd5c00e[_0x32dbaf(0xa2)][_0x32dbaf(0xab)]>0xc8?_0x32dbaf(0x15e):'')+'\x0a'))[_0x32dbaf(0x120)]('\x0a');return{'content':[{'type':_0x32dbaf(0xe1),'text':_0x4890ff}]};}catch(_0x1b0bdb){const _0x31f12c=_0x1b0bdb instanceof Error?_0x1b0bdb[_0x32dbaf(0xc3)]:String(_0x1b0bdb);return reportMorphError({'error_message':_0x31f12c,'error_type':_0x1b0bdb instanceof Error?_0x1b0bdb[_0x32dbaf(0xdc)][_0x32dbaf(0x144)]:_0x32dbaf(0x143),'context':{'tool':_0x32dbaf(0xd0),'query':_0x495e8c[_0x32dbaf(0x13a)][_0x32dbaf(0x160)],'repo_id':_0x495e8c['data']['repoId']},'stack_trace':_0x1b0bdb instanceof Error?_0x1b0bdb[_0x32dbaf(0xeb)]:undefined,'source':_0x32dbaf(0xb9)})[_0x32dbaf(0x14c)](()=>{}),{'content':[{'type':_0x32dbaf(0xe1),'text':'Error:\x20'+_0x31f12c}],'isError':!![]};}}default:throw new Error(_0x32dbaf(0x171)+_0x4eb32a);}}catch(_0x59206f){const _0xc91385=_0x59206f instanceof Error?_0x59206f[_0x32dbaf(0xc3)]:String(_0x59206f);return reportMorphError({'error_message':_0xc91385,'error_type':_0x59206f instanceof Error?_0x59206f[_0x32dbaf(0xdc)][_0x32dbaf(0x144)]:'UnknownError','context':{'tool':name,'arguments':args?JSON['stringify'](args)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x32dbaf(0x11f)},'stack_trace':_0x59206f instanceof Error?_0x59206f[_0x32dbaf(0xeb)]:undefined,'source':_0x32dbaf(0xb9)})['catch'](()=>{}),{'content':[{'type':_0x32dbaf(0xe1),'text':_0x32dbaf(0x12d)+_0xc91385}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x6681df){const _0x2267ca=a0_0x2878ee,_0x3828ec=await getValidRootDirectories(_0x6681df);if(_0x3828ec[_0x2267ca(0xab)]>0x0)allowedDirectories=[..._0x3828ec],console[_0x2267ca(0xd3)](_0x2267ca(0xe6)+_0x3828ec[_0x2267ca(0xab)]+_0x2267ca(0x16f));else{console[_0x2267ca(0xd3)]('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x4e330d=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x4e330d&&(allowedDirectories=[_0x4e330d],console['error']('Fallback:\x20Using\x20workspace\x20root\x20'+_0x4e330d));}catch(_0x446329){console[_0x2267ca(0xd3)](_0x2267ca(0x186)+_0x446329);}}}server[a0_0x2878ee(0x104)](RootsListChangedNotificationSchema,async()=>{const _0x466692=a0_0x2878ee;try{const _0x19e550=await server['listRoots']();_0x19e550&&'roots'in _0x19e550&&await updateAllowedDirectoriesFromRoots(_0x19e550[_0x466692(0xbd)]);}catch(_0xdc24f0){console[_0x466692(0xd3)](_0x466692(0x146),_0xdc24f0 instanceof Error?_0xdc24f0[_0x466692(0xc3)]:String(_0xdc24f0));}}),server[a0_0x2878ee(0xa5)]=async()=>{const _0x1e07a2=a0_0x2878ee,_0xd9bba1=server['getClientCapabilities']();if(_0xd9bba1?.[_0x1e07a2(0xbd)])try{const _0x49cca4=await server[_0x1e07a2(0x150)]();_0x49cca4&&_0x1e07a2(0xbd)in _0x49cca4?await updateAllowedDirectoriesFromRoots(_0x49cca4[_0x1e07a2(0xbd)]):console[_0x1e07a2(0xd3)](_0x1e07a2(0xc8));}catch(_0x261337){console[_0x1e07a2(0xd3)](_0x1e07a2(0x162),_0x261337 instanceof Error?_0x261337[_0x1e07a2(0xc3)]:String(_0x261337));}else{if(allowedDirectories[_0x1e07a2(0xab)]>0x0)console['error'](_0x1e07a2(0x12b),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x1e07a2(0xd3)](_0x1e07a2(0xd7));else throw new Error(_0x1e07a2(0x14b));}}};async function runServer(){const _0x23e9de=a0_0x2878ee,_0x4724e8=new StdioServerTransport();await server['connect'](_0x4724e8),console[_0x23e9de(0xd3)](_0x23e9de(0xb5)),allowedDirectories[_0x23e9de(0xab)]===0x0&&console[_0x23e9de(0xd3)]('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()['catch'](_0x49d194=>{const _0x48152d=a0_0x2878ee;console[_0x48152d(0xd3)](_0x48152d(0x125),_0x49d194),process[_0x48152d(0xd2)](0x1);});
|
|
2
|
+
const a0_0x4a28af=a0_0x547b;(function(_0x537a22,_0x5b2e0c){const _0x459b18=a0_0x547b,_0x5a805b=_0x537a22();while(!![]){try{const _0x5bc840=-parseInt(_0x459b18(0x11a))/0x1+parseInt(_0x459b18(0xfa))/0x2+parseInt(_0x459b18(0x11b))/0x3*(parseInt(_0x459b18(0xd2))/0x4)+-parseInt(_0x459b18(0x149))/0x5*(-parseInt(_0x459b18(0x119))/0x6)+parseInt(_0x459b18(0xde))/0x7+-parseInt(_0x459b18(0x1a0))/0x8+parseInt(_0x459b18(0x186))/0x9;if(_0x5bc840===_0x5b2e0c)break;else _0x5a805b['push'](_0x5a805b['shift']());}catch(_0x26f15c){_0x5a805b['push'](_0x5a805b['shift']());}}}(a0_0x4a69,0xe7558));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_0xe0f2b2 from'fs/promises';import a0_0x25d93e from'path';import a0_0xd76319 from'os';import{z}from'zod';function a0_0x4a69(){const _0x2eb87d=['stat','unknown\x20error','Cargo.toml','commitHash','Search\x20failed:\x20','completed','stringify','branch','Repository\x20identifier','TimeoutError','all','length','Natural\x20language\x20query\x20to\x20search\x20for\x20code','dryRun','morph-warp-grep-v1-1111v0','post','morph-v3-fast','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','ENOENT','catch','edit_file','mcp-filesystem','content','name','isArray','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','terminationReason','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','Error:\x20','Bearer\x20','composer.json','repeat','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','Found\x20','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','homedir','stack','\x22>\x0aError\x20reading\x20file:\x20','map','\x20results\x20in\x20','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','join','\x0a...\x20(truncated,\x20total:\x20','morph-mcp','code_edit','application/json','1075266yTIpOA','UnknownError','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','inputSchema','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','params','roots','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','finish','includes','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','toFixed','error','\x27\x20in\x20`','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','Warning:\x20','access','Morph\x20FastApply\x20failed\x20without\x20error\x20message','\x20is\x20not\x20a\x20directory','Here\x20is\x20the\x20content\x20of\x20files:\x0a','runWarpGrep_call','assistant','substring','pyproject.toml','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','7984224ISPIBt','utf-8','Failed\x20to\x20request\x20roots\x20from\x20client:','File\x20read\x20error:','Warning:\x20Workspace\x20fallback\x20failed:\x20','Rules:\x0a','ms:\x0a\x0a','<file\x20path=\x22','%\x20match)\x0a','getClientCapabilities','\x20-\x20','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','safeParse','number','WORKSPACE_ROOT','Created\x20File','toLowerCase','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','query','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','PWD','\x20chars)','readFile','match','.cursor','rerankScore','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','metadata','object','etimedout','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','success','Max\x20results\x20to\x20return','1080632ttJGYB','describe','timed\x20out','filter','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','default','Error\x20accessing\x20directory\x20','🔍\x20Morph\x20Edit\x20Preview','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','push','instruction','codebase_search','7415968wrMqqO','searchTimeMs','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','ENABLED_TOOLS','filepath','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','Enabled\x20tools:\x20','lines','Note:\x20The\x20files\x20and\x20line\x20ranges\x20returned\x20by\x20this\x20tool\x20may\x20be\x20some\x20of\x20the\x20ones\x20needed\x20to\x20complete\x20the\x20user\x27s\x20request,\x20but\x20you\x20should\x20be\x20careful\x20in\x20evaluating\x20the\x20relevance\x20of\x20the\x20results,\x20since\x20the\x20subagent\x20might\x20make\x20mistakes.\x20','listRoots','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','split','repoId','udiff','-\x20Grepped\x20\x27','list_directory\x20','constructor','go.mod','cwd','false','normalize','❌\x20Morph\x20Edit\x20Failed:\x20','created','floor','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','toISOString','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','1575678Nxfxqe','sep','Unknown\x20error','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','description','messages','dirname','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','WarpGrepError','read\x20','exit','optional','-\x20Read\x20file\x20`','basename','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Preview\x20changes\x20without\x20applying\x20them.','[could\x20not\x20read\x20file:\x20','Morph\x20Edit\x20','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','trim','0.2.0','Error\x20running\x20fast\x20context\x20search:\x20','role','\x20\x20\x20Lines\x20','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','completed_with_file_errors','warpgrep_codebase_search','stats','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','17682eYucSc','1061505QXBYgG','9Xhupxu','Use\x20dryRun=false\x20to\x20','create\x20this\x20file','every','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Relevant\x20context\x20found:','terminated','Invalid\x20arguments:\x20','realpath','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','\x20\x20\x20','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','search_string','slice','applied\x20edits\x20to','apply\x20these\x20changes','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','unknown','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','endLine','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','data','Benefits:\x0a','repo_path','Applied','source','env','text','files','oninitialized','string','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','morph-','message','path','package.json','\x20as\x20allowed\x20directory','argv','diff\x0a','https://morphllm.com/api/error-report','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','results','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','resolve','390XXzwMv','startsWith','setRequestHandler','errors','MORPH_API_KEY','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','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','Successfully\x20','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','requiresApiKey','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.','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','No\x20results\x20found\x20for\x20query:\x20\x22','Specific\x20commit\x20hash\x20to\x20search'];a0_0x4a69=function(){return _0x2eb87d;};return a0_0x4a69();}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_0x2a8f43 from'axios';function fixPathRepetition(_0x423a0c){const _0x31821e=a0_0x547b,_0x3daaf2=_0x423a0c[_0x31821e(0xe9)](a0_0x25d93e[_0x31821e(0xfb)])[_0x31821e(0xd5)](Boolean);if(_0x3daaf2[_0x31821e(0x162)]<0x2)return null;for(let _0x4172f7=Math[_0x31821e(0xf5)](_0x3daaf2[_0x31821e(0x162)]/0x2);_0x4172f7>=0x1;_0x4172f7--){for(let _0x1a6058=0x0;_0x1a6058<=_0x3daaf2[_0x31821e(0x162)]-0x2*_0x4172f7;_0x1a6058++){const _0x547455=_0x3daaf2[_0x31821e(0x129)](_0x1a6058,_0x1a6058+_0x4172f7),_0x387b33=_0x3daaf2[_0x31821e(0x129)](_0x1a6058+_0x4172f7,_0x1a6058+0x2*_0x4172f7);if(_0x547455[_0x31821e(0x11e)]((_0x5caab7,_0x3ff61d)=>_0x5caab7===_0x387b33[_0x3ff61d])){const _0x20d70e=[..._0x3daaf2['slice'](0x0,_0x1a6058),..._0x3daaf2[_0x31821e(0x129)](_0x1a6058+_0x4172f7)];return a0_0x25d93e[_0x31821e(0xfb)]+_0x20d70e[_0x31821e(0x181)](a0_0x25d93e[_0x31821e(0xfb)]);}}}return null;}const args=process[a0_0x4a28af(0x142)][a0_0x4a28af(0x129)](0x2),ALL_TOOLS=['edit_file',a0_0x4a28af(0x116),'codebase_search'],DEFAULT_TOOLS=[a0_0x4a28af(0x16b),a0_0x4a28af(0x116)],ENABLED_TOOLS=process[a0_0x4a28af(0x137)][a0_0x4a28af(0xe1)]?process[a0_0x4a28af(0x137)][a0_0x4a28af(0xe1)]===a0_0x4a28af(0x161)?ALL_TOOLS:process[a0_0x4a28af(0x137)][a0_0x4a28af(0xe1)][a0_0x4a28af(0xe9)](',')[a0_0x4a28af(0x17e)](_0x33772b=>_0x33772b[a0_0x4a28af(0x10f)]()):DEFAULT_TOOLS;function a0_0x547b(_0x3c1985,_0x31b884){_0x3c1985=_0x3c1985-0xc2;const _0x4a695e=a0_0x4a69();let _0x547beb=_0x4a695e[_0x3c1985];return _0x547beb;}console[a0_0x4a28af(0x193)](a0_0x4a28af(0xe4)+ENABLED_TOOLS[a0_0x4a28af(0x181)](',\x20'));const WORKSPACE_ROOT=process[a0_0x4a28af(0x137)][a0_0x4a28af(0x1ae)]||process['env'][a0_0x4a28af(0xc4)]||process[a0_0x4a28af(0xf0)](),ENABLE_WORKSPACE_MODE=process['env']['ENABLE_WORKSPACE_MODE']!==a0_0x4a28af(0xf1),MORPH_API_KEY=process[a0_0x4a28af(0x137)][a0_0x4a28af(0x14d)],MORPH_API_URL=process[a0_0x4a28af(0x137)]['MORPH_API_URL'];MORPH_API_KEY&&!MORPH_API_KEY[a0_0x4a28af(0x14a)]('sk-')&&!MORPH_API_KEY[a0_0x4a28af(0x14a)](a0_0x4a28af(0x13d))&&console[a0_0x4a28af(0x193)](a0_0x4a28af(0x127));async function reportMorphError(_0x3eb18e){const _0x98fcd9=a0_0x4a28af;try{await a0_0x2a8f43[_0x98fcd9(0x166)](_0x98fcd9(0x144),{..._0x3eb18e,'timestamp':new Date()[_0x98fcd9(0xf8)](),'source':_0x3eb18e[_0x98fcd9(0x136)]||_0x98fcd9(0x16c)},{'timeout':0x1388,'headers':{'Content-Type':_0x98fcd9(0x185),'Authorization':_0x98fcd9(0x174)+MORPH_API_KEY}});}catch{}}args[a0_0x4a28af(0x162)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x4a28af(0x193)](a0_0x4a28af(0x180)),console['error'](a0_0x4a28af(0x147)),console['error'](a0_0x4a28af(0x179)),console[a0_0x4a28af(0x193)](a0_0x4a28af(0xfd)),console[a0_0x4a28af(0x193)](a0_0x4a28af(0x1b2)),console[a0_0x4a28af(0x193)](a0_0x4a28af(0x154)));function normalizePath(_0x21bda2){const _0x1cf940=a0_0x4a28af;return a0_0x25d93e[_0x1cf940(0xf2)](_0x21bda2);}function expandHome(_0x17ed67){const _0x17e62d=a0_0x4a28af;if(_0x17ed67[_0x17e62d(0x14a)]('~/')||_0x17ed67==='~')return a0_0x25d93e['join'](a0_0xd76319[_0x17e62d(0x17b)](),_0x17ed67['slice'](0x1));return _0x17ed67;}let allowedDirectories=await Promise[a0_0x4a28af(0x161)](args[a0_0x4a28af(0x17e)](async _0x1d1571=>{const _0xd98c9d=a0_0x4a28af,_0xeedcf4=expandHome(_0x1d1571),_0x388ed5=a0_0x25d93e[_0xd98c9d(0x148)](_0xeedcf4);try{const _0x1d295f=await a0_0xe0f2b2[_0xd98c9d(0x123)](_0x388ed5);return normalizePath(_0x1d295f);}catch(_0x30303d){return normalizePath(_0x388ed5);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x4a28af(0x162)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),console[a0_0x4a28af(0x193)]('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0x4a28af(0x141)));}catch(a0_0x163ced){console[a0_0x4a28af(0x193)](a0_0x4a28af(0x124)+a0_0x163ced);}async function detectWorkspaceRoot(_0x2e7877){const _0x14ddd7=a0_0x4a28af;let _0x4a2273=a0_0x25d93e[_0x14ddd7(0x148)](_0x2e7877);const _0x35c80e=['.git','.vscode',_0x14ddd7(0x140),_0x14ddd7(0x159),_0x14ddd7(0x19e),_0x14ddd7(0xef),_0x14ddd7(0xc8),'tsconfig.json',_0x14ddd7(0x175)];while(_0x4a2273!==a0_0x25d93e['dirname'](_0x4a2273)){for(const _0x5f4e0c of _0x35c80e){const _0xbd2bc1=a0_0x25d93e[_0x14ddd7(0x181)](_0x4a2273,_0x5f4e0c);try{return await a0_0xe0f2b2[_0x14ddd7(0x197)](_0xbd2bc1),normalizePath(_0x4a2273);}catch{}}_0x4a2273=a0_0x25d93e[_0x14ddd7(0x100)](_0x4a2273);}return normalizePath(_0x2e7877);}await Promise[a0_0x4a28af(0x161)](args[a0_0x4a28af(0x17e)](async _0x1dff2d=>{const _0x3e1dd3=a0_0x4a28af;try{const _0x4fc8fb=await a0_0xe0f2b2[_0x3e1dd3(0x157)](expandHome(_0x1dff2d));!_0x4fc8fb['isDirectory']()&&(console['error'](_0x3e1dd3(0x173)+_0x1dff2d+_0x3e1dd3(0x199)),process['exit'](0x1));}catch(_0x13a20e){console[_0x3e1dd3(0x193)](_0x3e1dd3(0xd8)+_0x1dff2d+':',_0x13a20e),process[_0x3e1dd3(0x104)](0x1);}}));async function validatePath(_0x4a4f37){const _0x30e317=a0_0x4a28af,_0x546ed3=expandHome(_0x4a4f37),_0xb347f7=a0_0x25d93e[_0x30e317(0x148)](_0x546ed3);try{const _0x549d94=await a0_0xe0f2b2['realpath'](_0xb347f7);return _0x549d94;}catch(_0x22b6d5){if(_0x22b6d5['code']===_0x30e317(0x169)){const _0x20a898=a0_0x25d93e['dirname'](_0xb347f7);try{const _0x4b4a5e=await a0_0xe0f2b2[_0x30e317(0x123)](_0x20a898);return a0_0x25d93e[_0x30e317(0x181)](_0x4b4a5e,a0_0x25d93e[_0x30e317(0x107)](_0xb347f7));}catch{throw new Error(_0x30e317(0x125)+_0x20a898);}}throw _0x22b6d5;}}const MorphEditFileArgsSchema=z[a0_0x4a28af(0xcd)]({'path':z[a0_0x4a28af(0x13b)](),'code_edit':z['string']()[a0_0x4a28af(0xd3)](a0_0x4a28af(0x12e)),'instruction':z[a0_0x4a28af(0x13b)]()[a0_0x4a28af(0xd3)]('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z['boolean']()['default'](![])[a0_0x4a28af(0xd3)](a0_0x4a28af(0x10b))}),WarpGrepArgsSchema=z[a0_0x4a28af(0xcd)]({'search_string':z['string']()[a0_0x4a28af(0xd3)](a0_0x4a28af(0x109)),'repo_path':z['string']()[a0_0x4a28af(0xd3)](a0_0x4a28af(0x14e))}),CodebaseSearchArgsSchema=z[a0_0x4a28af(0xcd)]({'query':z['string']()[a0_0x4a28af(0xd3)](a0_0x4a28af(0x163)),'repoId':z[a0_0x4a28af(0x13b)]()[a0_0x4a28af(0xd3)](a0_0x4a28af(0x15f)),'branch':z[a0_0x4a28af(0x13b)]()[a0_0x4a28af(0x105)]()['describe'](a0_0x4a28af(0x131)),'commitHash':z[a0_0x4a28af(0x13b)]()[a0_0x4a28af(0x105)]()[a0_0x4a28af(0xd3)](a0_0x4a28af(0x156)),'target_directories':z['array'](z[a0_0x4a28af(0x13b)]())[a0_0x4a28af(0xd7)]([])[a0_0x4a28af(0xd3)](a0_0x4a28af(0x118)),'limit':z[a0_0x4a28af(0x1ad)]()[a0_0x4a28af(0x105)]()[a0_0x4a28af(0xd7)](0xa)[a0_0x4a28af(0xd3)](a0_0x4a28af(0xd1))}),server=new Server({'name':a0_0x4a28af(0x183),'version':a0_0x4a28af(0x110)},{'capabilities':{'tools':{}}});server[a0_0x4a28af(0x14b)](ListToolsRequestSchema,async()=>{const _0x1c70df=a0_0x4a28af,_0x3a5314=[{'name':_0x1c70df(0x16b),'description':_0x1c70df(0x114)+_0x1c70df(0x168)+_0x1c70df(0xc3)+_0x1c70df(0x191)+_0x1c70df(0x133)+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x1c70df(0x190)+_0x1c70df(0x1ab)+_0x1c70df(0xcf)+_0x1c70df(0x151)+'ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a'+'Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'+'For\x20deletions:\x0a'+_0x1c70df(0xcb)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x1c70df(0x1a5)+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+_0x1c70df(0x11f)+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x1c70df(0xf7)+_0x1c70df(0x145)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x1c70df(0x13c),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':'warpgrep_codebase_search','description':_0x1c70df(0x12c)+_0x1c70df(0xe0)+_0x1c70df(0x177)+_0x1c70df(0x130)+_0x1c70df(0xda)+_0x1c70df(0xe6)+_0x1c70df(0x195)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':_0x1c70df(0xdd),'description':_0x1c70df(0x17a)+'⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a'+_0x1c70df(0xd6)+_0x1c70df(0x133)+_0x1c70df(0x101)+_0x1c70df(0x18a)+_0x1c70df(0x108)+_0x1c70df(0xf6)+_0x1c70df(0xe8)+_0x1c70df(0x1b1)+_0x1c70df(0x19f),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0xe53acf=_0x3a5314['filter'](_0x50b5bf=>{const _0x5cdbe3=_0x1c70df;if(!ENABLED_TOOLS[_0x5cdbe3(0x18f)](_0x50b5bf[_0x5cdbe3(0x16e)]))return![];if(_0x5cdbe3(0x152)in _0x50b5bf&&_0x50b5bf[_0x5cdbe3(0x152)]&&!MORPH_API_KEY)return console[_0x5cdbe3(0x193)]('Warning:\x20'+_0x50b5bf[_0x5cdbe3(0x16e)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0xe53acf[_0x1c70df(0x17e)](_0x371dd2=>({'name':_0x371dd2[_0x1c70df(0x16e)],'description':_0x371dd2[_0x1c70df(0xfe)],'inputSchema':_0x371dd2[_0x1c70df(0x189)]}))};}),server[a0_0x4a28af(0x14b)](CallToolRequestSchema,async _0x4b14aa=>{const _0x525ad4=a0_0x4a28af;try{const {name:_0x4944f5,arguments:_0x490167}=_0x4b14aa[_0x525ad4(0x18b)];switch(_0x4944f5){case _0x525ad4(0x16b):{const _0x2393d8=MorphEditFileArgsSchema[_0x525ad4(0x1ac)](_0x490167);if(!_0x2393d8[_0x525ad4(0xd0)])throw new Error(_0x525ad4(0x14f)+_0x2393d8[_0x525ad4(0x193)]);const _0xc3096f=await validatePath(_0x2393d8[_0x525ad4(0x132)][_0x525ad4(0x13f)]);let _0x15bab4=null,_0x4114a5=!![],_0xacfe7e=null;try{_0x15bab4=await a0_0xe0f2b2[_0x525ad4(0xc6)](_0xc3096f,_0x525ad4(0x1a1));}catch(_0x35b0a0){const _0x31282e=_0x35b0a0['code'];_0x31282e===_0x525ad4(0x169)?(_0x4114a5=![],_0x15bab4=''):(_0xacfe7e='Failed\x20to\x20read\x20file:\x20'+(_0x31282e||_0x525ad4(0x12d))+_0x525ad4(0x1aa)+(_0x35b0a0 instanceof Error?_0x35b0a0[_0x525ad4(0x13e)]:String(_0x35b0a0)),console[_0x525ad4(0x193)](_0x525ad4(0x196)+_0xacfe7e));}try{const _0x15109e=MORPH_API_KEY;if(!_0x15109e)throw new Error(_0x525ad4(0x10a));const _0x42cd13=a0_0x25d93e[_0x525ad4(0x100)](_0xc3096f),_0x3ad516=a0_0x25d93e['basename'](_0xc3096f),_0x1ef4a7=await executeEditFile({'target_filepath':_0x3ad516,'code_edit':_0x2393d8[_0x525ad4(0x132)][_0x525ad4(0x184)],'instructions':_0x2393d8[_0x525ad4(0x132)]['instruction']},{'morphApiKey':_0x15109e,'morphApiUrl':MORPH_API_URL,'baseDir':_0x42cd13,'autoWrite':!_0x2393d8[_0x525ad4(0x132)][_0x525ad4(0x164)],'generateUdiff':!![],'debug':![]});if(!_0x1ef4a7[_0x525ad4(0xd0)])throw new Error(_0x1ef4a7['error']||_0x525ad4(0x198));const _0x38cd2e=_0x1ef4a7[_0x525ad4(0xeb)]||'';let _0x1de086=0x3;while(_0x38cd2e[_0x525ad4(0x18f)]('`'[_0x525ad4(0x176)](_0x1de086))){_0x1de086++;}const _0x297d99='`'['repeat'](_0x1de086)+_0x525ad4(0x143)+_0x38cd2e+'`'['repeat'](_0x1de086)+'\x0a\x0a';if(_0x2393d8[_0x525ad4(0x132)][_0x525ad4(0x164)])return{'content':[{'type':_0x525ad4(0x138),'text':_0x525ad4(0xd9)+(_0x4114a5?'':'\x20(new\x20file)')+':\x20'+_0x2393d8[_0x525ad4(0x132)][_0x525ad4(0xdc)]+'\x0a\x0a'+_0x297d99+_0x525ad4(0x11c)+(_0x4114a5?_0x525ad4(0x12b):_0x525ad4(0x11d))+'.'}]};return{'content':[{'type':'text','text':_0x525ad4(0x10d)+(_0x4114a5?_0x525ad4(0x135):_0x525ad4(0x1af))+':\x20'+_0x2393d8[_0x525ad4(0x132)][_0x525ad4(0xdc)]+'\x0a\x0a'+_0x297d99+_0x525ad4(0x150)+(_0x4114a5?_0x525ad4(0x12a):_0x525ad4(0xf4))+'\x20'+_0x2393d8[_0x525ad4(0x132)][_0x525ad4(0x13f)]}]};}catch(_0x3949ce){const _0x1898f9=_0x3949ce instanceof Error?_0x3949ce['message']:String(_0x3949ce);return reportMorphError({'error_message':_0x1898f9,'error_type':_0x3949ce instanceof Error?_0x3949ce[_0x525ad4(0xee)][_0x525ad4(0x16e)]:_0x525ad4(0x187),'context':{'tool':'edit_file','file_path':_0x2393d8[_0x525ad4(0x132)][_0x525ad4(0x13f)],'validated_path':_0xc3096f,'instruction':_0x2393d8[_0x525ad4(0x132)][_0x525ad4(0xdc)],'model':_0x525ad4(0x167),'dry_run':_0x2393d8['data'][_0x525ad4(0x164)],'file_exists':_0x4114a5,'file_read_error':_0xacfe7e,'file_readable':_0x15bab4!==null,'request_content':{'path':_0x2393d8[_0x525ad4(0x132)][_0x525ad4(0x13f)],'code_edit':_0x2393d8['data'][_0x525ad4(0x184)],'instruction':_0x2393d8[_0x525ad4(0x132)]['instruction'],'original_code':_0x15bab4!==null?_0x15bab4[_0x525ad4(0x162)]>0xc350?_0x15bab4[_0x525ad4(0x19d)](0x0,0xc350)+_0x525ad4(0x182)+_0x15bab4[_0x525ad4(0x162)]+_0x525ad4(0xc5):_0x15bab4:_0x525ad4(0x10c)+(_0xacfe7e||_0x525ad4(0x158))+']','original_code_length':_0x15bab4?.['length']??0x0,'model':'morph-v3-fast','dry_run':_0x2393d8[_0x525ad4(0x132)][_0x525ad4(0x164)]}},'stack_trace':_0x3949ce instanceof Error?_0x3949ce[_0x525ad4(0x17c)]:undefined,'source':_0x525ad4(0x16c)})[_0x525ad4(0x16a)](()=>{}),{'content':[{'type':'text','text':_0x525ad4(0xf3)+_0x1898f9}],'isError':!![]};}}case _0x525ad4(0x116):{const _0xf32fe3=WarpGrepArgsSchema['safeParse'](_0x490167);if(!_0xf32fe3[_0x525ad4(0xd0)])return{'content':[{'type':_0x525ad4(0x138),'text':'Invalid\x20arguments:\x20'+_0xf32fe3[_0x525ad4(0x193)]}],'isError':!![]};const _0xc83d1b=_0x2652c8=>{const _0x32867e=_0x525ad4,_0x1966f7=[];for(const _0x134480 of _0x2652c8||[]){const _0x150e0f=_0x134480['role'],_0x32a21f=_0x134480['content'];if(_0x150e0f===_0x32867e(0x19c)&&_0x32a21f){const _0x30fb0f=_0x32a21f[_0x32867e(0xe9)]('\x0a')['filter'](_0x14e695=>_0x14e695[_0x32867e(0x10f)]());for(const _0x19e254 of _0x30fb0f){const _0xb3b3bf=_0x19e254[_0x32867e(0xc7)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0xb3b3bf){_0x1966f7[_0x32867e(0xdb)]('grep\x20\x27'+_0xb3b3bf[0x1]+'\x27\x20'+_0xb3b3bf[0x2]);continue;}const _0x28081d=_0x19e254[_0x32867e(0xc7)](/^read\s+(.+)$/);if(_0x28081d){_0x1966f7['push'](_0x32867e(0x103)+_0x28081d[0x1]);continue;}const _0x4d63e1=_0x19e254[_0x32867e(0xc7)](/^list_directory\s+(.+)$/);if(_0x4d63e1){_0x1966f7[_0x32867e(0xdb)](_0x32867e(0xed)+_0x4d63e1[0x1]);continue;}}}}return _0x1966f7;};try{const _0x1b430a=a0_0x25d93e['resolve'](_0xf32fe3[_0x525ad4(0x132)]['repo_path']),_0x3c3540=new LocalRipgrepProvider(_0x1b430a),_0x285599=await runWarpGrep({'query':_0xf32fe3[_0x525ad4(0x132)]['search_string'],'repoRoot':_0x1b430a,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'provider':_0x3c3540});let _0x525cdd='';if(_0x285599[_0x525ad4(0x171)]===_0x525ad4(0x15c)&&_0x285599['finish']?.[_0x525ad4(0xcc)]?.[_0x525ad4(0x139)]){const _0x2b74c7=_0x285599['finish']['metadata']['files'],_0x8816c0=[],_0x293e6f=[_0x525ad4(0xca)];for(const _0x13fd80 of _0x285599[_0x525ad4(0xff)]){const _0x17c713=_0x13fd80[_0x525ad4(0x112)],_0x494863=_0x13fd80[_0x525ad4(0x16d)];if(_0x17c713===_0x525ad4(0x19c)&&_0x494863){const _0x5667f7=_0x494863['split']('\x0a')[_0x525ad4(0xd5)](_0x2e1f57=>_0x2e1f57[_0x525ad4(0x10f)]());for(const _0x1d4878 of _0x5667f7){const _0x41000c=_0x1d4878['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x41000c){_0x293e6f[_0x525ad4(0xdb)](_0x525ad4(0xec)+_0x41000c[0x1]+_0x525ad4(0x194)+_0x41000c[0x2]+'`');continue;}const _0x17f900=_0x1d4878[_0x525ad4(0xc7)](/^read\s+(.+)$/);if(_0x17f900){_0x293e6f[_0x525ad4(0xdb)](_0x525ad4(0x106)+_0x17f900[0x1]+'`');continue;}const _0x403832=_0x1d4878[_0x525ad4(0xc7)](/^list_directory\s+(.+)$/);if(_0x403832){_0x293e6f[_0x525ad4(0xdb)]('-\x20Listed\x20directory\x20`'+_0x403832[0x1]+'`');continue;}}}}_0x8816c0['push'](_0x293e6f['join']('\x0a'));const _0x4ad5f2=['',_0x525ad4(0x120)];for(const _0x2b3b4e of _0x2b74c7){if(_0x2b3b4e[_0x525ad4(0xe5)]==='*')_0x4ad5f2[_0x525ad4(0xdb)]('-\x20'+_0x2b3b4e[_0x525ad4(0x13f)]+':*');else{if(Array[_0x525ad4(0x16f)](_0x2b3b4e[_0x525ad4(0xe5)])){const _0x5924ab=_0x2b3b4e['lines'][_0x525ad4(0x17e)](([_0x2d0ecd,_0x2e7e5e])=>{if(_0x2d0ecd===_0x2e7e5e)return''+_0x2d0ecd;return _0x2d0ecd+'-'+_0x2e7e5e;});_0x4ad5f2[_0x525ad4(0xdb)]('-\x20'+_0x2b3b4e[_0x525ad4(0x13f)]+':'+_0x5924ab[_0x525ad4(0x181)](','));}else _0x4ad5f2[_0x525ad4(0xdb)]('-\x20'+_0x2b3b4e[_0x525ad4(0x13f)]+':*');}}_0x4ad5f2['push'](''),_0x8816c0[_0x525ad4(0xdb)](_0x4ad5f2[_0x525ad4(0x181)]('\x0a')),_0x8816c0[_0x525ad4(0xdb)](_0x525ad4(0x19a));const _0x4b42d9=[];for(const _0x3a0e5c of _0x2b74c7){let _0x47cd2c=a0_0x25d93e[_0x525ad4(0x148)](_0xf32fe3['data']['repo_path'],_0x3a0e5c[_0x525ad4(0x13f)]),_0x582f50=null,_0x13fe05=null;try{_0x582f50=await a0_0xe0f2b2[_0x525ad4(0xc6)](_0x47cd2c,{'encoding':_0x525ad4(0x1a1)});}catch(_0x33c4ff){const _0x2b132b=fixPathRepetition(_0x47cd2c);if(_0x2b132b)try{_0x582f50=await a0_0xe0f2b2['readFile'](_0x2b132b,{'encoding':'utf-8'}),_0x47cd2c=_0x2b132b;}catch{_0x13fe05=_0x33c4ff instanceof Error?_0x33c4ff:new Error(String(_0x33c4ff));}else _0x13fe05=_0x33c4ff instanceof Error?_0x33c4ff:new Error(String(_0x33c4ff));}if(_0x582f50!==null){const _0x28b24a=_0x582f50[_0x525ad4(0xe9)](/\r?\n/),_0x224ecb=[_0x525ad4(0x1a7)+_0x3a0e5c[_0x525ad4(0x13f)]+'\x22>'];if(_0x3a0e5c['lines']==='*'||!Array[_0x525ad4(0x16f)](_0x3a0e5c[_0x525ad4(0xe5)]))for(let _0x45b69f=0x1;_0x45b69f<=_0x28b24a[_0x525ad4(0x162)];_0x45b69f++){const _0x52c2cf=_0x28b24a[_0x45b69f-0x1];_0x224ecb[_0x525ad4(0xdb)](_0x45b69f+'|\x20'+_0x52c2cf);}else for(const [_0x420a54,_0x33f2c7]of _0x3a0e5c[_0x525ad4(0xe5)]){_0x224ecb['length']>0x1&&_0x224ecb[_0x525ad4(0xdb)]('');for(let _0x1d99a7=_0x420a54;_0x1d99a7<=_0x33f2c7&&_0x1d99a7<=_0x28b24a[_0x525ad4(0x162)];_0x1d99a7++){const _0x367f5c=_0x28b24a[_0x1d99a7-0x1];_0x224ecb[_0x525ad4(0xdb)](_0x1d99a7+'|\x20'+_0x367f5c);}}_0x224ecb['push']('</file>'),_0x4b42d9['push'](_0x224ecb['join']('\x0a'));}else _0x4b42d9['push'](_0x525ad4(0x1a7)+_0x3a0e5c[_0x525ad4(0x13f)]+_0x525ad4(0x17d)+(_0x13fe05?.[_0x525ad4(0x13e)]||_0x525ad4(0xfc))+'\x0a</file>');}_0x8816c0[_0x525ad4(0xdb)](_0x4b42d9['join']('\x0a\x0a')),_0x525cdd=_0x8816c0[_0x525ad4(0x181)]('\x0a');const _0x3ae5b1=_0x285599[_0x525ad4(0x14c)]?.['filter'](_0x2feee0=>_0x2feee0[_0x525ad4(0x13e)]?.['startsWith'](_0x525ad4(0x1a3)))||[];if(_0x3ae5b1[_0x525ad4(0x162)]>0x0){const _0x1b5531=_0x3ae5b1[_0x525ad4(0x17e)](_0xb10e88=>_0xb10e88[_0x525ad4(0x13e)])[_0x525ad4(0x181)](';\x20');reportMorphError({'error_message':_0x1b5531,'error_type':'FileReadError','context':{'tool':_0x525ad4(0x116),'repo_path':_0xf32fe3['data']['repo_path'],'query':_0xf32fe3[_0x525ad4(0x132)][_0x525ad4(0x128)],'model':_0x525ad4(0x165),'termination_reason':_0x525ad4(0x115),'error_count':_0x3ae5b1[_0x525ad4(0x162)],'is_timeout':![],'files_attempted':_0x2b74c7[_0x525ad4(0x17e)](_0x413278=>({'path':_0x413278['path'],'lines':_0x413278[_0x525ad4(0xe5)]})),'tool_calls':_0xc83d1b(_0x285599[_0x525ad4(0xff)]),'messages':_0x285599['messages']?.['map'](_0x2d6b86=>({'role':_0x2d6b86[_0x525ad4(0x112)],'content':_0x2d6b86[_0x525ad4(0x16d)]})),'request_content':{'query':_0xf32fe3[_0x525ad4(0x132)][_0x525ad4(0x128)],'repo_path':_0xf32fe3['data'][_0x525ad4(0x134)],'repoRoot':a0_0x25d93e['resolve'](_0xf32fe3[_0x525ad4(0x132)]['repo_path']),'model':_0x525ad4(0x165)}},'source':_0x525ad4(0x16c)})[_0x525ad4(0x16a)](()=>{});}}else{if(_0x285599[_0x525ad4(0x171)]===_0x525ad4(0x121)&&_0x285599[_0x525ad4(0x14c)][_0x525ad4(0x162)]>0x0){const _0x42642e=_0x285599[_0x525ad4(0x14c)][_0x525ad4(0x17e)](_0x23fc28=>_0x23fc28[_0x525ad4(0x13e)])[_0x525ad4(0x181)](';\x20');_0x525cdd=_0x525ad4(0x173)+_0x42642e;const _0xd16d90=_0x42642e[_0x525ad4(0x1b0)]()[_0x525ad4(0x18f)]('timeout')||_0x42642e[_0x525ad4(0x1b0)]()[_0x525ad4(0x18f)]('timed\x20out')||_0x42642e[_0x525ad4(0x1b0)]()['includes']('etimedout'),_0x116c6b=_0x285599[_0x525ad4(0x18e)]?.[_0x525ad4(0xcc)]?.['files'],_0x344c1f=_0x285599[_0x525ad4(0x14c)][0x0];reportMorphError({'error_message':_0x42642e,'error_type':_0xd16d90?_0x525ad4(0x160):_0x344c1f?.[_0x525ad4(0xee)]?.[_0x525ad4(0x16e)]||_0x525ad4(0x102),'context':{'tool':_0x525ad4(0x116),'repo_path':_0xf32fe3[_0x525ad4(0x132)][_0x525ad4(0x134)],'query':_0xf32fe3[_0x525ad4(0x132)]['search_string'],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x285599[_0x525ad4(0x171)],'error_count':_0x285599[_0x525ad4(0x14c)][_0x525ad4(0x162)],'is_timeout':_0xd16d90,'files_attempted':_0x116c6b?.[_0x525ad4(0x17e)](_0x1bff3b=>({'path':_0x1bff3b[_0x525ad4(0x13f)],'lines':_0x1bff3b['lines']})),'tool_calls':_0xc83d1b(_0x285599[_0x525ad4(0xff)]),'messages':_0x285599[_0x525ad4(0xff)]?.['map'](_0x3d2e82=>({'role':_0x3d2e82[_0x525ad4(0x112)],'content':_0x3d2e82[_0x525ad4(0x16d)]})),'request_content':{'query':_0xf32fe3['data']['search_string'],'repo_path':_0xf32fe3[_0x525ad4(0x132)][_0x525ad4(0x134)],'repoRoot':a0_0x25d93e[_0x525ad4(0x148)](_0xf32fe3['data']['repo_path']),'model':_0x525ad4(0x165)}},'stack_trace':_0x344c1f?.[_0x525ad4(0x17c)]||undefined,'source':_0x525ad4(0x16c)})[_0x525ad4(0x16a)](()=>{});}else _0x525cdd='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':'text','text':_0x525cdd}]};}catch(_0x392b45){const _0x4654eb=_0x392b45 instanceof Error?_0x392b45['message']:String(_0x392b45),_0x484e20=_0x4654eb['toLowerCase']()[_0x525ad4(0x18f)]('timeout')||_0x4654eb['toLowerCase']()['includes'](_0x525ad4(0xd4))||_0x4654eb[_0x525ad4(0x1b0)]()['includes'](_0x525ad4(0xce))||_0x392b45 instanceof Error&&_0x392b45[_0x525ad4(0x16e)]===_0x525ad4(0x160);return reportMorphError({'error_message':_0x4654eb,'error_type':_0x484e20?_0x525ad4(0x160):_0x392b45 instanceof Error?_0x392b45[_0x525ad4(0xee)][_0x525ad4(0x16e)]:_0x525ad4(0x187),'context':{'tool':'warpgrep_codebase_search','repo_path':_0xf32fe3[_0x525ad4(0x132)][_0x525ad4(0x134)],'query':_0xf32fe3[_0x525ad4(0x132)][_0x525ad4(0x128)],'model':_0x525ad4(0x165),'is_timeout':_0x484e20,'exception_phase':_0x525ad4(0x19b),'request_content':{'query':_0xf32fe3[_0x525ad4(0x132)][_0x525ad4(0x128)],'repo_path':_0xf32fe3[_0x525ad4(0x132)]['repo_path'],'repoRoot':a0_0x25d93e['resolve'](_0xf32fe3[_0x525ad4(0x132)][_0x525ad4(0x134)]),'model':_0x525ad4(0x165)}},'stack_trace':_0x392b45 instanceof Error?_0x392b45[_0x525ad4(0x17c)]:undefined,'source':'mcp-filesystem'})[_0x525ad4(0x16a)](()=>{}),{'content':[{'type':_0x525ad4(0x138),'text':_0x525ad4(0x111)+_0x4654eb}],'isError':![]};}}case _0x525ad4(0xdd):{const _0x1ac9cb=CodebaseSearchArgsSchema['safeParse'](_0x490167);if(!_0x1ac9cb[_0x525ad4(0xd0)])return{'content':[{'type':_0x525ad4(0x138),'text':_0x525ad4(0x122)+_0x1ac9cb[_0x525ad4(0x193)]}],'isError':!![]};try{const _0x6b92b6=MORPH_API_KEY;if(!_0x6b92b6)throw new Error(_0x525ad4(0x10e));const _0x2ef76a=await executeCodebaseSearch({'query':_0x1ac9cb[_0x525ad4(0x132)][_0x525ad4(0xc2)],'target_directories':_0x1ac9cb['data']['target_directories'],'limit':_0x1ac9cb[_0x525ad4(0x132)]['limit']},{'apiKey':_0x6b92b6,'repoId':_0x1ac9cb[_0x525ad4(0x132)][_0x525ad4(0xea)],'branch':_0x1ac9cb['data'][_0x525ad4(0x15e)],'commitHash':_0x1ac9cb[_0x525ad4(0x132)][_0x525ad4(0x15a)],'debug':![]});if(!_0x2ef76a[_0x525ad4(0xd0)])return{'content':[{'type':_0x525ad4(0x138),'text':_0x525ad4(0x15b)+_0x2ef76a[_0x525ad4(0x193)]}],'isError':!![]};const _0x3881f3=_0x2ef76a['results']['length']===0x0?_0x525ad4(0x155)+_0x1ac9cb['data'][_0x525ad4(0xc2)]+'\x22':_0x525ad4(0x178)+_0x2ef76a['results'][_0x525ad4(0x162)]+_0x525ad4(0x17f)+_0x2ef76a[_0x525ad4(0x117)][_0x525ad4(0xdf)]+_0x525ad4(0x1a6)+_0x2ef76a[_0x525ad4(0x146)][_0x525ad4(0x17e)]((_0x26435d,_0x2d5457)=>_0x2d5457+0x1+'.\x20'+_0x26435d[_0x525ad4(0xe2)]+'\x20('+(_0x26435d[_0x525ad4(0xc9)]*0x64)[_0x525ad4(0x192)](0x1)+_0x525ad4(0x1a8)+(_0x525ad4(0x113)+_0x26435d['startLine']+'-'+_0x26435d[_0x525ad4(0x12f)]+'\x0a')+(_0x525ad4(0x126)+_0x26435d[_0x525ad4(0x16d)][_0x525ad4(0x19d)](0x0,0xc8)+(_0x26435d[_0x525ad4(0x16d)]['length']>0xc8?'...':'')+'\x0a'))[_0x525ad4(0x181)]('\x0a');return{'content':[{'type':_0x525ad4(0x138),'text':_0x3881f3}]};}catch(_0x54be5e){const _0x3c3790=_0x54be5e instanceof Error?_0x54be5e[_0x525ad4(0x13e)]:String(_0x54be5e);return reportMorphError({'error_message':_0x3c3790,'error_type':_0x54be5e instanceof Error?_0x54be5e['constructor'][_0x525ad4(0x16e)]:'UnknownError','context':{'tool':_0x525ad4(0xdd),'query':_0x1ac9cb[_0x525ad4(0x132)][_0x525ad4(0xc2)],'repo_id':_0x1ac9cb[_0x525ad4(0x132)][_0x525ad4(0xea)]},'stack_trace':_0x54be5e instanceof Error?_0x54be5e['stack']:undefined,'source':_0x525ad4(0x16c)})['catch'](()=>{}),{'content':[{'type':_0x525ad4(0x138),'text':_0x525ad4(0x173)+_0x3c3790}],'isError':!![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x4944f5);}}catch(_0x86d5f8){const _0x5c6708=_0x86d5f8 instanceof Error?_0x86d5f8[_0x525ad4(0x13e)]:String(_0x86d5f8);return reportMorphError({'error_message':_0x5c6708,'error_type':_0x86d5f8 instanceof Error?_0x86d5f8[_0x525ad4(0xee)][_0x525ad4(0x16e)]:_0x525ad4(0x187),'context':{'tool':name,'arguments':args?JSON[_0x525ad4(0x15d)](args)[_0x525ad4(0x19d)](0x0,0x1f4):undefined,'mcp_server_version':_0x525ad4(0x110)},'stack_trace':_0x86d5f8 instanceof Error?_0x86d5f8[_0x525ad4(0x17c)]:undefined,'source':_0x525ad4(0x16c)})[_0x525ad4(0x16a)](()=>{}),{'content':[{'type':_0x525ad4(0x138),'text':'Error:\x20'+_0x5c6708}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x59730f){const _0x30aa3e=a0_0x4a28af,_0x21d192=await getValidRootDirectories(_0x59730f);if(_0x21d192[_0x30aa3e(0x162)]>0x0)allowedDirectories=[..._0x21d192],console[_0x30aa3e(0x193)](_0x30aa3e(0xe3)+_0x21d192[_0x30aa3e(0x162)]+'\x20valid\x20directories');else{console['error'](_0x30aa3e(0x188));if(ENABLE_WORKSPACE_MODE)try{const _0x3384da=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3384da&&(allowedDirectories=[_0x3384da],console[_0x30aa3e(0x193)]('Fallback:\x20Using\x20workspace\x20root\x20'+_0x3384da));}catch(_0x5558e0){console[_0x30aa3e(0x193)](_0x30aa3e(0x1a4)+_0x5558e0);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x4279ca=a0_0x4a28af;try{const _0x45b097=await server[_0x4279ca(0xe7)]();_0x45b097&&_0x4279ca(0x18c)in _0x45b097&&await updateAllowedDirectoriesFromRoots(_0x45b097['roots']);}catch(_0x231d50){console[_0x4279ca(0x193)](_0x4279ca(0x1a2),_0x231d50 instanceof Error?_0x231d50[_0x4279ca(0x13e)]:String(_0x231d50));}}),server[a0_0x4a28af(0x13a)]=async()=>{const _0x3feaf7=a0_0x4a28af,_0x1ab49a=server[_0x3feaf7(0x1a9)]();if(_0x1ab49a?.['roots'])try{const _0x27f46a=await server[_0x3feaf7(0xe7)]();_0x27f46a&&'roots'in _0x27f46a?await updateAllowedDirectoriesFromRoots(_0x27f46a[_0x3feaf7(0x18c)]):console[_0x3feaf7(0x193)]('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x25864f){console[_0x3feaf7(0x193)](_0x3feaf7(0xf9),_0x25864f instanceof Error?_0x25864f[_0x3feaf7(0x13e)]:String(_0x25864f));}else{if(allowedDirectories['length']>0x0)console[_0x3feaf7(0x193)](_0x3feaf7(0x172),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x3feaf7(0x193)](_0x3feaf7(0x18d));else throw new Error(_0x3feaf7(0x153));}}};async function runServer(){const _0x3fca40=a0_0x4a28af,_0xb9b879=new StdioServerTransport();await server['connect'](_0xb9b879),console[_0x3fca40(0x193)]('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories['length']===0x0&&console['error'](_0x3fca40(0x170));}runServer()[a0_0x4a28af(0x16a)](_0x436bfb=>{console['error']('Fatal\x20error\x20running\x20server:',_0x436bfb),process['exit'](0x1);});
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x50845b,_0x291e8c){const _0x11b9e1=a1_0x3064,_0x53b5aa=_0x50845b();while(!![]){try{const _0xe1b43d=-parseInt(_0x11b9e1(0x1e1))/0x1+parseInt(_0x11b9e1(0x1e6))/0x2*(-parseInt(_0x11b9e1(0x1d7))/0x3)+parseInt(_0x11b9e1(0x1d5))/0x4*(parseInt(_0x11b9e1(0x1da))/0x5)+-parseInt(_0x11b9e1(0x1e7))/0x6*(-parseInt(_0x11b9e1(0x1df))/0x7)+-parseInt(_0x11b9e1(0x1dd))/0x8*(-parseInt(_0x11b9e1(0x1e8))/0x9)+parseInt(_0x11b9e1(0x1de))/0xa+-parseInt(_0x11b9e1(0x1db))/0xb;if(_0xe1b43d===_0x291e8c)break;else _0x53b5aa['push'](_0x53b5aa['shift']());}catch(_0x3eb814){_0x53b5aa['push'](_0x53b5aa['shift']());}}}(a1_0x51b5,0xe0121));import a1_0x521a06 from'path';function a1_0x3064(_0x36cc4a,_0x2d1217){_0x36cc4a=_0x36cc4a-0x1d5;const _0x51b5fb=a1_0x51b5();let _0x30642c=_0x51b5fb[_0x36cc4a];return _0x30642c;}import a1_0x2a1d94 from'os';export function convertToWindowsPath(_0x3b2ffc){const _0x4e38c4=a1_0x3064;if(_0x3b2ffc[_0x4e38c4(0x1e5)]('/mnt/')){const _0x5bbfdd=_0x3b2ffc[_0x4e38c4(0x1dc)](0x5)[_0x4e38c4(0x1d6)](),_0x4c3121=_0x3b2ffc[_0x4e38c4(0x1e3)](0x6)[_0x4e38c4(0x1e9)](/\//g,'\x5c');return _0x5bbfdd+':'+_0x4c3121;}if(_0x3b2ffc[_0x4e38c4(0x1e4)](/^\/[a-zA-Z]\//)){const _0xdf40ff=_0x3b2ffc[_0x4e38c4(0x1dc)](0x1)[_0x4e38c4(0x1d6)](),_0x4ea4e2=_0x3b2ffc['slice'](0x2)['replace'](/\//g,'\x5c');return _0xdf40ff+':'+_0x4ea4e2;}if(_0x3b2ffc['match'](/^[a-zA-Z]:/))return _0x3b2ffc[_0x4e38c4(0x1e9)](/\//g,'\x5c');return _0x3b2ffc;}export function normalizePath(_0x3d198b){const _0x11d055=a1_0x3064;_0x3d198b=_0x3d198b['trim']()['replace'](/^["']|["']$/g,'');const _0x33c309=_0x3d198b[_0x11d055(0x1e5)]('/')&&!_0x3d198b[_0x11d055(0x1e4)](/^\/mnt\/[a-z]\//i)&&!_0x3d198b['match'](/^\/[a-zA-Z]\//);if(_0x33c309)return _0x3d198b[_0x11d055(0x1e9)](/\/+/g,'/')[_0x11d055(0x1e9)](/\/+$/,'');_0x3d198b=convertToWindowsPath(_0x3d198b);if(_0x3d198b[_0x11d055(0x1e5)]('\x5c\x5c')){let _0x5f2b81=_0x3d198b;_0x5f2b81=_0x5f2b81[_0x11d055(0x1e9)](/^\\{2,}/,'\x5c\x5c');const _0x1c1403=_0x5f2b81[_0x11d055(0x1e0)](0x2)[_0x11d055(0x1e9)](/\\\\/g,'\x5c');_0x3d198b='\x5c\x5c'+_0x1c1403;}else _0x3d198b=_0x3d198b['replace'](/\\\\/g,'\x5c');let _0x2c325d=a1_0x521a06[_0x11d055(0x1e2)](_0x3d198b);_0x3d198b[_0x11d055(0x1e5)]('\x5c\x5c')&&!_0x2c325d[_0x11d055(0x1e5)]('\x5c\x5c')&&(_0x2c325d='\x5c'+_0x2c325d);if(_0x2c325d[_0x11d055(0x1e4)](/^[a-zA-Z]:/)){let _0x403e7d=_0x2c325d[_0x11d055(0x1e9)](/\//g,'\x5c');return/^[a-z]:/['test'](_0x403e7d)&&(_0x403e7d=_0x403e7d[_0x11d055(0x1dc)](0x0)[_0x11d055(0x1d6)]()+_0x403e7d['slice'](0x1)),_0x403e7d;}return _0x2c325d[_0x11d055(0x1e9)](/\//g,'\x5c');}function a1_0x51b5(){const _0x3f37f7=['homedir','join','663485IFGITY','9394451vbPYzO','charAt','6143216cXnXit','9327430baYnxl','7adfkBI','substring','655951iQjQoo','normalize','slice','match','startsWith','431966UZODwg','6734634IhLvEv','18yRCNRG','replace','4vLiyHq','toUpperCase','18dlVBtf'];a1_0x51b5=function(){return _0x3f37f7;};return a1_0x51b5();}export function expandHome(_0x18c2aa){const _0xd30419=a1_0x3064;if(_0x18c2aa[_0xd30419(0x1e5)]('~/')||_0x18c2aa==='~')return a1_0x521a06[_0xd30419(0x1d9)](a1_0x2a1d94[_0xd30419(0x1d8)](),_0x18c2aa['slice'](0x1));return _0x18c2aa;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a2_0x5be7(_0x4e8e2e,_0x330c41){_0x4e8e2e=_0x4e8e2e-0x16a;const _0xacbd29=a2_0xacbd();let _0x5be7d0=_0xacbd29[_0x4e8e2e];return _0x5be7d0;}(function(_0x59e8eb,_0x47c394){const _0xb18f9=a2_0x5be7,_0x55fc5a=_0x59e8eb();while(!![]){try{const _0x4b877a=-parseInt(_0xb18f9(0x173))/0x1*(-parseInt(_0xb18f9(0x179))/0x2)+parseInt(_0xb18f9(0x170))/0x3+parseInt(_0xb18f9(0x16d))/0x4*(-parseInt(_0xb18f9(0x176))/0x5)+-parseInt(_0xb18f9(0x171))/0x6*(parseInt(_0xb18f9(0x172))/0x7)+parseInt(_0xb18f9(0x180))/0x8+parseInt(_0xb18f9(0x16a))/0x9*(parseInt(_0xb18f9(0x177))/0xa)+parseInt(_0xb18f9(0x16e))/0xb*(-parseInt(_0xb18f9(0x178))/0xc);if(_0x4b877a===_0x47c394)break;else _0x55fc5a['push'](_0x55fc5a['shift']());}catch(_0x3d0576){_0x55fc5a['push'](_0x55fc5a['shift']());}}}(a2_0xacbd,0x527b6));import a2_0x569507 from'path';export function isPathWithinAllowedDirectories(_0x15db9d,_0x589d0e){const _0xb507ca=a2_0x5be7;if(typeof _0x15db9d!=='string'||!Array[_0xb507ca(0x16b)](_0x589d0e))return![];if(!_0x15db9d||_0x589d0e[_0xb507ca(0x175)]===0x0)return![];if(_0x15db9d[_0xb507ca(0x174)]('\x00'))return![];let _0x1be6c7;try{_0x1be6c7=a2_0x569507['resolve'](a2_0x569507[_0xb507ca(0x17c)](_0x15db9d));}catch{return![];}if(!a2_0x569507['isAbsolute'](_0x1be6c7))throw new Error(_0xb507ca(0x16f));return _0x589d0e['some'](_0x2fa14c=>{const _0x52a4b8=_0xb507ca;if(typeof _0x2fa14c!==_0x52a4b8(0x17a)||!_0x2fa14c)return![];if(_0x2fa14c[_0x52a4b8(0x174)]('\x00'))return![];let _0x435857;try{_0x435857=a2_0x569507[_0x52a4b8(0x17e)](a2_0x569507[_0x52a4b8(0x17c)](_0x2fa14c));}catch{return![];}if(!a2_0x569507[_0x52a4b8(0x16c)](_0x435857))throw new Error(_0x52a4b8(0x17f));if(_0x1be6c7===_0x435857)return!![];if(_0x435857===a2_0x569507[_0x52a4b8(0x17d)])return _0x1be6c7[_0x52a4b8(0x17b)](a2_0x569507['sep']);return _0x1be6c7[_0x52a4b8(0x17b)](_0x435857+a2_0x569507[_0x52a4b8(0x17d)]);});}function a2_0xacbd(){const _0x23ab0b=['1782954jQHapO','1708242EYaKds','7cijajU','8nJTRCC','includes','length','2530CxBkYN','528170cQgQXH','2248356nAabpP','78398ghkohz','string','startsWith','normalize','sep','resolve','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','2715624mUiDtn','18xMVVfB','isArray','isAbsolute','2812AGNKfN','22SuJcxJ','Path\x20must\x20be\x20absolute\x20after\x20normalization'];a2_0xacbd=function(){return _0x23ab0b;};return a2_0xacbd();}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a3_0x5040(_0x3fe68e,_0x4dfd0f){_0x3fe68e=_0x3fe68e-0x128;const _0xefa0cf=a3_0xefa0();let _0x504091=_0xefa0cf[_0x3fe68e];return _0x504091;}(function(_0x11977c,_0x147d31){const _0x1b95b7=a3_0x5040,_0xba9f60=_0x11977c();while(!![]){try{const _0xb86ec7=parseInt(_0x1b95b7(0x13b))/0x1+-parseInt(_0x1b95b7(0x139))/0x2+parseInt(_0x1b95b7(0x12c))/0x3+-parseInt(_0x1b95b7(0x12e))/0x4*(parseInt(_0x1b95b7(0x12a))/0x5)+-parseInt(_0x1b95b7(0x131))/0x6*(parseInt(_0x1b95b7(0x129))/0x7)+parseInt(_0x1b95b7(0x13f))/0x8*(-parseInt(_0x1b95b7(0x140))/0x9)+-parseInt(_0x1b95b7(0x136))/0xa*(-parseInt(_0x1b95b7(0x12f))/0xb);if(_0xb86ec7===_0x147d31)break;else _0xba9f60['push'](_0xba9f60['shift']());}catch(_0x2d3303){_0xba9f60['push'](_0xba9f60['shift']());}}}(a3_0xefa0,0xa4590));import{promises as a3_0x3e4b97}from'fs';import a3_0x2e1c94 from'path';import a3_0x732bd0 from'os';import{normalizePath}from'./path-utils.js';function a3_0xefa0(){const _0x368632=['join','stat','17760440ZRYJpH','slice','push','981790IFETIN','Skipping\x20invalid\x20directory:\x20','478013qLGJFh','isDirectory','file://','uri','5584FlUtSm','3951eIwPef','Skipping\x20','7OBewjm','3688370luKqry','error','2073057JlVRfW','non-directory\x20root','4WQngVZ','11MjvlCj','realpath','4421502rVDeoc','\x20due\x20to\x20error:\x20','resolve'];a3_0xefa0=function(){return _0x368632;};return a3_0xefa0();}async function parseRootUri(_0x3fd90f){const _0x1ab21f=a3_0x5040;try{const _0x17fbf5=_0x3fd90f['startsWith'](_0x1ab21f(0x13d))?_0x3fd90f[_0x1ab21f(0x137)](0x7):_0x3fd90f,_0x323560=_0x17fbf5['startsWith']('~/')||_0x17fbf5==='~'?a3_0x2e1c94[_0x1ab21f(0x134)](a3_0x732bd0['homedir'](),_0x17fbf5[_0x1ab21f(0x137)](0x1)):_0x17fbf5,_0xfb3484=a3_0x2e1c94[_0x1ab21f(0x133)](_0x323560),_0x2b1e56=await a3_0x3e4b97[_0x1ab21f(0x130)](_0xfb3484);return normalizePath(_0x2b1e56);}catch{return null;}}function formatDirectoryError(_0x35bd2f,_0x4c53b0,_0x39d9bf){const _0x525e93=a3_0x5040;if(_0x39d9bf)return _0x525e93(0x128)+_0x39d9bf+':\x20'+_0x35bd2f;const _0x298f3e=_0x4c53b0 instanceof Error?_0x4c53b0['message']:String(_0x4c53b0);return _0x525e93(0x13a)+_0x35bd2f+_0x525e93(0x132)+_0x298f3e;}export async function getValidRootDirectories(_0x5c9109){const _0x1a2fd6=a3_0x5040,_0x2c201c=[];for(const _0x30d2dc of _0x5c9109){const _0x58186a=await parseRootUri(_0x30d2dc['uri']);if(!_0x58186a){console['error'](formatDirectoryError(_0x30d2dc[_0x1a2fd6(0x13e)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x1e4342=await a3_0x3e4b97[_0x1a2fd6(0x135)](_0x58186a);_0x1e4342[_0x1a2fd6(0x13c)]()?_0x2c201c[_0x1a2fd6(0x138)](_0x58186a):console[_0x1a2fd6(0x12b)](formatDirectoryError(_0x58186a,undefined,_0x1a2fd6(0x12d)));}catch(_0x56407a){console[_0x1a2fd6(0x12b)](formatDirectoryError(_0x58186a,_0x56407a));}}return _0x2c201c;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.52",
|
|
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.81",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|