@morphllm/morphmcp 0.8.218 → 0.8.220

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 CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const a0_0x1d9c46=a0_0x2c14;function a0_0x2c14(_0x475594,_0x16a119){_0x475594=_0x475594-0xb8;const _0x507c0f=a0_0x507c();let _0x2c1470=_0x507c0f[_0x475594];return _0x2c1470;}(function(_0xc4348a,_0x586cc2){const _0x56d49f=a0_0x2c14,_0x5f0e58=_0xc4348a();while(!![]){try{const _0x3c4638=parseInt(_0x56d49f(0xe7))/0x1+parseInt(_0x56d49f(0x151))/0x2*(parseInt(_0x56d49f(0x180))/0x3)+parseInt(_0x56d49f(0xd0))/0x4*(-parseInt(_0x56d49f(0x119))/0x5)+-parseInt(_0x56d49f(0x197))/0x6+-parseInt(_0x56d49f(0xf4))/0x7+-parseInt(_0x56d49f(0x1c2))/0x8+-parseInt(_0x56d49f(0x163))/0x9*(-parseInt(_0x56d49f(0x1d7))/0xa);if(_0x3c4638===_0x586cc2)break;else _0x5f0e58['push'](_0x5f0e58['shift']());}catch(_0x3c21ef){_0x5f0e58['push'](_0x5f0e58['shift']());}}}(a0_0x507c,0x70166));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_0x28e2dc from'fs/promises';import a0_0x35f3fc from'path';import a0_0x32368f from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';function a0_0x507c(){const _0x438011=['MCP','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','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.','Tool\x20','command','Parameters:\x0a','utf-8','-\x20Read\x20file\x20`','TimeoutError','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.','isArray','ENABLE_WORKSPACE_MODE','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','owner_repo','EDIT_FILE','read',',\x20modified\x20','read\x20','list_directory','.cursor','path_validation_resolved','match','requiresApiKey','MORPH_API_KEY','slice','`\x20in\x20`','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','cwd','WarpGrepError','map','timed\x20out','false','compaction_failed','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','dirname','status','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','MORPH_API_URL','4472448grEkvW','warn','[could\x20not\x20read\x20file:\x20','WORKSPACE_ROOT','floor','\x0aOptions:','Warning:\x20ENABLED_TOOLS/DISABLED_TOOLS\x20names\x20unknown\x20tool\x20\x22','messages','assistant','Rules:\x0a','Created\x20File','parse','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','catch','WarpGrep\x20sub-tool\x20errors:\x20','instructions','\x22.\x20Known\x20tools:\x20','morph-mcp','join','PWD','@morphllm/morphmcp\x20','9530gKEhYz','Tool\x20\x22','env','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','file_read_complete','describe','stack','startsWith','github_search_start','min','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','path_validation_failed','glob\x20\x27','file_path','WHEN\x20TO\x20USE\x20vs\x20native\x20edit/patch\x20tools:\x20prefer\x20this\x20tool\x20for\x20large\x20files,\x20multiple\x20or\x20scattered\x20edits,\x20refactors,\x20and\x20whitespace-sensitive\x20changes.\x20A\x20single\x20tiny\x20exact-string\x20replacement\x20can\x20use\x20the\x20native\x20edit/patch\x20tool.\x20If\x20this\x20tool\x20errors\x20or\x20times\x20out,\x20fall\x20back\x20to\x20native\x20edit\x20with\x20exact\x20string\x20matching.\x0a\x0a','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','has','some','indexOf','RipgrepNotAvailable','role','constructor','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.','isDirectory','Workspace\x20mode\x20enabled:\x20Using\x20','turns','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','\x27\x20in\x20`','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','enum','--api-key=','morph-v3-large','linesModified','lines','5716XfbTyy','context','unknown\x20error','edit_file','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','.\x20Path:\x20','listRoots','all','boolean','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','grep','function','linesRemoved','\x20valid\x20directories','linesAdded','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','timeout','github_url','Morph\x20Edit\x20','path_validation_start','MORPH_LARGE_APPLY','morph-warp-grep-v2.1','163999xBlTkL','object','basename','SymlinkError','Error\x20accessing\x20directory\x20','codebase_search','setNotificationHandler','glob','stat','instruction','ENOENT','ms.\x20Success:\x20','0.2.0','6204401JRkHUT','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','FileReadError','--api-key','-\x20Glob\x20search\x20`','split','message','normalize','Fatal\x20error\x20running\x20server:','now','pattern','[github_codebase_search]\x20Failed\x20in\x20','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','access','[github_codebase_search]\x20Done\x20in\x20','grep_search','filePath','repo_path','Parent\x20directory\x20does\x20not\x20exist:\x20','warp_grep_complete','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','files','\x0a</file>','safeParse','ReadError','package.json','Example\x20format:\x0a','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','tool_call_id','added\x20','Fallback:\x20Using\x20workspace\x20root\x20','toLowerCase','tool_calls','Cargo.toml','annotations','readFile','post','1670JLGbuq','provider_created','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','roots','-\x20Preserve\x20exact\x20indentation\x0a','target_filepath','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','code_edit','--help','homedir','response','mcp-filesystem','Failed\x20to\x20request\x20roots\x20from\x20client:','\x20-\x20','sep','Disabled\x20tools:\x20','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','\x20(new\x20file)','oninitialized','RipgrepError','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','api-key','description','sk-','text','list_directory\x20','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','metadata','log','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','edit','arguments','exit','file_read_failed','length','Morph\x20Edit\x20Preview','tool','resolve','code','unknown','errors','\x0a...\x20(truncated,\x20total:\x20','completed_with_file_errors','morph-v3-fast','-\x20Listed\x20directory\x20`','Warning:\x20Workspace\x20fallback\x20failed:\x20','GitHub\x20search\x20failed:\x20','\x20disabled\x20via\x20ENABLED_TOOLS/DISABLED_TOOLS','GITHUB_CODEBASE_SEARCH','searchGitHub','search_string','path','Applied','success','https://morphllm.com/api/error-report','target_file','2OMxXCv','title','ToolException','.\x20Changes:\x20','content','debug','data','source','UnknownError','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','Preview\x20changes\x20without\x20applying\x20them.','default','user','runWarpGrep_call','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','BinaryFile','includes','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','27414sCBgOE','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','tsconfig.json','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','every','Bearer\x20','optional','PathError','\x22>\x0a','branch','node_modules','name','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','MORPH_WARP_GREP_TIMEOUT','morph-','\x20error(s)','timings','CODEBASE_SEARCH','new_string','Relevant\x20context\x20found:','Error\x20running\x20fast\x20context\x20search:\x20','FileNotFound','finish','\x22>\x0aError\x20reading\x20file:\x20','\x20\x20morph-mcp','substring','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','.git','53589vUMaiB','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','error','Warning:\x20','Error:\x20','<file\x20path=\x22','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','api_request_start','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','search_type','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','string','tool_call_error','etimedout','filter','API\x20error\x20(auth/rate-limit)','completed','realpath','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','terminationReason','push','stringify','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','4217430RMWdqj','.vscode','dryRun','SubToolError','\x20is\x20not\x20a\x20directory'];a0_0x507c=function(){return _0x438011;};return a0_0x507c();}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_0xe5763e from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES,resolveToolFilter}from'./tool-definitions.js';function fixPathRepetition(_0x564eeb){const _0x546cdf=a0_0x2c14,_0x3d8461=_0x564eeb[_0x546cdf(0xf9)](a0_0x35f3fc[_0x546cdf(0x127)])[_0x546cdf(0x18e)](Boolean);if(_0x3d8461[_0x546cdf(0x13b)]<0x2)return null;for(let _0x1988d0=Math[_0x546cdf(0x1c6)](_0x3d8461[_0x546cdf(0x13b)]/0x2);_0x1988d0>=0x1;_0x1988d0--){for(let _0x4063f8=0x0;_0x4063f8<=_0x3d8461['length']-0x2*_0x1988d0;_0x4063f8++){const _0x25d437=_0x3d8461[_0x546cdf(0x1b4)](_0x4063f8,_0x4063f8+_0x1988d0),_0x530029=_0x3d8461[_0x546cdf(0x1b4)](_0x4063f8+_0x1988d0,_0x4063f8+0x2*_0x1988d0);if(_0x25d437[_0x546cdf(0x167)]((_0x7b3e5d,_0x3adaa3)=>_0x7b3e5d===_0x530029[_0x3adaa3])){const _0x614de8=[..._0x3d8461['slice'](0x0,_0x4063f8),..._0x3d8461[_0x546cdf(0x1b4)](_0x4063f8+_0x1988d0)];return a0_0x35f3fc[_0x546cdf(0x127)]+_0x614de8[_0x546cdf(0x1d4)](a0_0x35f3fc['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x22bb29=a0_0x2c14;try{const _0x543439=require('../package.json');return _0x543439['version']??_0x22bb29(0x140);}catch(_0x235c68){return logMcpStderr(_0x22bb29(0x1db),_0x235c68),_0x22bb29(0x140);}}function printHelp(){const _0x1edc3e=a0_0x2c14;console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x1edc3e(0x135)](_0x1edc3e(0x133)),console[_0x1edc3e(0x135)](_0x1edc3e(0x1c7)),console[_0x1edc3e(0x135)](_0x1edc3e(0x1da)),console[_0x1edc3e(0x135)](_0x1edc3e(0x1ce)),console[_0x1edc3e(0x135)](_0x1edc3e(0x188)),console['log']('\x0aExamples:'),console['log'](_0x1edc3e(0x17b)),console[_0x1edc3e(0x135)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process['argv'][a0_0x1d9c46(0x1b4)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x1d9c46(0x121),'-h']);cliArgs[a0_0x1d9c46(0xbf)](_0xab262b=>VERSION_FLAGS[a0_0x1d9c46(0xbe)](_0xab262b))&&(console['log'](a0_0x1d9c46(0x1d6)+getPackageVersion()),process[a0_0x1d9c46(0x139)](0x0));cliArgs['some'](_0x2e4510=>HELP_FLAGS[a0_0x1d9c46(0xbe)](_0x2e4510))&&(printHelp(),process[a0_0x1d9c46(0x139)](0x0));function getCliArg(_0x73f175){const _0x1408be=a0_0x1d9c46;for(let _0x566662=0x0;_0x566662<cliArgs[_0x1408be(0x13b)];_0x566662++){const _0x5ab7b5=cliArgs[_0x566662];if(_0x5ab7b5[_0x1408be(0x1df)]('--'+_0x73f175+'='))return _0x5ab7b5[_0x1408be(0x1b4)](('--'+_0x73f175+'=')[_0x1408be(0x13b)]);if(_0x5ab7b5==='--'+_0x73f175&&_0x566662+0x1<cliArgs[_0x1408be(0x13b)])return cliArgs[_0x566662+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x1d9c46(0x13b)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x1d9c46(0xbe)](arg)||HELP_FLAGS[a0_0x1d9c46(0xbe)](arg))continue;if(arg['startsWith'](a0_0x1d9c46(0xcc)))continue;if(arg===a0_0x1d9c46(0xf7)){i++;continue;}args[a0_0x1d9c46(0x194)](arg);}const WORKSPACE_ROOT=process[a0_0x1d9c46(0x1d9)][a0_0x1d9c46(0x1c5)]||process['env'][a0_0x1d9c46(0x1d5)]||process[a0_0x1d9c46(0x1b7)](),ENABLE_WORKSPACE_MODE=process[a0_0x1d9c46(0x1d9)][a0_0x1d9c46(0x1a7)]!=='false',MORPH_API_KEY=getCliArg(a0_0x1d9c46(0x12e))??process[a0_0x1d9c46(0x1d9)][a0_0x1d9c46(0x1b3)],MORPH_API_URL=process['env'][a0_0x1d9c46(0x1c1)],MORPH_LARGE_APPLY=process[a0_0x1d9c46(0x1d9)][a0_0x1d9c46(0xe5)]!==a0_0x1d9c46(0x1bb),MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x1d9c46(0x170)]?parseInt(process[a0_0x1d9c46(0x1d9)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),TOOL_FILTER=resolveToolFilter(process[a0_0x1d9c46(0x1d9)]),DISABLED_TOOLS=TOOL_FILTER['disabled'];for(const tool of TOOL_FILTER[a0_0x1d9c46(0x140)]){console['error'](a0_0x1d9c46(0x1c8)+tool+a0_0x1d9c46(0x1d2)+[...KNOWN_TOOL_NAMES][a0_0x1d9c46(0x1d4)](',\x20'));}DISABLED_TOOLS['size']>0x0&&console['error'](a0_0x1d9c46(0x128)+[...DISABLED_TOOLS][a0_0x1d9c46(0x1d4)](',\x20'));MORPH_API_KEY&&!MORPH_API_KEY[a0_0x1d9c46(0x1df)](a0_0x1d9c46(0x130))&&!MORPH_API_KEY[a0_0x1d9c46(0x1df)](a0_0x1d9c46(0x171))&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x8af8c1){const _0x434e02=a0_0x1d9c46;try{await a0_0xe5763e[_0x434e02(0x118)](_0x434e02(0x14f),{..._0x8af8c1,'timestamp':new Date()['toISOString'](),'source':_0x8af8c1[_0x434e02(0x158)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x8af8c1[_0x434e02(0xd1)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x434e02(0x168)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x27cb31,_0x5b47ce){const _0x49395b=a0_0x1d9c46;if(_0x27cb31&&typeof _0x27cb31===_0x49395b(0xe8)&&_0x49395b(0x1bf)in _0x27cb31)return _0x27cb31[_0x49395b(0x1bf)];if(_0x27cb31&&typeof _0x27cb31==='object'&&'response'in _0x27cb31)return _0x27cb31[_0x49395b(0x123)]?.[_0x49395b(0x1bf)];const _0x4db37f=_0x5b47ce[_0x49395b(0x1b1)](/\b(401|429)\b/);return _0x4db37f?parseInt(_0x4db37f[0x1],0xa):null;}function handleMorphAPIError(_0x967dd){const _0x2f7550=a0_0x1d9c46,_0x3fed5c=_0x967dd instanceof Error?_0x967dd['message']:String(_0x967dd),_0x117125=extractStatusCode(_0x967dd,_0x3fed5c);switch(_0x117125){case 0x191:return{'content':[{'type':_0x2f7550(0x131),'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':_0x2f7550(0x131),'text':'Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.'}],'isError':!![]};default:return null;}}args[a0_0x1d9c46(0x13b)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x1d9c46(0xc8)),logMcpStderr(a0_0x1d9c46(0x166)),logMcpStderr(a0_0x1d9c46(0x186)),logMcpStderr(a0_0x1d9c46(0x17e)),logMcpStderr(a0_0x1d9c46(0xdf)),logMcpStderr(a0_0x1d9c46(0x18a)));function normalizePath(_0xaf3c2f){const _0x1caa55=a0_0x1d9c46;return a0_0x35f3fc[_0x1caa55(0xfb)](_0xaf3c2f);}function expandHome(_0xfa8da9){const _0x282313=a0_0x1d9c46;if(_0xfa8da9[_0x282313(0x1df)]('~/')||_0xfa8da9==='~')return a0_0x35f3fc[_0x282313(0x1d4)](a0_0x32368f[_0x282313(0x122)](),_0xfa8da9[_0x282313(0x1b4)](0x1));return _0xfa8da9;}let allowedDirectories=await Promise[a0_0x1d9c46(0xd7)](args[a0_0x1d9c46(0x1b9)](async _0x48f752=>{const _0x414e3a=a0_0x1d9c46,_0x43adc5=expandHome(_0x48f752),_0x5adc86=a0_0x35f3fc[_0x414e3a(0x13e)](_0x43adc5);try{const _0x480879=await a0_0x28e2dc['realpath'](_0x5adc86);return normalizePath(_0x480879);}catch(_0x272ff6){return normalizePath(_0x5adc86);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x1d9c46(0x194)](workspaceDir),logMcpStderr(a0_0x1d9c46(0xc6)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x49516a){logMcpStderr(a0_0x1d9c46(0x10f)+a0_0x49516a);}async function detectWorkspaceRoot(_0x2f1900){const _0x3a4419=a0_0x1d9c46;let _0x436f6c=a0_0x35f3fc[_0x3a4419(0x13e)](_0x2f1900);const _0x3e4e82=[_0x3a4419(0x17f),_0x3a4419(0x198),_0x3a4419(0x10d),_0x3a4419(0x115),'pyproject.toml','go.mod',_0x3a4419(0x1af),_0x3a4419(0x165),'composer.json'];while(_0x436f6c!==a0_0x35f3fc['dirname'](_0x436f6c)){for(const _0x4feb1f of _0x3e4e82){const _0xe90149=a0_0x35f3fc[_0x3a4419(0x1d4)](_0x436f6c,_0x4feb1f);try{return await a0_0x28e2dc[_0x3a4419(0x101)](_0xe90149),normalizePath(_0x436f6c);}catch{}}_0x436f6c=a0_0x35f3fc[_0x3a4419(0x1be)](_0x436f6c);}return normalizePath(_0x2f1900);}await Promise[a0_0x1d9c46(0xd7)](args[a0_0x1d9c46(0x1b9)](async _0x2bb716=>{const _0x320310=a0_0x1d9c46;try{const _0x4a69fe=await a0_0x28e2dc[_0x320310(0xef)](expandHome(_0x2bb716));!_0x4a69fe[_0x320310(0xc5)]()&&(logMcpStderr(_0x320310(0x184)+_0x2bb716+_0x320310(0x19b)),process[_0x320310(0x139)](0x1));}catch(_0x476232){logMcpStderr(_0x320310(0xeb)+_0x2bb716+':',_0x476232),process[_0x320310(0x139)](0x1);}}));async function validatePath(_0x224140){const _0x499e5e=a0_0x1d9c46,_0x699999=expandHome(_0x224140),_0x10917d=a0_0x35f3fc[_0x499e5e(0x13e)](_0x699999);logger[_0x499e5e(0x156)]('MCP',_0x499e5e(0xe4),{'raw_path':_0x224140,'absolute':_0x10917d});try{const _0x11c061=await a0_0x28e2dc['realpath'](_0x10917d);return logger[_0x499e5e(0x156)](_0x499e5e(0x19c),_0x499e5e(0x1b0),{'resolved':_0x11c061,'symlink':_0x11c061!==_0x10917d}),_0x11c061;}catch(_0x2152c2){if(_0x2152c2[_0x499e5e(0x13f)]===_0x499e5e(0xf1)){const _0x5e78b0=a0_0x35f3fc[_0x499e5e(0x1be)](_0x10917d);try{const _0x3d5aaf=await a0_0x28e2dc[_0x499e5e(0x191)](_0x5e78b0),_0x324c84=a0_0x35f3fc['join'](_0x3d5aaf,a0_0x35f3fc[_0x499e5e(0xe9)](_0x10917d));return logger[_0x499e5e(0x156)](_0x499e5e(0x19c),_0x499e5e(0x1b0),{'resolved':_0x324c84,'new_file':!![]}),_0x324c84;}catch{logger[_0x499e5e(0x182)]('MCP',_0x499e5e(0xb9),{'raw_path':_0x224140,'error':_0x499e5e(0x106)+_0x5e78b0});throw new Error(_0x499e5e(0x106)+_0x5e78b0);}}logger[_0x499e5e(0x182)](_0x499e5e(0x19c),_0x499e5e(0xb9),{'raw_path':_0x224140,'error':_0x2152c2[_0x499e5e(0xfa)]});throw _0x2152c2;}}const MorphEditFileArgsSchema=z[a0_0x1d9c46(0xe8)]({'path':z[a0_0x1d9c46(0x18b)](),'code_edit':z[a0_0x1d9c46(0x18b)]()[a0_0x1d9c46(0x1dd)](a0_0x1d9c46(0x1b6)),'instruction':z['string']()[a0_0x1d9c46(0x1dd)](a0_0x1d9c46(0x108)),'dryRun':z[a0_0x1d9c46(0xd8)]()[a0_0x1d9c46(0x15c)](![])[a0_0x1d9c46(0x1dd)](a0_0x1d9c46(0x15b))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x1d9c46(0xc4),WarpGrepArgsSchema=z[a0_0x1d9c46(0xe8)]({'search_string':z[a0_0x1d9c46(0x18b)]()[a0_0x1d9c46(0x1dd)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x1d9c46(0x18b)]()[a0_0x1d9c46(0x1dd)](a0_0x1d9c46(0x164)),'search_type':z[a0_0x1d9c46(0xcb)]([a0_0x1d9c46(0x15c),'node_modules'])[a0_0x1d9c46(0x169)]()[a0_0x1d9c46(0x1dd)](a0_0x1d9c46(0xe0))}),WarpGrepGitHubArgsSchema=z[a0_0x1d9c46(0xe8)]({'search_string':z['string']()[a0_0x1d9c46(0x1dd)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()['optional']()[a0_0x1d9c46(0x1dd)](a0_0x1d9c46(0x19e)),'owner_repo':z[a0_0x1d9c46(0x18b)]()[a0_0x1d9c46(0x169)]()['describe'](a0_0x1d9c46(0xb8)),'branch':z['string']()[a0_0x1d9c46(0x169)]()['describe'](a0_0x1d9c46(0x17d))}),server=new Server({'name':a0_0x1d9c46(0x1d3),'version':'0.2.0'},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0xfcdf9a=a0_0x1d9c46,_0x204f4f=[{'name':TOOL_NAMES['EDIT_FILE'],'description':'**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.\x20Unlike\x20search-and-replace\x20or\x20patch\x20edits\x20which\x20do\x20narrow\x20edits\x20one\x20at\x20a\x20time,\x20with\x20this\x20tool\x20you\x20should\x20do\x20all\x20your\x20code\x20changes\x20in\x20one\x20go\x20separated\x20by\x20`//\x20...\x20existing\x20code\x20...`\x20markers.\x20This\x20saves\x20tokens\x20and\x20improves\x20performance\x20because\x20you\x20do\x20not\x20need\x20to\x20reread\x20files\x20before\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a'+_0xfcdf9a(0xbc)+_0xfcdf9a(0x1a1)+_0xfcdf9a(0xca)+'-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a'+_0xfcdf9a(0x162)+_0xfcdf9a(0xf5)+_0xfcdf9a(0x10e)+_0xfcdf9a(0xbd)+_0xfcdf9a(0x1cb)+_0xfcdf9a(0x11f)+_0xfcdf9a(0x11d)+_0xfcdf9a(0x15a)+_0xfcdf9a(0x136),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'annotations':{'readOnlyHint':![],'destructiveHint':!![],'idempotentHint':![],'openWorldHint':![]},'requiresApiKey':!![]},{'name':TOOL_NAMES['CODEBASE_SEARCH'],'description':_0xfcdf9a(0x11b)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0xfcdf9a(0x15f)+_0xfcdf9a(0xd9)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':!![]},'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':!![]},'requiresApiKey':!![]}],_0x5b3d8f=_0x204f4f[_0xfcdf9a(0x18e)](_0x117950=>{const _0x416d13=_0xfcdf9a;if(DISABLED_TOOLS[_0x416d13(0xbe)](_0x117950[_0x416d13(0x16e)]))return console['error'](_0x416d13(0x19f)+_0x117950[_0x416d13(0x16e)]+_0x416d13(0x148)),![];if(_0x416d13(0x1b2)in _0x117950&&_0x117950[_0x416d13(0x1b2)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x117950[_0x416d13(0x16e)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x5b3d8f[_0xfcdf9a(0x1b9)](_0x396687=>({'name':_0x396687['name'],..._0xfcdf9a(0x152)in _0x396687&&_0x396687[_0xfcdf9a(0x152)]?{'title':_0x396687[_0xfcdf9a(0x152)]}:{},'description':_0x396687[_0xfcdf9a(0x12f)],'inputSchema':_0x396687['inputSchema'],..._0xfcdf9a(0x116)in _0x396687&&_0x396687[_0xfcdf9a(0x116)]?{'annotations':_0x396687['annotations']}:{}}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x442046=>{const _0x5c21bd=a0_0x1d9c46,{name:_0x4fd9fb,arguments:_0xdcd00e}=_0x442046['params'],_0x2227e5=Date[_0x5c21bd(0xfd)]();logger[_0x5c21bd(0x156)](_0x5c21bd(0x19c),'tool_call_received',{'tool':_0x4fd9fb,'args':_0x4fd9fb===_0x5c21bd(0xd3)?{'path':_0xdcd00e?.[_0x5c21bd(0x14c)],'instruction':_0xdcd00e?.[_0x5c21bd(0xf0)]||_0xdcd00e?.[_0x5c21bd(0x1d1)],'dryRun':_0xdcd00e?.['dryRun']}:_0xdcd00e});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x5c21bd(0x131),'text':_0x5c21bd(0x192)}],'isError':!![]};if(!MORPH_API_KEY[_0x5c21bd(0x1df)]('sk-')&&!MORPH_API_KEY[_0x5c21bd(0x1df)](_0x5c21bd(0x171)))return{'content':[{'type':_0x5c21bd(0x131),'text':_0x5c21bd(0x1a5)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0x4fd9fb))return{'content':[{'type':_0x5c21bd(0x131),'text':_0x5c21bd(0x1d8)+_0x4fd9fb+'\x22\x20is\x20disabled\x20via\x20ENABLED_TOOLS/DISABLED_TOOLS\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.'}],'isError':![]};switch(_0x4fd9fb){case TOOL_NAMES[_0x5c21bd(0x1aa)]:{let _0x32d9f1=_0xdcd00e;if(_0x32d9f1&&typeof _0x32d9f1===_0x5c21bd(0xe8)){if(!(_0x5c21bd(0x14c)in _0x32d9f1)){const _0x14cea7=_0x32d9f1[_0x5c21bd(0x150)]??_0x32d9f1[_0x5c21bd(0x104)]??_0x32d9f1[_0x5c21bd(0x11e)]??_0x32d9f1[_0x5c21bd(0xbb)]??_0x32d9f1['file'];if(_0x14cea7)_0x32d9f1={..._0x32d9f1,'path':_0x14cea7};}_0x5c21bd(0x1d1)in _0x32d9f1&&!('instruction'in _0x32d9f1)&&(_0x32d9f1={..._0x32d9f1,'instruction':_0x32d9f1[_0x5c21bd(0x1d1)]});if(!(_0x5c21bd(0x120)in _0x32d9f1)){const _0xb612d7=_0x32d9f1[_0x5c21bd(0x13f)]??_0x32d9f1[_0x5c21bd(0x175)]??_0x32d9f1[_0x5c21bd(0x155)]??_0x32d9f1[_0x5c21bd(0x137)];if(_0xb612d7)_0x32d9f1={..._0x32d9f1,'code_edit':_0xb612d7};}}const _0x4cbd86=MorphEditFileArgsSchema[_0x5c21bd(0x10b)](_0x32d9f1);if(!_0x4cbd86[_0x5c21bd(0x14e)])throw new Error(_0x5c21bd(0x181)+_0x4cbd86[_0x5c21bd(0x182)]);const _0x50c989=await validatePath(_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x14c)]);let _0x27b8ff=null,_0x3d9011=!![],_0x5321d2=null;try{_0x27b8ff=await a0_0x28e2dc['readFile'](_0x50c989,'utf-8'),logger[_0x5c21bd(0x156)](_0x5c21bd(0x19c),'file_read_complete',{'path':_0x50c989,'size_bytes':_0x27b8ff[_0x5c21bd(0x13b)]});}catch(_0x3b16cb){const _0x3a6110=_0x3b16cb[_0x5c21bd(0x13f)];_0x3a6110===_0x5c21bd(0xf1)?(_0x3d9011=![],_0x27b8ff='',logger[_0x5c21bd(0x156)](_0x5c21bd(0x19c),_0x5c21bd(0x1dc),{'path':_0x50c989,'exists':![]})):(_0x5321d2='Failed\x20to\x20read\x20file:\x20'+(_0x3a6110||_0x5c21bd(0x140))+_0x5c21bd(0x126)+(_0x3b16cb instanceof Error?_0x3b16cb[_0x5c21bd(0xfa)]:String(_0x3b16cb)),logger[_0x5c21bd(0x182)](_0x5c21bd(0x19c),_0x5c21bd(0x13a),{'path':_0x50c989,'error':_0x5321d2}),logMcpStderr(_0x5c21bd(0x183)+_0x5321d2));}let _0x3cd2d5;try{const _0x1bf31e=MORPH_API_KEY;if(!_0x1bf31e)throw new Error(_0x5c21bd(0x1bd));const _0x1e2f19=a0_0x35f3fc[_0x5c21bd(0x1be)](_0x50c989),_0x5c8fcd=a0_0x35f3fc[_0x5c21bd(0xe9)](_0x50c989);logger[_0x5c21bd(0x156)]('MCP',_0x5c21bd(0x187),{'model':_0x5c21bd(0x144),'path':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x14c)],'instruction_len':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0xf0)][_0x5c21bd(0x13b)],'code_edit_len':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x120)]['length'],'original_code_len':_0x27b8ff?.[_0x5c21bd(0x13b)]??0x0,'dry_run':_0x4cbd86['data']['dryRun']});const _0x125f82=Date[_0x5c21bd(0xfd)](),_0x4a402f=await executeEditFile({'target_filepath':_0x5c8fcd,'code_edit':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x120)],'instruction':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0xf0)]},{'morphApiKey':_0x1bf31e,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x1e2f19,'autoWrite':!_0x4cbd86[_0x5c21bd(0x157)]['dryRun'],'generateUdiff':![],'debug':![]}),_0x221354=Date[_0x5c21bd(0xfd)]()-_0x125f82;_0x3cd2d5=_0x4a402f['completionId'];if(!_0x4a402f['success'])throw new Error(_0x4a402f[_0x5c21bd(0x182)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x479403=_0x4a402f['changes'],_0x30f9e4=_0x5c21bd(0x111)+_0x479403['linesAdded']+',\x20removed\x20'+_0x479403[_0x5c21bd(0xdc)]+_0x5c21bd(0x1ac)+_0x479403[_0x5c21bd(0xce)];logger[_0x5c21bd(0x156)](_0x5c21bd(0x19c),'tool_call_complete',{'tool':_0x5c21bd(0xd3),'success':!![],'latency_ms':Date[_0x5c21bd(0xfd)]()-_0x2227e5,'edit_latency_ms':_0x221354,'changes':{'added':_0x479403[_0x5c21bd(0xde)],'removed':_0x479403[_0x5c21bd(0xdc)],'modified':_0x479403['linesModified']},'completion_id':_0x3cd2d5});if(_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x199)])return{'content':[{'type':_0x5c21bd(0x131),'text':_0x5c21bd(0x13c)+(_0x3d9011?'':_0x5c21bd(0x12a))+':\x20'+_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0xf0)]+_0x5c21bd(0x154)+_0x30f9e4+'.\x20Path:\x20'+_0x4cbd86['data'][_0x5c21bd(0x14c)]+'.'}]};return{'content':[{'type':_0x5c21bd(0x131),'text':_0x5c21bd(0xe3)+(_0x3d9011?_0x5c21bd(0x14d):_0x5c21bd(0x1cc))+':\x20'+_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0xf0)]+_0x5c21bd(0x154)+_0x30f9e4+_0x5c21bd(0xd5)+_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x14c)]+'.'}]};}catch(_0x1ba89e){const _0x214685=handleMorphAPIError(_0x1ba89e);if(_0x214685)return logger['error'](_0x5c21bd(0x19c),_0x5c21bd(0x18c),{'tool':_0x5c21bd(0xd3),'error':_0x5c21bd(0x18f),'latency_ms':Date[_0x5c21bd(0xfd)]()-_0x2227e5}),_0x214685;const _0x2e09ed=_0x1ba89e instanceof Error?_0x1ba89e[_0x5c21bd(0xfa)]:String(_0x1ba89e);return logger[_0x5c21bd(0x182)]('MCP',_0x5c21bd(0x18c),{'tool':'edit_file','error':_0x2e09ed,'path':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x14c)],'validated_path':_0x50c989,'latency_ms':Date[_0x5c21bd(0xfd)]()-_0x2227e5,'stack':_0x1ba89e instanceof Error?_0x1ba89e[_0x5c21bd(0x1de)]:undefined}),reportMorphError({'error_message':_0x2e09ed,'error_type':_0x1ba89e instanceof Error?_0x1ba89e[_0x5c21bd(0xc3)][_0x5c21bd(0x16e)]:'UnknownError','context':{'tool':_0x5c21bd(0xd3),'completion_id':_0x3cd2d5,'file_path':_0x4cbd86['data'][_0x5c21bd(0x14c)],'validated_path':_0x50c989,'instruction':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0xf0)],'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x5c21bd(0x144),'dry_run':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x199)],'file_exists':_0x3d9011,'file_read_error':_0x5321d2,'file_readable':_0x27b8ff!==null,'request_content':{'path':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x14c)],'code_edit':_0x4cbd86['data'][_0x5c21bd(0x120)],'instruction':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0xf0)],'original_code':_0x27b8ff!==null?_0x27b8ff[_0x5c21bd(0x13b)]>0xc350?_0x27b8ff['substring'](0x0,0xc350)+_0x5c21bd(0x142)+_0x27b8ff['length']+'\x20chars)':_0x27b8ff:_0x5c21bd(0x1c4)+(_0x5321d2||_0x5c21bd(0xd2))+']','original_code_length':_0x27b8ff?.['length']??0x0,'model':MORPH_LARGE_APPLY?_0x5c21bd(0xcd):_0x5c21bd(0x144),'dry_run':_0x4cbd86[_0x5c21bd(0x157)][_0x5c21bd(0x199)]}},'stack_trace':_0x1ba89e instanceof Error?_0x1ba89e[_0x5c21bd(0x1de)]:undefined,'source':'mcp-filesystem'})[_0x5c21bd(0x1cf)](()=>{}),{'content':[{'type':'text','text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x2e09ed}],'isError':!![]};}}case TOOL_NAMES[_0x5c21bd(0x174)]:{const _0x269ab1=WarpGrepArgsSchema[_0x5c21bd(0x10b)](_0xdcd00e);if(!_0x269ab1[_0x5c21bd(0x14e)])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x269ab1[_0x5c21bd(0x182)]}],'isError':!![]};const _0x1108a2=_0x2d6861=>{const _0x590b0b=_0x5c21bd,_0x49822a=[];for(const _0x2cd8ea of _0x2d6861||[]){if(_0x2cd8ea[_0x590b0b(0xc2)]===_0x590b0b(0x1ca)&&Array[_0x590b0b(0x1a6)](_0x2cd8ea[_0x590b0b(0x114)]))for(const _0x27ffcb of _0x2cd8ea[_0x590b0b(0x114)]){try{const _0x5d00d6=_0x27ffcb['function']?.[_0x590b0b(0x16e)],_0x1dc051=JSON[_0x590b0b(0x1cd)](_0x27ffcb[_0x590b0b(0xdb)]?.[_0x590b0b(0x138)]||'{}');if(_0x5d00d6===_0x590b0b(0x103))_0x49822a[_0x590b0b(0x194)]('grep\x20\x27'+_0x1dc051[_0x590b0b(0xfe)]+'\x27\x20'+(_0x1dc051['path']||'.'));else{if(_0x5d00d6===_0x590b0b(0x1ab))_0x49822a[_0x590b0b(0x194)](_0x590b0b(0x1ad)+_0x1dc051[_0x590b0b(0x14c)]);else{if(_0x5d00d6===_0x590b0b(0x1ae))_0x49822a[_0x590b0b(0x194)](_0x590b0b(0x132)+(_0x1dc051[_0x590b0b(0x1a0)]||'.'));else{if(_0x5d00d6===_0x590b0b(0xee))_0x49822a['push'](_0x590b0b(0xba)+_0x1dc051[_0x590b0b(0xfe)]+'\x27\x20'+(_0x1dc051[_0x590b0b(0x14c)]||'.'));else _0x5d00d6===_0x590b0b(0x179)&&_0x49822a['push'](_0x590b0b(0x179));}}}}catch{}}}return _0x49822a;},_0xa4fc92=_0x79a9f4=>{const _0x1a4d9c=_0x5c21bd,_0x379470=[];if(!_0x79a9f4||!Array[_0x1a4d9c(0x1a6)](_0x79a9f4))return _0x379470;const _0xd3598e=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x1a4d9c(0x178),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x1a4d9c(0x16a),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x1a4d9c(0x10c),'tool':_0x1a4d9c(0x1ab)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x1a4d9c(0x160),'tool':_0x1a4d9c(0x1ab)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x1a4d9c(0x12c),'tool':_0x1a4d9c(0xda)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x1a4d9c(0xc1),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':_0x1a4d9c(0x160),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x1a4d9c(0xea),'tool':_0x1a4d9c(0x1ab)},{'pattern':/not a text file/,'error_type':_0x1a4d9c(0x160),'tool':_0x1a4d9c(0x1ab)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x1a4d9c(0x1ab)},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x1a4d9c(0x1ab)},{'pattern':/status="error"/,'error_type':_0x1a4d9c(0x153),'tool':_0x1a4d9c(0x140)}];let _0x44935f=0x0;for(const _0x140830 of _0x79a9f4){_0x140830[_0x1a4d9c(0xc2)]===_0x1a4d9c(0x1ca)&&Array[_0x1a4d9c(0x1a6)](_0x140830['tool_calls'])&&_0x44935f++;const _0x165915=_0x140830[_0x1a4d9c(0x155)];if((_0x140830[_0x1a4d9c(0xc2)]===_0x1a4d9c(0x13d)||_0x140830[_0x1a4d9c(0xc2)]===_0x1a4d9c(0x15d))&&_0x165915&&typeof _0x165915==='string')for(const {pattern:_0x563669,error_type:_0x26e0b5,tool:_0x36857a}of _0xd3598e){const _0x404730=_0x165915[_0x1a4d9c(0x1b1)](new RegExp(_0x563669['source'],'g'));if(_0x404730)for(const _0x19f62c of _0x404730){const _0x155ba9=_0x165915[_0x1a4d9c(0xc0)](_0x19f62c),_0x11e133=_0x165915['substring'](_0x155ba9,Math[_0x1a4d9c(0x1e1)](_0x155ba9+0xc8,_0x165915[_0x1a4d9c(0x13b)]));_0x379470[_0x1a4d9c(0x194)]({'tool':_0x36857a,'error_type':_0x26e0b5,'error_message':_0x11e133['split']('\x0a')[0x0],'turn':_0x44935f});}}}return _0x379470;};try{const _0x3eba0a=a0_0x35f3fc['resolve'](_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)]),_0x4dac1c=_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x189)],_0x173f63=_0x4dac1c===_0x5c21bd(0x16d)?{'allowNames':['node_modules']}:undefined,_0x259691=new LocalRipgrepProvider(_0x3eba0a,undefined,_0x173f63);logger[_0x5c21bd(0x156)](_0x5c21bd(0x19c),_0x5c21bd(0x11a),{'type':'LocalRipgrepProvider','repo_root':_0x3eba0a,'search_type':_0x4dac1c||_0x5c21bd(0x15c)}),logger[_0x5c21bd(0x156)]('MCP','warp_grep_start',{'query':_0x269ab1['data'][_0x5c21bd(0x14b)],'repo_root':_0x3eba0a,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x24b6fb=Date['now'](),_0x29d4f3=await runWarpGrep({'searchTerm':_0x269ab1['data'][_0x5c21bd(0x14b)],'repoRoot':_0x3eba0a,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x259691,'search_type':_0x4dac1c}),_0x2db43f=Date[_0x5c21bd(0xfd)]()-_0x24b6fb,_0x12d58a=_0x29d4f3[_0x5c21bd(0x179)]?.['metadata']?.['files']?.[_0x5c21bd(0x13b)]??0x0;logger[_0x5c21bd(0x156)](_0x5c21bd(0x19c),_0x5c21bd(0x107),{'termination':_0x29d4f3[_0x5c21bd(0x193)],'turns':_0x29d4f3['timings']?.[_0x5c21bd(0xc7)]??0x0,'files_found':_0x12d58a,'latency_ms':_0x2db43f});const _0x3fc8e4=_0xa4fc92(_0x29d4f3[_0x5c21bd(0x1c9)]);_0x3fc8e4[_0x5c21bd(0x13b)]>0x0&&reportMorphError({'error_message':_0x5c21bd(0x1d0)+_0x3fc8e4[_0x5c21bd(0x13b)]+_0x5c21bd(0x172),'error_type':_0x5c21bd(0x19a),'level':'warn','tool':_0x5c21bd(0xec),'context':{'repo_path':_0x269ab1['data'][_0x5c21bd(0x105)],'query':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x14b)],'model':_0x5c21bd(0xe6),'termination_reason':_0x29d4f3[_0x5c21bd(0x193)],'sub_tool_errors':_0x3fc8e4,'timings':_0x29d4f3[_0x5c21bd(0x173)],'tool_calls':_0x1108a2(_0x29d4f3[_0x5c21bd(0x1c9)]),'messages':_0x29d4f3[_0x5c21bd(0x1c9)]?.['map'](_0x26d619=>({'role':_0x26d619[_0x5c21bd(0xc2)],'content':_0x26d619[_0x5c21bd(0x155)],..._0x26d619[_0x5c21bd(0x114)]?{'tool_calls':_0x26d619[_0x5c21bd(0x114)][_0x5c21bd(0x13b)]}:{},..._0x26d619[_0x5c21bd(0x110)]?{'tool_call_id':_0x26d619[_0x5c21bd(0x110)]}:{}}))},'source':_0x5c21bd(0x124)})[_0x5c21bd(0x1cf)](()=>{});let _0x2aac23='';if(_0x29d4f3[_0x5c21bd(0x193)]===_0x5c21bd(0x190)&&_0x29d4f3[_0x5c21bd(0x179)]?.[_0x5c21bd(0x134)]?.[_0x5c21bd(0x109)]){const _0xb31a5f=_0x29d4f3['finish'][_0x5c21bd(0x134)][_0x5c21bd(0x109)];if(_0xb31a5f['length']===0x0)return _0x2aac23=_0x29d4f3['finish']['payload']||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x5c21bd(0x131),'text':_0x2aac23}]};const _0x3dcb63=[],_0x1ca1a3=[_0x5c21bd(0x19d)];for(const _0x3e74fb of _0x29d4f3[_0x5c21bd(0x1c9)]){if(_0x3e74fb['role']===_0x5c21bd(0x1ca)&&Array[_0x5c21bd(0x1a6)](_0x3e74fb[_0x5c21bd(0x114)]))for(const _0x1addb5 of _0x3e74fb[_0x5c21bd(0x114)]){try{const _0x17e11b=_0x1addb5[_0x5c21bd(0xdb)]?.['name'],_0x58ea62=JSON[_0x5c21bd(0x1cd)](_0x1addb5['function']?.[_0x5c21bd(0x138)]||'{}');if(_0x17e11b==='grep_search')_0x1ca1a3['push']('-\x20Grepped\x20\x27'+_0x58ea62['pattern']+_0x5c21bd(0xc9)+(_0x58ea62['path']||'.')+'`');else{if(_0x17e11b===_0x5c21bd(0x1ab))_0x1ca1a3[_0x5c21bd(0x194)](_0x5c21bd(0x1a3)+_0x58ea62['path']+'`');else{if(_0x17e11b==='list_directory')_0x1ca1a3[_0x5c21bd(0x194)](_0x5c21bd(0x145)+(_0x58ea62[_0x5c21bd(0x1a0)]||'.')+'`');else _0x17e11b===_0x5c21bd(0xee)&&_0x1ca1a3['push'](_0x5c21bd(0xf8)+_0x58ea62['pattern']+_0x5c21bd(0x1b5)+(_0x58ea62['path']||'.')+'`');}}}catch{}}}_0x3dcb63['push'](_0x1ca1a3['join']('\x0a'));const _0x4e9889=['',_0x5c21bd(0x176)];for(const _0x26b545 of _0xb31a5f){if(_0x26b545[_0x5c21bd(0xcf)]==='*')_0x4e9889[_0x5c21bd(0x194)]('-\x20'+_0x26b545[_0x5c21bd(0x14c)]+':*');else{if(Array[_0x5c21bd(0x1a6)](_0x26b545[_0x5c21bd(0xcf)])){const _0x2e10db=_0x26b545[_0x5c21bd(0xcf)][_0x5c21bd(0x1b9)](([_0x5c5971,_0xe2f4e0])=>{if(_0x5c5971===_0xe2f4e0)return''+_0x5c5971;return _0x5c5971+'-'+_0xe2f4e0;});_0x4e9889[_0x5c21bd(0x194)]('-\x20'+_0x26b545['path']+':'+_0x2e10db[_0x5c21bd(0x1d4)](','));}else _0x4e9889[_0x5c21bd(0x194)]('-\x20'+_0x26b545['path']+':*');}}_0x4e9889[_0x5c21bd(0x194)](''),_0x3dcb63['push'](_0x4e9889[_0x5c21bd(0x1d4)]('\x0a')),_0x3dcb63[_0x5c21bd(0x194)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x4be5bd=[],_0x381bb5=[];for(const _0x2a6e95 of _0xb31a5f){let _0x4cbc93=a0_0x35f3fc['resolve'](_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)],_0x2a6e95['path']),_0x4c31c7=null,_0x11a0b0=null;try{_0x4c31c7=await a0_0x28e2dc[_0x5c21bd(0x117)](_0x4cbc93,{'encoding':'utf-8'});}catch(_0x23292c){const _0x48c821=fixPathRepetition(_0x4cbc93);if(_0x48c821)try{_0x4c31c7=await a0_0x28e2dc['readFile'](_0x48c821,{'encoding':_0x5c21bd(0x1a2)}),_0x4cbc93=_0x48c821;}catch{_0x11a0b0=_0x23292c instanceof Error?_0x23292c:new Error(String(_0x23292c));}else _0x11a0b0=_0x23292c instanceof Error?_0x23292c:new Error(String(_0x23292c));}if(_0x4c31c7!==null){const _0x206f10=_0x4c31c7['split'](/\r?\n/),_0x1ee75f=[];if(_0x2a6e95[_0x5c21bd(0xcf)]==='*'||!Array[_0x5c21bd(0x1a6)](_0x2a6e95[_0x5c21bd(0xcf)]))for(let _0x16e936=0x1;_0x16e936<=_0x206f10[_0x5c21bd(0x13b)];_0x16e936++){const _0x1abbbe=_0x206f10[_0x16e936-0x1];_0x1ee75f[_0x5c21bd(0x194)](_0x16e936+'|\x20'+_0x1abbbe);}else for(const [_0x556410,_0x4b9df0]of _0x2a6e95[_0x5c21bd(0xcf)]){_0x1ee75f[_0x5c21bd(0x13b)]>0x0&&_0x1ee75f['push']('');for(let _0x50826e=_0x556410;_0x50826e<=_0x4b9df0&&_0x50826e<=_0x206f10[_0x5c21bd(0x13b)];_0x50826e++){const _0x5215e2=_0x206f10[_0x50826e-0x1];_0x1ee75f[_0x5c21bd(0x194)](_0x50826e+'|\x20'+_0x5215e2);}}_0x381bb5[_0x5c21bd(0x194)]({'path':_0x2a6e95[_0x5c21bd(0x14c)],'content':_0x1ee75f[_0x5c21bd(0x1d4)]('\x0a')});}else _0x4be5bd['push'](_0x5c21bd(0x185)+_0x2a6e95[_0x5c21bd(0x14c)]+_0x5c21bd(0x17a)+(_0x11a0b0?.[_0x5c21bd(0xfa)]||'Unknown\x20error')+_0x5c21bd(0x10a));}try{const _0x425a93=await compactFileContexts(_0x381bb5,_0x269ab1['data'][_0x5c21bd(0x14b)],MORPH_API_KEY,MORPH_API_URL);for(const _0x3d918a of _0x425a93){_0x4be5bd[_0x5c21bd(0x194)]('<file\x20path=\x22'+_0x3d918a[_0x5c21bd(0x14c)]+_0x5c21bd(0x16b)+_0x3d918a[_0x5c21bd(0x155)]+'\x0a</file>');}}catch(_0x1aec49){logger[_0x5c21bd(0x1c3)](_0x5c21bd(0x19c),_0x5c21bd(0x1bc),{'error':_0x1aec49 instanceof Error?_0x1aec49[_0x5c21bd(0xfa)]:String(_0x1aec49),'files_count':_0x381bb5[_0x5c21bd(0x13b)]});for(const _0x42acd5 of _0x381bb5){_0x4be5bd['push']('<file\x20path=\x22'+_0x42acd5[_0x5c21bd(0x14c)]+_0x5c21bd(0x16b)+_0x42acd5[_0x5c21bd(0x155)]+_0x5c21bd(0x10a));}}_0x3dcb63[_0x5c21bd(0x194)](_0x4be5bd['join']('\x0a\x0a')),_0x2aac23=_0x3dcb63[_0x5c21bd(0x1d4)]('\x0a');const _0x1626dc=_0x29d4f3['errors']?.[_0x5c21bd(0x18e)](_0x21d05d=>_0x21d05d[_0x5c21bd(0xfa)]?.['startsWith']('File\x20read\x20error:'))||[];if(_0x1626dc[_0x5c21bd(0x13b)]>0x0){const _0x151409=_0x1626dc[_0x5c21bd(0x1b9)](_0x1c27a9=>_0x1c27a9[_0x5c21bd(0xfa)])[_0x5c21bd(0x1d4)](';\x20');reportMorphError({'error_message':_0x151409,'error_type':_0x5c21bd(0xf6),'context':{'tool':_0x5c21bd(0xec),'repo_path':_0x269ab1[_0x5c21bd(0x157)]['repo_path'],'query':_0x269ab1['data']['search_string'],'model':_0x5c21bd(0xe6),'termination_reason':_0x5c21bd(0x143),'error_count':_0x1626dc['length'],'is_timeout':![],'timings':_0x29d4f3[_0x5c21bd(0x173)],'files_attempted':_0xb31a5f[_0x5c21bd(0x1b9)](_0x311f62=>({'path':_0x311f62[_0x5c21bd(0x14c)],'lines':_0x311f62[_0x5c21bd(0xcf)]})),'tool_calls':_0x1108a2(_0x29d4f3['messages']),'messages':_0x29d4f3[_0x5c21bd(0x1c9)]?.[_0x5c21bd(0x1b9)](_0x5d0975=>({'role':_0x5d0975['role'],'content':_0x5d0975[_0x5c21bd(0x155)],..._0x5d0975[_0x5c21bd(0x114)]?{'tool_calls':_0x5d0975['tool_calls'][_0x5c21bd(0x13b)]}:{},..._0x5d0975['tool_call_id']?{'tool_call_id':_0x5d0975[_0x5c21bd(0x110)]}:{}})),'request_content':{'query':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x14b)],'repo_path':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)],'repoRoot':a0_0x35f3fc['resolve'](_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)]),'model':'morph-warp-grep-v2.1'}},'source':_0x5c21bd(0x124)})['catch'](()=>{});}}else{if(_0x29d4f3['terminationReason']==='terminated'&&_0x29d4f3[_0x5c21bd(0x141)][_0x5c21bd(0x13b)]>0x0){const _0x3426f7=_0x29d4f3['errors'][_0x5c21bd(0x1b9)](_0x610917=>_0x610917[_0x5c21bd(0xfa)])[_0x5c21bd(0x1d4)](';\x20');_0x2aac23=_0x5c21bd(0x184)+_0x3426f7;const _0x12f701=_0x3426f7[_0x5c21bd(0x113)]()[_0x5c21bd(0x161)](_0x5c21bd(0xe1))||_0x3426f7[_0x5c21bd(0x113)]()[_0x5c21bd(0x161)]('timed\x20out')||_0x3426f7[_0x5c21bd(0x113)]()[_0x5c21bd(0x161)](_0x5c21bd(0x18d)),_0x1b370e=_0x29d4f3['finish']?.[_0x5c21bd(0x134)]?.[_0x5c21bd(0x109)],_0x897778=_0x29d4f3[_0x5c21bd(0x141)][0x0];reportMorphError({'error_message':_0x3426f7,'error_type':_0x12f701?_0x5c21bd(0x1a4):_0x897778?.[_0x5c21bd(0xc3)]?.[_0x5c21bd(0x16e)]||_0x5c21bd(0x1b8),'context':{'tool':_0x5c21bd(0xec),'repo_path':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)],'query':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x14b)],'model':_0x5c21bd(0xe6),'termination_reason':_0x29d4f3['terminationReason'],'error_count':_0x29d4f3[_0x5c21bd(0x141)][_0x5c21bd(0x13b)],'is_timeout':_0x12f701,'timings':_0x29d4f3[_0x5c21bd(0x173)],'files_attempted':_0x1b370e?.[_0x5c21bd(0x1b9)](_0x572919=>({'path':_0x572919[_0x5c21bd(0x14c)],'lines':_0x572919[_0x5c21bd(0xcf)]})),'tool_calls':_0x1108a2(_0x29d4f3['messages']),'messages':_0x29d4f3[_0x5c21bd(0x1c9)]?.[_0x5c21bd(0x1b9)](_0x3d74b9=>({'role':_0x3d74b9[_0x5c21bd(0xc2)],'content':_0x3d74b9[_0x5c21bd(0x155)],..._0x3d74b9[_0x5c21bd(0x114)]?{'tool_calls':_0x3d74b9[_0x5c21bd(0x114)][_0x5c21bd(0x13b)]}:{},..._0x3d74b9[_0x5c21bd(0x110)]?{'tool_call_id':_0x3d74b9[_0x5c21bd(0x110)]}:{}})),'request_content':{'query':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x14b)],'repo_path':_0x269ab1['data'][_0x5c21bd(0x105)],'repoRoot':a0_0x35f3fc['resolve'](_0x269ab1[_0x5c21bd(0x157)]['repo_path']),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x897778?.[_0x5c21bd(0x1de)]||undefined,'source':_0x5c21bd(0x124)})[_0x5c21bd(0x1cf)](()=>{});}else _0x2aac23=_0x5c21bd(0x16f);}return{'content':[{'type':_0x5c21bd(0x131),'text':_0x2aac23}]};}catch(_0x3ee3ba){const _0x2758c6=handleMorphAPIError(_0x3ee3ba);if(_0x2758c6)return logger[_0x5c21bd(0x182)](_0x5c21bd(0x19c),_0x5c21bd(0x18c),{'tool':_0x5c21bd(0xec),'error':_0x5c21bd(0x18f),'latency_ms':Date[_0x5c21bd(0xfd)]()-_0x2227e5}),_0x2758c6;const _0x133192=_0x3ee3ba instanceof Error?_0x3ee3ba['message']:String(_0x3ee3ba);logger[_0x5c21bd(0x182)]('MCP',_0x5c21bd(0x18c),{'tool':_0x5c21bd(0xec),'error':_0x133192,'repo_path':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)],'query':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x14b)],'latency_ms':Date[_0x5c21bd(0xfd)]()-_0x2227e5});const _0x5b98b3=_0x133192[_0x5c21bd(0x113)]()[_0x5c21bd(0x161)](_0x5c21bd(0xe1))||_0x133192[_0x5c21bd(0x113)]()[_0x5c21bd(0x161)](_0x5c21bd(0x1ba))||_0x133192[_0x5c21bd(0x113)]()[_0x5c21bd(0x161)](_0x5c21bd(0x18d))||_0x3ee3ba instanceof Error&&_0x3ee3ba[_0x5c21bd(0x16e)]===_0x5c21bd(0x1a4);return reportMorphError({'error_message':_0x133192,'error_type':_0x5b98b3?'TimeoutError':_0x3ee3ba instanceof Error?_0x3ee3ba[_0x5c21bd(0xc3)]['name']:_0x5c21bd(0x159),'context':{'tool':_0x5c21bd(0xec),'repo_path':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)],'query':_0x269ab1[_0x5c21bd(0x157)]['search_string'],'model':_0x5c21bd(0xe6),'is_timeout':_0x5b98b3,'exception_phase':_0x5c21bd(0x15e),'request_content':{'query':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x14b)],'repo_path':_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)],'repoRoot':a0_0x35f3fc[_0x5c21bd(0x13e)](_0x269ab1[_0x5c21bd(0x157)][_0x5c21bd(0x105)]),'model':_0x5c21bd(0xe6)}},'stack_trace':_0x3ee3ba instanceof Error?_0x3ee3ba['stack']:undefined,'source':_0x5c21bd(0x124)})[_0x5c21bd(0x1cf)](()=>{}),{'content':[{'type':'text','text':_0x5c21bd(0x177)+_0x133192}],'isError':![]};}}case TOOL_NAMES[_0x5c21bd(0x149)]:{const _0x1b2bec=WarpGrepGitHubArgsSchema[_0x5c21bd(0x10b)](_0xdcd00e);if(!_0x1b2bec['success'])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x1b2bec['error']}],'isError':!![]};const _0x2a3d0f=_0x1b2bec[_0x5c21bd(0x157)][_0x5c21bd(0xe2)]||_0x1b2bec['data'][_0x5c21bd(0x1a9)];if(!_0x2a3d0f)return{'content':[{'type':_0x5c21bd(0x131),'text':_0x5c21bd(0x129)}],'isError':!![]};const _0x5ac0d5=MORPH_API_KEY;if(!_0x5ac0d5)throw new Error(_0x5c21bd(0x1bd));const _0x271cd4=Date[_0x5c21bd(0xfd)]();logger[_0x5c21bd(0x156)](_0x5c21bd(0x19c),_0x5c21bd(0x1e0),{'identifier':_0x2a3d0f,'query':_0x1b2bec['data']['search_string'],'branch':_0x1b2bec[_0x5c21bd(0x157)][_0x5c21bd(0x16c)]});try{const _0x123002=new WarpGrepClient({'morphApiKey':_0x5ac0d5,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x1ba6de=await _0x123002[_0x5c21bd(0x14a)]({'searchTerm':_0x1b2bec['data'][_0x5c21bd(0x14b)],'github':_0x2a3d0f,'branch':_0x1b2bec['data'][_0x5c21bd(0x16c)]}),_0x4effd3=Date[_0x5c21bd(0xfd)]()-_0x271cd4;logMcpStderr(_0x5c21bd(0x102)+_0x4effd3+_0x5c21bd(0xf2)+_0x1ba6de[_0x5c21bd(0x14e)]);const _0xb81194=formatResult(_0x1ba6de);return{'content':[{'type':_0x5c21bd(0x131),'text':_0xb81194}]};}catch(_0x1b6684){const _0x23369c=handleMorphAPIError(_0x1b6684);if(_0x23369c)return _0x23369c;const _0x3c98d3=Date[_0x5c21bd(0xfd)]()-_0x271cd4,_0x16fe20=_0x1b6684 instanceof Error?_0x1b6684[_0x5c21bd(0xfa)]:String(_0x1b6684);return logMcpStderr(_0x5c21bd(0xff)+_0x3c98d3+'ms:',_0x16fe20),reportMorphError({'error_message':_0x16fe20,'error_type':_0x1b6684 instanceof Error?_0x1b6684[_0x5c21bd(0xc3)][_0x5c21bd(0x16e)]:_0x5c21bd(0x159),'context':{'tool':'github_codebase_search','github_url':_0x2a3d0f,'search_string':_0x1b2bec[_0x5c21bd(0x157)][_0x5c21bd(0x14b)],'branch':_0x1b2bec[_0x5c21bd(0x157)][_0x5c21bd(0x16c)]},'stack_trace':_0x1b6684 instanceof Error?_0x1b6684[_0x5c21bd(0x1de)]:undefined,'source':_0x5c21bd(0x124),'tool':'github_codebase_search','latency_ms':_0x3c98d3})[_0x5c21bd(0x1cf)](()=>{}),{'content':[{'type':_0x5c21bd(0x131),'text':_0x5c21bd(0x147)+_0x16fe20}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x4fd9fb);}}catch(_0x492738){const _0x549b1d=_0x492738 instanceof Error?_0x492738[_0x5c21bd(0xfa)]:String(_0x492738);return reportMorphError({'error_message':_0x549b1d,'error_type':_0x492738 instanceof Error?_0x492738[_0x5c21bd(0xc3)][_0x5c21bd(0x16e)]:_0x5c21bd(0x159),'context':{'tool':_0x4fd9fb,'arguments':_0xdcd00e?JSON[_0x5c21bd(0x195)](_0xdcd00e)[_0x5c21bd(0x17c)](0x0,0x1f4):undefined,'mcp_server_version':_0x5c21bd(0xf3)},'stack_trace':_0x492738 instanceof Error?_0x492738['stack']:undefined,'source':_0x5c21bd(0x124)})[_0x5c21bd(0x1cf)](()=>{}),{'content':[{'type':_0x5c21bd(0x131),'text':_0x5c21bd(0x184)+_0x549b1d}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x2b347c){const _0x28c2a7=a0_0x1d9c46,_0x270ff2=await getValidRootDirectories(_0x2b347c);if(_0x270ff2[_0x28c2a7(0x13b)]>0x0)allowedDirectories=[..._0x270ff2],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x270ff2['length']+_0x28c2a7(0xdd));else{logMcpStderr(_0x28c2a7(0x1a8));if(ENABLE_WORKSPACE_MODE)try{const _0x477284=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x477284&&(allowedDirectories=[_0x477284],logMcpStderr(_0x28c2a7(0x112)+_0x477284));}catch(_0x1017f1){logMcpStderr(_0x28c2a7(0x146)+_0x1017f1);}}}server[a0_0x1d9c46(0xed)](RootsListChangedNotificationSchema,async()=>{const _0x595177=a0_0x1d9c46;try{const _0x15554e=await server[_0x595177(0xd6)]();_0x15554e&&_0x595177(0x11c)in _0x15554e&&await updateAllowedDirectoriesFromRoots(_0x15554e[_0x595177(0x11c)]);}catch(_0x1349f0){logMcpStderr(_0x595177(0x125),_0x1349f0 instanceof Error?_0x1349f0[_0x595177(0xfa)]:String(_0x1349f0));}}),server[a0_0x1d9c46(0x12b)]=async()=>{const _0x341aeb=a0_0x1d9c46,_0x46864=server['getClientCapabilities']();if(_0x46864?.[_0x341aeb(0x11c)])try{const _0x262891=await server[_0x341aeb(0xd6)]();_0x262891&&_0x341aeb(0x11c)in _0x262891?await updateAllowedDirectoriesFromRoots(_0x262891['roots']):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x465858){logMcpStderr(_0x341aeb(0x100),_0x465858 instanceof Error?_0x465858[_0x341aeb(0xfa)]:String(_0x465858));}else{if(allowedDirectories[_0x341aeb(0x13b)]>0x0)logMcpStderr(_0x341aeb(0xd4),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x341aeb(0x196));else throw new Error('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.');}}};async function runServer(){const _0x3d92dc=a0_0x1d9c46,_0x24ee36=new StdioServerTransport();await server['connect'](_0x24ee36),logMcpStderr(_0x3d92dc(0x12d)),allowedDirectories[_0x3d92dc(0x13b)]===0x0&&logMcpStderr(_0x3d92dc(0x1c0));}runServer()[a0_0x1d9c46(0x1cf)](_0x4e0a39=>{const _0x40e2ea=a0_0x1d9c46;logMcpStderr(_0x40e2ea(0xfc),_0x4e0a39),process[_0x40e2ea(0x139)](0x1);});
2
+ const a0_0x5f1a86=a0_0x240d;(function(_0x12725d,_0x45fa57){const _0x54e330=a0_0x240d,_0x34193e=_0x12725d();while(!![]){try{const _0x1a0db8=-parseInt(_0x54e330(0x15d))/0x1+-parseInt(_0x54e330(0x128))/0x2*(-parseInt(_0x54e330(0xfb))/0x3)+-parseInt(_0x54e330(0x172))/0x4*(-parseInt(_0x54e330(0x15f))/0x5)+parseInt(_0x54e330(0x12d))/0x6+parseInt(_0x54e330(0x136))/0x7*(parseInt(_0x54e330(0xdb))/0x8)+-parseInt(_0x54e330(0x1b9))/0x9*(-parseInt(_0x54e330(0x147))/0xa)+parseInt(_0x54e330(0x12e))/0xb*(-parseInt(_0x54e330(0x1ca))/0xc);if(_0x1a0db8===_0x45fa57)break;else _0x34193e['push'](_0x34193e['shift']());}catch(_0xaf815b){_0x34193e['push'](_0x34193e['shift']());}}}(a0_0x3c05,0x78ee2));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,GetPromptRequestSchema,ListPromptsRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x333d88 from'fs/promises';import a0_0x355988 from'path';import a0_0x5e2b68 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';function a0_0x240d(_0x2d6a1c,_0x4c4a4e){_0x2d6a1c=_0x2d6a1c-0xbf;const _0x3c053b=a0_0x3c05();let _0x240dfa=_0x3c053b[_0x2d6a1c];return _0x240dfa;}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_0x330e7b from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES,resolveToolFilter}from'./tool-definitions.js';function fixPathRepetition(_0x518aaa){const _0x57f59e=a0_0x240d,_0x1c66d4=_0x518aaa[_0x57f59e(0x203)](a0_0x355988['sep'])[_0x57f59e(0xde)](Boolean);if(_0x1c66d4[_0x57f59e(0x204)]<0x2)return null;for(let _0x3d0bdb=Math[_0x57f59e(0x1ef)](_0x1c66d4[_0x57f59e(0x204)]/0x2);_0x3d0bdb>=0x1;_0x3d0bdb--){for(let _0x19c4e7=0x0;_0x19c4e7<=_0x1c66d4['length']-0x2*_0x3d0bdb;_0x19c4e7++){const _0x2a2ff2=_0x1c66d4[_0x57f59e(0x156)](_0x19c4e7,_0x19c4e7+_0x3d0bdb),_0x43a977=_0x1c66d4[_0x57f59e(0x156)](_0x19c4e7+_0x3d0bdb,_0x19c4e7+0x2*_0x3d0bdb);if(_0x2a2ff2[_0x57f59e(0xf8)]((_0x68bfb2,_0x1bb364)=>_0x68bfb2===_0x43a977[_0x1bb364])){const _0x5f59a5=[..._0x1c66d4['slice'](0x0,_0x19c4e7),..._0x1c66d4['slice'](_0x19c4e7+_0x3d0bdb)];return a0_0x355988[_0x57f59e(0x1e6)]+_0x5f59a5[_0x57f59e(0x112)](a0_0x355988['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x32b308=a0_0x240d;try{const _0x56e53d=require(_0x32b308(0x13c));return _0x56e53d['version']??'unknown';}catch(_0x1ce3d2){return logMcpStderr(_0x32b308(0x1ff),_0x1ce3d2),'unknown';}}function printHelp(){const _0x27cbfe=a0_0x240d;console['log'](_0x27cbfe(0x102)+getPackageVersion()),console[_0x27cbfe(0x131)](_0x27cbfe(0x11d)),console[_0x27cbfe(0x131)](_0x27cbfe(0x195)),console['log']('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console['log'](_0x27cbfe(0x177)),console['log'](_0x27cbfe(0x143)),console[_0x27cbfe(0x131)](_0x27cbfe(0x20f)),console[_0x27cbfe(0x131)](_0x27cbfe(0x179)),console[_0x27cbfe(0x131)](_0x27cbfe(0x126));}const cliArgs=process['argv'][a0_0x5f1a86(0x156)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x5f1a86(0x207),'-h']);cliArgs['some'](_0x3da187=>VERSION_FLAGS['has'](_0x3da187))&&(console[a0_0x5f1a86(0x131)](a0_0x5f1a86(0x102)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x5f1a86(0x181)](_0x1fee13=>HELP_FLAGS[a0_0x5f1a86(0x1ac)](_0x1fee13))&&(printHelp(),process[a0_0x5f1a86(0xea)](0x0));function getCliArg(_0x114c55){const _0x513b7f=a0_0x5f1a86;for(let _0x3ec48b=0x0;_0x3ec48b<cliArgs[_0x513b7f(0x204)];_0x3ec48b++){const _0x27b9a7=cliArgs[_0x3ec48b];if(_0x27b9a7[_0x513b7f(0x1b1)]('--'+_0x114c55+'='))return _0x27b9a7['slice'](('--'+_0x114c55+'=')['length']);if(_0x27b9a7==='--'+_0x114c55&&_0x3ec48b+0x1<cliArgs[_0x513b7f(0x204)])return cliArgs[_0x3ec48b+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x5f1a86(0x204)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x5f1a86(0x1ac)](arg)||HELP_FLAGS[a0_0x5f1a86(0x1ac)](arg))continue;if(arg[a0_0x5f1a86(0x1b1)](a0_0x5f1a86(0x15c)))continue;if(arg===a0_0x5f1a86(0x1dd)){i++;continue;}args[a0_0x5f1a86(0x1e7)](arg);}const WORKSPACE_ROOT=process[a0_0x5f1a86(0x1c4)][a0_0x5f1a86(0x14c)]||process[a0_0x5f1a86(0x1c4)][a0_0x5f1a86(0xed)]||process[a0_0x5f1a86(0xe4)](),ENABLE_WORKSPACE_MODE=process[a0_0x5f1a86(0x1c4)][a0_0x5f1a86(0xd3)]!==a0_0x5f1a86(0x16c),MORPH_API_KEY=getCliArg('api-key')??process[a0_0x5f1a86(0x1c4)][a0_0x5f1a86(0x169)],MORPH_API_URL=process['env'][a0_0x5f1a86(0x1d5)],MORPH_LARGE_APPLY=process[a0_0x5f1a86(0x1c4)]['MORPH_LARGE_APPLY']!=='false',MORPH_WARP_GREP_TIMEOUT=process['env']['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x5f1a86(0x1c4)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),TOOL_FILTER=resolveToolFilter(process['env']),DISABLED_TOOLS=TOOL_FILTER[a0_0x5f1a86(0xdc)];for(const tool of TOOL_FILTER[a0_0x5f1a86(0x1f0)]){console['error'](a0_0x5f1a86(0x12b)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES][a0_0x5f1a86(0x112)](',\x20'));}DISABLED_TOOLS[a0_0x5f1a86(0x13e)]>0x0&&console[a0_0x5f1a86(0x160)](a0_0x5f1a86(0x11b)+[...DISABLED_TOOLS][a0_0x5f1a86(0x112)](',\x20'));MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5f1a86(0x1b1)](a0_0x5f1a86(0x194))&&!MORPH_API_KEY[a0_0x5f1a86(0x1b1)](a0_0x5f1a86(0x15b))&&logMcpStderr(a0_0x5f1a86(0x1f4));async function reportMorphError(_0x2d887a){const _0x41981f=a0_0x5f1a86;try{await a0_0x330e7b[_0x41981f(0xf5)]('https://morphllm.com/api/error-report',{..._0x2d887a,'timestamp':new Date()[_0x41981f(0x1b5)](),'source':_0x2d887a[_0x41981f(0x1d3)]||_0x41981f(0x106),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x2d887a[_0x41981f(0xf2)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x41981f(0xc3),'Authorization':_0x41981f(0x14a)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x4d8e62,_0x334360){const _0x2407cf=a0_0x5f1a86;if(_0x4d8e62&&typeof _0x4d8e62===_0x2407cf(0x1e5)&&_0x2407cf(0x132)in _0x4d8e62)return _0x4d8e62[_0x2407cf(0x132)];if(_0x4d8e62&&typeof _0x4d8e62===_0x2407cf(0x1e5)&&'response'in _0x4d8e62)return _0x4d8e62[_0x2407cf(0x1a6)]?.['status'];const _0x28a53f=_0x334360[_0x2407cf(0x140)](/\b(401|429)\b/);return _0x28a53f?parseInt(_0x28a53f[0x1],0xa):null;}function handleMorphAPIError(_0x38dc97){const _0xe25bce=a0_0x5f1a86,_0x5bd8a4=_0x38dc97 instanceof Error?_0x38dc97['message']:String(_0x38dc97),_0x37bf6f=extractStatusCode(_0x38dc97,_0x5bd8a4);switch(_0x37bf6f){case 0x191:return{'content':[{'type':'text','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':_0xe25bce(0xfd),'text':_0xe25bce(0x117)}],'isError':!![]};default:return null;}}args[a0_0x5f1a86(0x204)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x5f1a86(0x11c)),logMcpStderr(a0_0x5f1a86(0x157)),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x5f1a86(0x135)));function normalizePath(_0x57dd48){return a0_0x355988['normalize'](_0x57dd48);}function expandHome(_0x2d0292){const _0x117040=a0_0x5f1a86;if(_0x2d0292['startsWith']('~/')||_0x2d0292==='~')return a0_0x355988[_0x117040(0x112)](a0_0x5e2b68[_0x117040(0x1fa)](),_0x2d0292['slice'](0x1));return _0x2d0292;}let allowedDirectories=await Promise[a0_0x5f1a86(0x161)](args[a0_0x5f1a86(0x120)](async _0x261380=>{const _0x5d25e0=a0_0x5f1a86,_0x4dad6f=expandHome(_0x261380),_0x424782=a0_0x355988[_0x5d25e0(0x115)](_0x4dad6f);try{const _0x1dd165=await a0_0x333d88['realpath'](_0x424782);return normalizePath(_0x1dd165);}catch(_0xbeb89c){return normalizePath(_0x424782);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5f1a86(0x204)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5f1a86(0x1e7)](workspaceDir),logMcpStderr(a0_0x5f1a86(0x166)+workspaceDir+a0_0x5f1a86(0x114)));}catch(a0_0x580a9a){logMcpStderr(a0_0x5f1a86(0xe2)+a0_0x580a9a);}function a0_0x3c05(){const _0x4942fc=['[could\x20not\x20read\x20file:\x20','startsWith','user','MCP','Warning:\x20Workspace\x20fallback\x20failed:\x20','toISOString','terminated','composer.json','Never\x20include\x20API\x20keys,\x20credentials,\x20secrets,\x20customer\x20data,\x20or\x20code\x20the\x20user\x20has\x20not\x20approved\x20for\x20sharing.','2255049kjqdqi','.vscode','warp_grep_complete','grep','optional','completed','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.','\x20error(s)','isArray','\x22>\x0a','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','env','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','min','file_read_complete','github_codebase_search','Fatal\x20error\x20running\x20server:','155076iVDHuk','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','tool_call_error','.\x20Changes:\x20','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','morph-warp-grep-v2.1','annotations','LocalRipgrepProvider','Morph\x20Edit\x20','source','UnknownError','MORPH_API_URL','tool','indexOf','includes','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','linesAdded','target_file','Cargo.toml','--api-key','Applied','tool_call_received','description','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','feedback','TimeoutError','Send\x20to\x20Morph','object','sep','push','grep\x20\x27','Invalid\x20arguments\x20for\x20submit_feedback:\x20','-\x20Listed\x20directory\x20`','Tool\x20\x22','.git','metadata','glob','floor','unknown',',\x20modified\x20','feedbackId','boolean','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','owner_repo','pyproject.toml','content','ReadError','EDIT_FILE','homedir','package.json','Failed\x20to\x20read\x20file:\x20','The\x20user\x20wants\x20to\x20send\x20feedback\x20to\x20the\x20Morph\x20team','timed\x20out','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','files','ToolException','morph-v3-large','split','length','[github_codebase_search]\x20Failed\x20in\x20','utf-8','--help','role','edit_file','instructions','action','target_filepath','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','pattern','\x0aExamples:','billing','lines','provider_created','substring','success','Error\x20running\x20fast\x20context\x20search:\x20','oninitialized','data','One-line\x20summary.','Draft\x20it\x20from\x20this\x20conversation:\x20a\x20kind\x20(bug,\x20feature_request,\x20model_quality,\x20latency,\x20billing,\x20praise\x20or\x20other),\x20a\x20one-line\x20title,\x20and\x20a\x20body\x20that\x20says\x20what\x20happened,\x20what\x20was\x20expected\x20and\x20how\x20to\x20reproduce.\x20Include\x20the\x20Morph\x20model\x20id\x20and\x20the\x20completion\x20id\x20(chatcmpl-...)\x20if\x20you\x20have\x20them.','application/json','repo_path','changes','searchGitHub','\x20valid\x20directories','body','/api/v1/feedback','list_directory\x20','isDirectory','finish','warn','message','file','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','path_validation_start','listRoots','ENABLE_WORKSPACE_MODE','WHEN\x20TO\x20USE\x20vs\x20native\x20edit/patch\x20tools:\x20prefer\x20this\x20tool\x20for\x20large\x20files,\x20multiple\x20or\x20scattered\x20edits,\x20refactors,\x20and\x20whitespace-sensitive\x20changes.\x20A\x20single\x20tiny\x20exact-string\x20replacement\x20can\x20use\x20the\x20native\x20edit/patch\x20tool.\x20If\x20this\x20tool\x20errors\x20or\x20times\x20out,\x20fall\x20back\x20to\x20native\x20edit\x20with\x20exact\x20string\x20matching.\x0a\x0a','timings','string','name','runWarpGrep_call','-\x20Preserve\x20exact\x20indentation\x0a','default','32ggWLxr','disabled','FileReadError','filter','model_quality','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','CODEBASE_SEARCH','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','.cursor','cwd','Rules:\x0a',',\x20removed\x20','api_request_start','completed_with_file_errors','github_url','exit','linesRemoved','node_modules','PWD','arguments','\x20about:\x20','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','https://api.morphllm.com','context','code','title','post','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','File\x20read\x20error:','every','getClientVersion','timeout','15jTcmEF','\x27\x20in\x20`','text','codebase_search','tool_calls','\x20disabled\x20via\x20ENABLED_TOOLS/DISABLED_TOOLS','search_string','@morphllm/morphmcp\x20','Parameters:\x0a','parse','Morph\x20Edit\x20Preview','mcp-filesystem','Use\x20it\x20when\x20the\x20user\x20asks\x20to\x20tell\x20Morph\x20something,\x20or\x20when\x20a\x20Morph\x20model\x20or\x20tool\x20misbehaved\x20and\x20the\x20user\x20agrees\x20to\x20report\x20it.\x20','grep_search','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','catch','safeParse','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','compaction_failed','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.','Parent\x20directory\x20does\x20not\x20exist:\x20','max','requiresApiKey','join','elicitInput','\x20as\x20allowed\x20directory','resolve','glob\x20\x27','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','command','\x20chars)','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Disabled\x20tools:\x20','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','Send\x20feedback\x20to\x20Morph','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','map','read','stack','What\x20the\x20feedback\x20is\x20about.','Already\x20received:\x20identical\x20feedback\x20was\x20sent\x20in\x20the\x20last\x2024\x20hours.','errors','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','latency','216454VLquht','Unknown\x20prompt:\x20','Response\x20id\x20(chatcmpl-...)\x20of\x20the\x20request\x20the\x20feedback\x20is\x20about,\x20so\x20the\x20team\x20can\x20find\x20it.','Warning:\x20ENABLED_TOOLS/DISABLED_TOOLS\x20names\x20unknown\x20tool\x20\x22','WarpGrep\x20sub-tool\x20errors:\x20','5153094yNGgTj','1562qmjcSg','model','now','log','status','morph-v3-fast','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','165893QgskLF','kind','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','morph-mcp','roots','linesModified','../package.json','SymlinkError','size','.\x20Path:\x20','match','GITHUB_CODEBASE_SEARCH','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','Error:\x20','ms.\x20Success:\x20','API\x20error\x20(auth/rate-limit)','20SRicXu','-\x20Glob\x20search\x20`','setRequestHandler','Bearer\x20','\x0a</file>','WORKSPACE_ROOT','BinaryFile','tool_call_id','go.mod','describe','function','send','file_path','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.','RipgrepError','slice','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','terminationReason','\x22\x20is\x20disabled\x20via\x20ENABLED_TOOLS/DISABLED_TOOLS\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','list_directory','morph-','--api-key=','317874kzCbEM','instruction','15QLchYa','error','all','code_edit','initiated_by','params','unknown\x20error','Workspace\x20mode\x20enabled:\x20Using\x20','Unknown\x20tool:\x20','What\x20the\x20feedback\x20is\x20about\x20(optional)','MORPH_API_KEY','ENOENT','dryRun','false','accept','debug','dirname','❌\x20Morph\x20Edit\x20Failed:\x20','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','869824njMRkx','<file\x20path=\x22','path_validation_failed','-\x20Grepped\x20\x27','Send\x20this\x20feedback\x20to\x20the\x20Morph\x20team?\x20It\x20goes\x20with\x20your\x20Morph\x20account.\x0a\x0a','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','messages','\x20\x20morph-mcp','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','Error\x20accessing\x20directory\x20','agent','bug','FileNotFound','\x27user\x27\x20if\x20the\x20user\x20asked\x20to\x20send\x20feedback,\x20\x27agent\x27\x20if\x20you\x20proposed\x20it\x20and\x20the\x20user\x20approved.','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','some','\x0a...\x20(truncated,\x20total:\x20','ONLY\x20call\x20this\x20after\x20showing\x20the\x20user\x20the\x20exact\x20title\x20and\x20body\x20and\x20getting\x20their\x20explicit\x20yes.\x20','SubToolError','praise','path','Send\x20feedback\x20(a\x20bug,\x20a\x20model-quality\x20or\x20latency\x20problem,\x20a\x20billing\x20question,\x20a\x20feature\x20request,\x20or\x20praise)\x20to\x20the\x20Morph\x20team.\x20','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','added\x20','assistant','Unknown\x20error','turns','payload','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','0.2.0','readFile','etimedout','GitHub\x20search\x20failed:\x20','sk-','\x0aOptions:','read\x20','Relevant\x20context\x20found:','toLowerCase','enum','\x20-\x20','isAxiosError','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','basename','[github_codebase_search]\x20Done\x20in\x20','about','warp_grep_start','\x20(new\x20file)','inputSchema','filePath','Show\x20the\x20user\x20the\x20exact\x20draft\x20and\x20ask\x20whether\x20to\x20send\x20it.\x20Only\x20after\x20they\x20say\x20yes,\x20call\x20the\x20submit_feedback\x20tool\x20with\x20initiated_by\x20\x22user\x22.\x20Then\x20tell\x20them\x20it\x20was\x20sent,\x20with\x20the\x20feedback\x20id.','tool_call_complete','response','path_validation_resolved','completionId','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.','realpath','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','has','Invalid\x20arguments:\x20','constructor','Example\x20format:\x0a'];a0_0x3c05=function(){return _0x4942fc;};return a0_0x3c05();}async function detectWorkspaceRoot(_0x186b53){const _0x49bbcf=a0_0x5f1a86;let _0x72daa7=a0_0x355988[_0x49bbcf(0x115)](_0x186b53);const _0x319931=[_0x49bbcf(0x1ec),_0x49bbcf(0x1ba),_0x49bbcf(0x1fb),_0x49bbcf(0x1dc),_0x49bbcf(0x1f6),_0x49bbcf(0x14f),_0x49bbcf(0xe3),'tsconfig.json',_0x49bbcf(0x1b7)];while(_0x72daa7!==a0_0x355988[_0x49bbcf(0x16f)](_0x72daa7)){for(const _0x1e9ebf of _0x319931){const _0x5a0a80=a0_0x355988['join'](_0x72daa7,_0x1e9ebf);try{return await a0_0x333d88['access'](_0x5a0a80),normalizePath(_0x72daa7);}catch{}}_0x72daa7=a0_0x355988[_0x49bbcf(0x16f)](_0x72daa7);}return normalizePath(_0x186b53);}await Promise[a0_0x5f1a86(0x161)](args[a0_0x5f1a86(0x120)](async _0x1a4ae9=>{const _0x579984=a0_0x5f1a86;try{const _0x48e8be=await a0_0x333d88['stat'](expandHome(_0x1a4ae9));!_0x48e8be[_0x579984(0xcb)]()&&(logMcpStderr(_0x579984(0x144)+_0x1a4ae9+'\x20is\x20not\x20a\x20directory'),process[_0x579984(0xea)](0x1));}catch(_0x457ee3){logMcpStderr(_0x579984(0x17b)+_0x1a4ae9+':',_0x457ee3),process[_0x579984(0xea)](0x1);}}));async function validatePath(_0x47934f){const _0x511628=a0_0x5f1a86,_0x51dfc8=expandHome(_0x47934f),_0x254ba2=a0_0x355988['resolve'](_0x51dfc8);logger['debug']('MCP',_0x511628(0xd1),{'raw_path':_0x47934f,'absolute':_0x254ba2});try{const _0x25e33a=await a0_0x333d88[_0x511628(0x1aa)](_0x254ba2);return logger['debug'](_0x511628(0x1b3),_0x511628(0x1a7),{'resolved':_0x25e33a,'symlink':_0x25e33a!==_0x254ba2}),_0x25e33a;}catch(_0x459aed){if(_0x459aed[_0x511628(0xf3)]===_0x511628(0x16a)){const _0x3c2325=a0_0x355988[_0x511628(0x16f)](_0x254ba2);try{const _0x329269=await a0_0x333d88[_0x511628(0x1aa)](_0x3c2325),_0x3c6f8e=a0_0x355988[_0x511628(0x112)](_0x329269,a0_0x355988[_0x511628(0x19d)](_0x254ba2));return logger[_0x511628(0x16e)](_0x511628(0x1b3),_0x511628(0x1a7),{'resolved':_0x3c6f8e,'new_file':!![]}),_0x3c6f8e;}catch{logger[_0x511628(0x160)](_0x511628(0x1b3),_0x511628(0x174),{'raw_path':_0x47934f,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x3c2325});throw new Error(_0x511628(0x10f)+_0x3c2325);}}logger['error'](_0x511628(0x1b3),_0x511628(0x174),{'raw_path':_0x47934f,'error':_0x459aed[_0x511628(0xce)]});throw _0x459aed;}}const MorphEditFileArgsSchema=z[a0_0x5f1a86(0x1e5)]({'path':z[a0_0x5f1a86(0xd6)](),'code_edit':z[a0_0x5f1a86(0xd6)]()[a0_0x5f1a86(0x150)](a0_0x5f1a86(0x20d)),'instruction':z[a0_0x5f1a86(0xd6)]()['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_0x5f1a86(0x1f3)]()[a0_0x5f1a86(0xda)](![])[a0_0x5f1a86(0x150)]('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x5f1a86(0x10e),WarpGrepArgsSchema=z[a0_0x5f1a86(0x1e5)]({'search_string':z['string']()[a0_0x5f1a86(0x150)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()['describe']('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'),'search_type':z[a0_0x5f1a86(0x199)]([a0_0x5f1a86(0xda),a0_0x5f1a86(0xec)])['optional']()[a0_0x5f1a86(0x150)](a0_0x5f1a86(0xf6))}),WarpGrepGitHubArgsSchema=z[a0_0x5f1a86(0x1e5)]({'search_string':z[a0_0x5f1a86(0xd6)]()[a0_0x5f1a86(0x150)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x5f1a86(0xd6)]()[a0_0x5f1a86(0x1bd)]()[a0_0x5f1a86(0x150)](a0_0x5f1a86(0x1bf)),'owner_repo':z[a0_0x5f1a86(0xd6)]()[a0_0x5f1a86(0x1bd)]()[a0_0x5f1a86(0x150)](a0_0x5f1a86(0x188)),'branch':z[a0_0x5f1a86(0xd6)]()[a0_0x5f1a86(0x1bd)]()[a0_0x5f1a86(0x150)](a0_0x5f1a86(0x1d9))}),FEEDBACK_KINDS=[a0_0x5f1a86(0x17d),'feature_request',a0_0x5f1a86(0xdf),a0_0x5f1a86(0x127),a0_0x5f1a86(0x210),a0_0x5f1a86(0x185),'other'],SubmitFeedbackArgsSchema=z[a0_0x5f1a86(0x1e5)]({'kind':z['enum'](FEEDBACK_KINDS)['default']('other')[a0_0x5f1a86(0x150)](a0_0x5f1a86(0x123)),'title':z[a0_0x5f1a86(0xd6)]()[a0_0x5f1a86(0x110)](0xc8)['optional']()[a0_0x5f1a86(0x150)](a0_0x5f1a86(0xc1)),'body':z[a0_0x5f1a86(0xd6)]()[a0_0x5f1a86(0x1c6)](0x1)[a0_0x5f1a86(0x110)](0xfa0)[a0_0x5f1a86(0x150)]('What\x20happened,\x20what\x20was\x20expected,\x20and\x20how\x20to\x20reproduce.\x20Exactly\x20the\x20text\x20the\x20user\x20approved.'),'model':z[a0_0x5f1a86(0xd6)]()[a0_0x5f1a86(0x110)](0xc8)[a0_0x5f1a86(0x1bd)]()['describe']('Morph\x20model\x20id\x20the\x20feedback\x20is\x20about,\x20if\x20any.'),'completion_id':z[a0_0x5f1a86(0xd6)]()['max'](0xc8)[a0_0x5f1a86(0x1bd)]()[a0_0x5f1a86(0x150)](a0_0x5f1a86(0x12a)),'initiated_by':z[a0_0x5f1a86(0x199)]([a0_0x5f1a86(0x1b2),a0_0x5f1a86(0x17c)])[a0_0x5f1a86(0x1bd)]()[a0_0x5f1a86(0x150)](a0_0x5f1a86(0x17f))}),FEEDBACK_PROMPT_NAME=a0_0x5f1a86(0x1e2);function feedbackPromptText(_0x3b5e43){const _0x12b7a0=a0_0x5f1a86;return[_0x12b7a0(0x1fd)+(_0x3b5e43?_0x12b7a0(0xef)+_0x3b5e43:'')+'.',_0x12b7a0(0xc2),'Leave\x20out\x20API\x20keys,\x20credentials,\x20secrets,\x20customer\x20data\x20and\x20any\x20code\x20the\x20user\x20has\x20not\x20approved\x20for\x20sharing.',_0x12b7a0(0x1a4)][_0x12b7a0(0x112)]('\x0a\x0a');}const server=new Server({'name':a0_0x5f1a86(0x139),'version':a0_0x5f1a86(0x190)},{'capabilities':{'tools':{},'prompts':{}}});server[a0_0x5f1a86(0x149)](ListToolsRequestSchema,async()=>{const _0x58cb2a=a0_0x5f1a86,_0x1978a1=[{'name':TOOL_NAMES[_0x58cb2a(0x1f9)],'description':'**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.\x20Unlike\x20search-and-replace\x20or\x20patch\x20edits\x20which\x20do\x20narrow\x20edits\x20one\x20at\x20a\x20time,\x20with\x20this\x20tool\x20you\x20should\x20do\x20all\x20your\x20code\x20changes\x20in\x20one\x20go\x20separated\x20by\x20`//\x20...\x20existing\x20code\x20...`\x20markers.\x20This\x20saves\x20tokens\x20and\x20improves\x20performance\x20because\x20you\x20do\x20not\x20need\x20to\x20reread\x20files\x20before\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a'+_0x58cb2a(0xd4)+_0x58cb2a(0x103)+_0x58cb2a(0x1cb)+_0x58cb2a(0x18f)+_0x58cb2a(0xf0)+_0x58cb2a(0x1ab)+_0x58cb2a(0x1af)+_0x58cb2a(0x19c)+_0x58cb2a(0xe5)+_0x58cb2a(0xd0)+_0x58cb2a(0xd9)+_0x58cb2a(0x134)+'-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'annotations':{'readOnlyHint':![],'destructiveHint':!![],'idempotentHint':![],'openWorldHint':![]},'requiresApiKey':!![]},{'name':TOOL_NAMES['CODEBASE_SEARCH'],'description':_0x58cb2a(0x17a)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x58cb2a(0x1c5)+_0x58cb2a(0x1ce)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':!![]},'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':!![]},'requiresApiKey':!![]},{'name':TOOL_NAMES['SUBMIT_FEEDBACK'],'title':'Send\x20feedback\x20to\x20Morph','description':_0x58cb2a(0x187)+'It\x20goes\x20to\x20the\x20team\x27s\x20feedback\x20channel\x20with\x20the\x20user\x27s\x20Morph\x20account,\x20org\x20and\x20plan\x20attached.\x20'+_0x58cb2a(0x107)+_0x58cb2a(0x183)+_0x58cb2a(0x1b8),'inputSchema':zodToJsonSchema(SubmitFeedbackArgsSchema),'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':![],'openWorldHint':!![]},'requiresApiKey':!![]}],_0x420cf9=_0x1978a1['filter'](_0x1d0e03=>{const _0x5f2fe3=_0x58cb2a;if(DISABLED_TOOLS['has'](_0x1d0e03[_0x5f2fe3(0xd7)]))return console[_0x5f2fe3(0x160)]('Tool\x20'+_0x1d0e03[_0x5f2fe3(0xd7)]+_0x5f2fe3(0x100)),![];if(_0x5f2fe3(0x111)in _0x1d0e03&&_0x1d0e03[_0x5f2fe3(0x111)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x1d0e03[_0x5f2fe3(0xd7)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x420cf9[_0x58cb2a(0x120)](_0x156b01=>({'name':_0x156b01[_0x58cb2a(0xd7)],..._0x58cb2a(0xf4)in _0x156b01&&_0x156b01[_0x58cb2a(0xf4)]?{'title':_0x156b01[_0x58cb2a(0xf4)]}:{},'description':_0x156b01[_0x58cb2a(0x1e0)],'inputSchema':_0x156b01[_0x58cb2a(0x1a2)],..._0x58cb2a(0x1d0)in _0x156b01&&_0x156b01[_0x58cb2a(0x1d0)]?{'annotations':_0x156b01[_0x58cb2a(0x1d0)]}:{}}))};}),server[a0_0x5f1a86(0x149)](CallToolRequestSchema,async _0xfd8a61=>{const _0x296dde=a0_0x5f1a86,{name:_0x502d7d,arguments:_0x24969f}=_0xfd8a61[_0x296dde(0x164)],_0x38b651=Date[_0x296dde(0x130)]();logger['debug'](_0x296dde(0x1b3),_0x296dde(0x1df),{'tool':_0x502d7d,'args':_0x502d7d===_0x296dde(0x209)?{'path':_0x24969f?.['path'],'instruction':_0x24969f?.['instruction']||_0x24969f?.[_0x296dde(0x20a)],'dryRun':_0x24969f?.[_0x296dde(0x16b)]}:_0x24969f});try{if(!MORPH_API_KEY)return{'content':[{'type':'text','text':_0x296dde(0x18e)}],'isError':!![]};if(!MORPH_API_KEY[_0x296dde(0x1b1)](_0x296dde(0x194))&&!MORPH_API_KEY[_0x296dde(0x1b1)](_0x296dde(0x15b)))return{'content':[{'type':_0x296dde(0xfd),'text':_0x296dde(0x1a9)}],'isError':!![]};if(DISABLED_TOOLS[_0x296dde(0x1ac)](_0x502d7d))return{'content':[{'type':'text','text':_0x296dde(0x1eb)+_0x502d7d+_0x296dde(0x159)}],'isError':![]};switch(_0x502d7d){case TOOL_NAMES[_0x296dde(0x1f9)]:{let _0x4a2464=_0x24969f;if(_0x4a2464&&typeof _0x4a2464===_0x296dde(0x1e5)){if(!('path'in _0x4a2464)){const _0x5d82f9=_0x4a2464[_0x296dde(0x1db)]??_0x4a2464[_0x296dde(0x1a3)]??_0x4a2464[_0x296dde(0x20c)]??_0x4a2464[_0x296dde(0x153)]??_0x4a2464[_0x296dde(0xcf)];if(_0x5d82f9)_0x4a2464={..._0x4a2464,'path':_0x5d82f9};}'instructions'in _0x4a2464&&!(_0x296dde(0x15e)in _0x4a2464)&&(_0x4a2464={..._0x4a2464,'instruction':_0x4a2464[_0x296dde(0x20a)]});if(!(_0x296dde(0x162)in _0x4a2464)){const _0x55e2e2=_0x4a2464[_0x296dde(0xf3)]??_0x4a2464['new_string']??_0x4a2464[_0x296dde(0x1f7)]??_0x4a2464['edit'];if(_0x55e2e2)_0x4a2464={..._0x4a2464,'code_edit':_0x55e2e2};}}const _0x1a214c=MorphEditFileArgsSchema['safeParse'](_0x4a2464);if(!_0x1a214c[_0x296dde(0x214)])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x1a214c['error']);const _0x3668df=await validatePath(_0x1a214c[_0x296dde(0xc0)][_0x296dde(0x186)]);let _0xe99150=null,_0x1284b9=!![],_0x29f9ad=null;try{_0xe99150=await a0_0x333d88[_0x296dde(0x191)](_0x3668df,'utf-8'),logger[_0x296dde(0x16e)](_0x296dde(0x1b3),_0x296dde(0x1c7),{'path':_0x3668df,'size_bytes':_0xe99150['length']});}catch(_0x5cf23d){const _0x5e7ea9=_0x5cf23d['code'];_0x5e7ea9===_0x296dde(0x16a)?(_0x1284b9=![],_0xe99150='',logger[_0x296dde(0x16e)](_0x296dde(0x1b3),_0x296dde(0x1c7),{'path':_0x3668df,'exists':![]})):(_0x29f9ad=_0x296dde(0x1fc)+(_0x5e7ea9||_0x296dde(0x1f0))+_0x296dde(0x19a)+(_0x5cf23d instanceof Error?_0x5cf23d[_0x296dde(0xce)]:String(_0x5cf23d)),logger[_0x296dde(0x160)](_0x296dde(0x1b3),'file_read_failed',{'path':_0x3668df,'error':_0x29f9ad}),logMcpStderr('Warning:\x20'+_0x29f9ad));}let _0x449fe0;try{const _0x2264c3=MORPH_API_KEY;if(!_0x2264c3)throw new Error(_0x296dde(0x142));const _0x278593=a0_0x355988[_0x296dde(0x16f)](_0x3668df),_0x4d8d52=a0_0x355988[_0x296dde(0x19d)](_0x3668df);logger['debug'](_0x296dde(0x1b3),_0x296dde(0xe7),{'model':_0x296dde(0x133),'path':_0x1a214c[_0x296dde(0xc0)]['path'],'instruction_len':_0x1a214c[_0x296dde(0xc0)][_0x296dde(0x15e)][_0x296dde(0x204)],'code_edit_len':_0x1a214c['data'][_0x296dde(0x162)]['length'],'original_code_len':_0xe99150?.[_0x296dde(0x204)]??0x0,'dry_run':_0x1a214c['data'][_0x296dde(0x16b)]});const _0x2382bd=Date[_0x296dde(0x130)](),_0x33d80a=await executeEditFile({'target_filepath':_0x4d8d52,'code_edit':_0x1a214c['data'][_0x296dde(0x162)],'instruction':_0x1a214c[_0x296dde(0xc0)][_0x296dde(0x15e)]},{'morphApiKey':_0x2264c3,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x278593,'autoWrite':!_0x1a214c[_0x296dde(0xc0)][_0x296dde(0x16b)],'generateUdiff':![],'debug':![]}),_0x56bbce=Date[_0x296dde(0x130)]()-_0x2382bd;_0x449fe0=_0x33d80a[_0x296dde(0x1a8)];if(!_0x33d80a[_0x296dde(0x214)])throw new Error(_0x33d80a[_0x296dde(0x160)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x3459c4=_0x33d80a[_0x296dde(0xc5)],_0x161398=_0x296dde(0x189)+_0x3459c4[_0x296dde(0x1da)]+_0x296dde(0xe6)+_0x3459c4[_0x296dde(0xeb)]+_0x296dde(0x1f1)+_0x3459c4[_0x296dde(0x13b)];logger[_0x296dde(0x16e)](_0x296dde(0x1b3),_0x296dde(0x1a5),{'tool':_0x296dde(0x209),'success':!![],'latency_ms':Date['now']()-_0x38b651,'edit_latency_ms':_0x56bbce,'changes':{'added':_0x3459c4['linesAdded'],'removed':_0x3459c4['linesRemoved'],'modified':_0x3459c4['linesModified']},'completion_id':_0x449fe0});if(_0x1a214c[_0x296dde(0xc0)]['dryRun'])return{'content':[{'type':_0x296dde(0xfd),'text':_0x296dde(0x105)+(_0x1284b9?'':_0x296dde(0x1a1))+':\x20'+_0x1a214c[_0x296dde(0xc0)][_0x296dde(0x15e)]+_0x296dde(0x1cd)+_0x161398+'.\x20Path:\x20'+_0x1a214c[_0x296dde(0xc0)]['path']+'.'}]};return{'content':[{'type':_0x296dde(0xfd),'text':_0x296dde(0x1d2)+(_0x1284b9?_0x296dde(0x1de):'Created\x20File')+':\x20'+_0x1a214c[_0x296dde(0xc0)][_0x296dde(0x15e)]+_0x296dde(0x1cd)+_0x161398+_0x296dde(0x13f)+_0x1a214c[_0x296dde(0xc0)][_0x296dde(0x186)]+'.'}]};}catch(_0x66ecb7){const _0x375d7c=handleMorphAPIError(_0x66ecb7);if(_0x375d7c)return logger[_0x296dde(0x160)](_0x296dde(0x1b3),_0x296dde(0x1cc),{'tool':'edit_file','error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date['now']()-_0x38b651}),_0x375d7c;const _0x5cbf2f=_0x66ecb7 instanceof Error?_0x66ecb7[_0x296dde(0xce)]:String(_0x66ecb7);return logger[_0x296dde(0x160)](_0x296dde(0x1b3),_0x296dde(0x1cc),{'tool':_0x296dde(0x209),'error':_0x5cbf2f,'path':_0x1a214c[_0x296dde(0xc0)][_0x296dde(0x186)],'validated_path':_0x3668df,'latency_ms':Date[_0x296dde(0x130)]()-_0x38b651,'stack':_0x66ecb7 instanceof Error?_0x66ecb7[_0x296dde(0x122)]:undefined}),reportMorphError({'error_message':_0x5cbf2f,'error_type':_0x66ecb7 instanceof Error?_0x66ecb7[_0x296dde(0x1ae)][_0x296dde(0xd7)]:_0x296dde(0x1d4),'context':{'tool':_0x296dde(0x209),'completion_id':_0x449fe0,'file_path':_0x1a214c[_0x296dde(0xc0)]['path'],'validated_path':_0x3668df,'instruction':_0x1a214c[_0x296dde(0xc0)][_0x296dde(0x15e)],'model':MORPH_LARGE_APPLY?_0x296dde(0x202):_0x296dde(0x133),'dry_run':_0x1a214c[_0x296dde(0xc0)][_0x296dde(0x16b)],'file_exists':_0x1284b9,'file_read_error':_0x29f9ad,'file_readable':_0xe99150!==null,'request_content':{'path':_0x1a214c[_0x296dde(0xc0)][_0x296dde(0x186)],'code_edit':_0x1a214c[_0x296dde(0xc0)][_0x296dde(0x162)],'instruction':_0x1a214c[_0x296dde(0xc0)]['instruction'],'original_code':_0xe99150!==null?_0xe99150['length']>0xc350?_0xe99150[_0x296dde(0x213)](0x0,0xc350)+_0x296dde(0x182)+_0xe99150[_0x296dde(0x204)]+_0x296dde(0x119):_0xe99150:_0x296dde(0x1b0)+(_0x29f9ad||_0x296dde(0x165))+']','original_code_length':_0xe99150?.[_0x296dde(0x204)]??0x0,'model':MORPH_LARGE_APPLY?_0x296dde(0x202):'morph-v3-fast','dry_run':_0x1a214c['data']['dryRun']}},'stack_trace':_0x66ecb7 instanceof Error?_0x66ecb7[_0x296dde(0x122)]:undefined,'source':_0x296dde(0x106)})[_0x296dde(0x10a)](()=>{}),{'content':[{'type':_0x296dde(0xfd),'text':_0x296dde(0x170)+_0x5cbf2f}],'isError':!![]};}}case TOOL_NAMES[_0x296dde(0xe1)]:{const _0x182f61=WarpGrepArgsSchema[_0x296dde(0x10b)](_0x24969f);if(!_0x182f61[_0x296dde(0x214)])return{'content':[{'type':_0x296dde(0xfd),'text':_0x296dde(0x1ad)+_0x182f61['error']}],'isError':!![]};const _0x21bd40=_0x53d463=>{const _0x367186=_0x296dde,_0xb806ec=[];for(const _0x1b03f8 of _0x53d463||[]){if(_0x1b03f8[_0x367186(0x208)]==='assistant'&&Array['isArray'](_0x1b03f8['tool_calls']))for(const _0x12891f of _0x1b03f8['tool_calls']){try{const _0x16a61f=_0x12891f['function']?.[_0x367186(0xd7)],_0x180a2c=JSON[_0x367186(0x104)](_0x12891f[_0x367186(0x151)]?.[_0x367186(0xee)]||'{}');if(_0x16a61f===_0x367186(0x108))_0xb806ec[_0x367186(0x1e7)](_0x367186(0x1e8)+_0x180a2c[_0x367186(0x20e)]+'\x27\x20'+(_0x180a2c[_0x367186(0x186)]||'.'));else{if(_0x16a61f===_0x367186(0x121))_0xb806ec['push'](_0x367186(0x196)+_0x180a2c[_0x367186(0x186)]);else{if(_0x16a61f===_0x367186(0x15a))_0xb806ec[_0x367186(0x1e7)](_0x367186(0xca)+(_0x180a2c['command']||'.'));else{if(_0x16a61f==='glob')_0xb806ec[_0x367186(0x1e7)](_0x367186(0x116)+_0x180a2c[_0x367186(0x20e)]+'\x27\x20'+(_0x180a2c[_0x367186(0x186)]||'.'));else _0x16a61f==='finish'&&_0xb806ec['push'](_0x367186(0xcc));}}}}catch{}}}return _0xb806ec;},_0x52e46b=_0x4131d0=>{const _0x1e291f=_0x296dde,_0x18fea5=[];if(!_0x4131d0||!Array[_0x1e291f(0x1c1)](_0x4131d0))return _0x18fea5;const _0x315359=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x1e291f(0x17e),'tool':_0x1e291f(0x121)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':_0x1e291f(0x121)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x1e291f(0x14d),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x1e291f(0x155),'tool':_0x1e291f(0x1bc)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x1e291f(0x1bc)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x1e291f(0x14d),'tool':_0x1e291f(0x121)},{'pattern':/\[SYMLINK\]/,'error_type':_0x1e291f(0x13d),'tool':_0x1e291f(0x121)},{'pattern':/not a text file/,'error_type':_0x1e291f(0x14d),'tool':'read'},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x1e291f(0x1f8),'tool':_0x1e291f(0x121)},{'pattern':/status="error"/,'error_type':_0x1e291f(0x201),'tool':_0x1e291f(0x1f0)}];let _0x40a34f=0x0;for(const _0x5bac03 of _0x4131d0){_0x5bac03[_0x1e291f(0x208)]===_0x1e291f(0x18a)&&Array['isArray'](_0x5bac03[_0x1e291f(0xff)])&&_0x40a34f++;const _0xd85571=_0x5bac03[_0x1e291f(0x1f7)];if((_0x5bac03[_0x1e291f(0x208)]===_0x1e291f(0x1d6)||_0x5bac03[_0x1e291f(0x208)]===_0x1e291f(0x1b2))&&_0xd85571&&typeof _0xd85571===_0x1e291f(0xd6))for(const {pattern:_0xe8c39b,error_type:_0x53aa06,tool:_0x4754c3}of _0x315359){const _0x364cf=_0xd85571['match'](new RegExp(_0xe8c39b[_0x1e291f(0x1d3)],'g'));if(_0x364cf)for(const _0x2417fc of _0x364cf){const _0x242b76=_0xd85571[_0x1e291f(0x1d7)](_0x2417fc),_0x5f3fae=_0xd85571['substring'](_0x242b76,Math[_0x1e291f(0x1c6)](_0x242b76+0xc8,_0xd85571[_0x1e291f(0x204)]));_0x18fea5['push']({'tool':_0x4754c3,'error_type':_0x53aa06,'error_message':_0x5f3fae['split']('\x0a')[0x0],'turn':_0x40a34f});}}}return _0x18fea5;};try{const _0x2ad690=a0_0x355988[_0x296dde(0x115)](_0x182f61[_0x296dde(0xc0)][_0x296dde(0xc4)]),_0x56ec2e=_0x182f61['data']['search_type'],_0x71fc63=_0x56ec2e===_0x296dde(0xec)?{'allowNames':[_0x296dde(0xec)]}:undefined,_0xd27956=new LocalRipgrepProvider(_0x2ad690,undefined,_0x71fc63);logger[_0x296dde(0x16e)]('MCP',_0x296dde(0x212),{'type':_0x296dde(0x1d1),'repo_root':_0x2ad690,'search_type':_0x56ec2e||'default'}),logger[_0x296dde(0x16e)](_0x296dde(0x1b3),_0x296dde(0x1a0),{'query':_0x182f61['data'][_0x296dde(0x101)],'repo_root':_0x2ad690,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x5db13b=Date[_0x296dde(0x130)](),_0x3d8b02=await runWarpGrep({'searchTerm':_0x182f61[_0x296dde(0xc0)][_0x296dde(0x101)],'repoRoot':_0x2ad690,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0xd27956,'search_type':_0x56ec2e}),_0x19d13a=Date['now']()-_0x5db13b,_0x55a95b=_0x3d8b02[_0x296dde(0xcc)]?.['metadata']?.[_0x296dde(0x200)]?.[_0x296dde(0x204)]??0x0;logger[_0x296dde(0x16e)](_0x296dde(0x1b3),_0x296dde(0x1bb),{'termination':_0x3d8b02[_0x296dde(0x158)],'turns':_0x3d8b02['timings']?.[_0x296dde(0x18c)]??0x0,'files_found':_0x55a95b,'latency_ms':_0x19d13a});const _0x4be06c=_0x52e46b(_0x3d8b02[_0x296dde(0x178)]);_0x4be06c[_0x296dde(0x204)]>0x0&&reportMorphError({'error_message':_0x296dde(0x12c)+_0x4be06c[_0x296dde(0x204)]+_0x296dde(0x1c0),'error_type':_0x296dde(0x184),'level':'warn','tool':_0x296dde(0xfe),'context':{'repo_path':_0x182f61['data'][_0x296dde(0xc4)],'query':_0x182f61[_0x296dde(0xc0)][_0x296dde(0x101)],'model':_0x296dde(0x1cf),'termination_reason':_0x3d8b02['terminationReason'],'sub_tool_errors':_0x4be06c,'timings':_0x3d8b02['timings'],'tool_calls':_0x21bd40(_0x3d8b02['messages']),'messages':_0x3d8b02[_0x296dde(0x178)]?.[_0x296dde(0x120)](_0x1b59ce=>({'role':_0x1b59ce[_0x296dde(0x208)],'content':_0x1b59ce[_0x296dde(0x1f7)],..._0x1b59ce[_0x296dde(0xff)]?{'tool_calls':_0x1b59ce[_0x296dde(0xff)][_0x296dde(0x204)]}:{},..._0x1b59ce[_0x296dde(0x14e)]?{'tool_call_id':_0x1b59ce[_0x296dde(0x14e)]}:{}}))},'source':_0x296dde(0x106)})['catch'](()=>{});let _0x4b0dab='';if(_0x3d8b02[_0x296dde(0x158)]===_0x296dde(0x1be)&&_0x3d8b02[_0x296dde(0xcc)]?.['metadata']?.[_0x296dde(0x200)]){const _0xfaf487=_0x3d8b02[_0x296dde(0xcc)][_0x296dde(0x1ed)][_0x296dde(0x200)];if(_0xfaf487[_0x296dde(0x204)]===0x0)return _0x4b0dab=_0x3d8b02[_0x296dde(0xcc)][_0x296dde(0x18d)]||_0x296dde(0x180),{'content':[{'type':_0x296dde(0xfd),'text':_0x4b0dab}]};const _0x42c25e=[],_0x13ef20=[_0x296dde(0x10c)];for(const _0x4de07d of _0x3d8b02[_0x296dde(0x178)]){if(_0x4de07d['role']===_0x296dde(0x18a)&&Array[_0x296dde(0x1c1)](_0x4de07d[_0x296dde(0xff)]))for(const _0xc56c5c of _0x4de07d['tool_calls']){try{const _0x106688=_0xc56c5c[_0x296dde(0x151)]?.[_0x296dde(0xd7)],_0x2578f9=JSON[_0x296dde(0x104)](_0xc56c5c[_0x296dde(0x151)]?.[_0x296dde(0xee)]||'{}');if(_0x106688==='grep_search')_0x13ef20[_0x296dde(0x1e7)](_0x296dde(0x175)+_0x2578f9[_0x296dde(0x20e)]+_0x296dde(0xfc)+(_0x2578f9['path']||'.')+'`');else{if(_0x106688===_0x296dde(0x121))_0x13ef20[_0x296dde(0x1e7)]('-\x20Read\x20file\x20`'+_0x2578f9[_0x296dde(0x186)]+'`');else{if(_0x106688===_0x296dde(0x15a))_0x13ef20[_0x296dde(0x1e7)](_0x296dde(0x1ea)+(_0x2578f9[_0x296dde(0x118)]||'.')+'`');else _0x106688===_0x296dde(0x1ee)&&_0x13ef20[_0x296dde(0x1e7)](_0x296dde(0x148)+_0x2578f9[_0x296dde(0x20e)]+'`\x20in\x20`'+(_0x2578f9['path']||'.')+'`');}}}catch{}}}_0x42c25e[_0x296dde(0x1e7)](_0x13ef20[_0x296dde(0x112)]('\x0a'));const _0x2efc5b=['',_0x296dde(0x197)];for(const _0x58e2aa of _0xfaf487){if(_0x58e2aa['lines']==='*')_0x2efc5b[_0x296dde(0x1e7)]('-\x20'+_0x58e2aa[_0x296dde(0x186)]+':*');else{if(Array[_0x296dde(0x1c1)](_0x58e2aa[_0x296dde(0x211)])){const _0x4057a6=_0x58e2aa['lines'][_0x296dde(0x120)](([_0x28e2fe,_0x17f1df])=>{if(_0x28e2fe===_0x17f1df)return''+_0x28e2fe;return _0x28e2fe+'-'+_0x17f1df;});_0x2efc5b[_0x296dde(0x1e7)]('-\x20'+_0x58e2aa[_0x296dde(0x186)]+':'+_0x4057a6[_0x296dde(0x112)](','));}else _0x2efc5b['push']('-\x20'+_0x58e2aa['path']+':*');}}_0x2efc5b[_0x296dde(0x1e7)](''),_0x42c25e[_0x296dde(0x1e7)](_0x2efc5b[_0x296dde(0x112)]('\x0a')),_0x42c25e[_0x296dde(0x1e7)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x579c04=[],_0x3a9b9b=[];for(const _0x495ba2 of _0xfaf487){let _0x5cb912=a0_0x355988[_0x296dde(0x115)](_0x182f61[_0x296dde(0xc0)][_0x296dde(0xc4)],_0x495ba2['path']),_0x1c384f=null,_0x26f56a=null;try{_0x1c384f=await a0_0x333d88[_0x296dde(0x191)](_0x5cb912,{'encoding':_0x296dde(0x206)});}catch(_0x32e791){const _0x4ec776=fixPathRepetition(_0x5cb912);if(_0x4ec776)try{_0x1c384f=await a0_0x333d88[_0x296dde(0x191)](_0x4ec776,{'encoding':_0x296dde(0x206)}),_0x5cb912=_0x4ec776;}catch{_0x26f56a=_0x32e791 instanceof Error?_0x32e791:new Error(String(_0x32e791));}else _0x26f56a=_0x32e791 instanceof Error?_0x32e791:new Error(String(_0x32e791));}if(_0x1c384f!==null){const _0x5beeec=_0x1c384f[_0x296dde(0x203)](/\r?\n/),_0x20cb92=[];if(_0x495ba2['lines']==='*'||!Array[_0x296dde(0x1c1)](_0x495ba2[_0x296dde(0x211)]))for(let _0x4cd31f=0x1;_0x4cd31f<=_0x5beeec[_0x296dde(0x204)];_0x4cd31f++){const _0x2709e4=_0x5beeec[_0x4cd31f-0x1];_0x20cb92[_0x296dde(0x1e7)](_0x4cd31f+'|\x20'+_0x2709e4);}else for(const [_0x3c380a,_0x4be20d]of _0x495ba2[_0x296dde(0x211)]){_0x20cb92[_0x296dde(0x204)]>0x0&&_0x20cb92[_0x296dde(0x1e7)]('');for(let _0x5972c=_0x3c380a;_0x5972c<=_0x4be20d&&_0x5972c<=_0x5beeec[_0x296dde(0x204)];_0x5972c++){const _0x1fbb9a=_0x5beeec[_0x5972c-0x1];_0x20cb92[_0x296dde(0x1e7)](_0x5972c+'|\x20'+_0x1fbb9a);}}_0x3a9b9b[_0x296dde(0x1e7)]({'path':_0x495ba2[_0x296dde(0x186)],'content':_0x20cb92[_0x296dde(0x112)]('\x0a')});}else _0x579c04[_0x296dde(0x1e7)]('<file\x20path=\x22'+_0x495ba2[_0x296dde(0x186)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x26f56a?.[_0x296dde(0xce)]||_0x296dde(0x18b))+_0x296dde(0x14b));}try{const _0x314a56=await compactFileContexts(_0x3a9b9b,_0x182f61['data'][_0x296dde(0x101)],MORPH_API_KEY,MORPH_API_URL);for(const _0x1dd03e of _0x314a56){_0x579c04[_0x296dde(0x1e7)](_0x296dde(0x173)+_0x1dd03e[_0x296dde(0x186)]+_0x296dde(0x1c2)+_0x1dd03e['content']+_0x296dde(0x14b));}}catch(_0x74827a){logger[_0x296dde(0xcd)]('MCP',_0x296dde(0x10d),{'error':_0x74827a instanceof Error?_0x74827a['message']:String(_0x74827a),'files_count':_0x3a9b9b[_0x296dde(0x204)]});for(const _0x263d05 of _0x3a9b9b){_0x579c04['push']('<file\x20path=\x22'+_0x263d05['path']+_0x296dde(0x1c2)+_0x263d05[_0x296dde(0x1f7)]+_0x296dde(0x14b));}}_0x42c25e[_0x296dde(0x1e7)](_0x579c04[_0x296dde(0x112)]('\x0a\x0a')),_0x4b0dab=_0x42c25e[_0x296dde(0x112)]('\x0a');const _0x9c2bde=_0x3d8b02[_0x296dde(0x125)]?.[_0x296dde(0xde)](_0x15d1af=>_0x15d1af[_0x296dde(0xce)]?.[_0x296dde(0x1b1)](_0x296dde(0xf7)))||[];if(_0x9c2bde[_0x296dde(0x204)]>0x0){const _0x1cd423=_0x9c2bde[_0x296dde(0x120)](_0x3d55cb=>_0x3d55cb[_0x296dde(0xce)])['join'](';\x20');reportMorphError({'error_message':_0x1cd423,'error_type':_0x296dde(0xdd),'context':{'tool':_0x296dde(0xfe),'repo_path':_0x182f61[_0x296dde(0xc0)][_0x296dde(0xc4)],'query':_0x182f61[_0x296dde(0xc0)][_0x296dde(0x101)],'model':'morph-warp-grep-v2.1','termination_reason':_0x296dde(0xe8),'error_count':_0x9c2bde[_0x296dde(0x204)],'is_timeout':![],'timings':_0x3d8b02[_0x296dde(0xd5)],'files_attempted':_0xfaf487['map'](_0x49421b=>({'path':_0x49421b[_0x296dde(0x186)],'lines':_0x49421b[_0x296dde(0x211)]})),'tool_calls':_0x21bd40(_0x3d8b02[_0x296dde(0x178)]),'messages':_0x3d8b02[_0x296dde(0x178)]?.[_0x296dde(0x120)](_0x4e227c=>({'role':_0x4e227c[_0x296dde(0x208)],'content':_0x4e227c[_0x296dde(0x1f7)],..._0x4e227c[_0x296dde(0xff)]?{'tool_calls':_0x4e227c[_0x296dde(0xff)][_0x296dde(0x204)]}:{},..._0x4e227c[_0x296dde(0x14e)]?{'tool_call_id':_0x4e227c['tool_call_id']}:{}})),'request_content':{'query':_0x182f61['data'][_0x296dde(0x101)],'repo_path':_0x182f61[_0x296dde(0xc0)][_0x296dde(0xc4)],'repoRoot':a0_0x355988[_0x296dde(0x115)](_0x182f61[_0x296dde(0xc0)]['repo_path']),'model':_0x296dde(0x1cf)}},'source':'mcp-filesystem'})[_0x296dde(0x10a)](()=>{});}}else{if(_0x3d8b02['terminationReason']===_0x296dde(0x1b6)&&_0x3d8b02['errors'][_0x296dde(0x204)]>0x0){const _0x4a5880=_0x3d8b02['errors'][_0x296dde(0x120)](_0x425535=>_0x425535[_0x296dde(0xce)])[_0x296dde(0x112)](';\x20');_0x4b0dab='Error:\x20'+_0x4a5880;const _0x207a7b=_0x4a5880[_0x296dde(0x198)]()[_0x296dde(0x1d8)](_0x296dde(0xfa))||_0x4a5880[_0x296dde(0x198)]()['includes']('timed\x20out')||_0x4a5880[_0x296dde(0x198)]()[_0x296dde(0x1d8)](_0x296dde(0x192)),_0x2e6f5b=_0x3d8b02[_0x296dde(0xcc)]?.[_0x296dde(0x1ed)]?.[_0x296dde(0x200)],_0x5c20cc=_0x3d8b02[_0x296dde(0x125)][0x0];reportMorphError({'error_message':_0x4a5880,'error_type':_0x207a7b?_0x296dde(0x1e3):_0x5c20cc?.[_0x296dde(0x1ae)]?.[_0x296dde(0xd7)]||'WarpGrepError','context':{'tool':_0x296dde(0xfe),'repo_path':_0x182f61[_0x296dde(0xc0)][_0x296dde(0xc4)],'query':_0x182f61[_0x296dde(0xc0)][_0x296dde(0x101)],'model':_0x296dde(0x1cf),'termination_reason':_0x3d8b02[_0x296dde(0x158)],'error_count':_0x3d8b02[_0x296dde(0x125)][_0x296dde(0x204)],'is_timeout':_0x207a7b,'timings':_0x3d8b02['timings'],'files_attempted':_0x2e6f5b?.[_0x296dde(0x120)](_0x279402=>({'path':_0x279402[_0x296dde(0x186)],'lines':_0x279402[_0x296dde(0x211)]})),'tool_calls':_0x21bd40(_0x3d8b02[_0x296dde(0x178)]),'messages':_0x3d8b02[_0x296dde(0x178)]?.[_0x296dde(0x120)](_0x2a6099=>({'role':_0x2a6099['role'],'content':_0x2a6099['content'],..._0x2a6099[_0x296dde(0xff)]?{'tool_calls':_0x2a6099[_0x296dde(0xff)]['length']}:{},..._0x2a6099['tool_call_id']?{'tool_call_id':_0x2a6099[_0x296dde(0x14e)]}:{}})),'request_content':{'query':_0x182f61[_0x296dde(0xc0)][_0x296dde(0x101)],'repo_path':_0x182f61[_0x296dde(0xc0)][_0x296dde(0xc4)],'repoRoot':a0_0x355988[_0x296dde(0x115)](_0x182f61[_0x296dde(0xc0)][_0x296dde(0xc4)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x5c20cc?.[_0x296dde(0x122)]||undefined,'source':'mcp-filesystem'})[_0x296dde(0x10a)](()=>{});}else _0x4b0dab=_0x296dde(0x138);}return{'content':[{'type':_0x296dde(0xfd),'text':_0x4b0dab}]};}catch(_0x51e1de){const _0x4bcf7c=handleMorphAPIError(_0x51e1de);if(_0x4bcf7c)return logger['error']('MCP','tool_call_error',{'tool':'codebase_search','error':_0x296dde(0x146),'latency_ms':Date['now']()-_0x38b651}),_0x4bcf7c;const _0x3ea747=_0x51e1de instanceof Error?_0x51e1de[_0x296dde(0xce)]:String(_0x51e1de);logger[_0x296dde(0x160)](_0x296dde(0x1b3),_0x296dde(0x1cc),{'tool':_0x296dde(0xfe),'error':_0x3ea747,'repo_path':_0x182f61[_0x296dde(0xc0)][_0x296dde(0xc4)],'query':_0x182f61['data']['search_string'],'latency_ms':Date[_0x296dde(0x130)]()-_0x38b651});const _0x527f7b=_0x3ea747[_0x296dde(0x198)]()[_0x296dde(0x1d8)](_0x296dde(0xfa))||_0x3ea747[_0x296dde(0x198)]()[_0x296dde(0x1d8)](_0x296dde(0x1fe))||_0x3ea747[_0x296dde(0x198)]()[_0x296dde(0x1d8)]('etimedout')||_0x51e1de instanceof Error&&_0x51e1de['name']===_0x296dde(0x1e3);return reportMorphError({'error_message':_0x3ea747,'error_type':_0x527f7b?_0x296dde(0x1e3):_0x51e1de instanceof Error?_0x51e1de['constructor'][_0x296dde(0xd7)]:_0x296dde(0x1d4),'context':{'tool':_0x296dde(0xfe),'repo_path':_0x182f61[_0x296dde(0xc0)][_0x296dde(0xc4)],'query':_0x182f61['data'][_0x296dde(0x101)],'model':_0x296dde(0x1cf),'is_timeout':_0x527f7b,'exception_phase':_0x296dde(0xd8),'request_content':{'query':_0x182f61[_0x296dde(0xc0)][_0x296dde(0x101)],'repo_path':_0x182f61[_0x296dde(0xc0)][_0x296dde(0xc4)],'repoRoot':a0_0x355988[_0x296dde(0x115)](_0x182f61[_0x296dde(0xc0)]['repo_path']),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x51e1de instanceof Error?_0x51e1de[_0x296dde(0x122)]:undefined,'source':_0x296dde(0x106)})['catch'](()=>{}),{'content':[{'type':_0x296dde(0xfd),'text':_0x296dde(0x215)+_0x3ea747}],'isError':![]};}}case TOOL_NAMES[_0x296dde(0x141)]:{const _0x1404be=WarpGrepGitHubArgsSchema[_0x296dde(0x10b)](_0x24969f);if(!_0x1404be[_0x296dde(0x214)])return{'content':[{'type':_0x296dde(0xfd),'text':_0x296dde(0x1ad)+_0x1404be[_0x296dde(0x160)]}],'isError':!![]};const _0x16c028=_0x1404be['data'][_0x296dde(0xe9)]||_0x1404be[_0x296dde(0xc0)][_0x296dde(0x1f5)];if(!_0x16c028)return{'content':[{'type':_0x296dde(0xfd),'text':_0x296dde(0x11f)}],'isError':!![]};const _0x2f125e=MORPH_API_KEY;if(!_0x2f125e)throw new Error(_0x296dde(0x142));const _0x2b9cdd=Date[_0x296dde(0x130)]();logger[_0x296dde(0x16e)]('MCP','github_search_start',{'identifier':_0x16c028,'query':_0x1404be['data'][_0x296dde(0x101)],'branch':_0x1404be[_0x296dde(0xc0)]['branch']});try{const _0x4fe58d=new WarpGrepClient({'morphApiKey':_0x2f125e,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x2a0b8c=await _0x4fe58d[_0x296dde(0xc6)]({'searchTerm':_0x1404be[_0x296dde(0xc0)]['search_string'],'github':_0x16c028,'branch':_0x1404be[_0x296dde(0xc0)]['branch']}),_0x432403=Date['now']()-_0x2b9cdd;logMcpStderr(_0x296dde(0x19e)+_0x432403+_0x296dde(0x145)+_0x2a0b8c[_0x296dde(0x214)]);const _0x4a390e=formatResult(_0x2a0b8c);return{'content':[{'type':_0x296dde(0xfd),'text':_0x4a390e}]};}catch(_0x4be1b6){const _0x702135=handleMorphAPIError(_0x4be1b6);if(_0x702135)return _0x702135;const _0x3a5f23=Date['now']()-_0x2b9cdd,_0x585221=_0x4be1b6 instanceof Error?_0x4be1b6[_0x296dde(0xce)]:String(_0x4be1b6);return logMcpStderr(_0x296dde(0x205)+_0x3a5f23+'ms:',_0x585221),reportMorphError({'error_message':_0x585221,'error_type':_0x4be1b6 instanceof Error?_0x4be1b6[_0x296dde(0x1ae)][_0x296dde(0xd7)]:_0x296dde(0x1d4),'context':{'tool':_0x296dde(0x1c8),'github_url':_0x16c028,'search_string':_0x1404be[_0x296dde(0xc0)]['search_string'],'branch':_0x1404be[_0x296dde(0xc0)]['branch']},'stack_trace':_0x4be1b6 instanceof Error?_0x4be1b6[_0x296dde(0x122)]:undefined,'source':_0x296dde(0x106),'tool':_0x296dde(0x1c8),'latency_ms':_0x3a5f23})[_0x296dde(0x10a)](()=>{}),{'content':[{'type':_0x296dde(0xfd),'text':_0x296dde(0x193)+_0x585221}],'isError':![]};}}case TOOL_NAMES['SUBMIT_FEEDBACK']:{const _0x3ff2bf=SubmitFeedbackArgsSchema[_0x296dde(0x10b)](_0x24969f);if(!_0x3ff2bf[_0x296dde(0x214)])throw new Error(_0x296dde(0x1e9)+_0x3ff2bf[_0x296dde(0x160)]);const _0x355e1a=_0x3ff2bf[_0x296dde(0xc0)];if(server['getClientCapabilities']()?.['elicitation']?.['form']){const _0x2dd76b=await server[_0x296dde(0x113)]({'message':_0x296dde(0x176)+('['+_0x355e1a['kind']+']\x20'+(_0x355e1a[_0x296dde(0xf4)]??'')+'\x0a\x0a'+_0x355e1a[_0x296dde(0xc8)]),'requestedSchema':{'type':'object','properties':{'send':{'type':_0x296dde(0x1f3),'title':_0x296dde(0x1e4),'default':!![]}},'required':[_0x296dde(0x152)]}});if(_0x2dd76b[_0x296dde(0x20b)]!==_0x296dde(0x16d)||_0x2dd76b[_0x296dde(0x1f7)]?.[_0x296dde(0x152)]!==!![])return{'content':[{'type':_0x296dde(0xfd),'text':'Not\x20sent:\x20the\x20user\x20declined\x20in\x20the\x20confirmation\x20prompt.'}]};}try{const _0x22904e=await a0_0x330e7b[_0x296dde(0xf5)]((MORPH_API_URL||_0x296dde(0xf1))+_0x296dde(0xc9),{'kind':_0x355e1a[_0x296dde(0x137)],'title':_0x355e1a[_0x296dde(0xf4)],'body':_0x355e1a[_0x296dde(0xc8)],'model':_0x355e1a[_0x296dde(0x12f)],'completionId':_0x355e1a['completion_id'],'agent':server[_0x296dde(0xf9)]()?.[_0x296dde(0xd7)],'initiatedBy':_0x355e1a[_0x296dde(0x163)]},{'headers':{'Authorization':_0x296dde(0x14a)+MORPH_API_KEY},'timeout':0x4e20}),_0x135906=_0x22904e[_0x296dde(0xc0)],_0x1bc0f1=_0x135906['duplicate']?_0x296dde(0x124):'Sent\x20to\x20the\x20Morph\x20team.\x20Feedback\x20id:\x20'+_0x135906[_0x296dde(0x1f2)];return{'content':[{'type':'text','text':_0x1bc0f1}]};}catch(_0x339641){const _0x523c42=a0_0x330e7b[_0x296dde(0x19b)](_0x339641)?_0x339641[_0x296dde(0x1a6)]?.[_0x296dde(0x132)]:undefined,_0x18b58d=a0_0x330e7b[_0x296dde(0x19b)](_0x339641)?_0x339641[_0x296dde(0x1a6)]?.['data']?.[_0x296dde(0x160)]:undefined,_0x2fbafe=_0x18b58d??(_0x339641 instanceof Error?_0x339641[_0x296dde(0xce)]:String(_0x339641));return{'content':[{'type':'text','text':'Feedback\x20not\x20sent'+(_0x523c42?'\x20('+_0x523c42+')':'')+':\x20'+_0x2fbafe}],'isError':!![]};}}default:throw new Error(_0x296dde(0x167)+_0x502d7d);}}catch(_0x2c5619){const _0x213f2e=_0x2c5619 instanceof Error?_0x2c5619[_0x296dde(0xce)]:String(_0x2c5619);return reportMorphError({'error_message':_0x213f2e,'error_type':_0x2c5619 instanceof Error?_0x2c5619[_0x296dde(0x1ae)]['name']:_0x296dde(0x1d4),'context':{'tool':_0x502d7d,'arguments':_0x24969f?JSON['stringify'](_0x24969f)[_0x296dde(0x213)](0x0,0x1f4):undefined,'mcp_server_version':_0x296dde(0x190)},'stack_trace':_0x2c5619 instanceof Error?_0x2c5619['stack']:undefined,'source':_0x296dde(0x106)})['catch'](()=>{}),{'content':[{'type':_0x296dde(0xfd),'text':_0x296dde(0x144)+_0x213f2e}],'isError':!![]};}}),server[a0_0x5f1a86(0x149)](ListPromptsRequestSchema,async()=>({'prompts':DISABLED_TOOLS[a0_0x5f1a86(0x1ac)](TOOL_NAMES['SUBMIT_FEEDBACK'])||!MORPH_API_KEY?[]:[{'name':FEEDBACK_PROMPT_NAME,'title':a0_0x5f1a86(0x11e),'description':'Draft\x20feedback\x20for\x20the\x20Morph\x20team\x20from\x20this\x20conversation,\x20review\x20it,\x20and\x20send\x20it.','arguments':[{'name':'about','description':a0_0x5f1a86(0x168),'required':![]}]}]})),server[a0_0x5f1a86(0x149)](GetPromptRequestSchema,async _0x533d12=>{const _0xf69825=a0_0x5f1a86;if(_0x533d12[_0xf69825(0x164)]['name']!==FEEDBACK_PROMPT_NAME)throw new Error(_0xf69825(0x129)+_0x533d12['params'][_0xf69825(0xd7)]);return{'description':_0xf69825(0x11e),'messages':[{'role':_0xf69825(0x1b2),'content':{'type':_0xf69825(0xfd),'text':feedbackPromptText(_0x533d12[_0xf69825(0x164)]['arguments']?.[_0xf69825(0x19f)])}}]};});async function updateAllowedDirectoriesFromRoots(_0x1eedee){const _0x430bbf=a0_0x5f1a86,_0x30e952=await getValidRootDirectories(_0x1eedee);if(_0x30e952['length']>0x0)allowedDirectories=[..._0x30e952],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x30e952[_0x430bbf(0x204)]+_0x430bbf(0xc7));else{logMcpStderr(_0x430bbf(0xe0));if(ENABLE_WORKSPACE_MODE)try{const _0x7d12a=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x7d12a&&(allowedDirectories=[_0x7d12a],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x7d12a));}catch(_0x17af44){logMcpStderr(_0x430bbf(0x1b4)+_0x17af44);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x1beb62=a0_0x5f1a86;try{const _0xab4154=await server[_0x1beb62(0xd2)]();_0xab4154&&_0x1beb62(0x13a)in _0xab4154&&await updateAllowedDirectoriesFromRoots(_0xab4154[_0x1beb62(0x13a)]);}catch(_0x801d64){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x801d64 instanceof Error?_0x801d64[_0x1beb62(0xce)]:String(_0x801d64));}}),server[a0_0x5f1a86(0xbf)]=async()=>{const _0x159572=a0_0x5f1a86,_0x5603ad=server['getClientCapabilities']();if(_0x5603ad?.[_0x159572(0x13a)])try{const _0x534d58=await server[_0x159572(0xd2)]();_0x534d58&&_0x159572(0x13a)in _0x534d58?await updateAllowedDirectoriesFromRoots(_0x534d58[_0x159572(0x13a)]):logMcpStderr(_0x159572(0x1e1));}catch(_0x38cb92){logMcpStderr(_0x159572(0x109),_0x38cb92 instanceof Error?_0x38cb92[_0x159572(0xce)]:String(_0x38cb92));}else{if(allowedDirectories[_0x159572(0x204)]>0x0)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x159572(0x11a));else throw new Error(_0x159572(0x154));}}};async function runServer(){const _0x39864f=a0_0x5f1a86,_0x5b090e=new StdioServerTransport();await server['connect'](_0x5b090e),logMcpStderr(_0x39864f(0x171)),allowedDirectories[_0x39864f(0x204)]===0x0&&logMcpStderr(_0x39864f(0x1c3));}runServer()[a0_0x5f1a86(0x10a)](_0x501d81=>{const _0x5e987c=a0_0x5f1a86;logMcpStderr(_0x5e987c(0x1c9),_0x501d81),process[_0x5e987c(0xea)](0x1);});
package/dist/log-utils.js CHANGED
@@ -1 +1 @@
1
- var a1_0x3062df=a1_0x5bc8;(function(_0x16df18,_0x3defbc){var _0x451d1e=a1_0x5bc8,_0x48ab01=_0x16df18();while(!![]){try{var _0x206cb4=parseInt(_0x451d1e(0x193))/0x1*(-parseInt(_0x451d1e(0x1a5))/0x2)+parseInt(_0x451d1e(0x1a4))/0x3+-parseInt(_0x451d1e(0x198))/0x4*(parseInt(_0x451d1e(0x1a3))/0x5)+parseInt(_0x451d1e(0x1a1))/0x6+parseInt(_0x451d1e(0x19d))/0x7+-parseInt(_0x451d1e(0x192))/0x8*(parseInt(_0x451d1e(0x199))/0x9)+-parseInt(_0x451d1e(0x19f))/0xa*(-parseInt(_0x451d1e(0x19a))/0xb);if(_0x206cb4===_0x3defbc)break;else _0x48ab01['push'](_0x48ab01['shift']());}catch(_0x557988){_0x48ab01['push'](_0x48ab01['shift']());}}}(a1_0x270e,0xcbb8b));function a1_0x270e(){var _0x560143=['338481VziMKL','44OzdOUH','Windows','[os=','298508wrzrpJ','Unknown','5056180BtMSmr','platform','2480598oCLCJn','info','2764495xBcZFt','357903tGnElI','148MwTBVk','map','Linux','56XsfvyQ','5329gqZMoN','darwin','macOS','error','linux','8vBuCpB'];a1_0x270e=function(){return _0x560143;};return a1_0x270e();}import a1_0x19e75e from'os';import{logger}from'./logger.js';function a1_0x5bc8(_0x2819c0,_0x1ca3c4){_0x2819c0=_0x2819c0-0x190;var _0x270ee1=a1_0x270e();var _0x5bc879=_0x270ee1[_0x2819c0];return _0x5bc879;}export function getOperatingSystemType(_0x170b77=a1_0x19e75e[a1_0x3062df(0x1a0)]()){var _0x575b78=a1_0x3062df;switch(_0x170b77){case _0x575b78(0x194):return _0x575b78(0x195);case'win32':return _0x575b78(0x19b);case _0x575b78(0x197):return _0x575b78(0x191);default:return _0x575b78(0x19e);}}export function formatMcpLogMessage(_0x237551,_0x1f2c58=a1_0x19e75e['platform']()){var _0x14b91f=a1_0x3062df;return _0x14b91f(0x19c)+getOperatingSystemType(_0x1f2c58)+']\x20'+_0x237551;}export function logMcpStderr(_0x236161,..._0x245089){var _0x371367=a1_0x3062df;console[_0x371367(0x196)](formatMcpLogMessage(_0x236161),..._0x245089),logger[_0x371367(0x1a2)]('MCP',_0x236161,_0x245089['length']?{'args':_0x245089[_0x371367(0x190)](_0xed0a7d=>String(_0xed0a7d))}:undefined);}
1
+ var a1_0x2f1dec=a1_0x21c5;function a1_0x21c5(_0x1ec487,_0x2de918){_0x1ec487=_0x1ec487-0x160;var _0x90d852=a1_0x90d8();var _0x21c5ad=_0x90d852[_0x1ec487];return _0x21c5ad;}function a1_0x90d8(){var _0x11a977=['info','win32','linux','115230UsYmOn','macOS','10dlMTAu','476OhCWJO','8UPDDSb','platform','1873NcNfJY','length','4115426RdNoMv','Unknown','776997PCUldr','1733170zvHXGt','9406968aHheex','5591778swxlhF','error','Linux'];a1_0x90d8=function(){return _0x11a977;};return a1_0x90d8();}(function(_0x4ca710,_0x50d121){var _0x1f7bdd=a1_0x21c5,_0x1b3883=_0x4ca710();while(!![]){try{var _0xee5e48=-parseInt(_0x1f7bdd(0x163))/0x1*(-parseInt(_0x1f7bdd(0x160))/0x2)+-parseInt(_0x1f7bdd(0x170))/0x3+-parseInt(_0x1f7bdd(0x161))/0x4*(-parseInt(_0x1f7bdd(0x168))/0x5)+-parseInt(_0x1f7bdd(0x16a))/0x6+-parseInt(_0x1f7bdd(0x165))/0x7+parseInt(_0x1f7bdd(0x169))/0x8+parseInt(_0x1f7bdd(0x167))/0x9*(-parseInt(_0x1f7bdd(0x172))/0xa);if(_0xee5e48===_0x50d121)break;else _0x1b3883['push'](_0x1b3883['shift']());}catch(_0x4ed357){_0x1b3883['push'](_0x1b3883['shift']());}}}(a1_0x90d8,0xa3a51));import a1_0x3aab28 from'os';import{logger}from'./logger.js';export function getOperatingSystemType(_0x573e88=a1_0x3aab28[a1_0x2f1dec(0x162)]()){var _0x217eb9=a1_0x2f1dec;switch(_0x573e88){case'darwin':return _0x217eb9(0x171);case _0x217eb9(0x16e):return'Windows';case _0x217eb9(0x16f):return _0x217eb9(0x16c);default:return _0x217eb9(0x166);}}export function formatMcpLogMessage(_0x1f9cdb,_0x4fc45c=a1_0x3aab28[a1_0x2f1dec(0x162)]()){return'[os='+getOperatingSystemType(_0x4fc45c)+']\x20'+_0x1f9cdb;}export function logMcpStderr(_0x1b06c9,..._0x5777b6){var _0x10d3a8=a1_0x2f1dec;console[_0x10d3a8(0x16b)](formatMcpLogMessage(_0x1b06c9),..._0x5777b6),logger[_0x10d3a8(0x16d)]('MCP',_0x1b06c9,_0x5777b6[_0x10d3a8(0x164)]?{'args':_0x5777b6['map'](_0x5dda5e=>String(_0x5dda5e))}:undefined);}
package/dist/logger.js CHANGED
@@ -1 +1 @@
1
- function a2_0x491f(){const _0x1172b3=['enabled','fileStream','1018tmvtMr','info',']\x20[','159272OYuzNR','697338ZHecQs','3042990hJCiPB','warn','stringify','debug','env','toUpperCase','11963jBEssm','840ByySmF','993096VOtMsm','MORPH_DEBUG','797088GtysWv','MORPH_LOG_FILE','10oQwquy','error','isEnabled','_log'];a2_0x491f=function(){return _0x1172b3;};return a2_0x491f();}const a2_0xafdc6=a2_0x4f65;(function(_0x5d2747,_0x302fbc){const _0x5377ae=a2_0x4f65,_0x2cc59f=_0x5d2747();while(!![]){try{const _0x208a5c=parseInt(_0x5377ae(0x13e))/0x1+parseInt(_0x5377ae(0x13b))/0x2+-parseInt(_0x5377ae(0x133))/0x3+parseInt(_0x5377ae(0x148))/0x4+parseInt(_0x5377ae(0x135))/0x5*(parseInt(_0x5377ae(0x13f))/0x6)+-parseInt(_0x5377ae(0x146))/0x7*(-parseInt(_0x5377ae(0x147))/0x8)+-parseInt(_0x5377ae(0x140))/0x9;if(_0x208a5c===_0x302fbc)break;else _0x2cc59f['push'](_0x2cc59f['shift']());}catch(_0xc763e4){_0x2cc59f['push'](_0x2cc59f['shift']());}}}(a2_0x491f,0x34c4c));import{createWriteStream}from'fs';class MorphLogger{['enabled'];[a2_0xafdc6(0x13a)];constructor(){const _0x5e9773=a2_0xafdc6;this[_0x5e9773(0x139)]=process[_0x5e9773(0x144)][_0x5e9773(0x132)]==='1'||!!process[_0x5e9773(0x144)][_0x5e9773(0x134)];const _0x3b3624=process[_0x5e9773(0x144)][_0x5e9773(0x134)];this['fileStream']=_0x3b3624?createWriteStream(_0x3b3624,{'flags':'a'}):null;}['debug'](_0x40e0c4,_0x39aa2e,_0x530237){const _0x1e9c10=a2_0xafdc6;this[_0x1e9c10(0x138)](_0x1e9c10(0x143),_0x40e0c4,_0x39aa2e,_0x530237);}[a2_0xafdc6(0x13c)](_0x4a1a15,_0x446677,_0x2b5fb3){const _0x5a2c94=a2_0xafdc6;this[_0x5a2c94(0x138)](_0x5a2c94(0x13c),_0x4a1a15,_0x446677,_0x2b5fb3);}['warn'](_0x3120fb,_0x1eef5b,_0xadeef9){const _0xdeab33=a2_0xafdc6;this[_0xdeab33(0x138)](_0xdeab33(0x141),_0x3120fb,_0x1eef5b,_0xadeef9);}[a2_0xafdc6(0x136)](_0x25ed93,_0x24f6a2,_0x7c0915){const _0x49ff5c=a2_0xafdc6;this[_0x49ff5c(0x138)](_0x49ff5c(0x136),_0x25ed93,_0x24f6a2,_0x7c0915);}['enable'](){const _0x443003=a2_0xafdc6;this[_0x443003(0x139)]=!![];}get[a2_0xafdc6(0x137)](){const _0x38d148=a2_0xafdc6;return this[_0x38d148(0x139)];}[a2_0xafdc6(0x138)](_0x4d8045,_0x1bf12e,_0x293d6a,_0x3d74b6){const _0x34daa6=a2_0xafdc6;if(_0x4d8045!==_0x34daa6(0x136)&&!this[_0x34daa6(0x139)])return;const _0x42937c=new Date()['toISOString'](),_0x8409b2='['+_0x42937c+_0x34daa6(0x13d)+_0x4d8045[_0x34daa6(0x145)]()+_0x34daa6(0x13d)+_0x1bf12e+']';console[_0x34daa6(0x136)](_0x3d74b6?_0x8409b2+'\x20'+_0x293d6a+'\x20'+JSON[_0x34daa6(0x142)](_0x3d74b6):_0x8409b2+'\x20'+_0x293d6a),this['fileStream']?.['write'](JSON[_0x34daa6(0x142)]({'ts':_0x42937c,'level':_0x4d8045,'component':_0x1bf12e,'msg':_0x293d6a,..._0x3d74b6&&{'data':_0x3d74b6}})+'\x0a');}}function a2_0x4f65(_0x2fae19,_0x3efc80){_0x2fae19=_0x2fae19-0x132;const _0x491fea=a2_0x491f();let _0x4f65ce=_0x491fea[_0x2fae19];return _0x4f65ce;}export const logger=new MorphLogger();
1
+ const a2_0x36bd6b=a2_0x4525;function a2_0x4525(_0x5b81f6,_0x8e81af){_0x5b81f6=_0x5b81f6-0x1b0;const _0x23eec5=a2_0x23ee();let _0x452575=_0x23eec5[_0x5b81f6];return _0x452575;}(function(_0x5acb4e,_0x566f76){const _0x18de4c=a2_0x4525,_0x4206e8=_0x5acb4e();while(!![]){try{const _0x252707=parseInt(_0x18de4c(0x1bd))/0x1*(-parseInt(_0x18de4c(0x1c8))/0x2)+-parseInt(_0x18de4c(0x1b8))/0x3*(-parseInt(_0x18de4c(0x1b7))/0x4)+-parseInt(_0x18de4c(0x1b6))/0x5*(parseInt(_0x18de4c(0x1ca))/0x6)+-parseInt(_0x18de4c(0x1b2))/0x7*(-parseInt(_0x18de4c(0x1c4))/0x8)+parseInt(_0x18de4c(0x1bf))/0x9*(parseInt(_0x18de4c(0x1be))/0xa)+-parseInt(_0x18de4c(0x1c7))/0xb*(-parseInt(_0x18de4c(0x1cb))/0xc)+-parseInt(_0x18de4c(0x1bc))/0xd;if(_0x252707===_0x566f76)break;else _0x4206e8['push'](_0x4206e8['shift']());}catch(_0x4bc12e){_0x4206e8['push'](_0x4206e8['shift']());}}}(a2_0x23ee,0xb13db));import{createWriteStream}from'fs';function a2_0x23ee(){const _0x573191=['MORPH_LOG_FILE','_log','enable','5NjLdeq','956412PjpVAT','9SqCyor','toISOString','enabled','env','12757147wYxkEn','50171IWKqRg','3520200mAoJAO','36QUdZGN','isEnabled','stringify','write','fileStream','5370776Nmxfel','error','toUpperCase','11110gnLCcX','22upKVZo',']\x20[','8570262fYTFEg','10584vHMfvv','info','debug','7pSqkvw'];a2_0x23ee=function(){return _0x573191;};return a2_0x23ee();}class MorphLogger{[a2_0x36bd6b(0x1ba)];[a2_0x36bd6b(0x1c3)];constructor(){const _0x1002f8=a2_0x36bd6b;this[_0x1002f8(0x1ba)]=process['env']['MORPH_DEBUG']==='1'||!!process['env'][_0x1002f8(0x1b3)];const _0x2f2eb9=process[_0x1002f8(0x1bb)][_0x1002f8(0x1b3)];this[_0x1002f8(0x1c3)]=_0x2f2eb9?createWriteStream(_0x2f2eb9,{'flags':'a'}):null;}['debug'](_0x5f0f13,_0x2c27bc,_0x62c9c3){const _0x4627cd=a2_0x36bd6b;this['_log'](_0x4627cd(0x1b1),_0x5f0f13,_0x2c27bc,_0x62c9c3);}[a2_0x36bd6b(0x1b0)](_0x21c364,_0x400482,_0x17b0c6){const _0x336f75=a2_0x36bd6b;this[_0x336f75(0x1b4)](_0x336f75(0x1b0),_0x21c364,_0x400482,_0x17b0c6);}['warn'](_0xd97075,_0x2cb20c,_0x3a6973){const _0x1f74a0=a2_0x36bd6b;this[_0x1f74a0(0x1b4)]('warn',_0xd97075,_0x2cb20c,_0x3a6973);}[a2_0x36bd6b(0x1c5)](_0x17a711,_0x57d123,_0x5b9ab7){const _0xedf5f4=a2_0x36bd6b;this['_log'](_0xedf5f4(0x1c5),_0x17a711,_0x57d123,_0x5b9ab7);}[a2_0x36bd6b(0x1b5)](){this['enabled']=!![];}get[a2_0x36bd6b(0x1c0)](){const _0x2e0b72=a2_0x36bd6b;return this[_0x2e0b72(0x1ba)];}[a2_0x36bd6b(0x1b4)](_0x2de84b,_0x2d05b6,_0x1896aa,_0x5d6206){const _0x54cab3=a2_0x36bd6b;if(_0x2de84b!==_0x54cab3(0x1c5)&&!this[_0x54cab3(0x1ba)])return;const _0x10846b=new Date()[_0x54cab3(0x1b9)](),_0x4951a9='['+_0x10846b+']\x20['+_0x2de84b[_0x54cab3(0x1c6)]()+_0x54cab3(0x1c9)+_0x2d05b6+']';console[_0x54cab3(0x1c5)](_0x5d6206?_0x4951a9+'\x20'+_0x1896aa+'\x20'+JSON[_0x54cab3(0x1c1)](_0x5d6206):_0x4951a9+'\x20'+_0x1896aa),this['fileStream']?.[_0x54cab3(0x1c2)](JSON['stringify']({'ts':_0x10846b,'level':_0x2de84b,'component':_0x2d05b6,'msg':_0x1896aa,..._0x5d6206&&{'data':_0x5d6206}})+'\x0a');}}export const logger=new MorphLogger();
@@ -1 +1 @@
1
- function a3_0x5431(_0xdd19a,_0x55f1b0){_0xdd19a=_0xdd19a-0xe0;const _0x3a56cc=a3_0x3a56();let _0x5431ab=_0x3a56cc[_0xdd19a];return _0x5431ab;}(function(_0x612587,_0x9f795f){const _0x301c13=a3_0x5431,_0x40b3e3=_0x612587();while(!![]){try{const _0x3965fa=parseInt(_0x301c13(0xf0))/0x1*(-parseInt(_0x301c13(0xe9))/0x2)+-parseInt(_0x301c13(0xef))/0x3+-parseInt(_0x301c13(0xf1))/0x4+-parseInt(_0x301c13(0xe4))/0x5+parseInt(_0x301c13(0xf3))/0x6*(parseInt(_0x301c13(0xed))/0x7)+-parseInt(_0x301c13(0xeb))/0x8*(parseInt(_0x301c13(0xea))/0x9)+parseInt(_0x301c13(0xe8))/0xa;if(_0x3965fa===_0x9f795f)break;else _0x40b3e3['push'](_0x40b3e3['shift']());}catch(_0x75c64c){_0x40b3e3['push'](_0x40b3e3['shift']());}}}(a3_0x3a56,0xabdf6));import a3_0x3b5d97 from'path';import a3_0xf5a8fb from'os';export function convertToWindowsPath(_0x2649e6){const _0x2b67d8=a3_0x5431;if(_0x2649e6['startsWith']('/mnt/')){const _0x392ac7=_0x2649e6[_0x2b67d8(0xe5)](0x5)['toUpperCase'](),_0x5c7312=_0x2649e6[_0x2b67d8(0xf5)](0x6)['replace'](/\//g,'\x5c');return _0x392ac7+':'+_0x5c7312;}if(_0x2649e6[_0x2b67d8(0xe0)](/^\/[a-zA-Z]\//)){const _0x2eb592=_0x2649e6[_0x2b67d8(0xe5)](0x1)[_0x2b67d8(0xe3)](),_0x5ed482=_0x2649e6['slice'](0x2)['replace'](/\//g,'\x5c');return _0x2eb592+':'+_0x5ed482;}if(_0x2649e6[_0x2b67d8(0xe0)](/^[a-zA-Z]:/))return _0x2649e6[_0x2b67d8(0xee)](/\//g,'\x5c');return _0x2649e6;}export function normalizePath(_0x22bba4){const _0x2ef8d7=a3_0x5431;_0x22bba4=_0x22bba4[_0x2ef8d7(0xf4)]()[_0x2ef8d7(0xee)](/^["']|["']$/g,'');const _0x391516=_0x22bba4[_0x2ef8d7(0xf2)]('/')&&!_0x22bba4[_0x2ef8d7(0xe0)](/^\/mnt\/[a-z]\//i)&&!_0x22bba4['match'](/^\/[a-zA-Z]\//);if(_0x391516)return _0x22bba4[_0x2ef8d7(0xee)](/\/+/g,'/')[_0x2ef8d7(0xee)](/\/+$/,'');_0x22bba4=convertToWindowsPath(_0x22bba4);if(_0x22bba4[_0x2ef8d7(0xf2)]('\x5c\x5c')){let _0x1801f4=_0x22bba4;_0x1801f4=_0x1801f4['replace'](/^\\{2,}/,'\x5c\x5c');const _0x30ac8a=_0x1801f4[_0x2ef8d7(0xe7)](0x2)[_0x2ef8d7(0xee)](/\\\\/g,'\x5c');_0x22bba4='\x5c\x5c'+_0x30ac8a;}else _0x22bba4=_0x22bba4[_0x2ef8d7(0xee)](/\\\\/g,'\x5c');let _0x1e708d=a3_0x3b5d97[_0x2ef8d7(0xe6)](_0x22bba4);_0x22bba4[_0x2ef8d7(0xf2)]('\x5c\x5c')&&!_0x1e708d['startsWith']('\x5c\x5c')&&(_0x1e708d='\x5c'+_0x1e708d);if(_0x1e708d[_0x2ef8d7(0xe0)](/^[a-zA-Z]:/)){let _0x5e2437=_0x1e708d[_0x2ef8d7(0xee)](/\//g,'\x5c');return/^[a-z]:/[_0x2ef8d7(0xe2)](_0x5e2437)&&(_0x5e2437=_0x5e2437[_0x2ef8d7(0xe5)](0x0)[_0x2ef8d7(0xe3)]()+_0x5e2437[_0x2ef8d7(0xf5)](0x1)),_0x5e2437;}return _0x1e708d['replace'](/\//g,'\x5c');}export function expandHome(_0x5aef42){const _0x429440=a3_0x5431;if(_0x5aef42['startsWith']('~/')||_0x5aef42==='~')return a3_0x3b5d97[_0x429440(0xec)](a3_0xf5a8fb[_0x429440(0xe1)](),_0x5aef42[_0x429440(0xf5)](0x1));return _0x5aef42;}function a3_0x3a56(){const _0x14925a=['4473528GNruwh','join','49lBjrCZ','replace','2633511lmScyn','1vQRDpq','4676924euzPEr','startsWith','117570BHcoli','trim','slice','match','homedir','test','toUpperCase','1313165dxlvVH','charAt','normalize','substring','39578080xQPmlg','1044182fvLGaV','9ItoJee'];a3_0x3a56=function(){return _0x14925a;};return a3_0x3a56();}
1
+ (function(_0x2773a0,_0x38362f){const _0x1ecffd=a3_0x55b3,_0x56c936=_0x2773a0();while(!![]){try{const _0x282ded=-parseInt(_0x1ecffd(0x112))/0x1+parseInt(_0x1ecffd(0x113))/0x2+-parseInt(_0x1ecffd(0x111))/0x3+-parseInt(_0x1ecffd(0x11a))/0x4*(-parseInt(_0x1ecffd(0x110))/0x5)+-parseInt(_0x1ecffd(0x119))/0x6*(parseInt(_0x1ecffd(0x117))/0x7)+-parseInt(_0x1ecffd(0x115))/0x8*(parseInt(_0x1ecffd(0x10e))/0x9)+parseInt(_0x1ecffd(0x10f))/0xa;if(_0x282ded===_0x38362f)break;else _0x56c936['push'](_0x56c936['shift']());}catch(_0xbd704a){_0x56c936['push'](_0x56c936['shift']());}}}(a3_0x47ee,0x19f09));function a3_0x47ee(){const _0x310536=['581367XGkakz','184328ediLnv','423312DDLSmz','startsWith','450904WfzGXY','replace','29757YYaBBs','normalize','6YMXNvg','281012VuLtAx','/mnt/','join','slice','homedir','substring','charAt','match','toUpperCase','test','9xKviXq','1928180McjKYG','10cyollf'];a3_0x47ee=function(){return _0x310536;};return a3_0x47ee();}import a3_0xd7892f from'path';import a3_0x538a4a from'os';export function convertToWindowsPath(_0x359daf){const _0x5d4f6c=a3_0x55b3;if(_0x359daf['startsWith'](_0x5d4f6c(0x11b))){const _0x6decd3=_0x359daf[_0x5d4f6c(0x120)](0x5)['toUpperCase'](),_0x21775c=_0x359daf[_0x5d4f6c(0x11d)](0x6)[_0x5d4f6c(0x116)](/\//g,'\x5c');return _0x6decd3+':'+_0x21775c;}if(_0x359daf['match'](/^\/[a-zA-Z]\//)){const _0x1ece78=_0x359daf[_0x5d4f6c(0x120)](0x1)['toUpperCase'](),_0x4acc7b=_0x359daf[_0x5d4f6c(0x11d)](0x2)[_0x5d4f6c(0x116)](/\//g,'\x5c');return _0x1ece78+':'+_0x4acc7b;}if(_0x359daf[_0x5d4f6c(0x121)](/^[a-zA-Z]:/))return _0x359daf[_0x5d4f6c(0x116)](/\//g,'\x5c');return _0x359daf;}function a3_0x55b3(_0x299e5f,_0x164083){_0x299e5f=_0x299e5f-0x10d;const _0x47ee7f=a3_0x47ee();let _0x55b3ac=_0x47ee7f[_0x299e5f];return _0x55b3ac;}export function normalizePath(_0x5e5295){const _0x36f92b=a3_0x55b3;_0x5e5295=_0x5e5295['trim']()[_0x36f92b(0x116)](/^["']|["']$/g,'');const _0x48e529=_0x5e5295['startsWith']('/')&&!_0x5e5295[_0x36f92b(0x121)](/^\/mnt\/[a-z]\//i)&&!_0x5e5295[_0x36f92b(0x121)](/^\/[a-zA-Z]\//);if(_0x48e529)return _0x5e5295[_0x36f92b(0x116)](/\/+/g,'/')[_0x36f92b(0x116)](/\/+$/,'');_0x5e5295=convertToWindowsPath(_0x5e5295);if(_0x5e5295[_0x36f92b(0x114)]('\x5c\x5c')){let _0xf2448c=_0x5e5295;_0xf2448c=_0xf2448c[_0x36f92b(0x116)](/^\\{2,}/,'\x5c\x5c');const _0x39b27a=_0xf2448c[_0x36f92b(0x11f)](0x2)[_0x36f92b(0x116)](/\\\\/g,'\x5c');_0x5e5295='\x5c\x5c'+_0x39b27a;}else _0x5e5295=_0x5e5295['replace'](/\\\\/g,'\x5c');let _0x2ad8f0=a3_0xd7892f[_0x36f92b(0x118)](_0x5e5295);_0x5e5295[_0x36f92b(0x114)]('\x5c\x5c')&&!_0x2ad8f0['startsWith']('\x5c\x5c')&&(_0x2ad8f0='\x5c'+_0x2ad8f0);if(_0x2ad8f0[_0x36f92b(0x121)](/^[a-zA-Z]:/)){let _0x4113c0=_0x2ad8f0[_0x36f92b(0x116)](/\//g,'\x5c');return/^[a-z]:/[_0x36f92b(0x10d)](_0x4113c0)&&(_0x4113c0=_0x4113c0[_0x36f92b(0x120)](0x0)[_0x36f92b(0x122)]()+_0x4113c0[_0x36f92b(0x11d)](0x1)),_0x4113c0;}return _0x2ad8f0['replace'](/\//g,'\x5c');}export function expandHome(_0x3382d2){const _0x2fad56=a3_0x55b3;if(_0x3382d2[_0x2fad56(0x114)]('~/')||_0x3382d2==='~')return a3_0xd7892f[_0x2fad56(0x11c)](a3_0x538a4a[_0x2fad56(0x11e)](),_0x3382d2[_0x2fad56(0x11d)](0x1));return _0x3382d2;}
@@ -1 +1 @@
1
- (function(_0x4a1a22,_0xe1afa3){const _0x32e5fa=a4_0x2b7b,_0x394fa6=_0x4a1a22();while(!![]){try{const _0x3af195=parseInt(_0x32e5fa(0x126))/0x1*(-parseInt(_0x32e5fa(0x128))/0x2)+parseInt(_0x32e5fa(0x122))/0x3*(parseInt(_0x32e5fa(0x120))/0x4)+-parseInt(_0x32e5fa(0x12c))/0x5*(parseInt(_0x32e5fa(0x11e))/0x6)+parseInt(_0x32e5fa(0x12f))/0x7*(parseInt(_0x32e5fa(0x12e))/0x8)+parseInt(_0x32e5fa(0x11c))/0x9*(parseInt(_0x32e5fa(0x129))/0xa)+-parseInt(_0x32e5fa(0x130))/0xb+-parseInt(_0x32e5fa(0x124))/0xc*(-parseInt(_0x32e5fa(0x12d))/0xd);if(_0x3af195===_0xe1afa3)break;else _0x394fa6['push'](_0x394fa6['shift']());}catch(_0x2b8383){_0x394fa6['push'](_0x394fa6['shift']());}}}(a4_0x3083,0xba957));function a4_0x2b7b(_0xce050b,_0x5c1585){_0xce050b=_0xce050b-0x11c;const _0x30832a=a4_0x3083();let _0x2b7b95=_0x30832a[_0xce050b];return _0x2b7b95;}import a4_0x7fd112 from'path';export function isPathWithinAllowedDirectories(_0x3a4fb5,_0x4fd949){const _0x3b6216=a4_0x2b7b;if(typeof _0x3a4fb5!==_0x3b6216(0x12a)||!Array[_0x3b6216(0x123)](_0x4fd949))return![];if(!_0x3a4fb5||_0x4fd949[_0x3b6216(0x12b)]===0x0)return![];if(_0x3a4fb5[_0x3b6216(0x133)]('\x00'))return![];let _0x1d8de1;try{_0x1d8de1=a4_0x7fd112['resolve'](a4_0x7fd112[_0x3b6216(0x121)](_0x3a4fb5));}catch{return![];}if(!a4_0x7fd112[_0x3b6216(0x127)](_0x1d8de1))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x4fd949[_0x3b6216(0x11f)](_0x223c1f=>{const _0xb670d3=_0x3b6216;if(typeof _0x223c1f!==_0xb670d3(0x12a)||!_0x223c1f)return![];if(_0x223c1f[_0xb670d3(0x133)]('\x00'))return![];let _0x14502b;try{_0x14502b=a4_0x7fd112[_0xb670d3(0x11d)](a4_0x7fd112[_0xb670d3(0x121)](_0x223c1f));}catch{return![];}if(!a4_0x7fd112['isAbsolute'](_0x14502b))throw new Error(_0xb670d3(0x125));if(_0x1d8de1===_0x14502b)return!![];if(_0x14502b===a4_0x7fd112[_0xb670d3(0x132)])return _0x1d8de1['startsWith'](a4_0x7fd112[_0xb670d3(0x132)]);return _0x1d8de1[_0xb670d3(0x131)](_0x14502b+a4_0x7fd112['sep']);});}function a4_0x3083(){const _0x5ca535=['621941ggiHWK','isAbsolute','2ndHKkw','2721450PiDKqD','string','length','165aSBXRn','143JACVEa','4335352KuUHrj','7eVqUgc','15044502zipIxM','startsWith','sep','includes','36NLiVrJ','resolve','144714jIblyJ','some','217204MIMJRZ','normalize','57VVIqbE','isArray','968268GuckFh','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization'];a4_0x3083=function(){return _0x5ca535;};return a4_0x3083();}
1
+ (function(_0x1292d0,_0x138e48){const _0x29cb3b=a4_0x2362,_0x342145=_0x1292d0();while(!![]){try{const _0x1252e4=-parseInt(_0x29cb3b(0x203))/0x1+parseInt(_0x29cb3b(0x1ff))/0x2+-parseInt(_0x29cb3b(0x201))/0x3*(-parseInt(_0x29cb3b(0x1fb))/0x4)+-parseInt(_0x29cb3b(0x205))/0x5*(parseInt(_0x29cb3b(0x202))/0x6)+-parseInt(_0x29cb3b(0x1f5))/0x7*(-parseInt(_0x29cb3b(0x206))/0x8)+parseInt(_0x29cb3b(0x204))/0x9*(parseInt(_0x29cb3b(0x1f9))/0xa)+-parseInt(_0x29cb3b(0x1fa))/0xb;if(_0x1252e4===_0x138e48)break;else _0x342145['push'](_0x342145['shift']());}catch(_0x17fe80){_0x342145['push'](_0x342145['shift']());}}}(a4_0x1bea,0x48815));import a4_0xa891c4 from'path';function a4_0x1bea(){const _0x1f1a6e=['271044lwCqhc','startsWith','3rRjCif','6YCwPEw','365681SrPzvj','8892WCXvUQ','450955ggRmuC','176lLQuTf','isAbsolute','length','string','162127NjwxGc','some','sep','includes','3190KekeaP','5490606pnlRZo','1167052MPyVPR','resolve','Path\x20must\x20be\x20absolute\x20after\x20normalization','normalize'];a4_0x1bea=function(){return _0x1f1a6e;};return a4_0x1bea();}function a4_0x2362(_0x11ef6e,_0x17ed31){_0x11ef6e=_0x11ef6e-0x1f4;const _0x1beaf7=a4_0x1bea();let _0x2362cb=_0x1beaf7[_0x11ef6e];return _0x2362cb;}export function isPathWithinAllowedDirectories(_0x26d18b,_0x71bfeb){const _0x4c12c7=a4_0x2362;if(typeof _0x26d18b!=='string'||!Array['isArray'](_0x71bfeb))return![];if(!_0x26d18b||_0x71bfeb[_0x4c12c7(0x208)]===0x0)return![];if(_0x26d18b['includes']('\x00'))return![];let _0x3e1f00;try{_0x3e1f00=a4_0xa891c4['resolve'](a4_0xa891c4[_0x4c12c7(0x1fe)](_0x26d18b));}catch{return![];}if(!a4_0xa891c4[_0x4c12c7(0x207)](_0x3e1f00))throw new Error(_0x4c12c7(0x1fd));return _0x71bfeb[_0x4c12c7(0x1f6)](_0x48a705=>{const _0x368d8f=_0x4c12c7;if(typeof _0x48a705!==_0x368d8f(0x1f4)||!_0x48a705)return![];if(_0x48a705[_0x368d8f(0x1f8)]('\x00'))return![];let _0x45019b;try{_0x45019b=a4_0xa891c4[_0x368d8f(0x1fc)](a4_0xa891c4[_0x368d8f(0x1fe)](_0x48a705));}catch{return![];}if(!a4_0xa891c4[_0x368d8f(0x207)](_0x45019b))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0x3e1f00===_0x45019b)return!![];if(_0x45019b===a4_0xa891c4['sep'])return _0x3e1f00[_0x368d8f(0x200)](a4_0xa891c4[_0x368d8f(0x1f7)]);return _0x3e1f00[_0x368d8f(0x200)](_0x45019b+a4_0xa891c4['sep']);});}
@@ -1 +1 @@
1
- function a5_0x48fa(_0x1fb3e8,_0x3143a2){_0x1fb3e8=_0x1fb3e8-0x9a;const _0x61fda9=a5_0x61fd();let _0x48fa3f=_0x61fda9[_0x1fb3e8];return _0x48fa3f;}(function(_0x325da5,_0x5484ed){const _0x128f9d=a5_0x48fa,_0x3f834c=_0x325da5();while(!![]){try{const _0x1953c7=-parseInt(_0x128f9d(0xa2))/0x1*(-parseInt(_0x128f9d(0xae))/0x2)+parseInt(_0x128f9d(0xab))/0x3+-parseInt(_0x128f9d(0xb0))/0x4+parseInt(_0x128f9d(0xa3))/0x5+-parseInt(_0x128f9d(0xa7))/0x6*(-parseInt(_0x128f9d(0xb1))/0x7)+-parseInt(_0x128f9d(0xa0))/0x8*(-parseInt(_0x128f9d(0xa1))/0x9)+-parseInt(_0x128f9d(0xac))/0xa*(parseInt(_0x128f9d(0xaa))/0xb);if(_0x1953c7===_0x5484ed)break;else _0x3f834c['push'](_0x3f834c['shift']());}catch(_0x36fd9e){_0x3f834c['push'](_0x3f834c['shift']());}}}(a5_0x61fd,0x1b89b));import{promises as a5_0x3f64ab}from'fs';import a5_0x1587a9 from'path';import a5_0x2b4291 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x3e3d42){const _0x23feb5=a5_0x48fa;try{const _0x335bb5=_0x3e3d42['startsWith'](_0x23feb5(0x9e))?_0x3e3d42[_0x23feb5(0x9d)](0x7):_0x3e3d42,_0x1148ea=_0x335bb5['startsWith']('~/')||_0x335bb5==='~'?a5_0x1587a9[_0x23feb5(0xa6)](a5_0x2b4291[_0x23feb5(0xa9)](),_0x335bb5[_0x23feb5(0x9d)](0x1)):_0x335bb5,_0x5dd67e=a5_0x1587a9['resolve'](_0x1148ea),_0x7c23aa=await a5_0x3f64ab[_0x23feb5(0x9b)](_0x5dd67e);return normalizePath(_0x7c23aa);}catch{return null;}}function formatDirectoryError(_0x2dd970,_0x59f5ad,_0x108e8e){const _0x451381=a5_0x48fa;if(_0x108e8e)return _0x451381(0xaf)+_0x108e8e+':\x20'+_0x2dd970;const _0x754e00=_0x59f5ad instanceof Error?_0x59f5ad[_0x451381(0x9c)]:String(_0x59f5ad);return _0x451381(0xa4)+_0x2dd970+_0x451381(0xad)+_0x754e00;}export async function getValidRootDirectories(_0x4dd033){const _0x27b825=a5_0x48fa,_0x5146dd=[];for(const _0x3607ac of _0x4dd033){const _0x220390=await parseRootUri(_0x3607ac[_0x27b825(0xb2)]);if(!_0x220390){logMcpStderr(formatDirectoryError(_0x3607ac[_0x27b825(0xb2)],undefined,_0x27b825(0xa8)));continue;}try{const _0x5d0fc4=await a5_0x3f64ab[_0x27b825(0x9a)](_0x220390);_0x5d0fc4[_0x27b825(0xa5)]()?_0x5146dd['push'](_0x220390):logMcpStderr(formatDirectoryError(_0x220390,undefined,_0x27b825(0x9f)));}catch(_0x11d850){logMcpStderr(formatDirectoryError(_0x220390,_0x11d850));}}return _0x5146dd;}function a5_0x61fd(){const _0x5c1ab1=['stat','realpath','message','slice','file://','non-directory\x20root','8IsexPa','1653885TKBPIT','9829UEtTNB','826860aRHHOv','Skipping\x20invalid\x20directory:\x20','isDirectory','join','1902SggPkr','invalid\x20path\x20or\x20inaccessible','homedir','1705rYdfSQ','372855RziXUq','24770KqYoxZ','\x20due\x20to\x20error:\x20','2dyQXPY','Skipping\x20','738584TictFc','4375GWLJgy','uri'];a5_0x61fd=function(){return _0x5c1ab1;};return a5_0x61fd();}
1
+ (function(_0x424691,_0x1a6a6e){const _0x3c42cc=a5_0xc05c,_0x196c78=_0x424691();while(!![]){try{const _0x50ec9a=-parseInt(_0x3c42cc(0x71))/0x1*(-parseInt(_0x3c42cc(0x69))/0x2)+parseInt(_0x3c42cc(0x73))/0x3+-parseInt(_0x3c42cc(0x6c))/0x4*(-parseInt(_0x3c42cc(0x6a))/0x5)+parseInt(_0x3c42cc(0x6e))/0x6*(-parseInt(_0x3c42cc(0x67))/0x7)+parseInt(_0x3c42cc(0x75))/0x8*(-parseInt(_0x3c42cc(0x70))/0x9)+parseInt(_0x3c42cc(0x68))/0xa+parseInt(_0x3c42cc(0x6d))/0xb;if(_0x50ec9a===_0x1a6a6e)break;else _0x196c78['push'](_0x196c78['shift']());}catch(_0x53e1f3){_0x196c78['push'](_0x196c78['shift']());}}}(a5_0x485b,0xa369d));import{promises as a5_0xbd5745}from'fs';import a5_0x2ba360 from'path';function a5_0xc05c(_0x5d4901,_0x18a149){_0x5d4901=_0x5d4901-0x66;const _0x485b06=a5_0x485b();let _0xc05c3=_0x485b06[_0x5d4901];return _0xc05c3;}import a5_0x51417b from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x59dedd){const _0x3184fd=a5_0xc05c;try{const _0x599ad6=_0x59dedd['startsWith'](_0x3184fd(0x74))?_0x59dedd[_0x3184fd(0x76)](0x7):_0x59dedd,_0xcdd830=_0x599ad6[_0x3184fd(0x6f)]('~/')||_0x599ad6==='~'?a5_0x2ba360[_0x3184fd(0x7b)](a5_0x51417b[_0x3184fd(0x7c)](),_0x599ad6['slice'](0x1)):_0x599ad6,_0x42af52=a5_0x2ba360['resolve'](_0xcdd830),_0x27fe98=await a5_0xbd5745[_0x3184fd(0x6b)](_0x42af52);return normalizePath(_0x27fe98);}catch{return null;}}function formatDirectoryError(_0x6390d6,_0x3d1092,_0x2ab584){const _0x5769ee=a5_0xc05c;if(_0x2ab584)return'Skipping\x20'+_0x2ab584+':\x20'+_0x6390d6;const _0x4f41f6=_0x3d1092 instanceof Error?_0x3d1092[_0x5769ee(0x72)]:String(_0x3d1092);return _0x5769ee(0x7a)+_0x6390d6+_0x5769ee(0x78)+_0x4f41f6;}export async function getValidRootDirectories(_0x3537b7){const _0x32eff3=a5_0xc05c,_0x180047=[];for(const _0x1f14dc of _0x3537b7){const _0x496b25=await parseRootUri(_0x1f14dc[_0x32eff3(0x66)]);if(!_0x496b25){logMcpStderr(formatDirectoryError(_0x1f14dc[_0x32eff3(0x66)],undefined,_0x32eff3(0x7e)));continue;}try{const _0x3c684b=await a5_0xbd5745[_0x32eff3(0x7d)](_0x496b25);_0x3c684b['isDirectory']()?_0x180047[_0x32eff3(0x77)](_0x496b25):logMcpStderr(formatDirectoryError(_0x496b25,undefined,_0x32eff3(0x79)));}catch(_0xdb495b){logMcpStderr(formatDirectoryError(_0x496b25,_0xdb495b));}}return _0x180047;}function a5_0x485b(){const _0x37a064=['1183GeBwzJ','2563530uJlKNG','4ynVhqS','5ztpLvc','realpath','521636YenShh','7936313ijFzXH','20904EgOdyJ','startsWith','126BnRkOb','140758cPChvQ','message','2994738PrPgeo','file://','645640vvmSdu','slice','push','\x20due\x20to\x20error:\x20','non-directory\x20root','Skipping\x20invalid\x20directory:\x20','join','homedir','stat','invalid\x20path\x20or\x20inaccessible','uri'];a5_0x485b=function(){return _0x37a064;};return a5_0x485b();}
@@ -8,6 +8,7 @@ export declare const TOOL_NAMES: {
8
8
  readonly EDIT_FILE: "edit_file";
9
9
  readonly CODEBASE_SEARCH: "codebase_search";
10
10
  readonly GITHUB_CODEBASE_SEARCH: "github_codebase_search";
11
+ readonly SUBMIT_FEEDBACK: "submit_feedback";
11
12
  };
12
13
  export type ToolName = (typeof TOOL_NAMES)[keyof typeof TOOL_NAMES];
13
14
  export declare const ALL_TOOL_NAMES: readonly ToolName[];
@@ -1 +1 @@
1
- const a6_0x329216=a6_0x2d61;(function(_0x38cd8a,_0x22674d){const _0x3ae3e4=a6_0x2d61,_0x255195=_0x38cd8a();while(!![]){try{const _0x2f66a6=-parseInt(_0x3ae3e4(0x88))/0x1*(-parseInt(_0x3ae3e4(0x83))/0x2)+parseInt(_0x3ae3e4(0x79))/0x3+-parseInt(_0x3ae3e4(0x7d))/0x4+-parseInt(_0x3ae3e4(0x7e))/0x5+-parseInt(_0x3ae3e4(0x7b))/0x6+parseInt(_0x3ae3e4(0x7c))/0x7+parseInt(_0x3ae3e4(0x77))/0x8*(parseInt(_0x3ae3e4(0x82))/0x9);if(_0x2f66a6===_0x22674d)break;else _0x255195['push'](_0x255195['shift']());}catch(_0x5897f1){_0x255195['push'](_0x255195['shift']());}}}(a6_0x2953,0xb9dc6));export const TOOL_NAMES={'EDIT_FILE':a6_0x329216(0x8a),'CODEBASE_SEARCH':a6_0x329216(0x84),'GITHUB_CODEBASE_SEARCH':a6_0x329216(0x78)};export const ALL_TOOL_NAMES=Object[a6_0x329216(0x89)](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);export const LEGACY_TOOL_ALIASES={'warpgrep_codebase_search':TOOL_NAMES[a6_0x329216(0x7a)],'warpgrep_github_search':TOOL_NAMES[a6_0x329216(0x80)]};function parseToolList(_0x2842a3){const _0x5903a9=a6_0x329216;if(!_0x2842a3)return[];return _0x2842a3[_0x5903a9(0x85)](',')[_0x5903a9(0x75)](_0x15b2db=>_0x15b2db['trim']())[_0x5903a9(0x86)](_0x11e4cd=>_0x11e4cd[_0x5903a9(0x87)]>0x0)[_0x5903a9(0x75)](_0x4fb23e=>LEGACY_TOOL_ALIASES[_0x4fb23e]??_0x4fb23e);}function a6_0x2d61(_0x51ec42,_0x2c08c9){_0x51ec42=_0x51ec42-0x75;const _0x2953e1=a6_0x2953();let _0x2d61c3=_0x2953e1[_0x51ec42];return _0x2d61c3;}function a6_0x2953(){const _0x4c1c5a=['codebase_search','split','filter','length','391SxiHzk','values','edit_file','all','toLowerCase','add','map','has','20298584bdMcND','github_codebase_search','2825349xfYqsj','CODEBASE_SEARCH','6878490FSVaEy','5547682UStAtr','6030492DhQkms','5806440IXkhJV','ENABLED_TOOLS','GITHUB_CODEBASE_SEARCH','trim','9usAfsd','1560SMSnuy'];a6_0x2953=function(){return _0x4c1c5a;};return a6_0x2953();}export function resolveToolFilter(_0x49dd2f){const _0x1d693d=a6_0x329216,_0x1c4c8b=_0x49dd2f[_0x1d693d(0x7f)]?.[_0x1d693d(0x81)](),_0x183ea2=_0x1c4c8b&&_0x1c4c8b[_0x1d693d(0x8c)]()!==_0x1d693d(0x8b)?parseToolList(_0x1c4c8b):undefined,_0x6ebb2c=parseToolList(_0x49dd2f['DISABLED_TOOLS']),_0x18bb48=[..._0x183ea2??[],..._0x6ebb2c][_0x1d693d(0x86)](_0x4edaeb=>!KNOWN_TOOL_NAMES[_0x1d693d(0x76)](_0x4edaeb)),_0x174f5a=new Set(_0x6ebb2c);if(_0x183ea2){const _0x3d5317=new Set(_0x183ea2);for(const _0x564030 of ALL_TOOL_NAMES)if(!_0x3d5317[_0x1d693d(0x76)](_0x564030))_0x174f5a[_0x1d693d(0x8d)](_0x564030);}return{'disabled':_0x174f5a,'unknown':_0x18bb48};}
1
+ function a6_0x8378(){const _0x3e4237=['4227545AHXxBV','add','85876cXpyNT','CODEBASE_SEARCH','GITHUB_CODEBASE_SEARCH','filter','24KkoEKD','trim','all','DISABLED_TOOLS','1118985cTugqM','830440JdWLXk','1806672rKLYXY','3956622kvMJLW','values','codebase_search','split','1068989KnxbiP','toLowerCase','has'];a6_0x8378=function(){return _0x3e4237;};return a6_0x8378();}function a6_0x8a7c(_0x355260,_0x2cfaad){_0x355260=_0x355260-0x98;const _0x837874=a6_0x8378();let _0x8a7c31=_0x837874[_0x355260];return _0x8a7c31;}const a6_0x1398fa=a6_0x8a7c;(function(_0x12b1ff,_0x3f1e3b){const _0x1133f9=a6_0x8a7c,_0x176f71=_0x12b1ff();while(!![]){try{const _0x1c666b=parseInt(_0x1133f9(0xa3))/0x1+parseInt(_0x1133f9(0xa8))/0x2*(-parseInt(_0x1133f9(0x98))/0x3)+-parseInt(_0x1133f9(0x9e))/0x4+parseInt(_0x1133f9(0x9c))/0x5+-parseInt(_0x1133f9(0x9f))/0x6+parseInt(_0x1133f9(0xa6))/0x7+parseInt(_0x1133f9(0x9d))/0x8;if(_0x1c666b===_0x3f1e3b)break;else _0x176f71['push'](_0x176f71['shift']());}catch(_0x26cd8d){_0x176f71['push'](_0x176f71['shift']());}}}(a6_0x8378,0x8547d));export const TOOL_NAMES={'EDIT_FILE':'edit_file','CODEBASE_SEARCH':a6_0x1398fa(0xa1),'GITHUB_CODEBASE_SEARCH':'github_codebase_search','SUBMIT_FEEDBACK':'submit_feedback'};export const ALL_TOOL_NAMES=Object[a6_0x1398fa(0xa0)](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);export const LEGACY_TOOL_ALIASES={'warpgrep_codebase_search':TOOL_NAMES[a6_0x1398fa(0xa9)],'warpgrep_github_search':TOOL_NAMES[a6_0x1398fa(0xaa)]};function parseToolList(_0x482523){const _0x4022a0=a6_0x1398fa;if(!_0x482523)return[];return _0x482523[_0x4022a0(0xa2)](',')['map'](_0x20938e=>_0x20938e['trim']())[_0x4022a0(0xab)](_0xa26027=>_0xa26027['length']>0x0)['map'](_0x45d293=>LEGACY_TOOL_ALIASES[_0x45d293]??_0x45d293);}export function resolveToolFilter(_0x28f679){const _0x39e2a6=a6_0x1398fa,_0x3a9869=_0x28f679['ENABLED_TOOLS']?.[_0x39e2a6(0x99)](),_0x5b3034=_0x3a9869&&_0x3a9869[_0x39e2a6(0xa4)]()!==_0x39e2a6(0x9a)?parseToolList(_0x3a9869):undefined,_0x28ac34=parseToolList(_0x28f679[_0x39e2a6(0x9b)]),_0x9ec62e=[..._0x5b3034??[],..._0x28ac34]['filter'](_0x30052f=>!KNOWN_TOOL_NAMES[_0x39e2a6(0xa5)](_0x30052f)),_0x3ff920=new Set(_0x28ac34);if(_0x5b3034){const _0x50ac20=new Set(_0x5b3034);for(const _0x2be1f7 of ALL_TOOL_NAMES)if(!_0x50ac20[_0x39e2a6(0xa5)](_0x2be1f7))_0x3ff920[_0x39e2a6(0xa7)](_0x2be1f7);}return{'disabled':_0x3ff920,'unknown':_0x9ec62e};}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.218",
3
+ "version": "0.8.220",
4
4
  "description": "Fast & accurate MCP server with AI-powered file editing and intelligent code search. Prevents context pollution and saves time for a better user experience.",
5
5
  "license": "MIT",
6
6
  "author": "Morph (https://morphllm.com)",
@@ -35,7 +35,7 @@
35
35
  "dependencies": {
36
36
  "@google/generative-ai": "^0.21.0",
37
37
  "@modelcontextprotocol/sdk": "^1.12.3",
38
- "@morphllm/morphsdk": "0.2.199",
38
+ "@morphllm/morphsdk": "0.2.200",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",