@morphllm/morphmcp 0.8.175 → 0.8.176
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_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);});
|
|
2
|
+
const a0_0x5a063c=a0_0x5bca;(function(_0x2e27f5,_0xa40f2f){const _0x34350b=a0_0x5bca,_0x47d6c0=_0x2e27f5();while(!![]){try{const _0x39c39b=-parseInt(_0x34350b(0xc4))/0x1*(parseInt(_0x34350b(0x110))/0x2)+parseInt(_0x34350b(0x10c))/0x3*(-parseInt(_0x34350b(0x16f))/0x4)+parseInt(_0x34350b(0x132))/0x5*(-parseInt(_0x34350b(0xad))/0x6)+parseInt(_0x34350b(0xd5))/0x7*(-parseInt(_0x34350b(0x1b4))/0x8)+-parseInt(_0x34350b(0x9d))/0x9+parseInt(_0x34350b(0xd6))/0xa+parseInt(_0x34350b(0xcc))/0xb;if(_0x39c39b===_0xa40f2f)break;else _0x47d6c0['push'](_0x47d6c0['shift']());}catch(_0x2c2a9a){_0x47d6c0['push'](_0x47d6c0['shift']());}}}(a0_0x3875,0x73784));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_0x7e6f8f from'fs/promises';import a0_0x4ae722 from'path';import a0_0x16ba9c 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';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_0x21ce90 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x4f1756){const _0x524a88=a0_0x5bca,_0x1e04a9=_0x4f1756[_0x524a88(0x152)](a0_0x4ae722['sep'])[_0x524a88(0x192)](Boolean);if(_0x1e04a9['length']<0x2)return null;for(let _0x393db6=Math[_0x524a88(0x148)](_0x1e04a9[_0x524a88(0x14a)]/0x2);_0x393db6>=0x1;_0x393db6--){for(let _0x29657f=0x0;_0x29657f<=_0x1e04a9[_0x524a88(0x14a)]-0x2*_0x393db6;_0x29657f++){const _0x50af0e=_0x1e04a9[_0x524a88(0xf5)](_0x29657f,_0x29657f+_0x393db6),_0x2d4076=_0x1e04a9[_0x524a88(0xf5)](_0x29657f+_0x393db6,_0x29657f+0x2*_0x393db6);if(_0x50af0e['every']((_0x42b68c,_0x4ffcb3)=>_0x42b68c===_0x2d4076[_0x4ffcb3])){const _0x459255=[..._0x1e04a9[_0x524a88(0xf5)](0x0,_0x29657f),..._0x1e04a9[_0x524a88(0xf5)](_0x29657f+_0x393db6)];return a0_0x4ae722[_0x524a88(0x116)]+_0x459255[_0x524a88(0x176)](a0_0x4ae722['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x2d4d3a=a0_0x5bca;try{const _0x48f01a=require(_0x2d4d3a(0x12c));return _0x48f01a['version']??_0x2d4d3a(0x195);}catch(_0x7bec4c){return logMcpStderr(_0x2d4d3a(0x133),_0x7bec4c),_0x2d4d3a(0x195);}}function printHelp(){const _0x5c27ae=a0_0x5bca;console[_0x5c27ae(0x109)](_0x5c27ae(0x102)+getPackageVersion()),console[_0x5c27ae(0x109)](_0x5c27ae(0x107)),console[_0x5c27ae(0x109)](_0x5c27ae(0x197)),console[_0x5c27ae(0x109)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x5c27ae(0x109)](_0x5c27ae(0x13c)),console[_0x5c27ae(0x109)](_0x5c27ae(0xb2)),console[_0x5c27ae(0x109)](_0x5c27ae(0xe0)),console[_0x5c27ae(0x109)]('\x20\x20morph-mcp'),console[_0x5c27ae(0x109)](_0x5c27ae(0x162));}const cliArgs=process['argv']['slice'](0x2),VERSION_FLAGS=new Set([a0_0x5a063c(0x160),'-v','-V']),HELP_FLAGS=new Set([a0_0x5a063c(0xd2),'-h']);cliArgs[a0_0x5a063c(0xcb)](_0x29f6f8=>VERSION_FLAGS[a0_0x5a063c(0x187)](_0x29f6f8))&&(console[a0_0x5a063c(0x109)]('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x5a063c(0xd1)](0x0));cliArgs[a0_0x5a063c(0xcb)](_0x32484e=>HELP_FLAGS[a0_0x5a063c(0x187)](_0x32484e))&&(printHelp(),process[a0_0x5a063c(0xd1)](0x0));function a0_0x5bca(_0xaa205c,_0x4d7092){_0xaa205c=_0xaa205c-0x85;const _0x38758a=a0_0x3875();let _0x5bca21=_0x38758a[_0xaa205c];return _0x5bca21;}function getCliArg(_0x411f5d){const _0xdccabd=a0_0x5a063c;for(let _0x5bf52c=0x0;_0x5bf52c<cliArgs[_0xdccabd(0x14a)];_0x5bf52c++){const _0x35255a=cliArgs[_0x5bf52c];if(_0x35255a['startsWith']('--'+_0x411f5d+'='))return _0x35255a[_0xdccabd(0xf5)](('--'+_0x411f5d+'=')['length']);if(_0x35255a==='--'+_0x411f5d&&_0x5bf52c+0x1<cliArgs[_0xdccabd(0x14a)])return cliArgs[_0x5bf52c+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x5a063c(0x14a)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x5a063c(0x187)](arg)||HELP_FLAGS[a0_0x5a063c(0x187)](arg))continue;if(arg[a0_0x5a063c(0x1ad)](a0_0x5a063c(0xce)))continue;if(arg===a0_0x5a063c(0x167)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process['env']['WORKSPACE_ROOT']||process[a0_0x5a063c(0xda)][a0_0x5a063c(0xe7)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x5a063c(0xda)][a0_0x5a063c(0x190)]!==a0_0x5a063c(0x12d),MORPH_API_KEY=getCliArg(a0_0x5a063c(0xdc))??process['env'][a0_0x5a063c(0x124)],MORPH_API_URL=process['env'][a0_0x5a063c(0x14d)],MORPH_LARGE_APPLY=process[a0_0x5a063c(0xda)]['MORPH_LARGE_APPLY']!=='false',MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x5a063c(0x16e)]?parseInt(process[a0_0x5a063c(0xda)][a0_0x5a063c(0x16e)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x5a063c(0xda)][a0_0x5a063c(0xb3)]?new Set(process['env'][a0_0x5a063c(0xb3)][a0_0x5a063c(0x152)](',')[a0_0x5a063c(0x165)](_0x4df1fa=>_0x4df1fa[a0_0x5a063c(0x161)]())['filter'](_0x191b0c=>_0x191b0c[a0_0x5a063c(0x14a)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS['size']>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x5a063c(0x172)](a0_0x5a063c(0x8c)+tool+a0_0x5a063c(0xa4)+[...KNOWN_TOOL_NAMES][a0_0x5a063c(0x176)](',\x20'));}console['error'](a0_0x5a063c(0xba)+[...DISABLED_TOOLS][a0_0x5a063c(0x176)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5a063c(0x1ad)](a0_0x5a063c(0x155))&&!MORPH_API_KEY[a0_0x5a063c(0x1ad)](a0_0x5a063c(0xb1))&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x1a7585){const _0x17137a=a0_0x5a063c;try{await a0_0x21ce90['post'](_0x17137a(0x17c),{..._0x1a7585,'timestamp':new Date()[_0x17137a(0x14f)](),'source':_0x1a7585[_0x17137a(0x115)]||_0x17137a(0x150),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x1a7585[_0x17137a(0x1a3)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x17137a(0x134),'Authorization':_0x17137a(0x149)+MORPH_API_KEY}});}catch{}}function a0_0x3875(){const _0x307d0c=['isArray','arguments','1025PZxSJk','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','application/json','completionId','tool_calls','Morph\x20Edit\x20','setNotificationHandler','\x20disabled\x20via\x20DISABLED_TOOLS','added\x20','Error\x20running\x20fast\x20context\x20search:\x20','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','params','UnknownError','string','.\x20Path:\x20','GitHub\x20search\x20failed:\x20','dryRun','number','default','tsconfig.json','object','github_codebase_search','floor','Bearer\x20','length','morph-mcp','Unknown\x20tool:\x20','MORPH_API_URL','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','toISOString','mcp-filesystem','edit_file','split','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','sk-','[github_codebase_search]\x20Failed\x20in\x20','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','linesAdded','linesModified','terminationReason','stack','optional','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','\x20error(s)','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','--version','trim','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','list_directory','lines','map','min','--api-key','warn','resolve','Warning:\x20','\x27\x20in\x20`','terminated','BinaryFile','MORPH_WARP_GREP_TIMEOUT','8404aYnNWM','GITHUB_CODEBASE_SEARCH','-\x20Glob\x20search\x20`','error','searchGitHub','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','SubToolError','join','Fallback:\x20Using\x20workspace\x20root\x20','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','ms:','oninitialized','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','https://morphllm.com/api/error-report','0.2.0','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','file_read_failed','PathError','Warning:\x20Workspace\x20fallback\x20failed:\x20','pattern','search_type','LocalRipgrepProvider','etimedout','morph-v3-large','has','now','RipgrepNotAvailable','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','TimeoutError','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','`\x20in\x20`','dirname','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','ENABLE_WORKSPACE_MODE','api_request_start','filter','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','unknown','-\x20Preserve\x20exact\x20indentation\x0a','\x0aOptions:','path_validation_failed','listRoots','.\x20Changes:\x20','description','package.json','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','linesRemoved','Specific\x20commit\x20hash\x20to\x20search','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','Error:\x20','boolean','context','\x22>\x0aError\x20reading\x20file:\x20','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','access','unknown\x20error','assistant','morph-warp-grep-v2.1','SymlinkError','status','errors','startsWith','MCP','message','instructions','includes','Max\x20results\x20to\x20return','glob\x20\x27','64lRwbms','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','read\x20','instruction','file','Workspace\x20mode\x20enabled:\x20Using\x20','stringify','inputSchema','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','Rules:\x0a','substring','changes','realpath','Tool\x20','catch','content','array','Parameters:\x0a','tool_call_id','WarpGrepError','ms.\x20Success:\x20','warp_grep_complete','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','8163162JOHuNi','go.mod','match','setRequestHandler','glob','github_url','ReadError','\x22.\x20Known\x20tools:\x20','function','codebase_search','command','messages','\x20(new\x20file)','completed_with_file_errors','-\x20Read\x20file\x20`','\x22>\x0a','21954sqFQFp','finish','success','branch','morph-','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','DISABLED_TOOLS','stat','response','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.','path','safeParse','Preview\x20changes\x20without\x20applying\x20them.','Disabled\x20tools:\x20','parse','enum','compaction_failed','roots','Cargo.toml','read','utf-8','File\x20read\x20error:','CODEBASE_SEARCH','29LpyFMD','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','list_directory\x20','name','github_search_start','Morph\x20FastApply\x20failed\x20without\x20error\x20message','composer.json','some','36199735hwvuVH','\x0a</file>','--api-key=','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','FileReadError','exit','--help','owner_repo','timings','292047awbWtC','5481120MDwspj','requiresApiKey','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','repo_path','env','indexOf','api-key','Here\x20is\x20the\x20content\x20of\x20files:\x0a','RipgrepError','payload','\x0aExamples:','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','grep','Example\x20format:\x0a','Unknown\x20error','node_modules','code','PWD','path_validation_resolved','\x20as\x20allowed\x20directory','<file\x20path=\x22','-\x20Grepped\x20\x27','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','metadata','search_string','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','\x20-\x20','completed','normalize','tool_call_error','Invalid\x20arguments:\x20','slice','basename','grep\x20\x27','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','role','all','files','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20',',\x20removed\x20','user','grep_search','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','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','@morphllm/morphmcp\x20','debug','timeout','text','.vscode','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]',',\x20modified\x20','log','\x0a...\x20(truncated,\x20total:\x20','tool_call_complete','1158qOOABm','FileNotFound','Relevant\x20context\x20found:','.cursor','38908CmcgXA','toLowerCase','.git','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES.**\x20Fast,\x20accurate,\x20and\x20prevents\x20context\x20pollution.\x20Especially\x20useful\x20when\x20making\x20multiple\x20edits\x20in\x20one\x20file:\x20describe\x20all\x20changes\x20in\x20a\x20single\x20call\x20and\x20the\x20semantic\x20edit\x20applies\x20them\x20all\x20at\x20once,\x20more\x20accurately\x20and\x20faster\x20than\x20sequential\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a','source','sep','Created\x20File','push','constructor','warp_grep_start','data','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','EDIT_FILE','Error\x20accessing\x20directory\x20','Tool\x20\x22','path_validation_start','Repository\x20identifier','ENOENT','pyproject.toml','MORPH_API_KEY','morph-v3-fast','code_edit','❌\x20Morph\x20Edit\x20Failed:\x20','getClientCapabilities','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','describe','homedir','../package.json','false','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.','edit'];a0_0x3875=function(){return _0x307d0c;};return a0_0x3875();}function extractStatusCode(_0x222cc1,_0x4cee4f){const _0x551899=a0_0x5a063c;if(_0x222cc1&&typeof _0x222cc1==='object'&&_0x551899(0x1ab)in _0x222cc1)return _0x222cc1[_0x551899(0x1ab)];if(_0x222cc1&&typeof _0x222cc1===_0x551899(0x146)&&_0x551899(0xb5)in _0x222cc1)return _0x222cc1['response']?.[_0x551899(0x1ab)];const _0x2fd60a=_0x4cee4f[_0x551899(0x9f)](/\b(401|429)\b/);return _0x2fd60a?parseInt(_0x2fd60a[0x1],0xa):null;}function handleMorphAPIError(_0x4fd38a){const _0x2c32f1=a0_0x5a063c,_0x151693=_0x4fd38a instanceof Error?_0x4fd38a[_0x2c32f1(0x1af)]:String(_0x4fd38a),_0x1254ec=extractStatusCode(_0x4fd38a,_0x151693);switch(_0x1254ec){case 0x191:return{'content':[{'type':'text','text':_0x2c32f1(0xb6)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x2c32f1(0x105),'text':_0x2c32f1(0x15d)}],'isError':!![]};default:return null;}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x5a063c(0x1a5)),logMcpStderr(a0_0x5a063c(0x194)),logMcpStderr(a0_0x5a063c(0xcf)),logMcpStderr(a0_0x5a063c(0x174)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x5a063c(0x15f)));function normalizePath(_0x5ab78e){const _0x1922fd=a0_0x5a063c;return a0_0x4ae722[_0x1922fd(0xf2)](_0x5ab78e);}function expandHome(_0x201cb4){const _0x49ab5e=a0_0x5a063c;if(_0x201cb4[_0x49ab5e(0x1ad)]('~/')||_0x201cb4==='~')return a0_0x4ae722[_0x49ab5e(0x176)](a0_0x16ba9c[_0x49ab5e(0x12b)](),_0x201cb4[_0x49ab5e(0xf5)](0x1));return _0x201cb4;}let allowedDirectories=await Promise['all'](args[a0_0x5a063c(0x165)](async _0x3df5fc=>{const _0x12064c=a0_0x5a063c,_0x450aab=expandHome(_0x3df5fc),_0x253a5e=a0_0x4ae722[_0x12064c(0x169)](_0x450aab);try{const _0x159b51=await a0_0x7e6f8f[_0x12064c(0x92)](_0x253a5e);return normalizePath(_0x159b51);}catch(_0x58d464){return normalizePath(_0x253a5e);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5a063c(0x14a)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5a063c(0x118)](workspaceDir),logMcpStderr(a0_0x5a063c(0x88)+workspaceDir+a0_0x5a063c(0xe9)));}catch(a0_0x28c55c){logMcpStderr(a0_0x5a063c(0xfc)+a0_0x28c55c);}async function detectWorkspaceRoot(_0x3ecd3f){const _0x2b387c=a0_0x5a063c;let _0x46f8a0=a0_0x4ae722[_0x2b387c(0x169)](_0x3ecd3f);const _0x18f2ca=[_0x2b387c(0x112),_0x2b387c(0x106),_0x2b387c(0x19c),_0x2b387c(0xbf),_0x2b387c(0x123),_0x2b387c(0x9e),_0x2b387c(0x10f),_0x2b387c(0x145),_0x2b387c(0xca)];while(_0x46f8a0!==a0_0x4ae722[_0x2b387c(0x18e)](_0x46f8a0)){for(const _0x3818d4 of _0x18f2ca){const _0xe7535d=a0_0x4ae722['join'](_0x46f8a0,_0x3818d4);try{return await a0_0x7e6f8f[_0x2b387c(0x1a6)](_0xe7535d),normalizePath(_0x46f8a0);}catch{}}_0x46f8a0=a0_0x4ae722[_0x2b387c(0x18e)](_0x46f8a0);}return normalizePath(_0x3ecd3f);}await Promise[a0_0x5a063c(0xfa)](args['map'](async _0x178cbb=>{const _0x237ed2=a0_0x5a063c;try{const _0x27f478=await a0_0x7e6f8f[_0x237ed2(0xb4)](expandHome(_0x178cbb));!_0x27f478['isDirectory']()&&(logMcpStderr(_0x237ed2(0x1a1)+_0x178cbb+'\x20is\x20not\x20a\x20directory'),process[_0x237ed2(0xd1)](0x1));}catch(_0x11d9d8){logMcpStderr(_0x237ed2(0x11e)+_0x178cbb+':',_0x11d9d8),process[_0x237ed2(0xd1)](0x1);}}));async function validatePath(_0x420137){const _0x4f0444=a0_0x5a063c,_0x203f65=expandHome(_0x420137),_0x2741bd=a0_0x4ae722[_0x4f0444(0x169)](_0x203f65);logger['debug'](_0x4f0444(0x1ae),_0x4f0444(0x120),{'raw_path':_0x420137,'absolute':_0x2741bd});try{const _0x2cc77d=await a0_0x7e6f8f[_0x4f0444(0x92)](_0x2741bd);return logger['debug']('MCP',_0x4f0444(0xe8),{'resolved':_0x2cc77d,'symlink':_0x2cc77d!==_0x2741bd}),_0x2cc77d;}catch(_0x2ab9be){if(_0x2ab9be['code']===_0x4f0444(0x122)){const _0x244106=a0_0x4ae722[_0x4f0444(0x18e)](_0x2741bd);try{const _0x904630=await a0_0x7e6f8f[_0x4f0444(0x92)](_0x244106),_0x4a1ed4=a0_0x4ae722[_0x4f0444(0x176)](_0x904630,a0_0x4ae722[_0x4f0444(0xf6)](_0x2741bd));return logger[_0x4f0444(0x103)]('MCP',_0x4f0444(0xe8),{'resolved':_0x4a1ed4,'new_file':!![]}),_0x4a1ed4;}catch{logger['error'](_0x4f0444(0x1ae),'path_validation_failed',{'raw_path':_0x420137,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x244106});throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x244106);}}logger['error']('MCP',_0x4f0444(0x198),{'raw_path':_0x420137,'error':_0x2ab9be[_0x4f0444(0x1af)]});throw _0x2ab9be;}}const MorphEditFileArgsSchema=z[a0_0x5a063c(0x146)]({'path':z[a0_0x5a063c(0x13f)](),'code_edit':z[a0_0x5a063c(0x13f)]()[a0_0x5a063c(0x12a)](a0_0x5a063c(0x193)),'instruction':z['string']()[a0_0x5a063c(0x12a)](a0_0x5a063c(0x113)),'dryRun':z[a0_0x5a063c(0x1a2)]()[a0_0x5a063c(0x144)](![])[a0_0x5a063c(0x12a)](a0_0x5a063c(0xb9))}),CODEBASE_SEARCH_QUERY_DESCRIPTION='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.',WarpGrepArgsSchema=z[a0_0x5a063c(0x146)]({'search_string':z[a0_0x5a063c(0x13f)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x5a063c(0x13f)]()['describe'](a0_0x5a063c(0x9c)),'search_type':z[a0_0x5a063c(0xbc)](['default',a0_0x5a063c(0xe5)])[a0_0x5a063c(0x15c)]()[a0_0x5a063c(0x12a)](a0_0x5a063c(0x154))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z['string']()[a0_0x5a063c(0x12a)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x5a063c(0x13f)]()[a0_0x5a063c(0x15c)]()['describe']('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.'),'owner_repo':z[a0_0x5a063c(0x13f)]()[a0_0x5a063c(0x15c)]()[a0_0x5a063c(0x12a)](a0_0x5a063c(0x129)),'branch':z[a0_0x5a063c(0x13f)]()[a0_0x5a063c(0x15c)]()[a0_0x5a063c(0x12a)](a0_0x5a063c(0x17b))}),CodebaseSearchArgsSchema=z[a0_0x5a063c(0x146)]({'query':z[a0_0x5a063c(0x13f)]()[a0_0x5a063c(0x12a)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x5a063c(0x13f)]()[a0_0x5a063c(0x12a)](a0_0x5a063c(0x121)),'branch':z[a0_0x5a063c(0x13f)]()['optional']()[a0_0x5a063c(0x12a)](a0_0x5a063c(0x8b)),'commitHash':z[a0_0x5a063c(0x13f)]()['optional']()[a0_0x5a063c(0x12a)](a0_0x5a063c(0x19f)),'targetDirectories':z[a0_0x5a063c(0x96)](z[a0_0x5a063c(0x13f)]())['default']([])['describe']('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z[a0_0x5a063c(0x143)]()['optional']()['default'](0xa)['describe'](a0_0x5a063c(0x1b2))}),server=new Server({'name':a0_0x5a063c(0x14b),'version':a0_0x5a063c(0x17d)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x2ee167=a0_0x5a063c,_0xd43849=[{'name':TOOL_NAMES[_0x2ee167(0x11d)],'description':_0x2ee167(0x114)+_0x2ee167(0x97)+'-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a'+'-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a'+_0x2ee167(0x17e)+'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'+_0x2ee167(0xe3)+_0x2ee167(0x11c)+_0x2ee167(0x8f)+_0x2ee167(0xd8)+_0x2ee167(0x196)+'-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a'+_0x2ee167(0x100),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x2ee167(0xc3)],'description':_0x2ee167(0x101)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x2ee167(0x8e)+_0x2ee167(0x178)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x1c3258=_0xd43849['filter'](_0x21b039=>{const _0x291cfa=_0x2ee167;if(DISABLED_TOOLS[_0x291cfa(0x187)](_0x21b039[_0x291cfa(0xc7)]))return console[_0x291cfa(0x172)](_0x291cfa(0x93)+_0x21b039[_0x291cfa(0xc7)]+_0x291cfa(0x139)),![];if(_0x291cfa(0xd7)in _0x21b039&&_0x21b039[_0x291cfa(0xd7)]&&!MORPH_API_KEY)return logMcpStderr(_0x291cfa(0x16a)+_0x21b039[_0x291cfa(0xc7)]+_0x291cfa(0x8d)),![];return!![];});return{'tools':_0x1c3258[_0x2ee167(0x165)](_0x3c553b=>({'name':_0x3c553b[_0x2ee167(0xc7)],'description':_0x3c553b[_0x2ee167(0x19b)],'inputSchema':_0x3c553b[_0x2ee167(0x8a)]}))};}),server[a0_0x5a063c(0xa0)](CallToolRequestSchema,async _0x4b0e36=>{const _0x3ffdd6=a0_0x5a063c,{name:_0x3b7f6c,arguments:_0x2faf14}=_0x4b0e36[_0x3ffdd6(0x13d)],_0x3f2286=Date['now']();logger[_0x3ffdd6(0x103)](_0x3ffdd6(0x1ae),'tool_call_received',{'tool':_0x3b7f6c,'args':_0x3b7f6c===_0x3ffdd6(0x151)?{'path':_0x2faf14?.[_0x3ffdd6(0xb7)],'instruction':_0x2faf14?.[_0x3ffdd6(0x86)]||_0x2faf14?.[_0x3ffdd6(0x1b0)],'dryRun':_0x2faf14?.[_0x3ffdd6(0x142)]}:_0x2faf14});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x3ffdd6(0x105),'text':_0x3ffdd6(0x18f)}],'isError':!![]};if(!MORPH_API_KEY[_0x3ffdd6(0x1ad)](_0x3ffdd6(0x155))&&!MORPH_API_KEY['startsWith'](_0x3ffdd6(0xb1)))return{'content':[{'type':'text','text':_0x3ffdd6(0x12e)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0x3b7f6c))return{'content':[{'type':_0x3ffdd6(0x105),'text':_0x3ffdd6(0x11f)+_0x3b7f6c+_0x3ffdd6(0xc5)}],'isError':![]};switch(_0x3b7f6c){case TOOL_NAMES[_0x3ffdd6(0x11d)]:{let _0x374878=_0x2faf14;if(_0x374878&&typeof _0x374878===_0x3ffdd6(0x146)){if(!('path'in _0x374878)){const _0x3de60d=_0x374878['target_file']??_0x374878['filePath']??_0x374878['target_filepath']??_0x374878['file_path']??_0x374878[_0x3ffdd6(0x87)];if(_0x3de60d)_0x374878={..._0x374878,'path':_0x3de60d};}_0x3ffdd6(0x1b0)in _0x374878&&!(_0x3ffdd6(0x86)in _0x374878)&&(_0x374878={..._0x374878,'instruction':_0x374878[_0x3ffdd6(0x1b0)]});if(!(_0x3ffdd6(0x126)in _0x374878)){const _0x280dc6=_0x374878[_0x3ffdd6(0xe6)]??_0x374878['new_string']??_0x374878[_0x3ffdd6(0x95)]??_0x374878[_0x3ffdd6(0x12f)];if(_0x280dc6)_0x374878={..._0x374878,'code_edit':_0x280dc6};}}const _0x237015=MorphEditFileArgsSchema[_0x3ffdd6(0xb8)](_0x374878);if(!_0x237015['success'])throw new Error(_0x3ffdd6(0x18c)+_0x237015[_0x3ffdd6(0x172)]);const _0x5dbcac=await validatePath(_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0xb7)]);let _0x48c7be=null,_0x19dc53=!![],_0x539b96=null;try{_0x48c7be=await a0_0x7e6f8f['readFile'](_0x5dbcac,_0x3ffdd6(0xc1)),logger['debug']('MCP','file_read_complete',{'path':_0x5dbcac,'size_bytes':_0x48c7be[_0x3ffdd6(0x14a)]});}catch(_0x3947f9){const _0x53fdf9=_0x3947f9['code'];_0x53fdf9===_0x3ffdd6(0x122)?(_0x19dc53=![],_0x48c7be='',logger['debug'](_0x3ffdd6(0x1ae),'file_read_complete',{'path':_0x5dbcac,'exists':![]})):(_0x539b96='Failed\x20to\x20read\x20file:\x20'+(_0x53fdf9||'unknown')+_0x3ffdd6(0xf0)+(_0x3947f9 instanceof Error?_0x3947f9['message']:String(_0x3947f9)),logger['error'](_0x3ffdd6(0x1ae),_0x3ffdd6(0x17f),{'path':_0x5dbcac,'error':_0x539b96}),logMcpStderr(_0x3ffdd6(0x16a)+_0x539b96));}let _0x538298;try{const _0x32edf7=MORPH_API_KEY;if(!_0x32edf7)throw new Error(_0x3ffdd6(0x18a));const _0x227902=a0_0x4ae722[_0x3ffdd6(0x18e)](_0x5dbcac),_0x3b92e2=a0_0x4ae722['basename'](_0x5dbcac);logger[_0x3ffdd6(0x103)](_0x3ffdd6(0x1ae),_0x3ffdd6(0x191),{'model':_0x3ffdd6(0x125),'path':_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0xb7)],'instruction_len':_0x237015['data'][_0x3ffdd6(0x86)][_0x3ffdd6(0x14a)],'code_edit_len':_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0x126)][_0x3ffdd6(0x14a)],'original_code_len':_0x48c7be?.['length']??0x0,'dry_run':_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0x142)]});const _0x5c10e3=Date['now'](),_0x4986c1=await executeEditFile({'target_filepath':_0x3b92e2,'code_edit':_0x237015[_0x3ffdd6(0x11b)]['code_edit'],'instruction':_0x237015['data'][_0x3ffdd6(0x86)]},{'morphApiKey':_0x32edf7,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x227902,'autoWrite':!_0x237015[_0x3ffdd6(0x11b)]['dryRun'],'generateUdiff':![],'debug':![]}),_0x103fd9=Date[_0x3ffdd6(0x188)]()-_0x5c10e3;_0x538298=_0x4986c1[_0x3ffdd6(0x135)];if(!_0x4986c1[_0x3ffdd6(0xaf)])throw new Error(_0x4986c1[_0x3ffdd6(0x172)]||_0x3ffdd6(0xc9));const _0x4c8e74=_0x4986c1[_0x3ffdd6(0x91)],_0x230c9e=_0x3ffdd6(0x13a)+_0x4c8e74[_0x3ffdd6(0x158)]+_0x3ffdd6(0xfd)+_0x4c8e74['linesRemoved']+_0x3ffdd6(0x108)+_0x4c8e74[_0x3ffdd6(0x159)];logger[_0x3ffdd6(0x103)]('MCP',_0x3ffdd6(0x10b),{'tool':'edit_file','success':!![],'latency_ms':Date[_0x3ffdd6(0x188)]()-_0x3f2286,'edit_latency_ms':_0x103fd9,'changes':{'added':_0x4c8e74[_0x3ffdd6(0x158)],'removed':_0x4c8e74[_0x3ffdd6(0x19e)],'modified':_0x4c8e74[_0x3ffdd6(0x159)]},'completion_id':_0x538298});if(_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0x142)])return{'content':[{'type':_0x3ffdd6(0x105),'text':'Morph\x20Edit\x20Preview'+(_0x19dc53?'':_0x3ffdd6(0xa9))+':\x20'+_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0x86)]+_0x3ffdd6(0x19a)+_0x230c9e+'.\x20Path:\x20'+_0x237015[_0x3ffdd6(0x11b)]['path']+'.'}]};return{'content':[{'type':_0x3ffdd6(0x105),'text':_0x3ffdd6(0x137)+(_0x19dc53?'Applied':_0x3ffdd6(0x117))+':\x20'+_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0x86)]+_0x3ffdd6(0x19a)+_0x230c9e+_0x3ffdd6(0x140)+_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0xb7)]+'.'}]};}catch(_0x466b1f){const _0xa44538=handleMorphAPIError(_0x466b1f);if(_0xa44538)return logger[_0x3ffdd6(0x172)](_0x3ffdd6(0x1ae),'tool_call_error',{'tool':_0x3ffdd6(0x151),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x3ffdd6(0x188)]()-_0x3f2286}),_0xa44538;const _0x29bc09=_0x466b1f instanceof Error?_0x466b1f[_0x3ffdd6(0x1af)]:String(_0x466b1f);return logger['error']('MCP',_0x3ffdd6(0xf3),{'tool':_0x3ffdd6(0x151),'error':_0x29bc09,'path':_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0xb7)],'validated_path':_0x5dbcac,'latency_ms':Date[_0x3ffdd6(0x188)]()-_0x3f2286,'stack':_0x466b1f instanceof Error?_0x466b1f['stack']:undefined}),reportMorphError({'error_message':_0x29bc09,'error_type':_0x466b1f instanceof Error?_0x466b1f[_0x3ffdd6(0x119)]['name']:_0x3ffdd6(0x13e),'context':{'tool':_0x3ffdd6(0x151),'completion_id':_0x538298,'file_path':_0x237015[_0x3ffdd6(0x11b)]['path'],'validated_path':_0x5dbcac,'instruction':_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0x86)],'model':MORPH_LARGE_APPLY?_0x3ffdd6(0x186):_0x3ffdd6(0x125),'dry_run':_0x237015[_0x3ffdd6(0x11b)]['dryRun'],'file_exists':_0x19dc53,'file_read_error':_0x539b96,'file_readable':_0x48c7be!==null,'request_content':{'path':_0x237015['data'][_0x3ffdd6(0xb7)],'code_edit':_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0x126)],'instruction':_0x237015[_0x3ffdd6(0x11b)][_0x3ffdd6(0x86)],'original_code':_0x48c7be!==null?_0x48c7be[_0x3ffdd6(0x14a)]>0xc350?_0x48c7be['substring'](0x0,0xc350)+_0x3ffdd6(0x10a)+_0x48c7be[_0x3ffdd6(0x14a)]+'\x20chars)':_0x48c7be:'[could\x20not\x20read\x20file:\x20'+(_0x539b96||_0x3ffdd6(0x1a7))+']','original_code_length':_0x48c7be?.[_0x3ffdd6(0x14a)]??0x0,'model':MORPH_LARGE_APPLY?_0x3ffdd6(0x186):_0x3ffdd6(0x125),'dry_run':_0x237015['data']['dryRun']}},'stack_trace':_0x466b1f instanceof Error?_0x466b1f[_0x3ffdd6(0x15b)]:undefined,'source':_0x3ffdd6(0x150)})[_0x3ffdd6(0x94)](()=>{}),{'content':[{'type':_0x3ffdd6(0x105),'text':_0x3ffdd6(0x127)+_0x29bc09}],'isError':!![]};}}case TOOL_NAMES[_0x3ffdd6(0xc3)]:{const _0x1c0de1=WarpGrepArgsSchema[_0x3ffdd6(0xb8)](_0x2faf14);if(!_0x1c0de1[_0x3ffdd6(0xaf)])return{'content':[{'type':_0x3ffdd6(0x105),'text':_0x3ffdd6(0xf4)+_0x1c0de1[_0x3ffdd6(0x172)]}],'isError':!![]};const _0x10d0db=_0x1012ff=>{const _0x242502=_0x3ffdd6,_0x4d2a03=[];for(const _0x2a4210 of _0x1012ff||[]){if(_0x2a4210[_0x242502(0xf9)]==='assistant'&&Array[_0x242502(0x130)](_0x2a4210[_0x242502(0x136)]))for(const _0x332b01 of _0x2a4210[_0x242502(0x136)]){try{const _0x303463=_0x332b01['function']?.[_0x242502(0xc7)],_0x5bb028=JSON['parse'](_0x332b01[_0x242502(0xa5)]?.[_0x242502(0x131)]||'{}');if(_0x303463===_0x242502(0xff))_0x4d2a03[_0x242502(0x118)](_0x242502(0xf7)+_0x5bb028['pattern']+'\x27\x20'+(_0x5bb028['path']||'.'));else{if(_0x303463===_0x242502(0xc0))_0x4d2a03[_0x242502(0x118)](_0x242502(0x85)+_0x5bb028[_0x242502(0xb7)]);else{if(_0x303463===_0x242502(0x163))_0x4d2a03[_0x242502(0x118)](_0x242502(0xc6)+(_0x5bb028[_0x242502(0xa7)]||'.'));else{if(_0x303463===_0x242502(0xa1))_0x4d2a03[_0x242502(0x118)](_0x242502(0x1b3)+_0x5bb028[_0x242502(0x182)]+'\x27\x20'+(_0x5bb028[_0x242502(0xb7)]||'.'));else _0x303463===_0x242502(0xae)&&_0x4d2a03['push'](_0x242502(0xae));}}}}catch{}}}return _0x4d2a03;},_0x3a292a=_0x19dd8e=>{const _0x595205=_0x3ffdd6,_0x4b0c7b=[];if(!_0x19dd8e||!Array[_0x595205(0x130)](_0x19dd8e))return _0x4b0c7b;const _0x588cae=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x595205(0x10d),'tool':_0x595205(0xc0)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x595205(0x180),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x595205(0xa3),'tool':_0x595205(0xc0)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x595205(0x16d),'tool':_0x595205(0xc0)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x595205(0xde),'tool':_0x595205(0xe2)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x595205(0x189),'tool':_0x595205(0xe2)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x595205(0x16d),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x595205(0x1aa),'tool':_0x595205(0xc0)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':_0x595205(0xc0)},{'pattern':/symbolic link/,'error_type':_0x595205(0x1aa),'tool':_0x595205(0xc0)},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x595205(0xc0)},{'pattern':/status="error"/,'error_type':'ToolException','tool':_0x595205(0x195)}];let _0x38afe3=0x0;for(const _0x2a6cd2 of _0x19dd8e){_0x2a6cd2[_0x595205(0xf9)]===_0x595205(0x1a8)&&Array[_0x595205(0x130)](_0x2a6cd2[_0x595205(0x136)])&&_0x38afe3++;const _0x3f0181=_0x2a6cd2[_0x595205(0x95)];if((_0x2a6cd2[_0x595205(0xf9)]==='tool'||_0x2a6cd2[_0x595205(0xf9)]===_0x595205(0xfe))&&_0x3f0181&&typeof _0x3f0181===_0x595205(0x13f))for(const {pattern:_0x1600f5,error_type:_0x3f0597,tool:_0x3a9fdf}of _0x588cae){const _0x4c801a=_0x3f0181[_0x595205(0x9f)](new RegExp(_0x1600f5['source'],'g'));if(_0x4c801a)for(const _0x3c29ac of _0x4c801a){const _0x4df855=_0x3f0181[_0x595205(0xdb)](_0x3c29ac),_0x4f3131=_0x3f0181[_0x595205(0x90)](_0x4df855,Math[_0x595205(0x166)](_0x4df855+0xc8,_0x3f0181[_0x595205(0x14a)]));_0x4b0c7b[_0x595205(0x118)]({'tool':_0x3a9fdf,'error_type':_0x3f0597,'error_message':_0x4f3131[_0x595205(0x152)]('\x0a')[0x0],'turn':_0x38afe3});}}}return _0x4b0c7b;};try{const _0x32ed84=a0_0x4ae722[_0x3ffdd6(0x169)](_0x1c0de1['data'][_0x3ffdd6(0xd9)]),_0x1b3298=_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0x183)],_0x4edba8=_0x1b3298===_0x3ffdd6(0xe5)?{'allowNames':[_0x3ffdd6(0xe5)]}:undefined,_0x2606ae=new LocalRipgrepProvider(_0x32ed84,undefined,_0x4edba8);logger[_0x3ffdd6(0x103)](_0x3ffdd6(0x1ae),'provider_created',{'type':_0x3ffdd6(0x184),'repo_root':_0x32ed84,'search_type':_0x1b3298||_0x3ffdd6(0x144)}),logger[_0x3ffdd6(0x103)]('MCP',_0x3ffdd6(0x11a),{'query':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'repo_root':_0x32ed84,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x1a0410=Date[_0x3ffdd6(0x188)](),_0xf45fa9=await runWarpGrep({'searchTerm':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'repoRoot':_0x32ed84,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x2606ae,'search_type':_0x1b3298}),_0x2f5225=Date[_0x3ffdd6(0x188)]()-_0x1a0410,_0x38e8b5=_0xf45fa9[_0x3ffdd6(0xae)]?.[_0x3ffdd6(0xed)]?.[_0x3ffdd6(0xfb)]?.['length']??0x0;logger[_0x3ffdd6(0x103)]('MCP',_0x3ffdd6(0x9b),{'termination':_0xf45fa9[_0x3ffdd6(0x15a)],'turns':_0xf45fa9[_0x3ffdd6(0xd4)]?.['turns']??0x0,'files_found':_0x38e8b5,'latency_ms':_0x2f5225});const _0x23548c=_0x3a292a(_0xf45fa9[_0x3ffdd6(0xa8)]);_0x23548c[_0x3ffdd6(0x14a)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x23548c['length']+_0x3ffdd6(0x15e),'error_type':_0x3ffdd6(0x175),'level':_0x3ffdd6(0x168),'tool':'codebase_search','context':{'repo_path':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)],'query':_0x1c0de1['data'][_0x3ffdd6(0xee)],'model':_0x3ffdd6(0x1a9),'termination_reason':_0xf45fa9[_0x3ffdd6(0x15a)],'sub_tool_errors':_0x23548c,'timings':_0xf45fa9[_0x3ffdd6(0xd4)],'tool_calls':_0x10d0db(_0xf45fa9[_0x3ffdd6(0xa8)]),'messages':_0xf45fa9[_0x3ffdd6(0xa8)]?.[_0x3ffdd6(0x165)](_0x5bcfdf=>({'role':_0x5bcfdf[_0x3ffdd6(0xf9)],'content':_0x5bcfdf[_0x3ffdd6(0x95)],..._0x5bcfdf[_0x3ffdd6(0x136)]?{'tool_calls':_0x5bcfdf['tool_calls'][_0x3ffdd6(0x14a)]}:{},..._0x5bcfdf[_0x3ffdd6(0x98)]?{'tool_call_id':_0x5bcfdf[_0x3ffdd6(0x98)]}:{}}))},'source':_0x3ffdd6(0x150)})[_0x3ffdd6(0x94)](()=>{});let _0x25d76e='';if(_0xf45fa9[_0x3ffdd6(0x15a)]===_0x3ffdd6(0xf1)&&_0xf45fa9['finish']?.[_0x3ffdd6(0xed)]?.[_0x3ffdd6(0xfb)]){const _0x556f2a=_0xf45fa9[_0x3ffdd6(0xae)][_0x3ffdd6(0xed)][_0x3ffdd6(0xfb)];if(_0x556f2a[_0x3ffdd6(0x14a)]===0x0)return _0x25d76e=_0xf45fa9[_0x3ffdd6(0xae)][_0x3ffdd6(0xdf)]||_0x3ffdd6(0x157),{'content':[{'type':'text','text':_0x25d76e}]};const _0x1826b9=[],_0x236da1=[_0x3ffdd6(0x14e)];for(const _0x17b067 of _0xf45fa9[_0x3ffdd6(0xa8)]){if(_0x17b067[_0x3ffdd6(0xf9)]==='assistant'&&Array[_0x3ffdd6(0x130)](_0x17b067['tool_calls']))for(const _0x5a1255 of _0x17b067[_0x3ffdd6(0x136)]){try{const _0x587e41=_0x5a1255[_0x3ffdd6(0xa5)]?.[_0x3ffdd6(0xc7)],_0x2d1953=JSON[_0x3ffdd6(0xbb)](_0x5a1255[_0x3ffdd6(0xa5)]?.[_0x3ffdd6(0x131)]||'{}');if(_0x587e41===_0x3ffdd6(0xff))_0x236da1[_0x3ffdd6(0x118)](_0x3ffdd6(0xeb)+_0x2d1953[_0x3ffdd6(0x182)]+_0x3ffdd6(0x16b)+(_0x2d1953[_0x3ffdd6(0xb7)]||'.')+'`');else{if(_0x587e41===_0x3ffdd6(0xc0))_0x236da1['push'](_0x3ffdd6(0xab)+_0x2d1953['path']+'`');else{if(_0x587e41===_0x3ffdd6(0x163))_0x236da1[_0x3ffdd6(0x118)]('-\x20Listed\x20directory\x20`'+(_0x2d1953['command']||'.')+'`');else _0x587e41==='glob'&&_0x236da1[_0x3ffdd6(0x118)](_0x3ffdd6(0x171)+_0x2d1953[_0x3ffdd6(0x182)]+_0x3ffdd6(0x18d)+(_0x2d1953['path']||'.')+'`');}}}catch{}}}_0x1826b9[_0x3ffdd6(0x118)](_0x236da1[_0x3ffdd6(0x176)]('\x0a'));const _0x1109af=['',_0x3ffdd6(0x10e)];for(const _0x2aeffe of _0x556f2a){if(_0x2aeffe[_0x3ffdd6(0x164)]==='*')_0x1109af[_0x3ffdd6(0x118)]('-\x20'+_0x2aeffe[_0x3ffdd6(0xb7)]+':*');else{if(Array[_0x3ffdd6(0x130)](_0x2aeffe[_0x3ffdd6(0x164)])){const _0x4f36f5=_0x2aeffe[_0x3ffdd6(0x164)][_0x3ffdd6(0x165)](([_0x282eef,_0x26e5aa])=>{if(_0x282eef===_0x26e5aa)return''+_0x282eef;return _0x282eef+'-'+_0x26e5aa;});_0x1109af[_0x3ffdd6(0x118)]('-\x20'+_0x2aeffe[_0x3ffdd6(0xb7)]+':'+_0x4f36f5[_0x3ffdd6(0x176)](','));}else _0x1109af[_0x3ffdd6(0x118)]('-\x20'+_0x2aeffe[_0x3ffdd6(0xb7)]+':*');}}_0x1109af[_0x3ffdd6(0x118)](''),_0x1826b9['push'](_0x1109af[_0x3ffdd6(0x176)]('\x0a')),_0x1826b9[_0x3ffdd6(0x118)](_0x3ffdd6(0xdd));const _0x4d178b=[],_0x336e2c=[];for(const _0x3f8ab7 of _0x556f2a){let _0x5ac128=a0_0x4ae722['resolve'](_0x1c0de1['data'][_0x3ffdd6(0xd9)],_0x3f8ab7[_0x3ffdd6(0xb7)]),_0x531fc8=null,_0x4e997c=null;try{_0x531fc8=await a0_0x7e6f8f['readFile'](_0x5ac128,{'encoding':_0x3ffdd6(0xc1)});}catch(_0x8cd524){const _0x315153=fixPathRepetition(_0x5ac128);if(_0x315153)try{_0x531fc8=await a0_0x7e6f8f['readFile'](_0x315153,{'encoding':_0x3ffdd6(0xc1)}),_0x5ac128=_0x315153;}catch{_0x4e997c=_0x8cd524 instanceof Error?_0x8cd524:new Error(String(_0x8cd524));}else _0x4e997c=_0x8cd524 instanceof Error?_0x8cd524:new Error(String(_0x8cd524));}if(_0x531fc8!==null){const _0xa8cccb=_0x531fc8[_0x3ffdd6(0x152)](/\r?\n/),_0x285f65=[];if(_0x3f8ab7['lines']==='*'||!Array[_0x3ffdd6(0x130)](_0x3f8ab7[_0x3ffdd6(0x164)]))for(let _0x159252=0x1;_0x159252<=_0xa8cccb[_0x3ffdd6(0x14a)];_0x159252++){const _0x1defe7=_0xa8cccb[_0x159252-0x1];_0x285f65[_0x3ffdd6(0x118)](_0x159252+'|\x20'+_0x1defe7);}else for(const [_0x519a00,_0x1a8729]of _0x3f8ab7[_0x3ffdd6(0x164)]){_0x285f65[_0x3ffdd6(0x14a)]>0x0&&_0x285f65['push']('');for(let _0x5b0211=_0x519a00;_0x5b0211<=_0x1a8729&&_0x5b0211<=_0xa8cccb[_0x3ffdd6(0x14a)];_0x5b0211++){const _0x51914c=_0xa8cccb[_0x5b0211-0x1];_0x285f65['push'](_0x5b0211+'|\x20'+_0x51914c);}}_0x336e2c[_0x3ffdd6(0x118)]({'path':_0x3f8ab7[_0x3ffdd6(0xb7)],'content':_0x285f65[_0x3ffdd6(0x176)]('\x0a')});}else _0x4d178b[_0x3ffdd6(0x118)](_0x3ffdd6(0xea)+_0x3f8ab7[_0x3ffdd6(0xb7)]+_0x3ffdd6(0x1a4)+(_0x4e997c?.[_0x3ffdd6(0x1af)]||_0x3ffdd6(0xe4))+_0x3ffdd6(0xcd));}try{const _0x49a450=await compactFileContexts(_0x336e2c,_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],MORPH_API_KEY,MORPH_API_URL);for(const _0xd4abd4 of _0x49a450){_0x4d178b['push']('<file\x20path=\x22'+_0xd4abd4[_0x3ffdd6(0xb7)]+_0x3ffdd6(0xac)+_0xd4abd4[_0x3ffdd6(0x95)]+_0x3ffdd6(0xcd));}}catch(_0x359e08){logger[_0x3ffdd6(0x168)](_0x3ffdd6(0x1ae),_0x3ffdd6(0xbd),{'error':_0x359e08 instanceof Error?_0x359e08[_0x3ffdd6(0x1af)]:String(_0x359e08),'files_count':_0x336e2c[_0x3ffdd6(0x14a)]});for(const _0x2ae536 of _0x336e2c){_0x4d178b[_0x3ffdd6(0x118)]('<file\x20path=\x22'+_0x2ae536[_0x3ffdd6(0xb7)]+_0x3ffdd6(0xac)+_0x2ae536[_0x3ffdd6(0x95)]+_0x3ffdd6(0xcd));}}_0x1826b9[_0x3ffdd6(0x118)](_0x4d178b[_0x3ffdd6(0x176)]('\x0a\x0a')),_0x25d76e=_0x1826b9[_0x3ffdd6(0x176)]('\x0a');const _0x423ba5=_0xf45fa9[_0x3ffdd6(0x1ac)]?.[_0x3ffdd6(0x192)](_0x436c95=>_0x436c95['message']?.[_0x3ffdd6(0x1ad)](_0x3ffdd6(0xc2)))||[];if(_0x423ba5['length']>0x0){const _0x5a526c=_0x423ba5['map'](_0x94a614=>_0x94a614[_0x3ffdd6(0x1af)])[_0x3ffdd6(0x176)](';\x20');reportMorphError({'error_message':_0x5a526c,'error_type':_0x3ffdd6(0xd0),'context':{'tool':'codebase_search','repo_path':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)],'query':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'model':_0x3ffdd6(0x1a9),'termination_reason':_0x3ffdd6(0xaa),'error_count':_0x423ba5[_0x3ffdd6(0x14a)],'is_timeout':![],'timings':_0xf45fa9[_0x3ffdd6(0xd4)],'files_attempted':_0x556f2a[_0x3ffdd6(0x165)](_0x313496=>({'path':_0x313496[_0x3ffdd6(0xb7)],'lines':_0x313496['lines']})),'tool_calls':_0x10d0db(_0xf45fa9[_0x3ffdd6(0xa8)]),'messages':_0xf45fa9['messages']?.[_0x3ffdd6(0x165)](_0x5978ad=>({'role':_0x5978ad[_0x3ffdd6(0xf9)],'content':_0x5978ad['content'],..._0x5978ad[_0x3ffdd6(0x136)]?{'tool_calls':_0x5978ad[_0x3ffdd6(0x136)][_0x3ffdd6(0x14a)]}:{},..._0x5978ad[_0x3ffdd6(0x98)]?{'tool_call_id':_0x5978ad[_0x3ffdd6(0x98)]}:{}})),'request_content':{'query':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'repo_path':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)],'repoRoot':a0_0x4ae722[_0x3ffdd6(0x169)](_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)]),'model':_0x3ffdd6(0x1a9)}},'source':_0x3ffdd6(0x150)})[_0x3ffdd6(0x94)](()=>{});}}else{if(_0xf45fa9['terminationReason']===_0x3ffdd6(0x16c)&&_0xf45fa9[_0x3ffdd6(0x1ac)][_0x3ffdd6(0x14a)]>0x0){const _0x421fba=_0xf45fa9['errors'][_0x3ffdd6(0x165)](_0x3aa6e6=>_0x3aa6e6[_0x3ffdd6(0x1af)])[_0x3ffdd6(0x176)](';\x20');_0x25d76e=_0x3ffdd6(0x1a1)+_0x421fba;const _0x3696b7=_0x421fba[_0x3ffdd6(0x111)]()[_0x3ffdd6(0x1b1)](_0x3ffdd6(0x104))||_0x421fba[_0x3ffdd6(0x111)]()[_0x3ffdd6(0x1b1)]('timed\x20out')||_0x421fba['toLowerCase']()['includes'](_0x3ffdd6(0x185)),_0x218085=_0xf45fa9[_0x3ffdd6(0xae)]?.[_0x3ffdd6(0xed)]?.[_0x3ffdd6(0xfb)],_0x140cae=_0xf45fa9[_0x3ffdd6(0x1ac)][0x0];reportMorphError({'error_message':_0x421fba,'error_type':_0x3696b7?_0x3ffdd6(0x18b):_0x140cae?.[_0x3ffdd6(0x119)]?.['name']||_0x3ffdd6(0x99),'context':{'tool':'codebase_search','repo_path':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)],'query':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'model':_0x3ffdd6(0x1a9),'termination_reason':_0xf45fa9[_0x3ffdd6(0x15a)],'error_count':_0xf45fa9[_0x3ffdd6(0x1ac)][_0x3ffdd6(0x14a)],'is_timeout':_0x3696b7,'timings':_0xf45fa9[_0x3ffdd6(0xd4)],'files_attempted':_0x218085?.[_0x3ffdd6(0x165)](_0x4426b1=>({'path':_0x4426b1[_0x3ffdd6(0xb7)],'lines':_0x4426b1[_0x3ffdd6(0x164)]})),'tool_calls':_0x10d0db(_0xf45fa9[_0x3ffdd6(0xa8)]),'messages':_0xf45fa9[_0x3ffdd6(0xa8)]?.[_0x3ffdd6(0x165)](_0x49f312=>({'role':_0x49f312['role'],'content':_0x49f312[_0x3ffdd6(0x95)],..._0x49f312[_0x3ffdd6(0x136)]?{'tool_calls':_0x49f312[_0x3ffdd6(0x136)]['length']}:{},..._0x49f312[_0x3ffdd6(0x98)]?{'tool_call_id':_0x49f312[_0x3ffdd6(0x98)]}:{}})),'request_content':{'query':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'repo_path':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)],'repoRoot':a0_0x4ae722[_0x3ffdd6(0x169)](_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)]),'model':_0x3ffdd6(0x1a9)}},'stack_trace':_0x140cae?.[_0x3ffdd6(0x15b)]||undefined,'source':_0x3ffdd6(0x150)})[_0x3ffdd6(0x94)](()=>{});}else _0x25d76e=_0x3ffdd6(0xf8);}return{'content':[{'type':'text','text':_0x25d76e}]};}catch(_0x71547a){const _0x1e11a5=handleMorphAPIError(_0x71547a);if(_0x1e11a5)return logger[_0x3ffdd6(0x172)](_0x3ffdd6(0x1ae),'tool_call_error',{'tool':_0x3ffdd6(0xa6),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x3ffdd6(0x188)]()-_0x3f2286}),_0x1e11a5;const _0x368bab=_0x71547a instanceof Error?_0x71547a['message']:String(_0x71547a);logger['error'](_0x3ffdd6(0x1ae),_0x3ffdd6(0xf3),{'tool':'codebase_search','error':_0x368bab,'repo_path':_0x1c0de1['data'][_0x3ffdd6(0xd9)],'query':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'latency_ms':Date[_0x3ffdd6(0x188)]()-_0x3f2286});const _0x2bc55c=_0x368bab[_0x3ffdd6(0x111)]()[_0x3ffdd6(0x1b1)]('timeout')||_0x368bab[_0x3ffdd6(0x111)]()['includes']('timed\x20out')||_0x368bab[_0x3ffdd6(0x111)]()[_0x3ffdd6(0x1b1)](_0x3ffdd6(0x185))||_0x71547a instanceof Error&&_0x71547a[_0x3ffdd6(0xc7)]===_0x3ffdd6(0x18b);return reportMorphError({'error_message':_0x368bab,'error_type':_0x2bc55c?_0x3ffdd6(0x18b):_0x71547a instanceof Error?_0x71547a[_0x3ffdd6(0x119)]['name']:_0x3ffdd6(0x13e),'context':{'tool':_0x3ffdd6(0xa6),'repo_path':_0x1c0de1['data'][_0x3ffdd6(0xd9)],'query':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'model':_0x3ffdd6(0x1a9),'is_timeout':_0x2bc55c,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x1c0de1[_0x3ffdd6(0x11b)]['search_string'],'repo_path':_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)],'repoRoot':a0_0x4ae722[_0x3ffdd6(0x169)](_0x1c0de1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd9)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x71547a instanceof Error?_0x71547a[_0x3ffdd6(0x15b)]:undefined,'source':_0x3ffdd6(0x150)})[_0x3ffdd6(0x94)](()=>{}),{'content':[{'type':'text','text':_0x3ffdd6(0x13b)+_0x368bab}],'isError':![]};}}case TOOL_NAMES[_0x3ffdd6(0x170)]:{const _0x589bf1=WarpGrepGitHubArgsSchema[_0x3ffdd6(0xb8)](_0x2faf14);if(!_0x589bf1['success'])return{'content':[{'type':_0x3ffdd6(0x105),'text':'Invalid\x20arguments:\x20'+_0x589bf1['error']}],'isError':!![]};const _0x251c0d=_0x589bf1['data'][_0x3ffdd6(0xa2)]||_0x589bf1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xd3)];if(!_0x251c0d)return{'content':[{'type':_0x3ffdd6(0x105),'text':_0x3ffdd6(0xe1)}],'isError':!![]};const _0x5a94e3=MORPH_API_KEY;if(!_0x5a94e3)throw new Error(_0x3ffdd6(0x18a));const _0x5daecb=Date['now']();logger[_0x3ffdd6(0x103)]('MCP',_0x3ffdd6(0xc8),{'identifier':_0x251c0d,'query':_0x589bf1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'branch':_0x589bf1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xb0)]});try{const _0x222c8b=new WarpGrepClient({'morphApiKey':_0x5a94e3,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x2a9589=await _0x222c8b[_0x3ffdd6(0x173)]({'searchTerm':_0x589bf1[_0x3ffdd6(0x11b)]['search_string'],'github':_0x251c0d,'branch':_0x589bf1[_0x3ffdd6(0x11b)]['branch']}),_0x13cb9d=Date['now']()-_0x5daecb;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x13cb9d+_0x3ffdd6(0x9a)+_0x2a9589[_0x3ffdd6(0xaf)]);const _0x54c515=formatResult(_0x2a9589);return{'content':[{'type':_0x3ffdd6(0x105),'text':_0x54c515}]};}catch(_0x4bd685){const _0x3f1fca=handleMorphAPIError(_0x4bd685);if(_0x3f1fca)return _0x3f1fca;const _0x54babf=Date[_0x3ffdd6(0x188)]()-_0x5daecb,_0x23758c=_0x4bd685 instanceof Error?_0x4bd685[_0x3ffdd6(0x1af)]:String(_0x4bd685);return logMcpStderr(_0x3ffdd6(0x156)+_0x54babf+_0x3ffdd6(0x179),_0x23758c),reportMorphError({'error_message':_0x23758c,'error_type':_0x4bd685 instanceof Error?_0x4bd685[_0x3ffdd6(0x119)][_0x3ffdd6(0xc7)]:_0x3ffdd6(0x13e),'context':{'tool':_0x3ffdd6(0x147),'github_url':_0x251c0d,'search_string':_0x589bf1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xee)],'branch':_0x589bf1[_0x3ffdd6(0x11b)][_0x3ffdd6(0xb0)]},'stack_trace':_0x4bd685 instanceof Error?_0x4bd685[_0x3ffdd6(0x15b)]:undefined,'source':_0x3ffdd6(0x150),'tool':_0x3ffdd6(0x147),'latency_ms':_0x54babf})[_0x3ffdd6(0x94)](()=>{}),{'content':[{'type':_0x3ffdd6(0x105),'text':_0x3ffdd6(0x141)+_0x23758c}],'isError':![]};}}default:throw new Error(_0x3ffdd6(0x14c)+_0x3b7f6c);}}catch(_0x51bab9){const _0x164d2d=_0x51bab9 instanceof Error?_0x51bab9[_0x3ffdd6(0x1af)]:String(_0x51bab9);return reportMorphError({'error_message':_0x164d2d,'error_type':_0x51bab9 instanceof Error?_0x51bab9[_0x3ffdd6(0x119)][_0x3ffdd6(0xc7)]:_0x3ffdd6(0x13e),'context':{'tool':_0x3b7f6c,'arguments':_0x2faf14?JSON[_0x3ffdd6(0x89)](_0x2faf14)[_0x3ffdd6(0x90)](0x0,0x1f4):undefined,'mcp_server_version':_0x3ffdd6(0x17d)},'stack_trace':_0x51bab9 instanceof Error?_0x51bab9[_0x3ffdd6(0x15b)]:undefined,'source':_0x3ffdd6(0x150)})[_0x3ffdd6(0x94)](()=>{}),{'content':[{'type':_0x3ffdd6(0x105),'text':_0x3ffdd6(0x1a1)+_0x164d2d}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x3f1e57){const _0x36383e=a0_0x5a063c,_0x314db6=await getValidRootDirectories(_0x3f1e57);if(_0x314db6[_0x36383e(0x14a)]>0x0)allowedDirectories=[..._0x314db6],logMcpStderr(_0x36383e(0x1a0)+_0x314db6[_0x36383e(0x14a)]+'\x20valid\x20directories');else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x5d5387=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x5d5387&&(allowedDirectories=[_0x5d5387],logMcpStderr(_0x36383e(0x177)+_0x5d5387));}catch(_0x5756cb){logMcpStderr(_0x36383e(0x181)+_0x5756cb);}}}server[a0_0x5a063c(0x138)](RootsListChangedNotificationSchema,async()=>{const _0x3100dc=a0_0x5a063c;try{const _0x5f46f7=await server['listRoots']();_0x5f46f7&&_0x3100dc(0xbe)in _0x5f46f7&&await updateAllowedDirectoriesFromRoots(_0x5f46f7['roots']);}catch(_0x13a367){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x13a367 instanceof Error?_0x13a367[_0x3100dc(0x1af)]:String(_0x13a367));}}),server[a0_0x5a063c(0x17a)]=async()=>{const _0x53d064=a0_0x5a063c,_0x491167=server[_0x53d064(0x128)]();if(_0x491167?.[_0x53d064(0xbe)])try{const _0x1c1aac=await server[_0x53d064(0x199)]();_0x1c1aac&&'roots'in _0x1c1aac?await updateAllowedDirectoriesFromRoots(_0x1c1aac[_0x53d064(0xbe)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x5a0982){logMcpStderr(_0x53d064(0xef),_0x5a0982 instanceof Error?_0x5a0982[_0x53d064(0x1af)]:String(_0x5a0982));}else{if(allowedDirectories[_0x53d064(0x14a)]>0x0)logMcpStderr(_0x53d064(0x1b5),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x53d064(0x19d));else throw new Error(_0x53d064(0xec));}}};async function runServer(){const _0x390257=a0_0x5a063c,_0x444d03=new StdioServerTransport();await server['connect'](_0x444d03),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x390257(0x14a)]===0x0&&logMcpStderr(_0x390257(0x153));}runServer()['catch'](_0x5dff0a=>{const _0x58b3bc=a0_0x5a063c;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x5dff0a),process[_0x58b3bc(0xd1)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var a1_0x453170=a1_0x230e;function a1_0x5208(){var _0x211f6c=['info','Windows','48DKLJYS','5805135AkXoTN','304038yEteNE','37430HiiZxP','3921456vPlcBx','map','darwin','992285gqMply','macOS','385LYHUqG','3LgzYaG','platform','MCP','6YcyFgz','length','91590jwKcLc','Linux','win32','1530657PhNhDN','error'];a1_0x5208=function(){return _0x211f6c;};return a1_0x5208();}(function(_0x325fa3,_0x16d391){var _0x4a5843=a1_0x230e,_0x449839=_0x325fa3();while(!![]){try{var _0x5ef921=-parseInt(_0x4a5843(0x79))/0x1*(parseInt(_0x4a5843(0x7e))/0x2)+-parseInt(_0x4a5843(0x71))/0x3+-parseInt(_0x4a5843(0x73))/0x4+parseInt(_0x4a5843(0x76))/0x5*(-parseInt(_0x4a5843(0x7c))/0x6)+parseInt(_0x4a5843(0x70))/0x7+-parseInt(_0x4a5843(0x6f))/0x8*(-parseInt(_0x4a5843(0x6b))/0x9)+-parseInt(_0x4a5843(0x72))/0xa*(-parseInt(_0x4a5843(0x78))/0xb);if(_0x5ef921===_0x16d391)break;else _0x449839['push'](_0x449839['shift']());}catch(_0x40e9f3){_0x449839['push'](_0x449839['shift']());}}}(a1_0x5208,0x897fc));import a1_0x41f614 from'os';import{logger}from'./logger.js';function a1_0x230e(_0x193092,_0x2e6746){_0x193092=_0x193092-0x69;var _0x52084f=a1_0x5208();var _0x230ecb=_0x52084f[_0x193092];return _0x230ecb;}export function getOperatingSystemType(_0x4f5659=a1_0x41f614[a1_0x453170(0x7a)]()){var _0x3e620a=a1_0x453170;switch(_0x4f5659){case _0x3e620a(0x75):return _0x3e620a(0x77);case _0x3e620a(0x6a):return _0x3e620a(0x6e);case'linux':return _0x3e620a(0x69);default:return'Unknown';}}export function formatMcpLogMessage(_0x389b33,_0x507556=a1_0x41f614[a1_0x453170(0x7a)]()){return'[os='+getOperatingSystemType(_0x507556)+']\x20'+_0x389b33;}export function logMcpStderr(_0x5bf7ec,..._0x1e0b44){var _0x6b469e=a1_0x453170;console[_0x6b469e(0x6c)](formatMcpLogMessage(_0x5bf7ec),..._0x1e0b44),logger[_0x6b469e(0x6d)](_0x6b469e(0x7b),_0x5bf7ec,_0x1e0b44[_0x6b469e(0x7d)]?{'args':_0x1e0b44[_0x6b469e(0x74)](_0x8f6718=>String(_0x8f6718))}:undefined);}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a2_0x3d9d(_0x4f1b19,_0x59c2bf){_0x4f1b19=_0x4f1b19-0x15d;const _0x1c6012=a2_0x1c60();let _0x3d9de1=_0x1c6012[_0x4f1b19];return _0x3d9de1;}const a2_0x4cc7ad=a2_0x3d9d;function a2_0x1c60(){const _0x3f991e=[']\x20[','fileStream','2284396OwZkgY','665UMNgfZ','4893636pOoZeh','warn','5077330WgYdDp','toUpperCase','1430450DKjRia','info','18189lxQXwG','enabled','4904280otUJdc','_log','184056UAQkAp','isEnabled','MORPH_DEBUG','error','toISOString','debug','env','MORPH_LOG_FILE','stringify'];a2_0x1c60=function(){return _0x3f991e;};return a2_0x1c60();}(function(_0xbf3e78,_0x36ebb4){const _0x514c27=a2_0x3d9d,_0x3ff30f=_0xbf3e78();while(!![]){try{const _0x576828=parseInt(_0x514c27(0x15f))/0x1+parseInt(_0x514c27(0x170))/0x2+parseInt(_0x514c27(0x161))/0x3+-parseInt(_0x514c27(0x163))/0x4+parseInt(_0x514c27(0x15d))/0x5+parseInt(_0x514c27(0x172))/0x6+-parseInt(_0x514c27(0x171))/0x7*(parseInt(_0x514c27(0x165))/0x8);if(_0x576828===_0x36ebb4)break;else _0x3ff30f['push'](_0x3ff30f['shift']());}catch(_0x11d301){_0x3ff30f['push'](_0x3ff30f['shift']());}}}(a2_0x1c60,0xf3aa0));import{createWriteStream}from'fs';class MorphLogger{['enabled'];['fileStream'];constructor(){const _0x417409=a2_0x3d9d;this[_0x417409(0x162)]=process[_0x417409(0x16b)][_0x417409(0x167)]==='1'||!!process['env'][_0x417409(0x16c)];const _0x3c36ce=process[_0x417409(0x16b)][_0x417409(0x16c)];this[_0x417409(0x16f)]=_0x3c36ce?createWriteStream(_0x3c36ce,{'flags':'a'}):null;}[a2_0x4cc7ad(0x16a)](_0x1df55c,_0x3079f6,_0x43f623){const _0x16dfcf=a2_0x4cc7ad;this[_0x16dfcf(0x164)](_0x16dfcf(0x16a),_0x1df55c,_0x3079f6,_0x43f623);}[a2_0x4cc7ad(0x160)](_0x4430d4,_0x2ba2dd,_0x431844){const _0x31f9ba=a2_0x4cc7ad;this[_0x31f9ba(0x164)]('info',_0x4430d4,_0x2ba2dd,_0x431844);}[a2_0x4cc7ad(0x173)](_0x1c9396,_0x57baf7,_0x4650de){const _0x396f98=a2_0x4cc7ad;this[_0x396f98(0x164)](_0x396f98(0x173),_0x1c9396,_0x57baf7,_0x4650de);}[a2_0x4cc7ad(0x168)](_0x15531e,_0x1df1db,_0x24122e){const _0x2a63ed=a2_0x4cc7ad;this['_log'](_0x2a63ed(0x168),_0x15531e,_0x1df1db,_0x24122e);}['enable'](){const _0x4dc79c=a2_0x4cc7ad;this[_0x4dc79c(0x162)]=!![];}get[a2_0x4cc7ad(0x166)](){const _0x1d2b8c=a2_0x4cc7ad;return this[_0x1d2b8c(0x162)];}['_log'](_0x6b9177,_0x388ac7,_0x32530e,_0xbe8765){const _0x23c1a6=a2_0x4cc7ad;if(_0x6b9177!==_0x23c1a6(0x168)&&!this[_0x23c1a6(0x162)])return;const _0x230843=new Date()[_0x23c1a6(0x169)](),_0x5d3859='['+_0x230843+_0x23c1a6(0x16e)+_0x6b9177[_0x23c1a6(0x15e)]()+_0x23c1a6(0x16e)+_0x388ac7+']';console[_0x23c1a6(0x168)](_0xbe8765?_0x5d3859+'\x20'+_0x32530e+'\x20'+JSON[_0x23c1a6(0x16d)](_0xbe8765):_0x5d3859+'\x20'+_0x32530e),this[_0x23c1a6(0x16f)]?.['write'](JSON['stringify']({'ts':_0x230843,'level':_0x6b9177,'component':_0x388ac7,'msg':_0x32530e,..._0xbe8765&&{'data':_0xbe8765}})+'\x0a');}}export const logger=new MorphLogger();
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x14f74,_0xd0a8f3){const _0x531551=a3_0x21ed,_0x2d6ff2=_0x14f74();while(!![]){try{const _0x49b4a4=parseInt(_0x531551(0x7b))/0x1+parseInt(_0x531551(0x88))/0x2*(-parseInt(_0x531551(0x84))/0x3)+parseInt(_0x531551(0x80))/0x4+parseInt(_0x531551(0x8c))/0x5+parseInt(_0x531551(0x7f))/0x6+-parseInt(_0x531551(0x8b))/0x7*(parseInt(_0x531551(0x79))/0x8)+parseInt(_0x531551(0x8d))/0x9;if(_0x49b4a4===_0xd0a8f3)break;else _0x2d6ff2['push'](_0x2d6ff2['shift']());}catch(_0x4300d9){_0x2d6ff2['push'](_0x2d6ff2['shift']());}}}(a3_0x864a,0x3a704));import a3_0x8c7d11 from'path';import a3_0x533632 from'os';export function convertToWindowsPath(_0x23361e){const _0x752520=a3_0x21ed;if(_0x23361e[_0x752520(0x85)](_0x752520(0x81))){const _0x81cd3d=_0x23361e[_0x752520(0x7a)](0x5)[_0x752520(0x83)](),_0x473604=_0x23361e[_0x752520(0x8a)](0x6)[_0x752520(0x89)](/\//g,'\x5c');return _0x81cd3d+':'+_0x473604;}if(_0x23361e['match'](/^\/[a-zA-Z]\//)){const _0x3a4875=_0x23361e['charAt'](0x1)[_0x752520(0x83)](),_0x4023c9=_0x23361e[_0x752520(0x8a)](0x2)[_0x752520(0x89)](/\//g,'\x5c');return _0x3a4875+':'+_0x4023c9;}if(_0x23361e['match'](/^[a-zA-Z]:/))return _0x23361e['replace'](/\//g,'\x5c');return _0x23361e;}export function normalizePath(_0x58b218){const _0x2b01d0=a3_0x21ed;_0x58b218=_0x58b218[_0x2b01d0(0x87)]()[_0x2b01d0(0x89)](/^["']|["']$/g,'');const _0x473ccd=_0x58b218['startsWith']('/')&&!_0x58b218[_0x2b01d0(0x86)](/^\/mnt\/[a-z]\//i)&&!_0x58b218[_0x2b01d0(0x86)](/^\/[a-zA-Z]\//);if(_0x473ccd)return _0x58b218[_0x2b01d0(0x89)](/\/+/g,'/')[_0x2b01d0(0x89)](/\/+$/,'');_0x58b218=convertToWindowsPath(_0x58b218);if(_0x58b218[_0x2b01d0(0x85)]('\x5c\x5c')){let _0x2247db=_0x58b218;_0x2247db=_0x2247db[_0x2b01d0(0x89)](/^\\{2,}/,'\x5c\x5c');const _0xc3648=_0x2247db[_0x2b01d0(0x7c)](0x2)[_0x2b01d0(0x89)](/\\\\/g,'\x5c');_0x58b218='\x5c\x5c'+_0xc3648;}else _0x58b218=_0x58b218[_0x2b01d0(0x89)](/\\\\/g,'\x5c');let _0x1cff1e=a3_0x8c7d11[_0x2b01d0(0x7e)](_0x58b218);_0x58b218['startsWith']('\x5c\x5c')&&!_0x1cff1e[_0x2b01d0(0x85)]('\x5c\x5c')&&(_0x1cff1e='\x5c'+_0x1cff1e);if(_0x1cff1e[_0x2b01d0(0x86)](/^[a-zA-Z]:/)){let _0x7abb84=_0x1cff1e['replace'](/\//g,'\x5c');return/^[a-z]:/[_0x2b01d0(0x82)](_0x7abb84)&&(_0x7abb84=_0x7abb84[_0x2b01d0(0x7a)](0x0)[_0x2b01d0(0x83)]()+_0x7abb84[_0x2b01d0(0x8a)](0x1)),_0x7abb84;}return _0x1cff1e['replace'](/\//g,'\x5c');}function a3_0x864a(){const _0x480567=['43165gjWPUJ','4367862gIfRVL','16PqhToO','charAt','96766IoKqCN','substring','homedir','normalize','151386umTRNS','514512zzqAUS','/mnt/','test','toUpperCase','6treHpI','startsWith','match','trim','374386YToebI','replace','slice','457891yDpyxw'];a3_0x864a=function(){return _0x480567;};return a3_0x864a();}function a3_0x21ed(_0x541eee,_0x477036){_0x541eee=_0x541eee-0x79;const _0x864a29=a3_0x864a();let _0x21ed7c=_0x864a29[_0x541eee];return _0x21ed7c;}export function expandHome(_0x2102b7){const _0x42e7fd=a3_0x21ed;if(_0x2102b7['startsWith']('~/')||_0x2102b7==='~')return a3_0x8c7d11['join'](a3_0x533632[_0x42e7fd(0x7d)](),_0x2102b7['slice'](0x1));return _0x2102b7;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a4_0x360e(){const _0x2ea485=['1361748veqrfL','string','includes','315623bymTOs','8596904xHtnZK','2557118bAuavC','normalize','sep','5izNxHV','7yVCoas','3qUQNto','length','startsWith','1222470Qwutkt','5389992oEzlal','some','1336592ZqYduX','Path\x20must\x20be\x20absolute\x20after\x20normalization','resolve','isAbsolute','1090dRSnRs'];a4_0x360e=function(){return _0x2ea485;};return a4_0x360e();}(function(_0x339ad9,_0x2fc252){const _0x21664a=a4_0x2363,_0x2ce0f3=_0x339ad9();while(!![]){try{const _0x39bbdc=-parseInt(_0x21664a(0xf8))/0x1+-parseInt(_0x21664a(0x102))/0x2*(parseInt(_0x21664a(0x107))/0x3)+parseInt(_0x21664a(0xf6))/0x4+parseInt(_0x21664a(0x105))/0x5*(parseInt(_0x21664a(0xfd))/0x6)+parseInt(_0x21664a(0x106))/0x7*(-parseInt(_0x21664a(0x101))/0x8)+-parseInt(_0x21664a(0xf5))/0x9+parseInt(_0x21664a(0xfc))/0xa*(parseInt(_0x21664a(0x100))/0xb);if(_0x39bbdc===_0x2fc252)break;else _0x2ce0f3['push'](_0x2ce0f3['shift']());}catch(_0xb377c6){_0x2ce0f3['push'](_0x2ce0f3['shift']());}}}(a4_0x360e,0xd5f6f));function a4_0x2363(_0x59ccd2,_0x4ac14a){_0x59ccd2=_0x59ccd2-0xf5;const _0x360e33=a4_0x360e();let _0x236310=_0x360e33[_0x59ccd2];return _0x236310;}import a4_0x4846e9 from'path';export function isPathWithinAllowedDirectories(_0x3696d9,_0x5b18c5){const _0xf7fc62=a4_0x2363;if(typeof _0x3696d9!==_0xf7fc62(0xfe)||!Array['isArray'](_0x5b18c5))return![];if(!_0x3696d9||_0x5b18c5[_0xf7fc62(0x108)]===0x0)return![];if(_0x3696d9['includes']('\x00'))return![];let _0xd0b58a;try{_0xd0b58a=a4_0x4846e9[_0xf7fc62(0xfa)](a4_0x4846e9[_0xf7fc62(0x103)](_0x3696d9));}catch{return![];}if(!a4_0x4846e9['isAbsolute'](_0xd0b58a))throw new Error(_0xf7fc62(0xf9));return _0x5b18c5[_0xf7fc62(0xf7)](_0x5360ea=>{const _0x423041=_0xf7fc62;if(typeof _0x5360ea!==_0x423041(0xfe)||!_0x5360ea)return![];if(_0x5360ea[_0x423041(0xff)]('\x00'))return![];let _0x109bc5;try{_0x109bc5=a4_0x4846e9[_0x423041(0xfa)](a4_0x4846e9[_0x423041(0x103)](_0x5360ea));}catch{return![];}if(!a4_0x4846e9[_0x423041(0xfb)](_0x109bc5))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0xd0b58a===_0x109bc5)return!![];if(_0x109bc5===a4_0x4846e9[_0x423041(0x104)])return _0xd0b58a['startsWith'](a4_0x4846e9['sep']);return _0xd0b58a[_0x423041(0x109)](_0x109bc5+a4_0x4846e9[_0x423041(0x104)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a5_0x4393(){const _0x46dd56=['27752suirwr','304630XhuDYH','non-directory\x20root','1076055xFTokl','isDirectory','2567868kyVaCr','invalid\x20path\x20or\x20inaccessible','Skipping\x20invalid\x20directory:\x20','slice','3340659JGYMHP','108yRcJac','196XikJNP','message','2031680qEVnbj','push','startsWith','uri','homedir','realpath','323360dnMxPx','join','Skipping\x20','stat','531yWlEdE'];a5_0x4393=function(){return _0x46dd56;};return a5_0x4393();}(function(_0x40deb5,_0x2611b8){const _0x56a11a=a5_0xf845,_0x337d5e=_0x40deb5();while(!![]){try{const _0x4be465=-parseInt(_0x56a11a(0x1eb))/0x1+parseInt(_0x56a11a(0x1f5))/0x2+parseInt(_0x56a11a(0x1f1))/0x3+parseInt(_0x56a11a(0x1ed))/0x4+-parseInt(_0x56a11a(0x1e9))/0x5*(-parseInt(_0x56a11a(0x1f2))/0x6)+-parseInt(_0x56a11a(0x1f3))/0x7*(parseInt(_0x56a11a(0x1e8))/0x8)+parseInt(_0x56a11a(0x1e7))/0x9*(-parseInt(_0x56a11a(0x1e3))/0xa);if(_0x4be465===_0x2611b8)break;else _0x337d5e['push'](_0x337d5e['shift']());}catch(_0x362356){_0x337d5e['push'](_0x337d5e['shift']());}}}(a5_0x4393,0xc0249));import{promises as a5_0x2296f1}from'fs';import a5_0x137311 from'path';function a5_0xf845(_0x19e62c,_0xc53681){_0x19e62c=_0x19e62c-0x1de;const _0x439325=a5_0x4393();let _0xf8458a=_0x439325[_0x19e62c];return _0xf8458a;}import a5_0x789d6e from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0xdeccf){const _0x23f4c4=a5_0xf845;try{const _0x4ff71c=_0xdeccf[_0x23f4c4(0x1df)]('file://')?_0xdeccf[_0x23f4c4(0x1f0)](0x7):_0xdeccf,_0x596f01=_0x4ff71c[_0x23f4c4(0x1df)]('~/')||_0x4ff71c==='~'?a5_0x137311[_0x23f4c4(0x1e4)](a5_0x789d6e[_0x23f4c4(0x1e1)](),_0x4ff71c['slice'](0x1)):_0x4ff71c,_0x3ea4d5=a5_0x137311['resolve'](_0x596f01),_0x3a0fc7=await a5_0x2296f1[_0x23f4c4(0x1e2)](_0x3ea4d5);return normalizePath(_0x3a0fc7);}catch{return null;}}function formatDirectoryError(_0xe8a1af,_0xdee2ae,_0x21e7de){const _0x58dfb7=a5_0xf845;if(_0x21e7de)return _0x58dfb7(0x1e5)+_0x21e7de+':\x20'+_0xe8a1af;const _0x451952=_0xdee2ae instanceof Error?_0xdee2ae[_0x58dfb7(0x1f4)]:String(_0xdee2ae);return _0x58dfb7(0x1ef)+_0xe8a1af+'\x20due\x20to\x20error:\x20'+_0x451952;}export async function getValidRootDirectories(_0x121a7b){const _0x118c6a=a5_0xf845,_0xdd6e2f=[];for(const _0x588d12 of _0x121a7b){const _0x1bd777=await parseRootUri(_0x588d12[_0x118c6a(0x1e0)]);if(!_0x1bd777){logMcpStderr(formatDirectoryError(_0x588d12[_0x118c6a(0x1e0)],undefined,_0x118c6a(0x1ee)));continue;}try{const _0x19468d=await a5_0x2296f1[_0x118c6a(0x1e6)](_0x1bd777);_0x19468d[_0x118c6a(0x1ec)]()?_0xdd6e2f[_0x118c6a(0x1de)](_0x1bd777):logMcpStderr(formatDirectoryError(_0x1bd777,undefined,_0x118c6a(0x1ea)));}catch(_0x2c5d1f){logMcpStderr(formatDirectoryError(_0x1bd777,_0x2c5d1f));}}return _0xdd6e2f;}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a6_0x2fa413=a6_0x2a5c;(function(_0x540dcb,_0x397804){const _0x5901c4=a6_0x2a5c,_0x469e0b=_0x540dcb();while(!![]){try{const _0x253d58=parseInt(_0x5901c4(0x167))/0x1*(-parseInt(_0x5901c4(0x163))/0x2)+parseInt(_0x5901c4(0x169))/0x3*(-parseInt(_0x5901c4(0x16a))/0x4)+parseInt(_0x5901c4(0x164))/0x5*(parseInt(_0x5901c4(0x16d))/0x6)+parseInt(_0x5901c4(0x16e))/0x7*(parseInt(_0x5901c4(0x165))/0x8)+parseInt(_0x5901c4(0x16c))/0x9*(parseInt(_0x5901c4(0x168))/0xa)+-parseInt(_0x5901c4(0x162))/0xb+parseInt(_0x5901c4(0x166))/0xc;if(_0x253d58===_0x397804)break;else _0x469e0b['push'](_0x469e0b['shift']());}catch(_0x2bea55){_0x469e0b['push'](_0x469e0b['shift']());}}}(a6_0x2157,0x58ed0));export const TOOL_NAMES={'EDIT_FILE':'edit_file','CODEBASE_SEARCH':a6_0x2fa413(0x161),'GITHUB_CODEBASE_SEARCH':'github_codebase_search'};function a6_0x2157(){const _0xb9637c=['39GYJaeG','71732GbtCKn','values','126lWiMAk','6lHhJLw','7uZjKVD','codebase_search','5549302vMSoCz','40vwUbqa','132805TmaqYv','2633192uJCFDE','9501660NRYCex','16531zZEmwV','203540vJCvlF'];a6_0x2157=function(){return _0xb9637c;};return a6_0x2157();}function a6_0x2a5c(_0x16f89f,_0xedc9ae){_0x16f89f=_0x16f89f-0x161;const _0x2157d0=a6_0x2157();let _0x2a5c1a=_0x2157d0[_0x16f89f];return _0x2a5c1a;}export const ALL_TOOL_NAMES=Object[a6_0x2fa413(0x16b)](TOOL_NAMES);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.176",
|
|
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)",
|