@morphllm/morphmcp 0.8.174 → 0.8.175
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/log-utils.js +1 -1
- package/dist/logger.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/dist/tool-definitions.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x4ff747=a0_0x1578;(function(_0x477a6f,_0x3d999d){const _0x35058c=a0_0x1578,_0x4421f0=_0x477a6f();while(!![]){try{const _0x5a6c47=-parseInt(_0x35058c(0x17a))/0x1*(parseInt(_0x35058c(0x19f))/0x2)+-parseInt(_0x35058c(0x17c))/0x3+parseInt(_0x35058c(0x105))/0x4*(-parseInt(_0x35058c(0x12a))/0x5)+-parseInt(_0x35058c(0x190))/0x6+parseInt(_0x35058c(0x1e1))/0x7+-parseInt(_0x35058c(0x193))/0x8+parseInt(_0x35058c(0x185))/0x9;if(_0x5a6c47===_0x3d999d)break;else _0x4421f0['push'](_0x4421f0['shift']());}catch(_0x1006be){_0x4421f0['push'](_0x4421f0['shift']());}}}(a0_0x60bb,0xca570));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_0x2d400e from'fs/promises';import a0_0x723602 from'path';import a0_0x3e78ca from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';function a0_0x1578(_0x3eb30f,_0x460f75){_0x3eb30f=_0x3eb30f-0x104;const _0x60bb56=a0_0x60bb();let _0x157841=_0x60bb56[_0x3eb30f];return _0x157841;}import{logger}from'./logger.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x1c101d from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x317fa9){const _0xdc65a8=a0_0x1578,_0x1e9d8c=_0x317fa9[_0xdc65a8(0x18a)](a0_0x723602[_0xdc65a8(0x14f)])['filter'](Boolean);if(_0x1e9d8c[_0xdc65a8(0x16b)]<0x2)return null;for(let _0x5f2cee=Math[_0xdc65a8(0x14b)](_0x1e9d8c[_0xdc65a8(0x16b)]/0x2);_0x5f2cee>=0x1;_0x5f2cee--){for(let _0x2541f0=0x0;_0x2541f0<=_0x1e9d8c[_0xdc65a8(0x16b)]-0x2*_0x5f2cee;_0x2541f0++){const _0x52a101=_0x1e9d8c[_0xdc65a8(0x1ec)](_0x2541f0,_0x2541f0+_0x5f2cee),_0x3b5db3=_0x1e9d8c[_0xdc65a8(0x1ec)](_0x2541f0+_0x5f2cee,_0x2541f0+0x2*_0x5f2cee);if(_0x52a101[_0xdc65a8(0x17b)]((_0x35654a,_0x3d2319)=>_0x35654a===_0x3b5db3[_0x3d2319])){const _0x565915=[..._0x1e9d8c['slice'](0x0,_0x2541f0),..._0x1e9d8c[_0xdc65a8(0x1ec)](_0x2541f0+_0x5f2cee)];return a0_0x723602[_0xdc65a8(0x14f)]+_0x565915[_0xdc65a8(0x21f)](a0_0x723602[_0xdc65a8(0x14f)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x373283=a0_0x1578;try{const _0xafdd9a=require(_0x373283(0x191));return _0xafdd9a['version']??_0x373283(0x160);}catch(_0x3a53d0){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x3a53d0),_0x373283(0x160);}}function printHelp(){const _0x2e7359=a0_0x1578;console[_0x2e7359(0x1a1)](_0x2e7359(0x189)+getPackageVersion()),console[_0x2e7359(0x1a1)](_0x2e7359(0x1de)),console[_0x2e7359(0x1a1)]('\x0aOptions:'),console['log']('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x2e7359(0x1a1)](_0x2e7359(0x1e6)),console[_0x2e7359(0x1a1)](_0x2e7359(0x1f1)),console['log'](_0x2e7359(0x176)),console[_0x2e7359(0x1a1)](_0x2e7359(0x197)),console[_0x2e7359(0x1a1)](_0x2e7359(0x139));}const cliArgs=process[a0_0x4ff747(0x168)][a0_0x4ff747(0x1ec)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x4ff747(0x15c),'-h']);cliArgs[a0_0x4ff747(0x20c)](_0x5ebbd4=>VERSION_FLAGS[a0_0x4ff747(0x15d)](_0x5ebbd4))&&(console[a0_0x4ff747(0x1a1)](a0_0x4ff747(0x189)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x4ff747(0x20c)](_0x462e94=>HELP_FLAGS[a0_0x4ff747(0x15d)](_0x462e94))&&(printHelp(),process[a0_0x4ff747(0x21e)](0x0));function getCliArg(_0x53e612){const _0x36b665=a0_0x4ff747;for(let _0x150f32=0x0;_0x150f32<cliArgs[_0x36b665(0x16b)];_0x150f32++){const _0x1b6364=cliArgs[_0x150f32];if(_0x1b6364[_0x36b665(0x141)]('--'+_0x53e612+'='))return _0x1b6364[_0x36b665(0x1ec)](('--'+_0x53e612+'=')[_0x36b665(0x16b)]);if(_0x1b6364==='--'+_0x53e612&&_0x150f32+0x1<cliArgs[_0x36b665(0x16b)])return cliArgs[_0x150f32+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x4ff747(0x16b)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x4ff747(0x15d)](arg)||HELP_FLAGS[a0_0x4ff747(0x15d)](arg))continue;if(arg[a0_0x4ff747(0x141)](a0_0x4ff747(0x1cc)))continue;if(arg===a0_0x4ff747(0x1dc)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x4ff747(0x12c)]['WORKSPACE_ROOT']||process[a0_0x4ff747(0x12c)]['PWD']||process[a0_0x4ff747(0x130)](),ENABLE_WORKSPACE_MODE=process[a0_0x4ff747(0x12c)]['ENABLE_WORKSPACE_MODE']!=='false',MORPH_API_KEY=getCliArg('api-key')??process[a0_0x4ff747(0x12c)][a0_0x4ff747(0x1ab)],MORPH_API_URL=process['env'][a0_0x4ff747(0x121)],MORPH_LARGE_APPLY=process[a0_0x4ff747(0x12c)][a0_0x4ff747(0x224)]!==a0_0x4ff747(0x10d),MORPH_WARP_GREP_TIMEOUT=process[a0_0x4ff747(0x12c)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process['env'][a0_0x4ff747(0x1b6)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process['env'][a0_0x4ff747(0x21d)]?new Set(process[a0_0x4ff747(0x12c)][a0_0x4ff747(0x21d)]['split'](',')[a0_0x4ff747(0x1aa)](_0x4147de=>_0x4147de[a0_0x4ff747(0x118)]())[a0_0x4ff747(0x19d)](_0x36336d=>_0x36336d[a0_0x4ff747(0x16b)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x4ff747(0x204)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x4ff747(0x15d)](tool)&&console[a0_0x4ff747(0x1ea)]('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+a0_0x4ff747(0x210)+[...KNOWN_TOOL_NAMES][a0_0x4ff747(0x21f)](',\x20'));}console['error'](a0_0x4ff747(0x12e)+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x4ff747(0x141)](a0_0x4ff747(0x156))&&!MORPH_API_KEY[a0_0x4ff747(0x141)]('morph-')&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x5f3907){const _0x11efaa=a0_0x4ff747;try{await a0_0x1c101d[_0x11efaa(0x16d)](_0x11efaa(0x1c8),{..._0x5f3907,'timestamp':new Date()[_0x11efaa(0x1b5)](),'source':_0x5f3907[_0x11efaa(0x170)]||_0x11efaa(0x16f),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x5f3907[_0x11efaa(0x1d0)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x11efaa(0x1b9),'Authorization':_0x11efaa(0x12b)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x5acec6,_0x3a9df7){const _0x10a0b4=a0_0x4ff747;if(_0x5acec6&&typeof _0x5acec6===_0x10a0b4(0x1b3)&&_0x10a0b4(0x1d7)in _0x5acec6)return _0x5acec6['status'];if(_0x5acec6&&typeof _0x5acec6===_0x10a0b4(0x1b3)&&_0x10a0b4(0x165)in _0x5acec6)return _0x5acec6[_0x10a0b4(0x165)]?.['status'];const _0x12d166=_0x3a9df7['match'](/\b(401|429)\b/);return _0x12d166?parseInt(_0x12d166[0x1],0xa):null;}function handleMorphAPIError(_0xb313cb){const _0x441add=a0_0x4ff747,_0x30ee30=_0xb313cb instanceof Error?_0xb313cb['message']:String(_0xb313cb),_0x3f8a2c=extractStatusCode(_0xb313cb,_0x30ee30);switch(_0x3f8a2c){case 0x191:return{'content':[{'type':'text','text':_0x441add(0x161)}],'isError':!![]};case 0x1ad:return{'content':[{'type':'text','text':'Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.'}],'isError':!![]};default:return null;}}args[a0_0x4ff747(0x16b)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr(a0_0x4ff747(0x153)),logMcpStderr(a0_0x4ff747(0x1a2)),logMcpStderr(a0_0x4ff747(0x1b7)),logMcpStderr(a0_0x4ff747(0x11e)),logMcpStderr(a0_0x4ff747(0x13f)));function normalizePath(_0x2ccce4){return a0_0x723602['normalize'](_0x2ccce4);}function expandHome(_0x5d0e74){const _0x592594=a0_0x4ff747;if(_0x5d0e74[_0x592594(0x141)]('~/')||_0x5d0e74==='~')return a0_0x723602[_0x592594(0x21f)](a0_0x3e78ca[_0x592594(0x207)](),_0x5d0e74[_0x592594(0x1ec)](0x1));return _0x5d0e74;}let allowedDirectories=await Promise[a0_0x4ff747(0x114)](args[a0_0x4ff747(0x1aa)](async _0x1ada4f=>{const _0x380973=a0_0x4ff747,_0x3c8464=expandHome(_0x1ada4f),_0x1f4fbf=a0_0x723602['resolve'](_0x3c8464);try{const _0x15a8cb=await a0_0x2d400e[_0x380973(0x122)](_0x1f4fbf);return normalizePath(_0x15a8cb);}catch(_0x391d45){return normalizePath(_0x1f4fbf);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x4ff747(0x16b)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0x4ff747(0x129)));}catch(a0_0x344941){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x344941);}async function detectWorkspaceRoot(_0x4dfa59){const _0x56fc04=a0_0x4ff747;let _0x2eb8d4=a0_0x723602[_0x56fc04(0x15a)](_0x4dfa59);const _0x44c584=[_0x56fc04(0x1ae),'.vscode',_0x56fc04(0x17e),_0x56fc04(0x1d4),_0x56fc04(0x20a),_0x56fc04(0x173),_0x56fc04(0x1f8),_0x56fc04(0x1be),'composer.json'];while(_0x2eb8d4!==a0_0x723602['dirname'](_0x2eb8d4)){for(const _0x5291c8 of _0x44c584){const _0x27c62f=a0_0x723602[_0x56fc04(0x21f)](_0x2eb8d4,_0x5291c8);try{return await a0_0x2d400e[_0x56fc04(0x213)](_0x27c62f),normalizePath(_0x2eb8d4);}catch{}}_0x2eb8d4=a0_0x723602[_0x56fc04(0x181)](_0x2eb8d4);}return normalizePath(_0x4dfa59);}await Promise[a0_0x4ff747(0x114)](args['map'](async _0x107896=>{const _0x1da910=a0_0x4ff747;try{const _0x2a39a5=await a0_0x2d400e[_0x1da910(0x1dd)](expandHome(_0x107896));!_0x2a39a5[_0x1da910(0x20e)]()&&(logMcpStderr(_0x1da910(0x13e)+_0x107896+_0x1da910(0x1b1)),process[_0x1da910(0x21e)](0x1));}catch(_0x42c771){logMcpStderr(_0x1da910(0x104)+_0x107896+':',_0x42c771),process[_0x1da910(0x21e)](0x1);}}));async function validatePath(_0x2c457e){const _0x3c410b=a0_0x4ff747,_0x4aa15e=expandHome(_0x2c457e),_0x597f26=a0_0x723602[_0x3c410b(0x15a)](_0x4aa15e);logger[_0x3c410b(0x1fb)]('MCP',_0x3c410b(0x1c5),{'raw_path':_0x2c457e,'absolute':_0x597f26});try{const _0x31547b=await a0_0x2d400e['realpath'](_0x597f26);return logger['debug'](_0x3c410b(0x16a),_0x3c410b(0x1e8),{'resolved':_0x31547b,'symlink':_0x31547b!==_0x597f26}),_0x31547b;}catch(_0x3b20ec){if(_0x3b20ec[_0x3c410b(0x13a)]===_0x3c410b(0x14d)){const _0x2db469=a0_0x723602[_0x3c410b(0x181)](_0x597f26);try{const _0x5de75c=await a0_0x2d400e[_0x3c410b(0x122)](_0x2db469),_0x4f84ad=a0_0x723602[_0x3c410b(0x21f)](_0x5de75c,a0_0x723602[_0x3c410b(0x151)](_0x597f26));return logger[_0x3c410b(0x1fb)]('MCP',_0x3c410b(0x1e8),{'resolved':_0x4f84ad,'new_file':!![]}),_0x4f84ad;}catch{logger[_0x3c410b(0x1ea)](_0x3c410b(0x16a),_0x3c410b(0x1ee),{'raw_path':_0x2c457e,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x2db469});throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x2db469);}}logger[_0x3c410b(0x1ea)](_0x3c410b(0x16a),'path_validation_failed',{'raw_path':_0x2c457e,'error':_0x3b20ec[_0x3c410b(0x1f3)]});throw _0x3b20ec;}}const MorphEditFileArgsSchema=z[a0_0x4ff747(0x1b3)]({'path':z[a0_0x4ff747(0x20b)](),'code_edit':z[a0_0x4ff747(0x20b)]()[a0_0x4ff747(0x107)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0x4ff747(0x20b)]()['describe'](a0_0x4ff747(0x16e)),'dryRun':z[a0_0x4ff747(0x206)]()[a0_0x4ff747(0x21a)](![])['describe'](a0_0x4ff747(0x154))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x4ff747(0x152),WarpGrepArgsSchema=z[a0_0x4ff747(0x1b3)]({'search_string':z[a0_0x4ff747(0x20b)]()[a0_0x4ff747(0x107)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x4ff747(0x20b)]()[a0_0x4ff747(0x107)](a0_0x4ff747(0x126)),'search_type':z[a0_0x4ff747(0x1c2)]([a0_0x4ff747(0x21a),a0_0x4ff747(0x110)])[a0_0x4ff747(0x13b)]()[a0_0x4ff747(0x107)](a0_0x4ff747(0x1a4))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x4ff747(0x20b)]()[a0_0x4ff747(0x107)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()[a0_0x4ff747(0x13b)]()[a0_0x4ff747(0x107)](a0_0x4ff747(0x15b)),'owner_repo':z[a0_0x4ff747(0x20b)]()[a0_0x4ff747(0x13b)]()['describe'](a0_0x4ff747(0x1fe)),'branch':z[a0_0x4ff747(0x20b)]()[a0_0x4ff747(0x13b)]()['describe'](a0_0x4ff747(0x216))}),CodebaseSearchArgsSchema=z[a0_0x4ff747(0x1b3)]({'query':z[a0_0x4ff747(0x20b)]()[a0_0x4ff747(0x107)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x4ff747(0x20b)]()[a0_0x4ff747(0x107)]('Repository\x20identifier'),'branch':z[a0_0x4ff747(0x20b)]()['optional']()[a0_0x4ff747(0x107)](a0_0x4ff747(0x131)),'commitHash':z[a0_0x4ff747(0x20b)]()['optional']()['describe'](a0_0x4ff747(0x143)),'targetDirectories':z['array'](z[a0_0x4ff747(0x20b)]())[a0_0x4ff747(0x21a)]([])['describe'](a0_0x4ff747(0x199)),'limit':z[a0_0x4ff747(0x11a)]()[a0_0x4ff747(0x13b)]()[a0_0x4ff747(0x21a)](0xa)[a0_0x4ff747(0x107)]('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x4ff747(0x174),'version':a0_0x4ff747(0x116)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x3586a9=a0_0x4ff747,_0x360bbf=[{'name':TOOL_NAMES[_0x3586a9(0x1b2)],'description':'Edit\x20files\x20using\x20AI-powered\x20fast\x20apply.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a'+'Parameters:\x0a'+_0x3586a9(0x19a)+_0x3586a9(0x149)+_0x3586a9(0x20d)+_0x3586a9(0x1ff)+'Example\x20format:\x0a'+'//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a'+_0x3586a9(0x169)+_0x3586a9(0x127)+_0x3586a9(0x10f)+_0x3586a9(0x1f5)+'-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x3586a9(0x1bb)],'description':'A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20'+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20'+_0x3586a9(0x226)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x4f49d5=_0x360bbf[_0x3586a9(0x19d)](_0x2f05cb=>{const _0x3a3703=_0x3586a9;if(DISABLED_TOOLS[_0x3a3703(0x15d)](_0x2f05cb[_0x3a3703(0x219)]))return console[_0x3a3703(0x1ea)](_0x3a3703(0x1e9)+_0x2f05cb[_0x3a3703(0x219)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x3a3703(0x178)in _0x2f05cb&&_0x2f05cb[_0x3a3703(0x178)]&&!MORPH_API_KEY)return logMcpStderr(_0x3a3703(0x1e0)+_0x2f05cb[_0x3a3703(0x219)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x4f49d5[_0x3586a9(0x1aa)](_0x2f123a=>({'name':_0x2f123a[_0x3586a9(0x219)],'description':_0x2f123a['description'],'inputSchema':_0x2f123a[_0x3586a9(0x201)]}))};}),server[a0_0x4ff747(0x1af)](CallToolRequestSchema,async _0x3540f8=>{const _0x1c4b80=a0_0x4ff747,{name:_0x1b7981,arguments:_0x10572c}=_0x3540f8[_0x1c4b80(0x1ef)],_0x51fc4e=Date['now']();logger['debug'](_0x1c4b80(0x16a),_0x1c4b80(0x1c9),{'tool':_0x1b7981,'args':_0x1b7981==='edit_file'?{'path':_0x10572c?.[_0x1c4b80(0x1ed)],'instruction':_0x10572c?.[_0x1c4b80(0x225)]||_0x10572c?.[_0x1c4b80(0x137)],'dryRun':_0x10572c?.['dryRun']}:_0x10572c});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x1c4b80(0x218),'text':'No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.'}],'isError':!![]};if(!MORPH_API_KEY[_0x1c4b80(0x141)](_0x1c4b80(0x156))&&!MORPH_API_KEY[_0x1c4b80(0x141)](_0x1c4b80(0x220)))return{'content':[{'type':_0x1c4b80(0x218),'text':_0x1c4b80(0x195)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0x1b7981))return{'content':[{'type':_0x1c4b80(0x218),'text':_0x1c4b80(0x1ce)+_0x1b7981+_0x1c4b80(0x1d1)}],'isError':![]};switch(_0x1b7981){case TOOL_NAMES[_0x1c4b80(0x1b2)]:{let _0x762b7e=_0x10572c;if(_0x762b7e&&typeof _0x762b7e==='object'){if(!(_0x1c4b80(0x1ed)in _0x762b7e)){const _0xa7fafd=_0x762b7e[_0x1c4b80(0x12d)]??_0x762b7e[_0x1c4b80(0x113)]??_0x762b7e['target_filepath']??_0x762b7e[_0x1c4b80(0x175)]??_0x762b7e[_0x1c4b80(0x148)];if(_0xa7fafd)_0x762b7e={..._0x762b7e,'path':_0xa7fafd};}_0x1c4b80(0x137)in _0x762b7e&&!(_0x1c4b80(0x225)in _0x762b7e)&&(_0x762b7e={..._0x762b7e,'instruction':_0x762b7e[_0x1c4b80(0x137)]});if(!(_0x1c4b80(0x167)in _0x762b7e)){const _0x2739ae=_0x762b7e[_0x1c4b80(0x13a)]??_0x762b7e[_0x1c4b80(0x200)]??_0x762b7e[_0x1c4b80(0x196)]??_0x762b7e[_0x1c4b80(0x1c7)];if(_0x2739ae)_0x762b7e={..._0x762b7e,'code_edit':_0x2739ae};}}const _0x392e10=MorphEditFileArgsSchema['safeParse'](_0x762b7e);if(!_0x392e10[_0x1c4b80(0x123)])throw new Error(_0x1c4b80(0x15f)+_0x392e10[_0x1c4b80(0x1ea)]);const _0x118da6=await validatePath(_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x1ed)]);let _0x4bdec4=null,_0x36a883=!![],_0x3b7b44=null;try{_0x4bdec4=await a0_0x2d400e[_0x1c4b80(0x120)](_0x118da6,'utf-8'),logger[_0x1c4b80(0x1fb)](_0x1c4b80(0x16a),'file_read_complete',{'path':_0x118da6,'size_bytes':_0x4bdec4[_0x1c4b80(0x16b)]});}catch(_0x273db3){const _0x166f80=_0x273db3[_0x1c4b80(0x13a)];_0x166f80===_0x1c4b80(0x14d)?(_0x36a883=![],_0x4bdec4='',logger['debug'](_0x1c4b80(0x16a),_0x1c4b80(0x212),{'path':_0x118da6,'exists':![]})):(_0x3b7b44='Failed\x20to\x20read\x20file:\x20'+(_0x166f80||'unknown')+_0x1c4b80(0x17d)+(_0x273db3 instanceof Error?_0x273db3[_0x1c4b80(0x1f3)]:String(_0x273db3)),logger[_0x1c4b80(0x1ea)](_0x1c4b80(0x16a),_0x1c4b80(0x1f4),{'path':_0x118da6,'error':_0x3b7b44}),logMcpStderr('Warning:\x20'+_0x3b7b44));}let _0x3c1e89;try{const _0x22062e=MORPH_API_KEY;if(!_0x22062e)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x51c0fb=a0_0x723602['dirname'](_0x118da6),_0xeb6544=a0_0x723602['basename'](_0x118da6);logger[_0x1c4b80(0x1fb)](_0x1c4b80(0x16a),_0x1c4b80(0x1da),{'model':'morph-v3-fast','path':_0x392e10[_0x1c4b80(0x184)]['path'],'instruction_len':_0x392e10[_0x1c4b80(0x184)]['instruction'][_0x1c4b80(0x16b)],'code_edit_len':_0x392e10[_0x1c4b80(0x184)]['code_edit'][_0x1c4b80(0x16b)],'original_code_len':_0x4bdec4?.[_0x1c4b80(0x16b)]??0x0,'dry_run':_0x392e10['data'][_0x1c4b80(0x1e3)]});const _0x1f233c=Date['now'](),_0x3c3ef3=await executeEditFile({'target_filepath':_0xeb6544,'code_edit':_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x167)],'instruction':_0x392e10[_0x1c4b80(0x184)]['instruction']},{'morphApiKey':_0x22062e,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x51c0fb,'autoWrite':!_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x1e3)],'generateUdiff':![],'debug':![]}),_0x5ca1ff=Date[_0x1c4b80(0x1c1)]()-_0x1f233c;_0x3c1e89=_0x3c3ef3[_0x1c4b80(0x13d)];if(!_0x3c3ef3['success'])throw new Error(_0x3c3ef3[_0x1c4b80(0x1ea)]||_0x1c4b80(0x17f));const _0x1a5543=_0x3c3ef3[_0x1c4b80(0x16c)],_0x29eb42=_0x1c4b80(0x180)+_0x1a5543['linesAdded']+_0x1c4b80(0x1d5)+_0x1a5543[_0x1c4b80(0x1bf)]+_0x1c4b80(0x14c)+_0x1a5543[_0x1c4b80(0x1e2)];logger['debug'](_0x1c4b80(0x16a),'tool_call_complete',{'tool':_0x1c4b80(0x1f0),'success':!![],'latency_ms':Date['now']()-_0x51fc4e,'edit_latency_ms':_0x5ca1ff,'changes':{'added':_0x1a5543[_0x1c4b80(0x142)],'removed':_0x1a5543[_0x1c4b80(0x1bf)],'modified':_0x1a5543[_0x1c4b80(0x1e2)]},'completion_id':_0x3c1e89});if(_0x392e10['data'][_0x1c4b80(0x1e3)])return{'content':[{'type':'text','text':'Morph\x20Edit\x20Preview'+(_0x36a883?'':'\x20(new\x20file)')+':\x20'+_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x225)]+_0x1c4b80(0x18b)+_0x29eb42+_0x1c4b80(0x10b)+_0x392e10['data']['path']+'.'}]};return{'content':[{'type':_0x1c4b80(0x218),'text':'Morph\x20Edit\x20'+(_0x36a883?_0x1c4b80(0x1cd):_0x1c4b80(0x166))+':\x20'+_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x225)]+'.\x20Changes:\x20'+_0x29eb42+_0x1c4b80(0x10b)+_0x392e10['data']['path']+'.'}]};}catch(_0x3d5ab7){const _0x56b186=handleMorphAPIError(_0x3d5ab7);if(_0x56b186)return logger[_0x1c4b80(0x1ea)](_0x1c4b80(0x16a),'tool_call_error',{'tool':_0x1c4b80(0x1f0),'error':_0x1c4b80(0x1e7),'latency_ms':Date[_0x1c4b80(0x1c1)]()-_0x51fc4e}),_0x56b186;const _0xcfe80a=_0x3d5ab7 instanceof Error?_0x3d5ab7[_0x1c4b80(0x1f3)]:String(_0x3d5ab7);return logger[_0x1c4b80(0x1ea)]('MCP',_0x1c4b80(0x124),{'tool':_0x1c4b80(0x1f0),'error':_0xcfe80a,'path':_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x1ed)],'validated_path':_0x118da6,'latency_ms':Date[_0x1c4b80(0x1c1)]()-_0x51fc4e,'stack':_0x3d5ab7 instanceof Error?_0x3d5ab7['stack']:undefined}),reportMorphError({'error_message':_0xcfe80a,'error_type':_0x3d5ab7 instanceof Error?_0x3d5ab7[_0x1c4b80(0x198)][_0x1c4b80(0x219)]:_0x1c4b80(0x208),'context':{'tool':_0x1c4b80(0x1f0),'completion_id':_0x3c1e89,'file_path':_0x392e10[_0x1c4b80(0x184)]['path'],'validated_path':_0x118da6,'instruction':_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x225)],'model':MORPH_LARGE_APPLY?'morph-v3-large':'morph-v3-fast','dry_run':_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x1e3)],'file_exists':_0x36a883,'file_read_error':_0x3b7b44,'file_readable':_0x4bdec4!==null,'request_content':{'path':_0x392e10['data']['path'],'code_edit':_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x167)],'instruction':_0x392e10[_0x1c4b80(0x184)]['instruction'],'original_code':_0x4bdec4!==null?_0x4bdec4['length']>0xc350?_0x4bdec4[_0x1c4b80(0x1df)](0x0,0xc350)+_0x1c4b80(0x182)+_0x4bdec4['length']+_0x1c4b80(0x1e5):_0x4bdec4:_0x1c4b80(0x108)+(_0x3b7b44||'unknown\x20error')+']','original_code_length':_0x4bdec4?.['length']??0x0,'model':MORPH_LARGE_APPLY?_0x1c4b80(0x1b0):_0x1c4b80(0x1d9),'dry_run':_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x1e3)]}},'stack_trace':_0x3d5ab7 instanceof Error?_0x3d5ab7['stack']:undefined,'source':_0x1c4b80(0x16f)})[_0x1c4b80(0x221)](()=>{}),{'content':[{'type':_0x1c4b80(0x218),'text':_0x1c4b80(0x209)+_0xcfe80a}],'isError':!![]};}}case TOOL_NAMES[_0x1c4b80(0x1bb)]:{const _0x122a9c=WarpGrepArgsSchema['safeParse'](_0x10572c);if(!_0x122a9c[_0x1c4b80(0x123)])return{'content':[{'type':_0x1c4b80(0x218),'text':_0x1c4b80(0x1db)+_0x122a9c[_0x1c4b80(0x1ea)]}],'isError':!![]};const _0x5ec8ec=_0x2c305d=>{const _0x1bcb4a=_0x1c4b80,_0xe9cbe0=[];for(const _0x4a494f of _0x2c305d||[]){if(_0x4a494f[_0x1bcb4a(0x1ba)]===_0x1bcb4a(0x146)&&Array[_0x1bcb4a(0x115)](_0x4a494f[_0x1bcb4a(0x1f2)]))for(const _0x5ed737 of _0x4a494f[_0x1bcb4a(0x1f2)]){try{const _0x2f0dff=_0x5ed737[_0x1bcb4a(0x1d6)]?.[_0x1bcb4a(0x219)],_0x18c510=JSON[_0x1bcb4a(0x14e)](_0x5ed737[_0x1bcb4a(0x1d6)]?.[_0x1bcb4a(0x1d8)]||'{}');if(_0x2f0dff===_0x1bcb4a(0x183))_0xe9cbe0[_0x1bcb4a(0x1fc)](_0x1bcb4a(0x144)+_0x18c510['pattern']+'\x27\x20'+(_0x18c510[_0x1bcb4a(0x1ed)]||'.'));else{if(_0x2f0dff===_0x1bcb4a(0x18f))_0xe9cbe0['push'](_0x1bcb4a(0x1fa)+_0x18c510[_0x1bcb4a(0x1ed)]);else{if(_0x2f0dff===_0x1bcb4a(0x10e))_0xe9cbe0[_0x1bcb4a(0x1fc)](_0x1bcb4a(0x20f)+(_0x18c510[_0x1bcb4a(0x214)]||'.'));else{if(_0x2f0dff==='glob')_0xe9cbe0[_0x1bcb4a(0x1fc)](_0x1bcb4a(0x1bd)+_0x18c510[_0x1bcb4a(0x106)]+'\x27\x20'+(_0x18c510[_0x1bcb4a(0x1ed)]||'.'));else _0x2f0dff==='finish'&&_0xe9cbe0[_0x1bcb4a(0x1fc)](_0x1bcb4a(0x18c));}}}}catch{}}}return _0xe9cbe0;},_0x5bb6ed=_0x5c9dd4=>{const _0x34c555=_0x1c4b80,_0x19ab8e=[];if(!_0x5c9dd4||!Array[_0x34c555(0x115)](_0x5c9dd4))return _0x19ab8e;const _0x51991b=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':_0x34c555(0x18f)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x34c555(0x203),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x34c555(0x119),'tool':_0x34c555(0x18f)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x34c555(0x211),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x34c555(0x1f6),'tool':_0x34c555(0x11d)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x34c555(0x1bc),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':_0x34c555(0x211),'tool':_0x34c555(0x18f)},{'pattern':/\[SYMLINK\]/,'error_type':_0x34c555(0x11f),'tool':'read'},{'pattern':/not a text file/,'error_type':_0x34c555(0x211),'tool':'read'},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x34c555(0x119),'tool':_0x34c555(0x18f)},{'pattern':/status="error"/,'error_type':_0x34c555(0x111),'tool':_0x34c555(0x160)}];let _0x4b25bc=0x0;for(const _0x18d664 of _0x5c9dd4){_0x18d664[_0x34c555(0x1ba)]==='assistant'&&Array[_0x34c555(0x115)](_0x18d664[_0x34c555(0x1f2)])&&_0x4b25bc++;const _0x24285a=_0x18d664[_0x34c555(0x196)];if((_0x18d664['role']==='tool'||_0x18d664[_0x34c555(0x1ba)]==='user')&&_0x24285a&&typeof _0x24285a===_0x34c555(0x20b))for(const {pattern:_0x21da95,error_type:_0x49c8b7,tool:_0x29f7c8}of _0x51991b){const _0x39cbf6=_0x24285a['match'](new RegExp(_0x21da95[_0x34c555(0x170)],'g'));if(_0x39cbf6)for(const _0x1c4ae2 of _0x39cbf6){const _0x123d74=_0x24285a[_0x34c555(0x128)](_0x1c4ae2),_0x4a6288=_0x24285a[_0x34c555(0x1df)](_0x123d74,Math['min'](_0x123d74+0xc8,_0x24285a['length']));_0x19ab8e[_0x34c555(0x1fc)]({'tool':_0x29f7c8,'error_type':_0x49c8b7,'error_message':_0x4a6288['split']('\x0a')[0x0],'turn':_0x4b25bc});}}}return _0x19ab8e;};try{const _0x47b248=a0_0x723602[_0x1c4b80(0x15a)](_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x179)]),_0x5359fe=_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x14a)],_0x1ba798=_0x5359fe===_0x1c4b80(0x110)?{'allowNames':[_0x1c4b80(0x110)]}:undefined,_0x38ed7f=new LocalRipgrepProvider(_0x47b248,undefined,_0x1ba798);logger[_0x1c4b80(0x1fb)](_0x1c4b80(0x16a),_0x1c4b80(0x1a9),{'type':'LocalRipgrepProvider','repo_root':_0x47b248,'search_type':_0x5359fe||'default'}),logger['debug'](_0x1c4b80(0x16a),'warp_grep_start',{'query':_0x122a9c['data'][_0x1c4b80(0x140)],'repo_root':_0x47b248,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x5b955d=Date[_0x1c4b80(0x1c1)](),_0x1fd118=await runWarpGrep({'searchTerm':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x140)],'repoRoot':_0x47b248,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x38ed7f,'search_type':_0x5359fe}),_0xc9cbcb=Date[_0x1c4b80(0x1c1)]()-_0x5b955d,_0x29a743=_0x1fd118[_0x1c4b80(0x18c)]?.[_0x1c4b80(0x1fd)]?.['files']?.['length']??0x0;logger['debug'](_0x1c4b80(0x16a),'warp_grep_complete',{'termination':_0x1fd118[_0x1c4b80(0x1ca)],'turns':_0x1fd118['timings']?.[_0x1c4b80(0x125)]??0x0,'files_found':_0x29a743,'latency_ms':_0xc9cbcb});const _0x3880b7=_0x5bb6ed(_0x1fd118[_0x1c4b80(0x192)]);_0x3880b7[_0x1c4b80(0x16b)]>0x0&&reportMorphError({'error_message':_0x1c4b80(0x150)+_0x3880b7['length']+_0x1c4b80(0x109),'error_type':_0x1c4b80(0x223),'level':_0x1c4b80(0x205),'tool':'codebase_search','context':{'repo_path':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x179)],'query':_0x122a9c[_0x1c4b80(0x184)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x1fd118[_0x1c4b80(0x1ca)],'sub_tool_errors':_0x3880b7,'timings':_0x1fd118['timings'],'tool_calls':_0x5ec8ec(_0x1fd118[_0x1c4b80(0x192)]),'messages':_0x1fd118[_0x1c4b80(0x192)]?.[_0x1c4b80(0x1aa)](_0x228c63=>({'role':_0x228c63[_0x1c4b80(0x1ba)],'content':_0x228c63[_0x1c4b80(0x196)],..._0x228c63[_0x1c4b80(0x1f2)]?{'tool_calls':_0x228c63[_0x1c4b80(0x1f2)]['length']}:{},..._0x228c63[_0x1c4b80(0x11b)]?{'tool_call_id':_0x228c63[_0x1c4b80(0x11b)]}:{}}))},'source':_0x1c4b80(0x16f)})[_0x1c4b80(0x221)](()=>{});let _0xf22f6c='';if(_0x1fd118[_0x1c4b80(0x1ca)]===_0x1c4b80(0x202)&&_0x1fd118[_0x1c4b80(0x18c)]?.[_0x1c4b80(0x1fd)]?.['files']){const _0x3e0b24=_0x1fd118['finish']['metadata'][_0x1c4b80(0x1b8)];if(_0x3e0b24[_0x1c4b80(0x16b)]===0x0)return _0xf22f6c=_0x1fd118['finish'][_0x1c4b80(0x19e)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':'text','text':_0xf22f6c}]};const _0x3da5d9=[],_0x2b592f=[_0x1c4b80(0x12f)];for(const _0x402705 of _0x1fd118[_0x1c4b80(0x192)]){if(_0x402705['role']===_0x1c4b80(0x146)&&Array[_0x1c4b80(0x115)](_0x402705[_0x1c4b80(0x1f2)]))for(const _0x319f04 of _0x402705[_0x1c4b80(0x1f2)]){try{const _0x421a15=_0x319f04[_0x1c4b80(0x1d6)]?.['name'],_0x120524=JSON[_0x1c4b80(0x14e)](_0x319f04['function']?.[_0x1c4b80(0x1d8)]||'{}');if(_0x421a15===_0x1c4b80(0x183))_0x2b592f[_0x1c4b80(0x1fc)](_0x1c4b80(0x188)+_0x120524[_0x1c4b80(0x106)]+_0x1c4b80(0x1a8)+(_0x120524[_0x1c4b80(0x1ed)]||'.')+'`');else{if(_0x421a15==='read')_0x2b592f[_0x1c4b80(0x1fc)](_0x1c4b80(0x13c)+_0x120524['path']+'`');else{if(_0x421a15===_0x1c4b80(0x10e))_0x2b592f[_0x1c4b80(0x1fc)](_0x1c4b80(0x1ad)+(_0x120524['command']||'.')+'`');else _0x421a15===_0x1c4b80(0x222)&&_0x2b592f[_0x1c4b80(0x1fc)]('-\x20Glob\x20search\x20`'+_0x120524['pattern']+_0x1c4b80(0x135)+(_0x120524['path']||'.')+'`');}}}catch{}}}_0x3da5d9[_0x1c4b80(0x1fc)](_0x2b592f[_0x1c4b80(0x21f)]('\x0a'));const _0x4f4bc0=['','Relevant\x20context\x20found:'];for(const _0x2e457d of _0x3e0b24){if(_0x2e457d[_0x1c4b80(0x134)]==='*')_0x4f4bc0[_0x1c4b80(0x1fc)]('-\x20'+_0x2e457d[_0x1c4b80(0x1ed)]+':*');else{if(Array[_0x1c4b80(0x115)](_0x2e457d[_0x1c4b80(0x134)])){const _0x44fec5=_0x2e457d[_0x1c4b80(0x134)]['map'](([_0x5d4e17,_0x586c30])=>{if(_0x5d4e17===_0x586c30)return''+_0x5d4e17;return _0x5d4e17+'-'+_0x586c30;});_0x4f4bc0[_0x1c4b80(0x1fc)]('-\x20'+_0x2e457d[_0x1c4b80(0x1ed)]+':'+_0x44fec5[_0x1c4b80(0x21f)](','));}else _0x4f4bc0[_0x1c4b80(0x1fc)]('-\x20'+_0x2e457d[_0x1c4b80(0x1ed)]+':*');}}_0x4f4bc0[_0x1c4b80(0x1fc)](''),_0x3da5d9[_0x1c4b80(0x1fc)](_0x4f4bc0[_0x1c4b80(0x21f)]('\x0a')),_0x3da5d9[_0x1c4b80(0x1fc)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0xd69c73=[],_0x559483=[];for(const _0x5f1cfe of _0x3e0b24){let _0x4d3167=a0_0x723602[_0x1c4b80(0x15a)](_0x122a9c['data'][_0x1c4b80(0x179)],_0x5f1cfe[_0x1c4b80(0x1ed)]),_0x266694=null,_0x1716c9=null;try{_0x266694=await a0_0x2d400e[_0x1c4b80(0x120)](_0x4d3167,{'encoding':'utf-8'});}catch(_0x35ed5e){const _0x5373e6=fixPathRepetition(_0x4d3167);if(_0x5373e6)try{_0x266694=await a0_0x2d400e[_0x1c4b80(0x120)](_0x5373e6,{'encoding':'utf-8'}),_0x4d3167=_0x5373e6;}catch{_0x1716c9=_0x35ed5e instanceof Error?_0x35ed5e:new Error(String(_0x35ed5e));}else _0x1716c9=_0x35ed5e instanceof Error?_0x35ed5e:new Error(String(_0x35ed5e));}if(_0x266694!==null){const _0x58d898=_0x266694[_0x1c4b80(0x18a)](/\r?\n/),_0x4d4ad8=[];if(_0x5f1cfe[_0x1c4b80(0x134)]==='*'||!Array[_0x1c4b80(0x115)](_0x5f1cfe['lines']))for(let _0x5058bb=0x1;_0x5058bb<=_0x58d898[_0x1c4b80(0x16b)];_0x5058bb++){const _0x5db460=_0x58d898[_0x5058bb-0x1];_0x4d4ad8[_0x1c4b80(0x1fc)](_0x5058bb+'|\x20'+_0x5db460);}else for(const [_0x5e5a32,_0x3c9327]of _0x5f1cfe[_0x1c4b80(0x134)]){_0x4d4ad8[_0x1c4b80(0x16b)]>0x0&&_0x4d4ad8[_0x1c4b80(0x1fc)]('');for(let _0x73f29c=_0x5e5a32;_0x73f29c<=_0x3c9327&&_0x73f29c<=_0x58d898[_0x1c4b80(0x16b)];_0x73f29c++){const _0xd90a05=_0x58d898[_0x73f29c-0x1];_0x4d4ad8['push'](_0x73f29c+'|\x20'+_0xd90a05);}}_0x559483[_0x1c4b80(0x1fc)]({'path':_0x5f1cfe[_0x1c4b80(0x1ed)],'content':_0x4d4ad8[_0x1c4b80(0x21f)]('\x0a')});}else _0xd69c73['push']('<file\x20path=\x22'+_0x5f1cfe[_0x1c4b80(0x1ed)]+_0x1c4b80(0x10c)+(_0x1716c9?.['message']||_0x1c4b80(0x215))+_0x1c4b80(0x171));}try{const _0x496772=await compactFileContexts(_0x559483,_0x122a9c[_0x1c4b80(0x184)]['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x1912ba of _0x496772){_0xd69c73['push']('<file\x20path=\x22'+_0x1912ba[_0x1c4b80(0x1ed)]+_0x1c4b80(0x21c)+_0x1912ba[_0x1c4b80(0x196)]+_0x1c4b80(0x171));}}catch(_0x4dfca9){logger[_0x1c4b80(0x205)](_0x1c4b80(0x16a),_0x1c4b80(0x1cb),{'error':_0x4dfca9 instanceof Error?_0x4dfca9[_0x1c4b80(0x1f3)]:String(_0x4dfca9),'files_count':_0x559483[_0x1c4b80(0x16b)]});for(const _0x20c71e of _0x559483){_0xd69c73[_0x1c4b80(0x1fc)](_0x1c4b80(0x162)+_0x20c71e['path']+_0x1c4b80(0x21c)+_0x20c71e[_0x1c4b80(0x196)]+_0x1c4b80(0x171));}}_0x3da5d9[_0x1c4b80(0x1fc)](_0xd69c73[_0x1c4b80(0x21f)]('\x0a\x0a')),_0xf22f6c=_0x3da5d9['join']('\x0a');const _0x2a7f70=_0x1fd118['errors']?.['filter'](_0x105a4f=>_0x105a4f['message']?.[_0x1c4b80(0x141)](_0x1c4b80(0x163)))||[];if(_0x2a7f70['length']>0x0){const _0xed9a75=_0x2a7f70[_0x1c4b80(0x1aa)](_0x239e17=>_0x239e17[_0x1c4b80(0x1f3)])[_0x1c4b80(0x21f)](';\x20');reportMorphError({'error_message':_0xed9a75,'error_type':_0x1c4b80(0x145),'context':{'tool':'codebase_search','repo_path':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x179)],'query':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x140)],'model':_0x1c4b80(0x1c3),'termination_reason':_0x1c4b80(0x1a3),'error_count':_0x2a7f70['length'],'is_timeout':![],'timings':_0x1fd118[_0x1c4b80(0x18e)],'files_attempted':_0x3e0b24['map'](_0x51a375=>({'path':_0x51a375['path'],'lines':_0x51a375[_0x1c4b80(0x134)]})),'tool_calls':_0x5ec8ec(_0x1fd118[_0x1c4b80(0x192)]),'messages':_0x1fd118[_0x1c4b80(0x192)]?.[_0x1c4b80(0x1aa)](_0x4c8637=>({'role':_0x4c8637[_0x1c4b80(0x1ba)],'content':_0x4c8637[_0x1c4b80(0x196)],..._0x4c8637[_0x1c4b80(0x1f2)]?{'tool_calls':_0x4c8637['tool_calls'][_0x1c4b80(0x16b)]}:{},..._0x4c8637[_0x1c4b80(0x11b)]?{'tool_call_id':_0x4c8637[_0x1c4b80(0x11b)]}:{}})),'request_content':{'query':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x140)],'repo_path':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x179)],'repoRoot':a0_0x723602[_0x1c4b80(0x15a)](_0x122a9c['data'][_0x1c4b80(0x179)]),'model':_0x1c4b80(0x1c3)}},'source':'mcp-filesystem'})[_0x1c4b80(0x221)](()=>{});}}else{if(_0x1fd118['terminationReason']==='terminated'&&_0x1fd118[_0x1c4b80(0x133)][_0x1c4b80(0x16b)]>0x0){const _0x1c31b8=_0x1fd118[_0x1c4b80(0x133)][_0x1c4b80(0x1aa)](_0x537347=>_0x537347[_0x1c4b80(0x1f3)])['join'](';\x20');_0xf22f6c='Error:\x20'+_0x1c31b8;const _0x2686ec=_0x1c31b8[_0x1c4b80(0x19c)]()['includes'](_0x1c4b80(0x1d3))||_0x1c31b8[_0x1c4b80(0x19c)]()[_0x1c4b80(0x177)](_0x1c4b80(0x11c))||_0x1c31b8['toLowerCase']()[_0x1c4b80(0x177)](_0x1c4b80(0x186)),_0x49aa25=_0x1fd118['finish']?.[_0x1c4b80(0x1fd)]?.[_0x1c4b80(0x1b8)],_0x4014b7=_0x1fd118[_0x1c4b80(0x133)][0x0];reportMorphError({'error_message':_0x1c31b8,'error_type':_0x2686ec?_0x1c4b80(0x117):_0x4014b7?.[_0x1c4b80(0x198)]?.[_0x1c4b80(0x219)]||'WarpGrepError','context':{'tool':_0x1c4b80(0x1a6),'repo_path':_0x122a9c['data']['repo_path'],'query':_0x122a9c[_0x1c4b80(0x184)]['search_string'],'model':_0x1c4b80(0x1c3),'termination_reason':_0x1fd118[_0x1c4b80(0x1ca)],'error_count':_0x1fd118[_0x1c4b80(0x133)]['length'],'is_timeout':_0x2686ec,'timings':_0x1fd118[_0x1c4b80(0x18e)],'files_attempted':_0x49aa25?.[_0x1c4b80(0x1aa)](_0x199973=>({'path':_0x199973[_0x1c4b80(0x1ed)],'lines':_0x199973[_0x1c4b80(0x134)]})),'tool_calls':_0x5ec8ec(_0x1fd118[_0x1c4b80(0x192)]),'messages':_0x1fd118[_0x1c4b80(0x192)]?.[_0x1c4b80(0x1aa)](_0xde5306=>({'role':_0xde5306[_0x1c4b80(0x1ba)],'content':_0xde5306[_0x1c4b80(0x196)],..._0xde5306[_0x1c4b80(0x1f2)]?{'tool_calls':_0xde5306['tool_calls'][_0x1c4b80(0x16b)]}:{},..._0xde5306[_0x1c4b80(0x11b)]?{'tool_call_id':_0xde5306['tool_call_id']}:{}})),'request_content':{'query':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x140)],'repo_path':_0x122a9c[_0x1c4b80(0x184)]['repo_path'],'repoRoot':a0_0x723602['resolve'](_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x179)]),'model':_0x1c4b80(0x1c3)}},'stack_trace':_0x4014b7?.[_0x1c4b80(0x159)]||undefined,'source':_0x1c4b80(0x16f)})[_0x1c4b80(0x221)](()=>{});}else _0xf22f6c=_0x1c4b80(0x1d2);}return{'content':[{'type':_0x1c4b80(0x218),'text':_0xf22f6c}]};}catch(_0xdb2149){const _0x56a788=handleMorphAPIError(_0xdb2149);if(_0x56a788)return logger[_0x1c4b80(0x1ea)]('MCP','tool_call_error',{'tool':_0x1c4b80(0x1a6),'error':_0x1c4b80(0x1e7),'latency_ms':Date[_0x1c4b80(0x1c1)]()-_0x51fc4e}),_0x56a788;const _0xa5c577=_0xdb2149 instanceof Error?_0xdb2149['message']:String(_0xdb2149);logger['error']('MCP',_0x1c4b80(0x124),{'tool':_0x1c4b80(0x1a6),'error':_0xa5c577,'repo_path':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x179)],'query':_0x122a9c['data']['search_string'],'latency_ms':Date['now']()-_0x51fc4e});const _0x102266=_0xa5c577[_0x1c4b80(0x19c)]()[_0x1c4b80(0x177)](_0x1c4b80(0x1d3))||_0xa5c577[_0x1c4b80(0x19c)]()['includes'](_0x1c4b80(0x11c))||_0xa5c577[_0x1c4b80(0x19c)]()[_0x1c4b80(0x177)](_0x1c4b80(0x186))||_0xdb2149 instanceof Error&&_0xdb2149[_0x1c4b80(0x219)]===_0x1c4b80(0x117);return reportMorphError({'error_message':_0xa5c577,'error_type':_0x102266?'TimeoutError':_0xdb2149 instanceof Error?_0xdb2149[_0x1c4b80(0x198)][_0x1c4b80(0x219)]:_0x1c4b80(0x208),'context':{'tool':_0x1c4b80(0x1a6),'repo_path':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x179)],'query':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x140)],'model':_0x1c4b80(0x1c3),'is_timeout':_0x102266,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x122a9c[_0x1c4b80(0x184)]['search_string'],'repo_path':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x179)],'repoRoot':a0_0x723602[_0x1c4b80(0x15a)](_0x122a9c['data']['repo_path']),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0xdb2149 instanceof Error?_0xdb2149[_0x1c4b80(0x159)]:undefined,'source':_0x1c4b80(0x16f)})['catch'](()=>{}),{'content':[{'type':_0x1c4b80(0x218),'text':_0x1c4b80(0x1c0)+_0xa5c577}],'isError':![]};}}case TOOL_NAMES[_0x1c4b80(0x1a5)]:{const _0x32de1f=WarpGrepGitHubArgsSchema[_0x1c4b80(0x15e)](_0x10572c);if(!_0x32de1f['success'])return{'content':[{'type':_0x1c4b80(0x218),'text':_0x1c4b80(0x1db)+_0x32de1f[_0x1c4b80(0x1ea)]}],'isError':!![]};const _0x311741=_0x32de1f[_0x1c4b80(0x184)]['github_url']||_0x32de1f[_0x1c4b80(0x184)][_0x1c4b80(0x1e4)];if(!_0x311741)return{'content':[{'type':'text','text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x5918b3=MORPH_API_KEY;if(!_0x5918b3)throw new Error(_0x1c4b80(0x172));const _0x4ca49e=Date['now']();logger['debug'](_0x1c4b80(0x16a),'github_search_start',{'identifier':_0x311741,'query':_0x32de1f['data'][_0x1c4b80(0x140)],'branch':_0x32de1f['data']['branch']});try{const _0x1ef82c=new WarpGrepClient({'morphApiKey':_0x5918b3,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0xb2b07=await _0x1ef82c[_0x1c4b80(0x187)]({'searchTerm':_0x32de1f[_0x1c4b80(0x184)][_0x1c4b80(0x140)],'github':_0x311741,'branch':_0x32de1f[_0x1c4b80(0x184)]['branch']}),_0x4f2474=Date[_0x1c4b80(0x1c1)]()-_0x4ca49e;logMcpStderr(_0x1c4b80(0x136)+_0x4f2474+_0x1c4b80(0x194)+_0xb2b07[_0x1c4b80(0x123)]);const _0x32ae82=formatResult(_0xb2b07);return{'content':[{'type':_0x1c4b80(0x218),'text':_0x32ae82}]};}catch(_0x21123f){const _0x261cd7=handleMorphAPIError(_0x21123f);if(_0x261cd7)return _0x261cd7;const _0x4d3cf7=Date[_0x1c4b80(0x1c1)]()-_0x4ca49e,_0x51105b=_0x21123f instanceof Error?_0x21123f['message']:String(_0x21123f);return logMcpStderr(_0x1c4b80(0x1a0)+_0x4d3cf7+_0x1c4b80(0x217),_0x51105b),reportMorphError({'error_message':_0x51105b,'error_type':_0x21123f instanceof Error?_0x21123f[_0x1c4b80(0x198)][_0x1c4b80(0x219)]:'UnknownError','context':{'tool':_0x1c4b80(0x10a),'github_url':_0x311741,'search_string':_0x32de1f[_0x1c4b80(0x184)][_0x1c4b80(0x140)],'branch':_0x32de1f[_0x1c4b80(0x184)][_0x1c4b80(0x132)]},'stack_trace':_0x21123f instanceof Error?_0x21123f[_0x1c4b80(0x159)]:undefined,'source':'mcp-filesystem','tool':_0x1c4b80(0x10a),'latency_ms':_0x4d3cf7})['catch'](()=>{}),{'content':[{'type':_0x1c4b80(0x218),'text':'GitHub\x20search\x20failed:\x20'+_0x51105b}],'isError':![]};}}default:throw new Error(_0x1c4b80(0x147)+_0x1b7981);}}catch(_0x588155){const _0x496f18=_0x588155 instanceof Error?_0x588155[_0x1c4b80(0x1f3)]:String(_0x588155);return reportMorphError({'error_message':_0x496f18,'error_type':_0x588155 instanceof Error?_0x588155[_0x1c4b80(0x198)]['name']:_0x1c4b80(0x208),'context':{'tool':_0x1b7981,'arguments':_0x10572c?JSON[_0x1c4b80(0x1c6)](_0x10572c)[_0x1c4b80(0x1df)](0x0,0x1f4):undefined,'mcp_server_version':_0x1c4b80(0x116)},'stack_trace':_0x588155 instanceof Error?_0x588155[_0x1c4b80(0x159)]:undefined,'source':_0x1c4b80(0x16f)})[_0x1c4b80(0x221)](()=>{}),{'content':[{'type':'text','text':_0x1c4b80(0x13e)+_0x496f18}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x302a3b){const _0x22eabd=a0_0x4ff747,_0x56b861=await getValidRootDirectories(_0x302a3b);if(_0x56b861[_0x22eabd(0x16b)]>0x0)allowedDirectories=[..._0x56b861],logMcpStderr(_0x22eabd(0x1f7)+_0x56b861[_0x22eabd(0x16b)]+'\x20valid\x20directories');else{logMcpStderr(_0x22eabd(0x112));if(ENABLE_WORKSPACE_MODE)try{const _0x456643=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x456643&&(allowedDirectories=[_0x456643],logMcpStderr(_0x22eabd(0x158)+_0x456643));}catch(_0x53d70c){logMcpStderr(_0x22eabd(0x155)+_0x53d70c);}}}server[a0_0x4ff747(0x19b)](RootsListChangedNotificationSchema,async()=>{const _0x100ea5=a0_0x4ff747;try{const _0x54236b=await server[_0x100ea5(0x21b)]();_0x54236b&&_0x100ea5(0x18d)in _0x54236b&&await updateAllowedDirectoriesFromRoots(_0x54236b[_0x100ea5(0x18d)]);}catch(_0x5c2ed2){logMcpStderr(_0x100ea5(0x1ac),_0x5c2ed2 instanceof Error?_0x5c2ed2[_0x100ea5(0x1f3)]:String(_0x5c2ed2));}}),server['oninitialized']=async()=>{const _0x3c578c=a0_0x4ff747,_0x570c74=server[_0x3c578c(0x1eb)]();if(_0x570c74?.['roots'])try{const _0x5edc16=await server['listRoots']();_0x5edc16&&'roots'in _0x5edc16?await updateAllowedDirectoriesFromRoots(_0x5edc16[_0x3c578c(0x18d)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x6d4619){logMcpStderr(_0x3c578c(0x1a7),_0x6d4619 instanceof Error?_0x6d4619[_0x3c578c(0x1f3)]:String(_0x6d4619));}else{if(allowedDirectories[_0x3c578c(0x16b)]>0x0)logMcpStderr(_0x3c578c(0x1f9),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x3c578c(0x164));else throw new Error(_0x3c578c(0x1cf));}}};function a0_0x60bb(){const _0x3275e1=['mcp-filesystem','source','\x0a</file>','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','go.mod','morph-mcp','file_path','\x0aExamples:','includes','requiresApiKey','repo_path','512078gTNLnk','every','2197551OvquEu','\x20-\x20','package.json','Morph\x20FastApply\x20failed\x20without\x20error\x20message','added\x20','dirname','\x0a...\x20(truncated,\x20total:\x20','grep_search','data','41418666HghETt','etimedout','searchGitHub','-\x20Grepped\x20\x27','@morphllm/morphmcp\x20','split','.\x20Changes:\x20','finish','roots','timings','read','7876332vCymsZ','../package.json','messages','5404512YjgYVk','ms.\x20Success:\x20','Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.','content','\x20\x20morph-mcp','constructor','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','setNotificationHandler','toLowerCase','filter','payload','4UMsJJt','[github_codebase_search]\x20Failed\x20in\x20','log','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','completed_with_file_errors','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','GITHUB_CODEBASE_SEARCH','codebase_search','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','\x27\x20in\x20`','provider_created','map','MORPH_API_KEY','Failed\x20to\x20request\x20roots\x20from\x20client:','-\x20Listed\x20directory\x20`','.git','setRequestHandler','morph-v3-large','\x20is\x20not\x20a\x20directory','EDIT_FILE','object','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','toISOString','MORPH_WARP_GREP_TIMEOUT','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','files','application/json','role','CODEBASE_SEARCH','RipgrepNotAvailable','glob\x20\x27','tsconfig.json','linesRemoved','Error\x20running\x20fast\x20context\x20search:\x20','now','enum','morph-warp-grep-v2.1','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','path_validation_start','stringify','edit','https://morphllm.com/api/error-report','tool_call_received','terminationReason','compaction_failed','--api-key=','Applied','Tool\x20\x22','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.','context','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','timeout','Cargo.toml',',\x20removed\x20','function','status','arguments','morph-v3-fast','api_request_start','Invalid\x20arguments:\x20','--api-key','stat','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','substring','Warning:\x20','10190677YKwiSi','linesModified','dryRun','owner_repo','\x20chars)','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','API\x20error\x20(auth/rate-limit)','path_validation_resolved','Tool\x20','error','getClientCapabilities','slice','path','path_validation_failed','params','edit_file','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','tool_calls','message','file_read_failed','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','RipgrepError','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','.cursor','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','read\x20','debug','push','metadata','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a','new_string','inputSchema','completed','PathError','size','warn','boolean','homedir','UnknownError','❌\x20Morph\x20Edit\x20Failed:\x20','pyproject.toml','string','some','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','isDirectory','list_directory\x20','\x22.\x20Known\x20tools:\x20','BinaryFile','file_read_complete','access','command','Unknown\x20error','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','ms:','text','name','default','listRoots','\x22>\x0a','DISABLED_TOOLS','exit','join','morph-','catch','glob','SubToolError','MORPH_LARGE_APPLY','instruction','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','Error\x20accessing\x20directory\x20','52536FsUCTk','pattern','describe','[could\x20not\x20read\x20file:\x20','\x20error(s)','github_codebase_search','.\x20Path:\x20','\x22>\x0aError\x20reading\x20file:\x20','false','list_directory','-\x20Preserve\x20exact\x20indentation\x0a','node_modules','ToolException','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','filePath','all','isArray','0.2.0','TimeoutError','trim','ReadError','number','tool_call_id','timed\x20out','grep','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','SymlinkError','readFile','MORPH_API_URL','realpath','success','tool_call_error','turns','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','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','indexOf','\x20as\x20allowed\x20directory','565YFIidE','Bearer\x20','env','target_file','Disabled\x20tools:\x20','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','cwd','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','branch','errors','lines','`\x20in\x20`','[github_codebase_search]\x20Done\x20in\x20','instructions','connect','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','code','optional','-\x20Read\x20file\x20`','completionId','Error:\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','search_string','startsWith','linesAdded','Specific\x20commit\x20hash\x20to\x20search','grep\x20\x27','FileReadError','assistant','Unknown\x20tool:\x20','file','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','search_type','floor',',\x20modified\x20','ENOENT','parse','sep','WarpGrep\x20sub-tool\x20errors:\x20','basename','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','Preview\x20changes\x20without\x20applying\x20them.','Warning:\x20Workspace\x20fallback\x20failed:\x20','sk-','Fatal\x20error\x20running\x20server:','Fallback:\x20Using\x20workspace\x20root\x20','stack','resolve','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','--help','has','safeParse','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','unknown','Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.','<file\x20path=\x22','File\x20read\x20error:','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','response','Created\x20File','code_edit','argv','Rules:\x0a','MCP','length','changes','post','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'];a0_0x60bb=function(){return _0x3275e1;};return a0_0x60bb();}async function runServer(){const _0x5608ac=a0_0x4ff747,_0x50a6ff=new StdioServerTransport();await server[_0x5608ac(0x138)](_0x50a6ff),logMcpStderr(_0x5608ac(0x1c4)),allowedDirectories[_0x5608ac(0x16b)]===0x0&&logMcpStderr(_0x5608ac(0x1b4));}runServer()[a0_0x4ff747(0x221)](_0x54b379=>{const _0x46e9ee=a0_0x4ff747;logMcpStderr(_0x46e9ee(0x157),_0x54b379),process[_0x46e9ee(0x21e)](0x1);});
|
|
2
|
+
const a0_0x2520b9=a0_0x3df2;(function(_0x517393,_0x57bf73){const _0x5f2a39=a0_0x3df2,_0x403b7c=_0x517393();while(!![]){try{const _0x97041a=parseInt(_0x5f2a39(0x265))/0x1+-parseInt(_0x5f2a39(0x183))/0x2*(-parseInt(_0x5f2a39(0x152))/0x3)+parseInt(_0x5f2a39(0x1c6))/0x4+-parseInt(_0x5f2a39(0x222))/0x5*(parseInt(_0x5f2a39(0x14a))/0x6)+-parseInt(_0x5f2a39(0x1c5))/0x7+parseInt(_0x5f2a39(0x165))/0x8*(parseInt(_0x5f2a39(0x1c8))/0x9)+-parseInt(_0x5f2a39(0x20f))/0xa;if(_0x97041a===_0x57bf73)break;else _0x403b7c['push'](_0x403b7c['shift']());}catch(_0x142634){_0x403b7c['push'](_0x403b7c['shift']());}}}(a0_0x2fb4,0x7ef59));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_0x1fff72 from'fs/promises';import a0_0x5d9af8 from'path';import a0_0x1170d2 from'os';import{createRequire}from'module';import{z}from'zod';function a0_0x2fb4(){const _0x2ed41b=['default','\x20as\x20allowed\x20directory','name','Error\x20accessing\x20directory\x20','split','WORKSPACE_ROOT','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','new_string','setNotificationHandler','github_url','-\x20Glob\x20search\x20`','ms.\x20Success:\x20','files','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...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','3903470nmUnXH','file_read_failed','floor','errors','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','codebase_search','now','every','response','Invalid\x20arguments:\x20','MORPH_API_KEY','Parent\x20directory\x20does\x20not\x20exist:\x20','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','toLowerCase','context','debug','arguments','sk-','GitHub\x20search\x20failed:\x20','5XoEjuP','constructor','timeout','exit','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','tool_calls','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','code','timed\x20out','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','description','Warning:\x20','has','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','safeParse','realpath','Created\x20File','access','trim','read\x20','CODEBASE_SEARCH','file_path','SubToolError','status','assistant','warp_grep_start','length','Morph\x20FastApply\x20failed\x20without\x20error\x20message','Edit\x20files\x20using\x20AI-powered\x20fast\x20apply.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a','slice','warn','A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20','\x0a</file>','provider_created','compaction_failed','number','finish','normalize','\x20-\x20','data','success','\x22>\x0a','[could\x20not\x20read\x20file:\x20','search_type','[github_codebase_search]\x20Done\x20in\x20','setRequestHandler','timings','version','error','command','@morphllm/morphmcp\x20','--version','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','map','Here\x20is\x20the\x20content\x20of\x20files:\x0a','\x0aExamples:','optional','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','linesModified','list_directory\x20','Failed\x20to\x20read\x20file:\x20','isArray','package.json','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','grep_search','368485eTprDU','catch','\x0a...\x20(truncated,\x20total:\x20','BinaryFile','--help','enum','utf-8','params','resolve','WarpGrep\x20sub-tool\x20errors:\x20','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','WarpGrepError','isDirectory','Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.','1323438fZJtUW','DISABLED_TOOLS','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','includes','repo_path','Cargo.toml','grep','\x22>\x0aError\x20reading\x20file:\x20','19272SNYUuj','0.2.0','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','go.mod','ENOENT','instructions','node_modules','basename','.cursor','.\x20Changes:\x20','Repository\x20identifier','lines',',\x20modified\x20','source','FileNotFound','terminated','morph-v3-large','filter','morph-mcp','159024ULMppD','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','linesAdded','file_read_complete','Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a','SymlinkError','function','code_edit','array','glob','stat','owner_repo','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','github_codebase_search','../package.json','unknown\x20error','filePath','api-key','listRoots','UnknownError','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','content','changes','dirname','homedir','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','roots','false','File\x20read\x20error:','Tool\x20','170HxSdph','Workspace\x20mode\x20enabled:\x20Using\x20','Rules:\x0a','dryRun','Preview\x20changes\x20without\x20applying\x20them.','Error\x20running\x20fast\x20context\x20search:\x20','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','\x27\x20in\x20`','ToolException','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','edit','morph-v3-fast','unknown','terminationReason','MORPH_LARGE_APPLY','Disabled\x20tools:\x20','env','Max\x20results\x20to\x20return','morph-warp-grep-v2.1','Specific\x20commit\x20hash\x20to\x20search','text','RipgrepNotAvailable','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','edit_file','oninitialized','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','search_string','all','stringify','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','RipgrepError','Fatal\x20error\x20running\x20server:','turns','tool','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','tsconfig.json','branch','morph-','added\x20','join','inputSchema','GITHUB_CODEBASE_SEARCH','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','Unknown\x20error','substring','-\x20Read\x20file\x20`','sep','path_validation_failed','API\x20error\x20(auth/rate-limit)','pattern','https://morphllm.com/api/error-report','tool_call_error','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','path','size','push','requiresApiKey','Bearer\x20','composer.json','-\x20Listed\x20directory\x20`','stack','instruction','github_search_start','match','target_filepath','2542981QPZxPS','649060CqgGVr','readFile','189bnwbVc','Failed\x20to\x20request\x20roots\x20from\x20client:','glob\x20\x27','searchGitHub','tool_call_id','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','string','EDIT_FILE','log','--api-key=','.\x20Path:\x20','messages','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','post','cwd','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','Error:\x20','path_validation_resolved','Unknown\x20tool:\x20','user','parse','metadata','\x20disabled\x20via\x20DISABLED_TOOLS','role','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','TimeoutError','read','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','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.','some','MORPH_API_URL','boolean','object','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','etimedout','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','mcp-filesystem','\x20(new\x20file)','describe','linesRemoved','message','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','❌\x20Morph\x20Edit\x20Failed:\x20','PWD','MCP','Relevant\x20context\x20found:','completed_with_file_errors','MORPH_WARP_GREP_TIMEOUT','\x22.\x20Known\x20tools:\x20','ReadError','.git','tool_call_complete','startsWith','<file\x20path=\x22','file'];a0_0x2fb4=function(){return _0x2ed41b;};return a0_0x2fb4();}import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{logger}from'./logger.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x1f40f7 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x26911d){const _0x58dc54=a0_0x3df2,_0x115a02=_0x26911d['split'](a0_0x5d9af8[_0x58dc54(0x1b2)])['filter'](Boolean);if(_0x115a02[_0x58dc54(0x23d)]<0x2)return null;for(let _0x512d61=Math[_0x58dc54(0x211)](_0x115a02[_0x58dc54(0x23d)]/0x2);_0x512d61>=0x1;_0x512d61--){for(let _0x8baf92=0x0;_0x8baf92<=_0x115a02[_0x58dc54(0x23d)]-0x2*_0x512d61;_0x8baf92++){const _0x4a9704=_0x115a02[_0x58dc54(0x240)](_0x8baf92,_0x8baf92+_0x512d61),_0x5eccba=_0x115a02['slice'](_0x8baf92+_0x512d61,_0x8baf92+0x2*_0x512d61);if(_0x4a9704[_0x58dc54(0x216)]((_0x586222,_0x57eba4)=>_0x586222===_0x5eccba[_0x57eba4])){const _0x4ac1eb=[..._0x115a02['slice'](0x0,_0x8baf92),..._0x115a02['slice'](_0x8baf92+_0x512d61)];return a0_0x5d9af8[_0x58dc54(0x1b2)]+_0x4ac1eb[_0x58dc54(0x1aa)](a0_0x5d9af8['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x479ae7=a0_0x3df2;try{const _0xe5cf0e=require(_0x479ae7(0x173));return _0xe5cf0e[_0x479ae7(0x252)]??_0x479ae7(0x18f);}catch(_0x4895da){return logMcpStderr(_0x479ae7(0x206),_0x4895da),_0x479ae7(0x18f);}}function printHelp(){const _0x4ae0d9=a0_0x3df2;console[_0x4ae0d9(0x1d0)](_0x4ae0d9(0x255)+getPackageVersion()),console[_0x4ae0d9(0x1d0)](_0x4ae0d9(0x228)),console[_0x4ae0d9(0x1d0)]('\x0aOptions:'),console['log'](_0x4ae0d9(0x1a5)),console[_0x4ae0d9(0x1d0)]('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0x4ae0d9(0x1d0)](_0x4ae0d9(0x230)),console['log'](_0x4ae0d9(0x25a)),console[_0x4ae0d9(0x1d0)]('\x20\x20morph-mcp'),console['log']('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process['argv']['slice'](0x2),VERSION_FLAGS=new Set([a0_0x2520b9(0x256),'-v','-V']),HELP_FLAGS=new Set([a0_0x2520b9(0x269),'-h']);cliArgs[a0_0x2520b9(0x1e5)](_0x207600=>VERSION_FLAGS[a0_0x2520b9(0x22e)](_0x207600))&&(console[a0_0x2520b9(0x1d0)]('@morphllm/morphmcp\x20'+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x2520b9(0x1e5)](_0xc412d5=>HELP_FLAGS[a0_0x2520b9(0x22e)](_0xc412d5))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x129be0){const _0x163b1d=a0_0x2520b9;for(let _0xa717e9=0x0;_0xa717e9<cliArgs[_0x163b1d(0x23d)];_0xa717e9++){const _0x41d5e2=cliArgs[_0xa717e9];if(_0x41d5e2[_0x163b1d(0x1fc)]('--'+_0x129be0+'='))return _0x41d5e2[_0x163b1d(0x240)](('--'+_0x129be0+'=')[_0x163b1d(0x23d)]);if(_0x41d5e2==='--'+_0x129be0&&_0xa717e9+0x1<cliArgs['length'])return cliArgs[_0xa717e9+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x2520b9(0x23d)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x2520b9(0x22e)](arg)||HELP_FLAGS['has'](arg))continue;if(arg['startsWith'](a0_0x2520b9(0x1d1)))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x2520b9(0x1bb)](arg);}const WORKSPACE_ROOT=process[a0_0x2520b9(0x193)][a0_0x2520b9(0x204)]||process[a0_0x2520b9(0x193)][a0_0x2520b9(0x1f3)]||process[a0_0x2520b9(0x1d6)](),ENABLE_WORKSPACE_MODE=process[a0_0x2520b9(0x193)]['ENABLE_WORKSPACE_MODE']!==a0_0x2520b9(0x180),MORPH_API_KEY=getCliArg(a0_0x2520b9(0x176))??process[a0_0x2520b9(0x193)][a0_0x2520b9(0x219)],MORPH_API_URL=process[a0_0x2520b9(0x193)][a0_0x2520b9(0x1e6)],MORPH_LARGE_APPLY=process[a0_0x2520b9(0x193)][a0_0x2520b9(0x191)]!==a0_0x2520b9(0x180),MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x2520b9(0x1f7)]?parseInt(process[a0_0x2520b9(0x193)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x2520b9(0x193)][a0_0x2520b9(0x14b)]?new Set(process['env'][a0_0x2520b9(0x14b)][a0_0x2520b9(0x203)](',')['map'](_0x2fb043=>_0x2fb043[a0_0x2520b9(0x235)]())[a0_0x2520b9(0x163)](_0x1a5f3b=>_0x1a5f3b[a0_0x2520b9(0x23d)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x2520b9(0x1ba)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x2520b9(0x22e)](tool)&&console[a0_0x2520b9(0x253)](a0_0x2520b9(0x22f)+tool+a0_0x2520b9(0x1f8)+[...KNOWN_TOOL_NAMES][a0_0x2520b9(0x1aa)](',\x20'));}console['error'](a0_0x2520b9(0x192)+[...DISABLED_TOOLS][a0_0x2520b9(0x1aa)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x2520b9(0x1fc)](a0_0x2520b9(0x220))&&!MORPH_API_KEY[a0_0x2520b9(0x1fc)](a0_0x2520b9(0x1a8))&&logMcpStderr(a0_0x2520b9(0x205));async function reportMorphError(_0xa5f4df){const _0x1ed007=a0_0x2520b9;try{await a0_0x1f40f7[_0x1ed007(0x1d5)](_0x1ed007(0x1b6),{..._0xa5f4df,'timestamp':new Date()['toISOString'](),'source':_0xa5f4df['source']||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0xa5f4df[_0x1ed007(0x21d)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x1ed007(0x1bd)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x23791e,_0x48bb2d){const _0x1e6a5d=a0_0x2520b9;if(_0x23791e&&typeof _0x23791e==='object'&&_0x1e6a5d(0x23a)in _0x23791e)return _0x23791e['status'];if(_0x23791e&&typeof _0x23791e===_0x1e6a5d(0x1e8)&&_0x1e6a5d(0x217)in _0x23791e)return _0x23791e['response']?.[_0x1e6a5d(0x23a)];const _0x4d04c3=_0x48bb2d[_0x1e6a5d(0x1c3)](/\b(401|429)\b/);return _0x4d04c3?parseInt(_0x4d04c3[0x1],0xa):null;}function handleMorphAPIError(_0x2921d4){const _0x3f1573=a0_0x2520b9,_0x25fdbd=_0x2921d4 instanceof Error?_0x2921d4['message']:String(_0x2921d4),_0x33387b=extractStatusCode(_0x2921d4,_0x25fdbd);switch(_0x33387b){case 0x191:return{'content':[{'type':_0x3f1573(0x197),'text':'Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.'}],'isError':!![]};case 0x1ad:return{'content':[{'type':'text','text':'Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.'}],'isError':!![]};default:return null;}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x2520b9(0x25c)),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr(a0_0x2520b9(0x1ad)),logMcpStderr(a0_0x2520b9(0x171)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x2520b9(0x1ae)));function normalizePath(_0x106858){const _0x512e20=a0_0x2520b9;return a0_0x5d9af8[_0x512e20(0x248)](_0x106858);}function expandHome(_0x1c726b){const _0x4eb6dc=a0_0x2520b9;if(_0x1c726b[_0x4eb6dc(0x1fc)]('~/')||_0x1c726b==='~')return a0_0x5d9af8[_0x4eb6dc(0x1aa)](a0_0x1170d2[_0x4eb6dc(0x17d)](),_0x1c726b[_0x4eb6dc(0x240)](0x1));return _0x1c726b;}let allowedDirectories=await Promise[a0_0x2520b9(0x19e)](args[a0_0x2520b9(0x258)](async _0x3b8002=>{const _0xb37aca=a0_0x2520b9,_0xcc2b9c=expandHome(_0x3b8002),_0x4f82c6=a0_0x5d9af8[_0xb37aca(0x144)](_0xcc2b9c);try{const _0xd06c13=await a0_0x1fff72[_0xb37aca(0x232)](_0x4f82c6);return normalizePath(_0xd06c13);}catch(_0x5f57ec){return normalizePath(_0x4f82c6);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x2520b9(0x23d)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x2520b9(0x1bb)](workspaceDir),logMcpStderr(a0_0x2520b9(0x184)+workspaceDir+a0_0x2520b9(0x200)));}catch(a0_0x1b3fcc){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x1b3fcc);}async function detectWorkspaceRoot(_0x1c85b0){const _0x4b190a=a0_0x2520b9;let _0x18a960=a0_0x5d9af8[_0x4b190a(0x144)](_0x1c85b0);const _0x393b0a=[_0x4b190a(0x1fa),'.vscode',_0x4b190a(0x262),_0x4b190a(0x14f),'pyproject.toml',_0x4b190a(0x155),_0x4b190a(0x15a),_0x4b190a(0x1a6),_0x4b190a(0x1be)];while(_0x18a960!==a0_0x5d9af8[_0x4b190a(0x17c)](_0x18a960)){for(const _0x2d76c4 of _0x393b0a){const _0x2851b1=a0_0x5d9af8[_0x4b190a(0x1aa)](_0x18a960,_0x2d76c4);try{return await a0_0x1fff72[_0x4b190a(0x234)](_0x2851b1),normalizePath(_0x18a960);}catch{}}_0x18a960=a0_0x5d9af8[_0x4b190a(0x17c)](_0x18a960);}return normalizePath(_0x1c85b0);}function a0_0x3df2(_0x4f8f3a,_0x5c4eea){_0x4f8f3a=_0x4f8f3a-0x143;const _0x2fb4cd=a0_0x2fb4();let _0x3df25e=_0x2fb4cd[_0x4f8f3a];return _0x3df25e;}await Promise['all'](args['map'](async _0x452c03=>{const _0x111a5e=a0_0x2520b9;try{const _0x2d7f09=await a0_0x1fff72[_0x111a5e(0x16f)](expandHome(_0x452c03));!_0x2d7f09[_0x111a5e(0x148)]()&&(logMcpStderr('Error:\x20'+_0x452c03+'\x20is\x20not\x20a\x20directory'),process[_0x111a5e(0x225)](0x1));}catch(_0xdc01a5){logMcpStderr(_0x111a5e(0x202)+_0x452c03+':',_0xdc01a5),process[_0x111a5e(0x225)](0x1);}}));async function validatePath(_0x428166){const _0x4bda73=a0_0x2520b9,_0x543279=expandHome(_0x428166),_0x2e8c31=a0_0x5d9af8['resolve'](_0x543279);logger[_0x4bda73(0x21e)]('MCP','path_validation_start',{'raw_path':_0x428166,'absolute':_0x2e8c31});try{const _0x34f5af=await a0_0x1fff72[_0x4bda73(0x232)](_0x2e8c31);return logger[_0x4bda73(0x21e)](_0x4bda73(0x1f4),_0x4bda73(0x1d9),{'resolved':_0x34f5af,'symlink':_0x34f5af!==_0x2e8c31}),_0x34f5af;}catch(_0x1e0860){if(_0x1e0860[_0x4bda73(0x229)]===_0x4bda73(0x156)){const _0x68d52a=a0_0x5d9af8[_0x4bda73(0x17c)](_0x2e8c31);try{const _0x5e08c6=await a0_0x1fff72[_0x4bda73(0x232)](_0x68d52a),_0xa16550=a0_0x5d9af8[_0x4bda73(0x1aa)](_0x5e08c6,a0_0x5d9af8[_0x4bda73(0x159)](_0x2e8c31));return logger['debug'](_0x4bda73(0x1f4),_0x4bda73(0x1d9),{'resolved':_0xa16550,'new_file':!![]}),_0xa16550;}catch{logger[_0x4bda73(0x253)](_0x4bda73(0x1f4),_0x4bda73(0x1b3),{'raw_path':_0x428166,'error':_0x4bda73(0x21a)+_0x68d52a});throw new Error(_0x4bda73(0x21a)+_0x68d52a);}}logger[_0x4bda73(0x253)]('MCP',_0x4bda73(0x1b3),{'raw_path':_0x428166,'error':_0x1e0860['message']});throw _0x1e0860;}}const MorphEditFileArgsSchema=z[a0_0x2520b9(0x1e8)]({'path':z['string'](),'code_edit':z[a0_0x2520b9(0x1ce)]()[a0_0x2520b9(0x1ee)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0x2520b9(0x1ce)]()['describe']('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0x2520b9(0x1e7)]()['default'](![])[a0_0x2520b9(0x1ee)](a0_0x2520b9(0x187))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x2520b9(0x146),WarpGrepArgsSchema=z[a0_0x2520b9(0x1e8)]({'search_string':z[a0_0x2520b9(0x1ce)]()[a0_0x2520b9(0x1ee)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x2520b9(0x1ce)]()['describe'](a0_0x2520b9(0x20d)),'search_type':z[a0_0x2520b9(0x26a)]([a0_0x2520b9(0x1ff),a0_0x2520b9(0x158)])['optional']()[a0_0x2520b9(0x1ee)](a0_0x2520b9(0x179))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x2520b9(0x1ce)]()[a0_0x2520b9(0x1ee)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x2520b9(0x1ce)]()[a0_0x2520b9(0x25b)]()[a0_0x2520b9(0x1ee)](a0_0x2520b9(0x189)),'owner_repo':z['string']()[a0_0x2520b9(0x25b)]()[a0_0x2520b9(0x1ee)](a0_0x2520b9(0x22b)),'branch':z['string']()[a0_0x2520b9(0x25b)]()['describe'](a0_0x2520b9(0x1f1))}),CodebaseSearchArgsSchema=z['object']({'query':z['string']()[a0_0x2520b9(0x1ee)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x2520b9(0x1ce)]()['describe'](a0_0x2520b9(0x15c)),'branch':z[a0_0x2520b9(0x1ce)]()[a0_0x2520b9(0x25b)]()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x2520b9(0x1ce)]()[a0_0x2520b9(0x25b)]()[a0_0x2520b9(0x1ee)](a0_0x2520b9(0x196)),'targetDirectories':z[a0_0x2520b9(0x16d)](z['string']())[a0_0x2520b9(0x1ff)]([])[a0_0x2520b9(0x1ee)](a0_0x2520b9(0x1e9)),'limit':z[a0_0x2520b9(0x246)]()[a0_0x2520b9(0x25b)]()[a0_0x2520b9(0x1ff)](0xa)[a0_0x2520b9(0x1ee)](a0_0x2520b9(0x194))}),server=new Server({'name':a0_0x2520b9(0x164),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x2520b9(0x250)](ListToolsRequestSchema,async()=>{const _0x2834c3=a0_0x2520b9,_0x36724c=[{'name':TOOL_NAMES[_0x2834c3(0x1cf)],'description':_0x2834c3(0x23f)+'Parameters:\x0a'+_0x2834c3(0x19c)+_0x2834c3(0x226)+_0x2834c3(0x1e3)+_0x2834c3(0x169)+'Example\x20format:\x0a'+_0x2834c3(0x20e)+_0x2834c3(0x185)+_0x2834c3(0x1b8)+'-\x20Preserve\x20exact\x20indentation\x0a'+_0x2834c3(0x154)+_0x2834c3(0x166),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x2834c3(0x237)],'description':_0x2834c3(0x242)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x2834c3(0x213)+_0x2834c3(0x263)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x246400=_0x36724c[_0x2834c3(0x163)](_0x5da6d3=>{const _0x6522c3=_0x2834c3;if(DISABLED_TOOLS['has'](_0x5da6d3[_0x6522c3(0x201)]))return console[_0x6522c3(0x253)](_0x6522c3(0x182)+_0x5da6d3['name']+_0x6522c3(0x1de)),![];if(_0x6522c3(0x1bc)in _0x5da6d3&&_0x5da6d3[_0x6522c3(0x1bc)]&&!MORPH_API_KEY)return logMcpStderr(_0x6522c3(0x22d)+_0x5da6d3[_0x6522c3(0x201)]+_0x6522c3(0x1d7)),![];return!![];});return{'tools':_0x246400[_0x2834c3(0x258)](_0x47a964=>({'name':_0x47a964[_0x2834c3(0x201)],'description':_0x47a964[_0x2834c3(0x22c)],'inputSchema':_0x47a964[_0x2834c3(0x1ab)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x4d3de4=>{const _0x2dcb05=a0_0x2520b9,{name:_0x2dec45,arguments:_0x5ba6d1}=_0x4d3de4[_0x2dcb05(0x143)],_0x360870=Date[_0x2dcb05(0x215)]();logger[_0x2dcb05(0x21e)](_0x2dcb05(0x1f4),'tool_call_received',{'tool':_0x2dec45,'args':_0x2dec45===_0x2dcb05(0x19a)?{'path':_0x5ba6d1?.[_0x2dcb05(0x1b9)],'instruction':_0x5ba6d1?.[_0x2dcb05(0x1c1)]||_0x5ba6d1?.[_0x2dcb05(0x157)],'dryRun':_0x5ba6d1?.[_0x2dcb05(0x186)]}:_0x5ba6d1});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x2dcb05(0x197),'text':_0x2dcb05(0x21b)}],'isError':!![]};if(!MORPH_API_KEY[_0x2dcb05(0x1fc)](_0x2dcb05(0x220))&&!MORPH_API_KEY[_0x2dcb05(0x1fc)](_0x2dcb05(0x1a8)))return{'content':[{'type':_0x2dcb05(0x197),'text':_0x2dcb05(0x149)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0x2dec45))return{'content':[{'type':'text','text':'Tool\x20\x22'+_0x2dec45+_0x2dcb05(0x1eb)}],'isError':![]};switch(_0x2dec45){case TOOL_NAMES['EDIT_FILE']:{let _0x2c325f=_0x5ba6d1;if(_0x2c325f&&typeof _0x2c325f==='object'){if(!(_0x2dcb05(0x1b9)in _0x2c325f)){const _0x1a13f2=_0x2c325f['target_file']??_0x2c325f[_0x2dcb05(0x175)]??_0x2c325f[_0x2dcb05(0x1c4)]??_0x2c325f[_0x2dcb05(0x238)]??_0x2c325f[_0x2dcb05(0x1fe)];if(_0x1a13f2)_0x2c325f={..._0x2c325f,'path':_0x1a13f2};}_0x2dcb05(0x157)in _0x2c325f&&!(_0x2dcb05(0x1c1)in _0x2c325f)&&(_0x2c325f={..._0x2c325f,'instruction':_0x2c325f[_0x2dcb05(0x157)]});if(!(_0x2dcb05(0x16c)in _0x2c325f)){const _0x58f79a=_0x2c325f[_0x2dcb05(0x229)]??_0x2c325f[_0x2dcb05(0x207)]??_0x2c325f[_0x2dcb05(0x17a)]??_0x2c325f[_0x2dcb05(0x18d)];if(_0x58f79a)_0x2c325f={..._0x2c325f,'code_edit':_0x58f79a};}}const _0x40bd0c=MorphEditFileArgsSchema[_0x2dcb05(0x231)](_0x2c325f);if(!_0x40bd0c[_0x2dcb05(0x24b)])throw new Error(_0x2dcb05(0x14c)+_0x40bd0c[_0x2dcb05(0x253)]);const _0x3d2616=await validatePath(_0x40bd0c[_0x2dcb05(0x24a)][_0x2dcb05(0x1b9)]);let _0x8b4e30=null,_0x5054de=!![],_0x452305=null;try{_0x8b4e30=await a0_0x1fff72[_0x2dcb05(0x1c7)](_0x3d2616,_0x2dcb05(0x26b)),logger['debug'](_0x2dcb05(0x1f4),'file_read_complete',{'path':_0x3d2616,'size_bytes':_0x8b4e30[_0x2dcb05(0x23d)]});}catch(_0x17ed39){const _0x2c280d=_0x17ed39[_0x2dcb05(0x229)];_0x2c280d==='ENOENT'?(_0x5054de=![],_0x8b4e30='',logger[_0x2dcb05(0x21e)](_0x2dcb05(0x1f4),_0x2dcb05(0x168),{'path':_0x3d2616,'exists':![]})):(_0x452305=_0x2dcb05(0x260)+(_0x2c280d||_0x2dcb05(0x18f))+_0x2dcb05(0x249)+(_0x17ed39 instanceof Error?_0x17ed39['message']:String(_0x17ed39)),logger[_0x2dcb05(0x253)]('MCP',_0x2dcb05(0x210),{'path':_0x3d2616,'error':_0x452305}),logMcpStderr(_0x2dcb05(0x22d)+_0x452305));}let _0x43e25c;try{const _0x520087=MORPH_API_KEY;if(!_0x520087)throw new Error(_0x2dcb05(0x25d));const _0x1d2778=a0_0x5d9af8[_0x2dcb05(0x17c)](_0x3d2616),_0x2a7f56=a0_0x5d9af8[_0x2dcb05(0x159)](_0x3d2616);logger[_0x2dcb05(0x21e)](_0x2dcb05(0x1f4),'api_request_start',{'model':_0x2dcb05(0x18e),'path':_0x40bd0c[_0x2dcb05(0x24a)][_0x2dcb05(0x1b9)],'instruction_len':_0x40bd0c['data'][_0x2dcb05(0x1c1)][_0x2dcb05(0x23d)],'code_edit_len':_0x40bd0c['data']['code_edit'][_0x2dcb05(0x23d)],'original_code_len':_0x8b4e30?.[_0x2dcb05(0x23d)]??0x0,'dry_run':_0x40bd0c[_0x2dcb05(0x24a)][_0x2dcb05(0x186)]});const _0x42f863=Date[_0x2dcb05(0x215)](),_0x56af81=await executeEditFile({'target_filepath':_0x2a7f56,'code_edit':_0x40bd0c[_0x2dcb05(0x24a)][_0x2dcb05(0x16c)],'instruction':_0x40bd0c[_0x2dcb05(0x24a)][_0x2dcb05(0x1c1)]},{'morphApiKey':_0x520087,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x1d2778,'autoWrite':!_0x40bd0c['data'][_0x2dcb05(0x186)],'generateUdiff':![],'debug':![]}),_0x3f2766=Date['now']()-_0x42f863;_0x43e25c=_0x56af81['completionId'];if(!_0x56af81['success'])throw new Error(_0x56af81[_0x2dcb05(0x253)]||_0x2dcb05(0x23e));const _0x16aabc=_0x56af81[_0x2dcb05(0x17b)],_0x4cedda=_0x2dcb05(0x1a9)+_0x16aabc['linesAdded']+',\x20removed\x20'+_0x16aabc[_0x2dcb05(0x1ef)]+_0x2dcb05(0x15e)+_0x16aabc[_0x2dcb05(0x25e)];logger[_0x2dcb05(0x21e)](_0x2dcb05(0x1f4),_0x2dcb05(0x1fb),{'tool':'edit_file','success':!![],'latency_ms':Date[_0x2dcb05(0x215)]()-_0x360870,'edit_latency_ms':_0x3f2766,'changes':{'added':_0x16aabc[_0x2dcb05(0x167)],'removed':_0x16aabc[_0x2dcb05(0x1ef)],'modified':_0x16aabc['linesModified']},'completion_id':_0x43e25c});if(_0x40bd0c[_0x2dcb05(0x24a)][_0x2dcb05(0x186)])return{'content':[{'type':_0x2dcb05(0x197),'text':'Morph\x20Edit\x20Preview'+(_0x5054de?'':_0x2dcb05(0x1ed))+':\x20'+_0x40bd0c[_0x2dcb05(0x24a)][_0x2dcb05(0x1c1)]+_0x2dcb05(0x15b)+_0x4cedda+'.\x20Path:\x20'+_0x40bd0c[_0x2dcb05(0x24a)][_0x2dcb05(0x1b9)]+'.'}]};return{'content':[{'type':_0x2dcb05(0x197),'text':'Morph\x20Edit\x20'+(_0x5054de?'Applied':_0x2dcb05(0x233))+':\x20'+_0x40bd0c[_0x2dcb05(0x24a)][_0x2dcb05(0x1c1)]+'.\x20Changes:\x20'+_0x4cedda+_0x2dcb05(0x1d2)+_0x40bd0c['data']['path']+'.'}]};}catch(_0x49e382){const _0x104b31=handleMorphAPIError(_0x49e382);if(_0x104b31)return logger[_0x2dcb05(0x253)](_0x2dcb05(0x1f4),_0x2dcb05(0x1b7),{'tool':_0x2dcb05(0x19a),'error':_0x2dcb05(0x1b4),'latency_ms':Date['now']()-_0x360870}),_0x104b31;const _0x52b431=_0x49e382 instanceof Error?_0x49e382[_0x2dcb05(0x1f0)]:String(_0x49e382);return logger[_0x2dcb05(0x253)](_0x2dcb05(0x1f4),'tool_call_error',{'tool':_0x2dcb05(0x19a),'error':_0x52b431,'path':_0x40bd0c[_0x2dcb05(0x24a)][_0x2dcb05(0x1b9)],'validated_path':_0x3d2616,'latency_ms':Date[_0x2dcb05(0x215)]()-_0x360870,'stack':_0x49e382 instanceof Error?_0x49e382[_0x2dcb05(0x1c0)]:undefined}),reportMorphError({'error_message':_0x52b431,'error_type':_0x49e382 instanceof Error?_0x49e382['constructor']['name']:'UnknownError','context':{'tool':'edit_file','completion_id':_0x43e25c,'file_path':_0x40bd0c[_0x2dcb05(0x24a)][_0x2dcb05(0x1b9)],'validated_path':_0x3d2616,'instruction':_0x40bd0c['data']['instruction'],'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x2dcb05(0x18e),'dry_run':_0x40bd0c[_0x2dcb05(0x24a)][_0x2dcb05(0x186)],'file_exists':_0x5054de,'file_read_error':_0x452305,'file_readable':_0x8b4e30!==null,'request_content':{'path':_0x40bd0c[_0x2dcb05(0x24a)][_0x2dcb05(0x1b9)],'code_edit':_0x40bd0c[_0x2dcb05(0x24a)][_0x2dcb05(0x16c)],'instruction':_0x40bd0c[_0x2dcb05(0x24a)][_0x2dcb05(0x1c1)],'original_code':_0x8b4e30!==null?_0x8b4e30[_0x2dcb05(0x23d)]>0xc350?_0x8b4e30['substring'](0x0,0xc350)+_0x2dcb05(0x267)+_0x8b4e30[_0x2dcb05(0x23d)]+'\x20chars)':_0x8b4e30:_0x2dcb05(0x24d)+(_0x452305||_0x2dcb05(0x174))+']','original_code_length':_0x8b4e30?.[_0x2dcb05(0x23d)]??0x0,'model':MORPH_LARGE_APPLY?_0x2dcb05(0x162):_0x2dcb05(0x18e),'dry_run':_0x40bd0c[_0x2dcb05(0x24a)][_0x2dcb05(0x186)]}},'stack_trace':_0x49e382 instanceof Error?_0x49e382['stack']:undefined,'source':_0x2dcb05(0x1ec)})['catch'](()=>{}),{'content':[{'type':_0x2dcb05(0x197),'text':_0x2dcb05(0x1f2)+_0x52b431}],'isError':!![]};}}case TOOL_NAMES[_0x2dcb05(0x237)]:{const _0x109049=WarpGrepArgsSchema['safeParse'](_0x5ba6d1);if(!_0x109049['success'])return{'content':[{'type':_0x2dcb05(0x197),'text':_0x2dcb05(0x218)+_0x109049[_0x2dcb05(0x253)]}],'isError':!![]};const _0xf9b968=_0x4cef2d=>{const _0x39eb01=_0x2dcb05,_0x360f7a=[];for(const _0x2a53bd of _0x4cef2d||[]){if(_0x2a53bd[_0x39eb01(0x1df)]===_0x39eb01(0x23b)&&Array['isArray'](_0x2a53bd[_0x39eb01(0x227)]))for(const _0x5e4a04 of _0x2a53bd[_0x39eb01(0x227)]){try{const _0x16a855=_0x5e4a04['function']?.['name'],_0x12bf0e=JSON[_0x39eb01(0x1dc)](_0x5e4a04[_0x39eb01(0x16b)]?.['arguments']||'{}');if(_0x16a855===_0x39eb01(0x264))_0x360f7a[_0x39eb01(0x1bb)]('grep\x20\x27'+_0x12bf0e['pattern']+'\x27\x20'+(_0x12bf0e[_0x39eb01(0x1b9)]||'.'));else{if(_0x16a855==='read')_0x360f7a[_0x39eb01(0x1bb)](_0x39eb01(0x236)+_0x12bf0e['path']);else{if(_0x16a855==='list_directory')_0x360f7a[_0x39eb01(0x1bb)](_0x39eb01(0x25f)+(_0x12bf0e[_0x39eb01(0x254)]||'.'));else{if(_0x16a855==='glob')_0x360f7a[_0x39eb01(0x1bb)](_0x39eb01(0x1ca)+_0x12bf0e[_0x39eb01(0x1b5)]+'\x27\x20'+(_0x12bf0e[_0x39eb01(0x1b9)]||'.'));else _0x16a855===_0x39eb01(0x247)&&_0x360f7a[_0x39eb01(0x1bb)](_0x39eb01(0x247));}}}}catch{}}}return _0x360f7a;},_0x3ce51c=_0x4c6e8c=>{const _0x562dc5=_0x2dcb05,_0x196599=[];if(!_0x4c6e8c||!Array[_0x562dc5(0x261)](_0x4c6e8c))return _0x196599;const _0x2d5c49=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x562dc5(0x160),'tool':_0x562dc5(0x1e2)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x562dc5(0x1e2)},{'pattern':/\[READ ERROR\]/,'error_type':_0x562dc5(0x1f9),'tool':_0x562dc5(0x1e2)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x562dc5(0x268),'tool':_0x562dc5(0x1e2)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x562dc5(0x1a1),'tool':_0x562dc5(0x150)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x562dc5(0x198),'tool':_0x562dc5(0x150)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x562dc5(0x268),'tool':_0x562dc5(0x1e2)},{'pattern':/\[SYMLINK\]/,'error_type':_0x562dc5(0x16a),'tool':_0x562dc5(0x1e2)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':_0x562dc5(0x1e2)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x562dc5(0x1f9),'tool':_0x562dc5(0x1e2)},{'pattern':/status="error"/,'error_type':_0x562dc5(0x18b),'tool':_0x562dc5(0x18f)}];let _0x3e9654=0x0;for(const _0x6261f5 of _0x4c6e8c){_0x6261f5[_0x562dc5(0x1df)]===_0x562dc5(0x23b)&&Array[_0x562dc5(0x261)](_0x6261f5[_0x562dc5(0x227)])&&_0x3e9654++;const _0x233cf7=_0x6261f5['content'];if((_0x6261f5['role']===_0x562dc5(0x1a4)||_0x6261f5['role']===_0x562dc5(0x1db))&&_0x233cf7&&typeof _0x233cf7===_0x562dc5(0x1ce))for(const {pattern:_0x2e4649,error_type:_0x41180a,tool:_0x1f13d3}of _0x2d5c49){const _0x1b1226=_0x233cf7['match'](new RegExp(_0x2e4649[_0x562dc5(0x15f)],'g'));if(_0x1b1226)for(const _0x33a1d2 of _0x1b1226){const _0x586a03=_0x233cf7['indexOf'](_0x33a1d2),_0x4fd01f=_0x233cf7[_0x562dc5(0x1b0)](_0x586a03,Math['min'](_0x586a03+0xc8,_0x233cf7['length']));_0x196599[_0x562dc5(0x1bb)]({'tool':_0x1f13d3,'error_type':_0x41180a,'error_message':_0x4fd01f['split']('\x0a')[0x0],'turn':_0x3e9654});}}}return _0x196599;};try{const _0x4db3aa=a0_0x5d9af8[_0x2dcb05(0x144)](_0x109049[_0x2dcb05(0x24a)]['repo_path']),_0x944c6=_0x109049[_0x2dcb05(0x24a)][_0x2dcb05(0x24e)],_0x5b69f1=_0x944c6===_0x2dcb05(0x158)?{'allowNames':[_0x2dcb05(0x158)]}:undefined,_0x339eb6=new LocalRipgrepProvider(_0x4db3aa,undefined,_0x5b69f1);logger[_0x2dcb05(0x21e)]('MCP',_0x2dcb05(0x244),{'type':'LocalRipgrepProvider','repo_root':_0x4db3aa,'search_type':_0x944c6||'default'}),logger['debug']('MCP',_0x2dcb05(0x23c),{'query':_0x109049[_0x2dcb05(0x24a)][_0x2dcb05(0x19d)],'repo_root':_0x4db3aa,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x2bb8ff=Date[_0x2dcb05(0x215)](),_0x5e72ee=await runWarpGrep({'searchTerm':_0x109049[_0x2dcb05(0x24a)]['search_string'],'repoRoot':_0x4db3aa,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x339eb6,'search_type':_0x944c6}),_0x30061a=Date[_0x2dcb05(0x215)]()-_0x2bb8ff,_0x221c3b=_0x5e72ee['finish']?.[_0x2dcb05(0x1dd)]?.[_0x2dcb05(0x20c)]?.[_0x2dcb05(0x23d)]??0x0;logger['debug'](_0x2dcb05(0x1f4),'warp_grep_complete',{'termination':_0x5e72ee[_0x2dcb05(0x190)],'turns':_0x5e72ee[_0x2dcb05(0x251)]?.[_0x2dcb05(0x1a3)]??0x0,'files_found':_0x221c3b,'latency_ms':_0x30061a});const _0x242023=_0x3ce51c(_0x5e72ee[_0x2dcb05(0x1d3)]);_0x242023['length']>0x0&&reportMorphError({'error_message':_0x2dcb05(0x145)+_0x242023[_0x2dcb05(0x23d)]+'\x20error(s)','error_type':_0x2dcb05(0x239),'level':_0x2dcb05(0x241),'tool':_0x2dcb05(0x214),'context':{'repo_path':_0x109049[_0x2dcb05(0x24a)]['repo_path'],'query':_0x109049[_0x2dcb05(0x24a)]['search_string'],'model':_0x2dcb05(0x195),'termination_reason':_0x5e72ee[_0x2dcb05(0x190)],'sub_tool_errors':_0x242023,'timings':_0x5e72ee[_0x2dcb05(0x251)],'tool_calls':_0xf9b968(_0x5e72ee[_0x2dcb05(0x1d3)]),'messages':_0x5e72ee[_0x2dcb05(0x1d3)]?.[_0x2dcb05(0x258)](_0x4ba110=>({'role':_0x4ba110[_0x2dcb05(0x1df)],'content':_0x4ba110[_0x2dcb05(0x17a)],..._0x4ba110[_0x2dcb05(0x227)]?{'tool_calls':_0x4ba110[_0x2dcb05(0x227)][_0x2dcb05(0x23d)]}:{},..._0x4ba110[_0x2dcb05(0x1cc)]?{'tool_call_id':_0x4ba110[_0x2dcb05(0x1cc)]}:{}}))},'source':_0x2dcb05(0x1ec)})[_0x2dcb05(0x266)](()=>{});let _0x8f7a3e='';if(_0x5e72ee[_0x2dcb05(0x190)]==='completed'&&_0x5e72ee[_0x2dcb05(0x247)]?.['metadata']?.[_0x2dcb05(0x20c)]){const _0x31e9b4=_0x5e72ee['finish'][_0x2dcb05(0x1dd)][_0x2dcb05(0x20c)];if(_0x31e9b4[_0x2dcb05(0x23d)]===0x0)return _0x8f7a3e=_0x5e72ee[_0x2dcb05(0x247)]['payload']||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x2dcb05(0x197),'text':_0x8f7a3e}]};const _0x1093c1=[],_0x39368c=[_0x2dcb05(0x1a0)];for(const _0x277b04 of _0x5e72ee[_0x2dcb05(0x1d3)]){if(_0x277b04[_0x2dcb05(0x1df)]===_0x2dcb05(0x23b)&&Array[_0x2dcb05(0x261)](_0x277b04[_0x2dcb05(0x227)]))for(const _0x5523b1 of _0x277b04[_0x2dcb05(0x227)]){try{const _0x2106bf=_0x5523b1[_0x2dcb05(0x16b)]?.[_0x2dcb05(0x201)],_0x38a567=JSON[_0x2dcb05(0x1dc)](_0x5523b1[_0x2dcb05(0x16b)]?.[_0x2dcb05(0x21f)]||'{}');if(_0x2106bf===_0x2dcb05(0x264))_0x39368c['push']('-\x20Grepped\x20\x27'+_0x38a567[_0x2dcb05(0x1b5)]+_0x2dcb05(0x18a)+(_0x38a567[_0x2dcb05(0x1b9)]||'.')+'`');else{if(_0x2106bf===_0x2dcb05(0x1e2))_0x39368c['push'](_0x2dcb05(0x1b1)+_0x38a567[_0x2dcb05(0x1b9)]+'`');else{if(_0x2106bf==='list_directory')_0x39368c['push'](_0x2dcb05(0x1bf)+(_0x38a567['command']||'.')+'`');else _0x2106bf===_0x2dcb05(0x16e)&&_0x39368c['push'](_0x2dcb05(0x20a)+_0x38a567[_0x2dcb05(0x1b5)]+'`\x20in\x20`'+(_0x38a567[_0x2dcb05(0x1b9)]||'.')+'`');}}}catch{}}}_0x1093c1[_0x2dcb05(0x1bb)](_0x39368c[_0x2dcb05(0x1aa)]('\x0a'));const _0x57c3b7=['',_0x2dcb05(0x1f5)];for(const _0x593b99 of _0x31e9b4){if(_0x593b99[_0x2dcb05(0x15d)]==='*')_0x57c3b7['push']('-\x20'+_0x593b99[_0x2dcb05(0x1b9)]+':*');else{if(Array[_0x2dcb05(0x261)](_0x593b99[_0x2dcb05(0x15d)])){const _0x442045=_0x593b99[_0x2dcb05(0x15d)][_0x2dcb05(0x258)](([_0x2b6f8e,_0x93a3d2])=>{if(_0x2b6f8e===_0x93a3d2)return''+_0x2b6f8e;return _0x2b6f8e+'-'+_0x93a3d2;});_0x57c3b7['push']('-\x20'+_0x593b99[_0x2dcb05(0x1b9)]+':'+_0x442045[_0x2dcb05(0x1aa)](','));}else _0x57c3b7[_0x2dcb05(0x1bb)]('-\x20'+_0x593b99[_0x2dcb05(0x1b9)]+':*');}}_0x57c3b7[_0x2dcb05(0x1bb)](''),_0x1093c1[_0x2dcb05(0x1bb)](_0x57c3b7['join']('\x0a')),_0x1093c1[_0x2dcb05(0x1bb)](_0x2dcb05(0x259));const _0x442090=[],_0x19071f=[];for(const _0x5f5d81 of _0x31e9b4){let _0x341a7d=a0_0x5d9af8[_0x2dcb05(0x144)](_0x109049[_0x2dcb05(0x24a)][_0x2dcb05(0x14e)],_0x5f5d81[_0x2dcb05(0x1b9)]),_0x12d4b9=null,_0x4f1570=null;try{_0x12d4b9=await a0_0x1fff72[_0x2dcb05(0x1c7)](_0x341a7d,{'encoding':_0x2dcb05(0x26b)});}catch(_0x23b9b4){const _0x469e81=fixPathRepetition(_0x341a7d);if(_0x469e81)try{_0x12d4b9=await a0_0x1fff72['readFile'](_0x469e81,{'encoding':'utf-8'}),_0x341a7d=_0x469e81;}catch{_0x4f1570=_0x23b9b4 instanceof Error?_0x23b9b4:new Error(String(_0x23b9b4));}else _0x4f1570=_0x23b9b4 instanceof Error?_0x23b9b4:new Error(String(_0x23b9b4));}if(_0x12d4b9!==null){const _0xefd24f=_0x12d4b9['split'](/\r?\n/),_0x5398de=[];if(_0x5f5d81[_0x2dcb05(0x15d)]==='*'||!Array[_0x2dcb05(0x261)](_0x5f5d81[_0x2dcb05(0x15d)]))for(let _0x20fcdc=0x1;_0x20fcdc<=_0xefd24f['length'];_0x20fcdc++){const _0x1e1fbc=_0xefd24f[_0x20fcdc-0x1];_0x5398de[_0x2dcb05(0x1bb)](_0x20fcdc+'|\x20'+_0x1e1fbc);}else for(const [_0x3cad36,_0x1d84b5]of _0x5f5d81[_0x2dcb05(0x15d)]){_0x5398de[_0x2dcb05(0x23d)]>0x0&&_0x5398de[_0x2dcb05(0x1bb)]('');for(let _0x28fe0c=_0x3cad36;_0x28fe0c<=_0x1d84b5&&_0x28fe0c<=_0xefd24f['length'];_0x28fe0c++){const _0x1f8f3b=_0xefd24f[_0x28fe0c-0x1];_0x5398de[_0x2dcb05(0x1bb)](_0x28fe0c+'|\x20'+_0x1f8f3b);}}_0x19071f[_0x2dcb05(0x1bb)]({'path':_0x5f5d81[_0x2dcb05(0x1b9)],'content':_0x5398de[_0x2dcb05(0x1aa)]('\x0a')});}else _0x442090[_0x2dcb05(0x1bb)]('<file\x20path=\x22'+_0x5f5d81[_0x2dcb05(0x1b9)]+_0x2dcb05(0x151)+(_0x4f1570?.['message']||_0x2dcb05(0x1af))+_0x2dcb05(0x243));}try{const _0x1ef0b7=await compactFileContexts(_0x19071f,_0x109049['data'][_0x2dcb05(0x19d)],MORPH_API_KEY,MORPH_API_URL);for(const _0x4485aa of _0x1ef0b7){_0x442090['push'](_0x2dcb05(0x1fd)+_0x4485aa[_0x2dcb05(0x1b9)]+_0x2dcb05(0x24c)+_0x4485aa[_0x2dcb05(0x17a)]+_0x2dcb05(0x243));}}catch(_0x3a995f){logger['warn'](_0x2dcb05(0x1f4),_0x2dcb05(0x245),{'error':_0x3a995f instanceof Error?_0x3a995f[_0x2dcb05(0x1f0)]:String(_0x3a995f),'files_count':_0x19071f[_0x2dcb05(0x23d)]});for(const _0x2f89d4 of _0x19071f){_0x442090[_0x2dcb05(0x1bb)](_0x2dcb05(0x1fd)+_0x2f89d4[_0x2dcb05(0x1b9)]+_0x2dcb05(0x24c)+_0x2f89d4[_0x2dcb05(0x17a)]+'\x0a</file>');}}_0x1093c1[_0x2dcb05(0x1bb)](_0x442090['join']('\x0a\x0a')),_0x8f7a3e=_0x1093c1['join']('\x0a');const _0xac0011=_0x5e72ee[_0x2dcb05(0x212)]?.[_0x2dcb05(0x163)](_0x2d43a8=>_0x2d43a8[_0x2dcb05(0x1f0)]?.[_0x2dcb05(0x1fc)](_0x2dcb05(0x181)))||[];if(_0xac0011[_0x2dcb05(0x23d)]>0x0){const _0x27153c=_0xac0011[_0x2dcb05(0x258)](_0x4e8673=>_0x4e8673['message'])[_0x2dcb05(0x1aa)](';\x20');reportMorphError({'error_message':_0x27153c,'error_type':'FileReadError','context':{'tool':_0x2dcb05(0x214),'repo_path':_0x109049[_0x2dcb05(0x24a)][_0x2dcb05(0x14e)],'query':_0x109049[_0x2dcb05(0x24a)][_0x2dcb05(0x19d)],'model':_0x2dcb05(0x195),'termination_reason':_0x2dcb05(0x1f6),'error_count':_0xac0011[_0x2dcb05(0x23d)],'is_timeout':![],'timings':_0x5e72ee['timings'],'files_attempted':_0x31e9b4[_0x2dcb05(0x258)](_0x2dca3e=>({'path':_0x2dca3e[_0x2dcb05(0x1b9)],'lines':_0x2dca3e[_0x2dcb05(0x15d)]})),'tool_calls':_0xf9b968(_0x5e72ee[_0x2dcb05(0x1d3)]),'messages':_0x5e72ee[_0x2dcb05(0x1d3)]?.['map'](_0x49c142=>({'role':_0x49c142['role'],'content':_0x49c142[_0x2dcb05(0x17a)],..._0x49c142[_0x2dcb05(0x227)]?{'tool_calls':_0x49c142[_0x2dcb05(0x227)][_0x2dcb05(0x23d)]}:{},..._0x49c142['tool_call_id']?{'tool_call_id':_0x49c142[_0x2dcb05(0x1cc)]}:{}})),'request_content':{'query':_0x109049[_0x2dcb05(0x24a)][_0x2dcb05(0x19d)],'repo_path':_0x109049['data'][_0x2dcb05(0x14e)],'repoRoot':a0_0x5d9af8['resolve'](_0x109049[_0x2dcb05(0x24a)][_0x2dcb05(0x14e)]),'model':_0x2dcb05(0x195)}},'source':_0x2dcb05(0x1ec)})[_0x2dcb05(0x266)](()=>{});}}else{if(_0x5e72ee[_0x2dcb05(0x190)]===_0x2dcb05(0x161)&&_0x5e72ee[_0x2dcb05(0x212)]['length']>0x0){const _0x357203=_0x5e72ee['errors'][_0x2dcb05(0x258)](_0x478a33=>_0x478a33[_0x2dcb05(0x1f0)])['join'](';\x20');_0x8f7a3e=_0x2dcb05(0x1d8)+_0x357203;const _0x1f296e=_0x357203[_0x2dcb05(0x21c)]()[_0x2dcb05(0x14d)]('timeout')||_0x357203['toLowerCase']()[_0x2dcb05(0x14d)]('timed\x20out')||_0x357203['toLowerCase']()[_0x2dcb05(0x14d)](_0x2dcb05(0x1ea)),_0x23e604=_0x5e72ee['finish']?.[_0x2dcb05(0x1dd)]?.[_0x2dcb05(0x20c)],_0xc9dc1b=_0x5e72ee[_0x2dcb05(0x212)][0x0];reportMorphError({'error_message':_0x357203,'error_type':_0x1f296e?_0x2dcb05(0x1e1):_0xc9dc1b?.[_0x2dcb05(0x223)]?.['name']||_0x2dcb05(0x147),'context':{'tool':_0x2dcb05(0x214),'repo_path':_0x109049[_0x2dcb05(0x24a)][_0x2dcb05(0x14e)],'query':_0x109049[_0x2dcb05(0x24a)][_0x2dcb05(0x19d)],'model':_0x2dcb05(0x195),'termination_reason':_0x5e72ee[_0x2dcb05(0x190)],'error_count':_0x5e72ee['errors'][_0x2dcb05(0x23d)],'is_timeout':_0x1f296e,'timings':_0x5e72ee[_0x2dcb05(0x251)],'files_attempted':_0x23e604?.[_0x2dcb05(0x258)](_0x4b3aa4=>({'path':_0x4b3aa4[_0x2dcb05(0x1b9)],'lines':_0x4b3aa4[_0x2dcb05(0x15d)]})),'tool_calls':_0xf9b968(_0x5e72ee[_0x2dcb05(0x1d3)]),'messages':_0x5e72ee[_0x2dcb05(0x1d3)]?.[_0x2dcb05(0x258)](_0x339132=>({'role':_0x339132['role'],'content':_0x339132[_0x2dcb05(0x17a)],..._0x339132[_0x2dcb05(0x227)]?{'tool_calls':_0x339132[_0x2dcb05(0x227)]['length']}:{},..._0x339132[_0x2dcb05(0x1cc)]?{'tool_call_id':_0x339132[_0x2dcb05(0x1cc)]}:{}})),'request_content':{'query':_0x109049['data']['search_string'],'repo_path':_0x109049[_0x2dcb05(0x24a)][_0x2dcb05(0x14e)],'repoRoot':a0_0x5d9af8[_0x2dcb05(0x144)](_0x109049[_0x2dcb05(0x24a)][_0x2dcb05(0x14e)]),'model':_0x2dcb05(0x195)}},'stack_trace':_0xc9dc1b?.[_0x2dcb05(0x1c0)]||undefined,'source':_0x2dcb05(0x1ec)})[_0x2dcb05(0x266)](()=>{});}else _0x8f7a3e='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0x2dcb05(0x197),'text':_0x8f7a3e}]};}catch(_0x47554e){const _0xad7d2=handleMorphAPIError(_0x47554e);if(_0xad7d2)return logger[_0x2dcb05(0x253)]('MCP',_0x2dcb05(0x1b7),{'tool':'codebase_search','error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date['now']()-_0x360870}),_0xad7d2;const _0x26bddf=_0x47554e instanceof Error?_0x47554e[_0x2dcb05(0x1f0)]:String(_0x47554e);logger['error'](_0x2dcb05(0x1f4),'tool_call_error',{'tool':_0x2dcb05(0x214),'error':_0x26bddf,'repo_path':_0x109049[_0x2dcb05(0x24a)][_0x2dcb05(0x14e)],'query':_0x109049[_0x2dcb05(0x24a)][_0x2dcb05(0x19d)],'latency_ms':Date[_0x2dcb05(0x215)]()-_0x360870});const _0x1fb4c6=_0x26bddf[_0x2dcb05(0x21c)]()[_0x2dcb05(0x14d)](_0x2dcb05(0x224))||_0x26bddf[_0x2dcb05(0x21c)]()[_0x2dcb05(0x14d)](_0x2dcb05(0x22a))||_0x26bddf[_0x2dcb05(0x21c)]()[_0x2dcb05(0x14d)](_0x2dcb05(0x1ea))||_0x47554e instanceof Error&&_0x47554e[_0x2dcb05(0x201)]===_0x2dcb05(0x1e1);return reportMorphError({'error_message':_0x26bddf,'error_type':_0x1fb4c6?_0x2dcb05(0x1e1):_0x47554e instanceof Error?_0x47554e[_0x2dcb05(0x223)]['name']:_0x2dcb05(0x178),'context':{'tool':_0x2dcb05(0x214),'repo_path':_0x109049['data'][_0x2dcb05(0x14e)],'query':_0x109049[_0x2dcb05(0x24a)][_0x2dcb05(0x19d)],'model':_0x2dcb05(0x195),'is_timeout':_0x1fb4c6,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x109049['data'][_0x2dcb05(0x19d)],'repo_path':_0x109049[_0x2dcb05(0x24a)]['repo_path'],'repoRoot':a0_0x5d9af8[_0x2dcb05(0x144)](_0x109049[_0x2dcb05(0x24a)][_0x2dcb05(0x14e)]),'model':_0x2dcb05(0x195)}},'stack_trace':_0x47554e instanceof Error?_0x47554e[_0x2dcb05(0x1c0)]:undefined,'source':_0x2dcb05(0x1ec)})[_0x2dcb05(0x266)](()=>{}),{'content':[{'type':_0x2dcb05(0x197),'text':_0x2dcb05(0x188)+_0x26bddf}],'isError':![]};}}case TOOL_NAMES[_0x2dcb05(0x1ac)]:{const _0x1ee8ac=WarpGrepGitHubArgsSchema['safeParse'](_0x5ba6d1);if(!_0x1ee8ac[_0x2dcb05(0x24b)])return{'content':[{'type':_0x2dcb05(0x197),'text':_0x2dcb05(0x218)+_0x1ee8ac[_0x2dcb05(0x253)]}],'isError':!![]};const _0x22c5c9=_0x1ee8ac[_0x2dcb05(0x24a)][_0x2dcb05(0x209)]||_0x1ee8ac[_0x2dcb05(0x24a)][_0x2dcb05(0x170)];if(!_0x22c5c9)return{'content':[{'type':_0x2dcb05(0x197),'text':_0x2dcb05(0x1cd)}],'isError':!![]};const _0x3ca06b=MORPH_API_KEY;if(!_0x3ca06b)throw new Error(_0x2dcb05(0x25d));const _0x2f560b=Date['now']();logger[_0x2dcb05(0x21e)](_0x2dcb05(0x1f4),_0x2dcb05(0x1c2),{'identifier':_0x22c5c9,'query':_0x1ee8ac[_0x2dcb05(0x24a)]['search_string'],'branch':_0x1ee8ac[_0x2dcb05(0x24a)][_0x2dcb05(0x1a7)]});try{const _0x1553f8=new WarpGrepClient({'morphApiKey':_0x3ca06b,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x4c7baf=await _0x1553f8[_0x2dcb05(0x1cb)]({'searchTerm':_0x1ee8ac[_0x2dcb05(0x24a)][_0x2dcb05(0x19d)],'github':_0x22c5c9,'branch':_0x1ee8ac[_0x2dcb05(0x24a)]['branch']}),_0x47b7fe=Date[_0x2dcb05(0x215)]()-_0x2f560b;logMcpStderr(_0x2dcb05(0x24f)+_0x47b7fe+_0x2dcb05(0x20b)+_0x4c7baf[_0x2dcb05(0x24b)]);const _0x177060=formatResult(_0x4c7baf);return{'content':[{'type':_0x2dcb05(0x197),'text':_0x177060}]};}catch(_0x11344b){const _0x46cf65=handleMorphAPIError(_0x11344b);if(_0x46cf65)return _0x46cf65;const _0x180291=Date[_0x2dcb05(0x215)]()-_0x2f560b,_0x5c4df4=_0x11344b instanceof Error?_0x11344b['message']:String(_0x11344b);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x180291+'ms:',_0x5c4df4),reportMorphError({'error_message':_0x5c4df4,'error_type':_0x11344b instanceof Error?_0x11344b[_0x2dcb05(0x223)]['name']:'UnknownError','context':{'tool':_0x2dcb05(0x172),'github_url':_0x22c5c9,'search_string':_0x1ee8ac['data'][_0x2dcb05(0x19d)],'branch':_0x1ee8ac[_0x2dcb05(0x24a)][_0x2dcb05(0x1a7)]},'stack_trace':_0x11344b instanceof Error?_0x11344b[_0x2dcb05(0x1c0)]:undefined,'source':_0x2dcb05(0x1ec),'tool':'github_codebase_search','latency_ms':_0x180291})['catch'](()=>{}),{'content':[{'type':_0x2dcb05(0x197),'text':_0x2dcb05(0x221)+_0x5c4df4}],'isError':![]};}}default:throw new Error(_0x2dcb05(0x1da)+_0x2dec45);}}catch(_0xaabe83){const _0x54b1f0=_0xaabe83 instanceof Error?_0xaabe83[_0x2dcb05(0x1f0)]:String(_0xaabe83);return reportMorphError({'error_message':_0x54b1f0,'error_type':_0xaabe83 instanceof Error?_0xaabe83[_0x2dcb05(0x223)][_0x2dcb05(0x201)]:'UnknownError','context':{'tool':_0x2dec45,'arguments':_0x5ba6d1?JSON[_0x2dcb05(0x19f)](_0x5ba6d1)[_0x2dcb05(0x1b0)](0x0,0x1f4):undefined,'mcp_server_version':_0x2dcb05(0x153)},'stack_trace':_0xaabe83 instanceof Error?_0xaabe83[_0x2dcb05(0x1c0)]:undefined,'source':_0x2dcb05(0x1ec)})[_0x2dcb05(0x266)](()=>{}),{'content':[{'type':_0x2dcb05(0x197),'text':_0x2dcb05(0x1d8)+_0x54b1f0}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x53ae6d){const _0xc1eb9a=a0_0x2520b9,_0x5d6430=await getValidRootDirectories(_0x53ae6d);if(_0x5d6430[_0xc1eb9a(0x23d)]>0x0)allowedDirectories=[..._0x5d6430],logMcpStderr(_0xc1eb9a(0x257)+_0x5d6430[_0xc1eb9a(0x23d)]+'\x20valid\x20directories');else{logMcpStderr(_0xc1eb9a(0x18c));if(ENABLE_WORKSPACE_MODE)try{const _0x381d0c=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x381d0c&&(allowedDirectories=[_0x381d0c],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x381d0c));}catch(_0x36ed4f){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x36ed4f);}}}server[a0_0x2520b9(0x208)](RootsListChangedNotificationSchema,async()=>{const _0x88fcbf=a0_0x2520b9;try{const _0x4cd03e=await server[_0x88fcbf(0x177)]();_0x4cd03e&&_0x88fcbf(0x17f)in _0x4cd03e&&await updateAllowedDirectoriesFromRoots(_0x4cd03e[_0x88fcbf(0x17f)]);}catch(_0x5c20aa){logMcpStderr(_0x88fcbf(0x1c9),_0x5c20aa instanceof Error?_0x5c20aa[_0x88fcbf(0x1f0)]:String(_0x5c20aa));}}),server[a0_0x2520b9(0x19b)]=async()=>{const _0x4f2502=a0_0x2520b9,_0x53aea2=server['getClientCapabilities']();if(_0x53aea2?.[_0x4f2502(0x17f)])try{const _0x421267=await server[_0x4f2502(0x177)]();_0x421267&&_0x4f2502(0x17f)in _0x421267?await updateAllowedDirectoriesFromRoots(_0x421267[_0x4f2502(0x17f)]):logMcpStderr(_0x4f2502(0x17e));}catch(_0x3e2977){logMcpStderr(_0x4f2502(0x1e0),_0x3e2977 instanceof Error?_0x3e2977['message']:String(_0x3e2977));}else{if(allowedDirectories[_0x4f2502(0x23d)]>0x0)logMcpStderr(_0x4f2502(0x199),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x4f2502(0x1e4));}}};async function runServer(){const _0x54e53b=a0_0x2520b9,_0x504613=new StdioServerTransport();await server['connect'](_0x504613),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x54e53b(0x23d)]===0x0&&logMcpStderr(_0x54e53b(0x1d4));}runServer()[a0_0x2520b9(0x266)](_0x37178c=>{const _0x95ea60=a0_0x2520b9;logMcpStderr(_0x95ea60(0x1a2),_0x37178c),process['exit'](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var a1_0x5e9d4c=a1_0x4c2a;function a1_0x4c2a(_0x246188,_0x479b78){_0x246188=_0x246188-0x79;var _0x4ccad4=a1_0x4cca();var _0x4c2a57=_0x4ccad4[_0x246188];return _0x4c2a57;}(function(_0x2f0034,_0x321df2){var _0x113767=a1_0x4c2a,_0xf14809=_0x2f0034();while(!![]){try{var _0x5a5e0e=parseInt(_0x113767(0x7d))/0x1*(-parseInt(_0x113767(0x8a))/0x2)+parseInt(_0x113767(0x85))/0x3+parseInt(_0x113767(0x7b))/0x4+-parseInt(_0x113767(0x89))/0x5+-parseInt(_0x113767(0x83))/0x6+-parseInt(_0x113767(0x8b))/0x7*(-parseInt(_0x113767(0x82))/0x8)+parseInt(_0x113767(0x7e))/0x9*(parseInt(_0x113767(0x8c))/0xa);if(_0x5a5e0e===_0x321df2)break;else _0xf14809['push'](_0xf14809['shift']());}catch(_0x35ab5d){_0xf14809['push'](_0xf14809['shift']());}}}(a1_0x4cca,0xb441d));import a1_0x5f38c3 from'os';import{logger}from'./logger.js';export function getOperatingSystemType(_0x2f4f5e=a1_0x5f38c3[a1_0x5e9d4c(0x7a)]()){var _0x290fb3=a1_0x5e9d4c;switch(_0x2f4f5e){case _0x290fb3(0x84):return _0x290fb3(0x79);case _0x290fb3(0x80):return _0x290fb3(0x7c);case _0x290fb3(0x86):return _0x290fb3(0x88);default:return'Unknown';}}export function formatMcpLogMessage(_0x1d251a,_0x4b6fa9=a1_0x5f38c3[a1_0x5e9d4c(0x7a)]()){var _0x5423a6=a1_0x5e9d4c;return _0x5423a6(0x87)+getOperatingSystemType(_0x4b6fa9)+']\x20'+_0x1d251a;}export function logMcpStderr(_0x1f2a1a,..._0x6f292){var _0x531e98=a1_0x5e9d4c;console['error'](formatMcpLogMessage(_0x1f2a1a),..._0x6f292),logger['info'](_0x531e98(0x8d),_0x1f2a1a,_0x6f292[_0x531e98(0x81)]?{'args':_0x6f292[_0x531e98(0x7f)](_0x5d9859=>String(_0x5d9859))}:undefined);}function a1_0x4cca(){var _0x1af40d=['7355800BBTFuC','54KcTBCN','3486287PmLgwO','1744440hyYdZf','MCP','macOS','platform','1511368YzvoMz','Windows','19345KaWfFK','153CPdFdM','map','win32','length','8SUYemc','6959688uhcHbl','darwin','150975aAAkjt','linux','[os=','Linux'];a1_0x4cca=function(){return _0x1af40d;};return a1_0x4cca();}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
function a2_0x53de(_0x5c8411,_0x125d33){_0x5c8411=_0x5c8411-0x170;const _0x39a897=a2_0x39a8();let _0x53dea5=_0x39a897[_0x5c8411];return _0x53dea5;}const a2_0x3a93=a2_0x53de;(function(_0x60629,_0x56c8db){const _0x40d6eb=a2_0x53de,_0x1fb7cb=_0x60629();while(!![]){try{const _0x5b1788=-parseInt(_0x40d6eb(0x17b))/0x1+-parseInt(_0x40d6eb(0x180))/0x2*(-parseInt(_0x40d6eb(0x17f))/0x3)+parseInt(_0x40d6eb(0x17a))/0x4+-parseInt(_0x40d6eb(0x175))/0x5*(-parseInt(_0x40d6eb(0x17d))/0x6)+-parseInt(_0x40d6eb(0x172))/0x7+parseInt(_0x40d6eb(0x187))/0x8*(-parseInt(_0x40d6eb(0x170))/0x9)+parseInt(_0x40d6eb(0x182))/0xa;if(_0x5b1788===_0x56c8db)break;else _0x1fb7cb['push'](_0x1fb7cb['shift']());}catch(_0x51610f){_0x1fb7cb['push'](_0x1fb7cb['shift']());}}}(a2_0x39a8,0x2118e));import{createWriteStream}from'fs';function a2_0x39a8(){const _0xfa596=['41069QijhMC','enabled','6RmFLZF','enable','21sVLXYv','17214soXGJq','_log','1804750qeRBtu',']\x20[','toUpperCase','warn','isEnabled','8hKPBTM','1851804rkrQWM','debug','567798PcyXEZ','fileStream','error','99765JbTGKk','write','stringify','MORPH_LOG_FILE','info','811312tHuqIC'];a2_0x39a8=function(){return _0xfa596;};return a2_0x39a8();}class MorphLogger{[a2_0x3a93(0x17c)];[a2_0x3a93(0x173)];constructor(){const _0x33b7e8=a2_0x3a93;this['enabled']=process['env']['MORPH_DEBUG']==='1'||!!process['env'][_0x33b7e8(0x178)];const _0x8288f9=process['env'][_0x33b7e8(0x178)];this[_0x33b7e8(0x173)]=_0x8288f9?createWriteStream(_0x8288f9,{'flags':'a'}):null;}[a2_0x3a93(0x171)](_0x43f88d,_0xd904df,_0x55208d){const _0x2dab58=a2_0x3a93;this[_0x2dab58(0x181)](_0x2dab58(0x171),_0x43f88d,_0xd904df,_0x55208d);}[a2_0x3a93(0x179)](_0x297fcf,_0x395973,_0x45ea1e){const _0x18a959=a2_0x3a93;this['_log'](_0x18a959(0x179),_0x297fcf,_0x395973,_0x45ea1e);}[a2_0x3a93(0x185)](_0x465bbc,_0x251d38,_0x4ebf54){const _0x1ce6f9=a2_0x3a93;this['_log'](_0x1ce6f9(0x185),_0x465bbc,_0x251d38,_0x4ebf54);}[a2_0x3a93(0x174)](_0x292f93,_0x4e8468,_0x3727ec){const _0x1d76e1=a2_0x3a93;this[_0x1d76e1(0x181)]('error',_0x292f93,_0x4e8468,_0x3727ec);}[a2_0x3a93(0x17e)](){const _0x1e5a54=a2_0x3a93;this[_0x1e5a54(0x17c)]=!![];}get[a2_0x3a93(0x186)](){const _0x65c63f=a2_0x3a93;return this[_0x65c63f(0x17c)];}['_log'](_0x58e723,_0x41609a,_0x51fbd6,_0x306c10){const _0x733ce3=a2_0x3a93;if(_0x58e723!==_0x733ce3(0x174)&&!this['enabled'])return;const _0x7ca2f2=new Date()['toISOString'](),_0x2e4228='['+_0x7ca2f2+_0x733ce3(0x183)+_0x58e723[_0x733ce3(0x184)]()+_0x733ce3(0x183)+_0x41609a+']';console[_0x733ce3(0x174)](_0x306c10?_0x2e4228+'\x20'+_0x51fbd6+'\x20'+JSON['stringify'](_0x306c10):_0x2e4228+'\x20'+_0x51fbd6),this[_0x733ce3(0x173)]?.[_0x733ce3(0x176)](JSON[_0x733ce3(0x177)]({'ts':_0x7ca2f2,'level':_0x58e723,'component':_0x41609a,'msg':_0x51fbd6,..._0x306c10&&{'data':_0x306c10}})+'\x0a');}}export const logger=new MorphLogger();
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a3_0x35a4(){const _0x5c3711=['slice','test','match','startsWith','1967388rtBecl','394447PITmaZ','1318706cEXdeb','839270ycCabX','trim','/mnt/','normalize','join','homedir','substring','7875630nxHisp','replace','1848968mfduuK','charAt','1458810wboaVV','toUpperCase'];a3_0x35a4=function(){return _0x5c3711;};return a3_0x35a4();}function a3_0x2a2d(_0x4bc748,_0x3d7d2a){_0x4bc748=_0x4bc748-0x14b;const _0x35a491=a3_0x35a4();let _0x2a2ddc=_0x35a491[_0x4bc748];return _0x2a2ddc;}(function(_0x35ec47,_0x4023c8){const _0x567d26=a3_0x2a2d,_0x2ab1c4=_0x35ec47();while(!![]){try{const _0x486c1d=-parseInt(_0x567d26(0x15c))/0x1+-parseInt(_0x567d26(0x15d))/0x2+parseInt(_0x567d26(0x15b))/0x3+-parseInt(_0x567d26(0x153))/0x4+-parseInt(_0x567d26(0x15e))/0x5+parseInt(_0x567d26(0x155))/0x6+parseInt(_0x567d26(0x151))/0x7;if(_0x486c1d===_0x4023c8)break;else _0x2ab1c4['push'](_0x2ab1c4['shift']());}catch(_0xb957e5){_0x2ab1c4['push'](_0x2ab1c4['shift']());}}}(a3_0x35a4,0x5309d));import a3_0x447e75 from'path';import a3_0x109140 from'os';export function convertToWindowsPath(_0x5bbae){const _0x36c897=a3_0x2a2d;if(_0x5bbae[_0x36c897(0x15a)](_0x36c897(0x14c))){const _0x18d65e=_0x5bbae['charAt'](0x5)[_0x36c897(0x156)](),_0x340d18=_0x5bbae[_0x36c897(0x157)](0x6)[_0x36c897(0x152)](/\//g,'\x5c');return _0x18d65e+':'+_0x340d18;}if(_0x5bbae['match'](/^\/[a-zA-Z]\//)){const _0x2e52a7=_0x5bbae[_0x36c897(0x154)](0x1)[_0x36c897(0x156)](),_0x2c3671=_0x5bbae[_0x36c897(0x157)](0x2)[_0x36c897(0x152)](/\//g,'\x5c');return _0x2e52a7+':'+_0x2c3671;}if(_0x5bbae[_0x36c897(0x159)](/^[a-zA-Z]:/))return _0x5bbae[_0x36c897(0x152)](/\//g,'\x5c');return _0x5bbae;}export function normalizePath(_0xf81622){const _0x1c7201=a3_0x2a2d;_0xf81622=_0xf81622[_0x1c7201(0x14b)]()[_0x1c7201(0x152)](/^["']|["']$/g,'');const _0x39b18b=_0xf81622[_0x1c7201(0x15a)]('/')&&!_0xf81622[_0x1c7201(0x159)](/^\/mnt\/[a-z]\//i)&&!_0xf81622[_0x1c7201(0x159)](/^\/[a-zA-Z]\//);if(_0x39b18b)return _0xf81622[_0x1c7201(0x152)](/\/+/g,'/')[_0x1c7201(0x152)](/\/+$/,'');_0xf81622=convertToWindowsPath(_0xf81622);if(_0xf81622[_0x1c7201(0x15a)]('\x5c\x5c')){let _0x22f841=_0xf81622;_0x22f841=_0x22f841[_0x1c7201(0x152)](/^\\{2,}/,'\x5c\x5c');const _0x1ca244=_0x22f841[_0x1c7201(0x150)](0x2)[_0x1c7201(0x152)](/\\\\/g,'\x5c');_0xf81622='\x5c\x5c'+_0x1ca244;}else _0xf81622=_0xf81622[_0x1c7201(0x152)](/\\\\/g,'\x5c');let _0x38e9d3=a3_0x447e75[_0x1c7201(0x14d)](_0xf81622);_0xf81622[_0x1c7201(0x15a)]('\x5c\x5c')&&!_0x38e9d3[_0x1c7201(0x15a)]('\x5c\x5c')&&(_0x38e9d3='\x5c'+_0x38e9d3);if(_0x38e9d3['match'](/^[a-zA-Z]:/)){let _0x3804d4=_0x38e9d3[_0x1c7201(0x152)](/\//g,'\x5c');return/^[a-z]:/[_0x1c7201(0x158)](_0x3804d4)&&(_0x3804d4=_0x3804d4[_0x1c7201(0x154)](0x0)[_0x1c7201(0x156)]()+_0x3804d4[_0x1c7201(0x157)](0x1)),_0x3804d4;}return _0x38e9d3[_0x1c7201(0x152)](/\//g,'\x5c');}export function expandHome(_0x216aa4){const _0x40bd58=a3_0x2a2d;if(_0x216aa4['startsWith']('~/')||_0x216aa4==='~')return a3_0x447e75[_0x40bd58(0x14e)](a3_0x109140[_0x40bd58(0x14f)](),_0x216aa4['slice'](0x1));return _0x216aa4;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x4aef70,_0x5ba961){const _0x5d23a7=a4_0x5932,_0x2c425d=_0x4aef70();while(!![]){try{const _0x29f334=parseInt(_0x5d23a7(0x161))/0x1+parseInt(_0x5d23a7(0x154))/0x2+parseInt(_0x5d23a7(0x15b))/0x3+-parseInt(_0x5d23a7(0x158))/0x4+-parseInt(_0x5d23a7(0x157))/0x5+-parseInt(_0x5d23a7(0x15e))/0x6+-parseInt(_0x5d23a7(0x15d))/0x7;if(_0x29f334===_0x5ba961)break;else _0x2c425d['push'](_0x2c425d['shift']());}catch(_0x967613){_0x2c425d['push'](_0x2c425d['shift']());}}}(a4_0xbdf7,0xad5d9));function a4_0x5932(_0x4819a9,_0x1bcf98){_0x4819a9=_0x4819a9-0x153;const _0xbdf7cb=a4_0xbdf7();let _0x593238=_0xbdf7cb[_0x4819a9];return _0x593238;}function a4_0xbdf7(){const _0x1a7b1b=['startsWith','some','6182060OlxXRC','2519388rtxDwW','normalize','resolve','3576375woCVEw','isArray','138257ZKzrtG','621072FPBmqr','string','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','1413745Nyzgby','length','sep','isAbsolute','includes','187514SVensI'];a4_0xbdf7=function(){return _0x1a7b1b;};return a4_0xbdf7();}import a4_0x325786 from'path';export function isPathWithinAllowedDirectories(_0x244747,_0x494255){const _0x44a2c9=a4_0x5932;if(typeof _0x244747!==_0x44a2c9(0x15f)||!Array[_0x44a2c9(0x15c)](_0x494255))return![];if(!_0x244747||_0x494255[_0x44a2c9(0x162)]===0x0)return![];if(_0x244747[_0x44a2c9(0x153)]('\x00'))return![];let _0x48dec6;try{_0x48dec6=a4_0x325786[_0x44a2c9(0x15a)](a4_0x325786[_0x44a2c9(0x159)](_0x244747));}catch{return![];}if(!a4_0x325786['isAbsolute'](_0x48dec6))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x494255[_0x44a2c9(0x156)](_0x47fab4=>{const _0x489dc1=_0x44a2c9;if(typeof _0x47fab4!==_0x489dc1(0x15f)||!_0x47fab4)return![];if(_0x47fab4['includes']('\x00'))return![];let _0x5cae71;try{_0x5cae71=a4_0x325786[_0x489dc1(0x15a)](a4_0x325786[_0x489dc1(0x159)](_0x47fab4));}catch{return![];}if(!a4_0x325786[_0x489dc1(0x164)](_0x5cae71))throw new Error(_0x489dc1(0x160));if(_0x48dec6===_0x5cae71)return!![];if(_0x5cae71===a4_0x325786[_0x489dc1(0x163)])return _0x48dec6['startsWith'](a4_0x325786[_0x489dc1(0x163)]);return _0x48dec6[_0x489dc1(0x155)](_0x5cae71+a4_0x325786[_0x489dc1(0x163)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x3d21cb,_0x4eaeca){const _0x817961=a5_0x73a0,_0x310f48=_0x3d21cb();while(!![]){try{const _0x367e2b=parseInt(_0x817961(0xe4))/0x1+-parseInt(_0x817961(0xe5))/0x2*(-parseInt(_0x817961(0xdc))/0x3)+parseInt(_0x817961(0xe9))/0x4+-parseInt(_0x817961(0xef))/0x5+parseInt(_0x817961(0xee))/0x6+-parseInt(_0x817961(0xeb))/0x7*(parseInt(_0x817961(0xec))/0x8)+-parseInt(_0x817961(0xe6))/0x9;if(_0x367e2b===_0x4eaeca)break;else _0x310f48['push'](_0x310f48['shift']());}catch(_0x3e6e19){_0x310f48['push'](_0x310f48['shift']());}}}(a5_0x3727,0x98951));function a5_0x3727(){const _0x1265e5=['invalid\x20path\x20or\x20inaccessible','slice','2572047EbbYOW','Skipping\x20','push','homedir','\x20due\x20to\x20error:\x20','non-directory\x20root','stat','join','1184252MVLCWE','2JERgBx','13323798rNlfxT','isDirectory','file://','1595492MWUyVm','Skipping\x20invalid\x20directory:\x20','329gpGiwh','181096qiXPKW','resolve','6203292paScDM','1525090EsxIJd','uri','startsWith','realpath'];a5_0x3727=function(){return _0x1265e5;};return a5_0x3727();}function a5_0x73a0(_0x61f9b9,_0x58a66d){_0x61f9b9=_0x61f9b9-0xdb;const _0x3727a1=a5_0x3727();let _0x73a073=_0x3727a1[_0x61f9b9];return _0x73a073;}import{promises as a5_0x3a3e69}from'fs';import a5_0x4ff95b from'path';import a5_0x5194db from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0xbab843){const _0x2d155f=a5_0x73a0;try{const _0x233914=_0xbab843[_0x2d155f(0xf1)](_0x2d155f(0xe8))?_0xbab843[_0x2d155f(0xdb)](0x7):_0xbab843,_0x21036f=_0x233914['startsWith']('~/')||_0x233914==='~'?a5_0x4ff95b[_0x2d155f(0xe3)](a5_0x5194db[_0x2d155f(0xdf)](),_0x233914[_0x2d155f(0xdb)](0x1)):_0x233914,_0x15f5c9=a5_0x4ff95b[_0x2d155f(0xed)](_0x21036f),_0x450cf2=await a5_0x3a3e69[_0x2d155f(0xf2)](_0x15f5c9);return normalizePath(_0x450cf2);}catch{return null;}}function formatDirectoryError(_0x235675,_0x1adcf4,_0xbb10a6){const _0x138c67=a5_0x73a0;if(_0xbb10a6)return _0x138c67(0xdd)+_0xbb10a6+':\x20'+_0x235675;const _0x4906fe=_0x1adcf4 instanceof Error?_0x1adcf4['message']:String(_0x1adcf4);return _0x138c67(0xea)+_0x235675+_0x138c67(0xe0)+_0x4906fe;}export async function getValidRootDirectories(_0x32344f){const _0xcb72aa=a5_0x73a0,_0x29dcba=[];for(const _0x1bb28a of _0x32344f){const _0x4bff0a=await parseRootUri(_0x1bb28a[_0xcb72aa(0xf0)]);if(!_0x4bff0a){logMcpStderr(formatDirectoryError(_0x1bb28a[_0xcb72aa(0xf0)],undefined,_0xcb72aa(0xf3)));continue;}try{const _0x3c90e3=await a5_0x3a3e69[_0xcb72aa(0xe2)](_0x4bff0a);_0x3c90e3[_0xcb72aa(0xe7)]()?_0x29dcba[_0xcb72aa(0xde)](_0x4bff0a):logMcpStderr(formatDirectoryError(_0x4bff0a,undefined,_0xcb72aa(0xe1)));}catch(_0xce9f13){logMcpStderr(formatDirectoryError(_0x4bff0a,_0xce9f13));}}return _0x29dcba;}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a6_0x4a5e15=a6_0x4aad;(function(_0x4f3304,_0x3882d3){const _0x1305c8=a6_0x4aad,_0x23d874=_0x4f3304();while(!![]){try{const _0xc0eddd=-parseInt(_0x1305c8(0xae))/0x1*(-parseInt(_0x1305c8(0xb3))/0x2)+parseInt(_0x1305c8(0xba))/0x3+-parseInt(_0x1305c8(0xb7))/0x4+parseInt(_0x1305c8(0xbb))/0x5*(-parseInt(_0x1305c8(0xb9))/0x6)+-parseInt(_0x1305c8(0xb4))/0x7*(parseInt(_0x1305c8(0xb0))/0x8)+-parseInt(_0x1305c8(0xb8))/0x9+parseInt(_0x1305c8(0xb1))/0xa;if(_0xc0eddd===_0x3882d3)break;else _0x23d874['push'](_0x23d874['shift']());}catch(_0x37f455){_0x23d874['push'](_0x23d874['shift']());}}}(a6_0x1575,0xd17a4));export const TOOL_NAMES={'EDIT_FILE':a6_0x4a5e15(0xb2),'CODEBASE_SEARCH':a6_0x4a5e15(0xb5),'GITHUB_CODEBASE_SEARCH':a6_0x4a5e15(0xb6)};export const ALL_TOOL_NAMES=Object[a6_0x4a5e15(0xaf)](TOOL_NAMES);function a6_0x4aad(_0x41ba89,_0x1d4255){_0x41ba89=_0x41ba89-0xae;const _0x15755a=a6_0x1575();let _0x4aadf9=_0x15755a[_0x41ba89];return _0x4aadf9;}function a6_0x1575(){const _0x1296af=['8TxvOYv','13520410YUXojw','edit_file','2ORggUx','1297184dMCdxi','codebase_search','github_codebase_search','3392508SEnYVd','8977023vhTfkR','18FeSMDQ','4828428aYnzid','1404710POWAkS','770215HQMYxF','values'];a6_0x1575=function(){return _0x1296af;};return a6_0x1575();}export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.175",
|
|
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)",
|