@morphllm/morphmcp 0.8.187 → 0.8.189
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/log-utils.js +1 -1
- package/dist/logger.js +1 -1
- package/dist/path-utils.js +1 -1
- package/dist/path-validation.js +1 -1
- package/dist/roots-utils.js +1 -1
- package/dist/tool-definitions.js +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x3e026d=a0_0x3579;(function(_0x361e28,_0x44e5f3){const _0x4cb00e=a0_0x3579,_0x5cf58a=_0x361e28();while(!![]){try{const _0x3bf7d8=-parseInt(_0x4cb00e(0x1e0))/0x1*(parseInt(_0x4cb00e(0x18c))/0x2)+parseInt(_0x4cb00e(0x1d6))/0x3*(parseInt(_0x4cb00e(0x103))/0x4)+parseInt(_0x4cb00e(0x16e))/0x5*(-parseInt(_0x4cb00e(0x11d))/0x6)+-parseInt(_0x4cb00e(0x12c))/0x7+parseInt(_0x4cb00e(0x1a6))/0x8*(parseInt(_0x4cb00e(0x1e5))/0x9)+parseInt(_0x4cb00e(0xe7))/0xa+parseInt(_0x4cb00e(0x18a))/0xb;if(_0x3bf7d8===_0x44e5f3)break;else _0x5cf58a['push'](_0x5cf58a['shift']());}catch(_0x9893f){_0x5cf58a['push'](_0x5cf58a['shift']());}}}(a0_0xf1bd,0xcd78f));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';function a0_0x3579(_0x4085db,_0x5150e0){_0x4085db=_0x4085db-0xd9;const _0xf1bd68=a0_0xf1bd();let _0x3579bd=_0xf1bd68[_0x4085db];return _0x3579bd;}import a0_0x25800f from'fs/promises';import a0_0x5748e1 from'path';function a0_0xf1bd(){const _0x5b6d35=['DISABLED_TOOLS','ENABLE_WORKSPACE_MODE','join','role','RipgrepNotAvailable','new_string','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','file_read_complete','assistant','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','object','Workspace\x20mode\x20enabled:\x20Using\x20','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','string','8093975IGARkg','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','path_validation_start','user','error','MORPH_LARGE_APPLY','readFile','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','getClientCapabilities','MCP','status','every','pyproject.toml','Unknown\x20tool:\x20','parse','Here\x20is\x20the\x20content\x20of\x20files:\x0a','Relevant\x20context\x20found:','0.2.0','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','morph-warp-grep-v2.1','github_codebase_search','\x20-\x20','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','some','grep_search','name','messages','8123170Johgpf','FileReadError','222460gdbrXL','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','warn','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.','API\x20error\x20(auth/rate-limit)','github_search_start','file_path','content','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','morph-v3-fast','debug','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','optional','.git','log','isArray','catch','\x22>\x0a','composer.json','GitHub\x20search\x20failed:\x20','sep','path','substring','.cursor','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','MORPH_API_URL','8AJuysj','split','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','message','.vscode','filter','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','etimedout','grep\x20\x27','[github_codebase_search]\x20Done\x20in\x20','Warning:\x20Workspace\x20fallback\x20failed:\x20','glob','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','false','stringify','payload',',\x20removed\x20',',\x20modified\x20','list_directory\x20','\x0aOptions:','\x20is\x20not\x20a\x20directory','Unknown\x20error','setRequestHandler','FileNotFound','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','search_type','\x20as\x20allowed\x20directory','describe','startsWith','Failed\x20to\x20request\x20roots\x20from\x20client:','Morph\x20Edit\x20Preview','map','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','\x0aExamples:','listRoots','EDIT_FILE','linesModified','tool_call_received','../package.json','-\x20Preserve\x20exact\x20indentation\x0a','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Error\x20running\x20fast\x20context\x20search:\x20','timeout','morph-v3-large','resolve','toISOString','-\x20Grepped\x20\x27','node_modules','255RRZOPY','added\x20','MORPH_API_KEY','cwd','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','RipgrepError','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','success','provider_created','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','5deSVTi','has','@morphllm/morphmcp\x20','ms.\x20Success:\x20','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','9113049wLKGfH','boolean','instruction','compaction_failed','-\x20Glob\x20search\x20`','ReadError','codebase_search','Disabled\x20tools:\x20','file','package.json','tool_call_complete','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','Morph\x20FastApply\x20failed\x20without\x20error\x20message','requiresApiKey','turns','WarpGrep\x20sub-tool\x20errors:\x20','PWD','SymlinkError','branch','\x27\x20in\x20`','pattern','instructions','array','<file\x20path=\x22','command','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.','function','now','text','.\x20Path:\x20','mcp-filesystem','repo_path','path_validation_resolved','path_validation_failed','Max\x20results\x20to\x20return','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','api-key','includes','lines','push','.\x20Changes:\x20','Cargo.toml','4783830VOcxZe','ENOENT','realpath','timed\x20out','tool_calls','go.mod','version','dryRun','env','\x20disabled\x20via\x20DISABLED_TOOLS','params','unknown','Preview\x20changes\x20without\x20applying\x20them.','stat','sk-','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','tool','homedir','read','tool_call_id','arguments','files','application/json','description','Invalid\x20arguments:\x20','completed_with_file_errors','code','MORPH_WARP_GREP_TIMEOUT','59676gAjqXF','indexOf','\x0a...\x20(truncated,\x20total:\x20','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','Fallback:\x20Using\x20workspace\x20root\x20','utf-8','filePath','errors','read\x20','length','tool_call_error','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','unknown\x20error','oninitialized','response','linesAdded','source','Error:\x20','BinaryFile','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','search_string','Tool\x20','[github_codebase_search]\x20Failed\x20in\x20','context','[could\x20not\x20read\x20file:\x20','github_url','6ZJXztj','constructor','searchGitHub','code_edit','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','-\x20Read\x20file\x20`','exit','dirname','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','slice','grep','Morph\x20Edit\x20','https://morphllm.com/api/error-report','number','data','3366783wbSicL','list_directory','enum','TimeoutError','`\x20in\x20`','Error\x20accessing\x20directory\x20','morph-','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','SubToolError','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','roots','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.','CODEBASE_SEARCH','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','Parameters:\x0a','WarpGrepError','LocalRipgrepProvider','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','finish','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','\x0a</file>','ToolException','size','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','\x20(new\x20file)','default','Bearer\x20','safeParse','all','file_read_failed','toLowerCase','metadata','stack','linesRemoved','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','timings','\x20valid\x20directories','❌\x20Morph\x20Edit\x20Failed:\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','terminationReason','glob\x20\x27','basename','UnknownError','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','edit_file','Warning:\x20','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','Created\x20File','PathError','\x20error(s)','setNotificationHandler','Fatal\x20error\x20running\x20server:'];a0_0xf1bd=function(){return _0x5b6d35;};return a0_0xf1bd();}import a0_0x4003c7 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{logger}from'./logger.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x1840de from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x5552c4){const _0x472176=a0_0x3579,_0x347efb=_0x5552c4[_0x472176(0x1a7)](a0_0x5748e1['sep'])[_0x472176(0x1ab)](Boolean);if(_0x347efb[_0x472176(0x10c)]<0x2)return null;for(let _0x7128bf=Math['floor'](_0x347efb['length']/0x2);_0x7128bf>=0x1;_0x7128bf--){for(let _0x5e757c=0x0;_0x5e757c<=_0x347efb[_0x472176(0x10c)]-0x2*_0x7128bf;_0x5e757c++){const _0x5c2c9c=_0x347efb[_0x472176(0x126)](_0x5e757c,_0x5e757c+_0x7128bf),_0x11d00d=_0x347efb['slice'](_0x5e757c+_0x7128bf,_0x5e757c+0x2*_0x7128bf);if(_0x5c2c9c[_0x472176(0x179)]((_0x216d12,_0x283caf)=>_0x216d12===_0x11d00d[_0x283caf])){const _0x305bf7=[..._0x347efb['slice'](0x0,_0x5e757c),..._0x347efb[_0x472176(0x126)](_0x5e757c+_0x7128bf)];return a0_0x5748e1[_0x472176(0x1a0)]+_0x305bf7['join'](a0_0x5748e1[_0x472176(0x1a0)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x449866=a0_0x3579;try{const _0x117c91=require(_0x449866(0x1cc));return _0x117c91[_0x449866(0xed)]??_0x449866(0xf2);}catch(_0x538896){return logMcpStderr(_0x449866(0x175),_0x538896),'unknown';}}function printHelp(){const _0x3b3d1f=a0_0x3579;console[_0x3b3d1f(0x19a)](_0x3b3d1f(0x1e2)+getPackageVersion()),console[_0x3b3d1f(0x19a)](_0x3b3d1f(0x15a)),console[_0x3b3d1f(0x19a)](_0x3b3d1f(0x1b9)),console[_0x3b3d1f(0x19a)](_0x3b3d1f(0x135)),console[_0x3b3d1f(0x19a)](_0x3b3d1f(0x139)),console['log'](_0x3b3d1f(0x184)),console['log'](_0x3b3d1f(0x1c7)),console['log']('\x20\x20morph-mcp'),console[_0x3b3d1f(0x19a)](_0x3b3d1f(0x13f));}const cliArgs=process['argv'][a0_0x3e026d(0x126)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs['some'](_0x4ae0ed=>VERSION_FLAGS['has'](_0x4ae0ed))&&(console[a0_0x3e026d(0x19a)](a0_0x3e026d(0x1e2)+getPackageVersion()),process[a0_0x3e026d(0x123)](0x0));cliArgs[a0_0x3e026d(0x186)](_0x373f62=>HELP_FLAGS[a0_0x3e026d(0x1e1)](_0x373f62))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x1495f9){const _0x23ad23=a0_0x3e026d;for(let _0x4ec7a4=0x0;_0x4ec7a4<cliArgs[_0x23ad23(0x10c)];_0x4ec7a4++){const _0x55e4b0=cliArgs[_0x4ec7a4];if(_0x55e4b0[_0x23ad23(0x1c2)]('--'+_0x1495f9+'='))return _0x55e4b0[_0x23ad23(0x126)](('--'+_0x1495f9+'=')[_0x23ad23(0x10c)]);if(_0x55e4b0==='--'+_0x1495f9&&_0x4ec7a4+0x1<cliArgs[_0x23ad23(0x10c)])return cliArgs[_0x4ec7a4+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x3e026d(0x10c)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0x3e026d(0x1e1)](arg))continue;if(arg[a0_0x3e026d(0x1c2)]('--api-key='))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x3e026d(0xe4)](arg);}const WORKSPACE_ROOT=process[a0_0x3e026d(0xef)]['WORKSPACE_ROOT']||process[a0_0x3e026d(0xef)][a0_0x3e026d(0x1f5)]||process[a0_0x3e026d(0x1d9)](),ENABLE_WORKSPACE_MODE=process[a0_0x3e026d(0xef)][a0_0x3e026d(0x161)]!==a0_0x3e026d(0x1b3),MORPH_API_KEY=getCliArg(a0_0x3e026d(0xe1))??process[a0_0x3e026d(0xef)][a0_0x3e026d(0x1d8)],MORPH_API_URL=process['env'][a0_0x3e026d(0x1a5)],MORPH_LARGE_APPLY=process[a0_0x3e026d(0xef)][a0_0x3e026d(0x173)]!==a0_0x3e026d(0x1b3),MORPH_WARP_GREP_TIMEOUT=process[a0_0x3e026d(0xef)][a0_0x3e026d(0x102)]?parseInt(process[a0_0x3e026d(0xef)][a0_0x3e026d(0x102)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x3e026d(0xef)][a0_0x3e026d(0x160)]?new Set(process[a0_0x3e026d(0xef)][a0_0x3e026d(0x160)][a0_0x3e026d(0x1a7)](',')['map'](_0x3b7aec=>_0x3b7aec['trim']())[a0_0x3e026d(0x1ab)](_0x4f1b46=>_0x4f1b46[a0_0x3e026d(0x10c)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x3e026d(0x142)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console['error'](a0_0x3e026d(0x1df)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console[a0_0x3e026d(0x172)](a0_0x3e026d(0x1ec)+[...DISABLED_TOOLS][a0_0x3e026d(0x162)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x3e026d(0x1c2)](a0_0x3e026d(0xf5))&&!MORPH_API_KEY['startsWith'](a0_0x3e026d(0x132))&&logMcpStderr(a0_0x3e026d(0xe0));async function reportMorphError(_0x137b25){const _0x4c09f0=a0_0x3e026d;try{await a0_0x1840de['post'](_0x4c09f0(0x129),{..._0x137b25,'timestamp':new Date()[_0x4c09f0(0x1d3)](),'source':_0x137b25[_0x4c09f0(0x113)]||_0x4c09f0(0xdb),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x137b25[_0x4c09f0(0x11a)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x4c09f0(0xfd),'Authorization':_0x4c09f0(0x146)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x1a1477,_0x337a17){const _0x2a358f=a0_0x3e026d;if(_0x1a1477&&typeof _0x1a1477===_0x2a358f(0x16a)&&_0x2a358f(0x178)in _0x1a1477)return _0x1a1477['status'];if(_0x1a1477&&typeof _0x1a1477==='object'&&_0x2a358f(0x111)in _0x1a1477)return _0x1a1477[_0x2a358f(0x111)]?.[_0x2a358f(0x178)];const _0x7cf7e7=_0x337a17['match'](/\b(401|429)\b/);return _0x7cf7e7?parseInt(_0x7cf7e7[0x1],0xa):null;}function handleMorphAPIError(_0x1042ee){const _0x39c68d=a0_0x3e026d,_0x358b8a=_0x1042ee instanceof Error?_0x1042ee[_0x39c68d(0x1a9)]:String(_0x1042ee),_0x3a13da=extractStatusCode(_0x1042ee,_0x358b8a);switch(_0x3a13da){case 0x191:return{'content':[{'type':_0x39c68d(0xd9),'text':_0x39c68d(0x1fe)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x39c68d(0xd9),'text':_0x39c68d(0x180)}],'isError':!![]};default:return null;}}args[a0_0x3e026d(0x10c)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x3e026d(0x1ce)),logMcpStderr(a0_0x3e026d(0x1dc)));function normalizePath(_0x221bdd){return a0_0x5748e1['normalize'](_0x221bdd);}function expandHome(_0x3f1e48){const _0x400a5d=a0_0x3e026d;if(_0x3f1e48[_0x400a5d(0x1c2)]('~/')||_0x3f1e48==='~')return a0_0x5748e1['join'](a0_0x4003c7[_0x400a5d(0xf8)](),_0x3f1e48['slice'](0x1));return _0x3f1e48;}let allowedDirectories=await Promise['all'](args[a0_0x3e026d(0x1c5)](async _0x59b1ce=>{const _0x290c5a=a0_0x3e026d,_0x2062d7=expandHome(_0x59b1ce),_0x1d9602=a0_0x5748e1['resolve'](_0x2062d7);try{const _0x3550e2=await a0_0x25800f[_0x290c5a(0xe9)](_0x1d9602);return normalizePath(_0x3550e2);}catch(_0x4881ab){return normalizePath(_0x1d9602);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x3e026d(0x10c)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),logMcpStderr(a0_0x3e026d(0x16b)+workspaceDir+a0_0x3e026d(0x1c0)));}catch(a0_0x597f57){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x597f57);}async function detectWorkspaceRoot(_0x733549){const _0xb2735d=a0_0x3e026d;let _0xeb4337=a0_0x5748e1['resolve'](_0x733549);const _0x381734=[_0xb2735d(0x199),_0xb2735d(0x1aa),_0xb2735d(0x1ee),_0xb2735d(0xe6),_0xb2735d(0x17a),_0xb2735d(0xec),_0xb2735d(0x1a3),'tsconfig.json',_0xb2735d(0x19e)];while(_0xeb4337!==a0_0x5748e1[_0xb2735d(0x124)](_0xeb4337)){for(const _0xb891c8 of _0x381734){const _0x1c27e5=a0_0x5748e1[_0xb2735d(0x162)](_0xeb4337,_0xb891c8);try{return await a0_0x25800f['access'](_0x1c27e5),normalizePath(_0xeb4337);}catch{}}_0xeb4337=a0_0x5748e1[_0xb2735d(0x124)](_0xeb4337);}return normalizePath(_0x733549);}await Promise[a0_0x3e026d(0x148)](args[a0_0x3e026d(0x1c5)](async _0x52fdf7=>{const _0x23d92b=a0_0x3e026d;try{const _0x57c99a=await a0_0x25800f[_0x23d92b(0xf4)](expandHome(_0x52fdf7));!_0x57c99a['isDirectory']()&&(logMcpStderr(_0x23d92b(0x114)+_0x52fdf7+_0x23d92b(0x1ba)),process[_0x23d92b(0x123)](0x1));}catch(_0xf2539a){logMcpStderr(_0x23d92b(0x131)+_0x52fdf7+':',_0xf2539a),process['exit'](0x1);}}));async function validatePath(_0x14976b){const _0x5115d9=a0_0x3e026d,_0x4dbeaf=expandHome(_0x14976b),_0x590c0d=a0_0x5748e1['resolve'](_0x4dbeaf);logger[_0x5115d9(0x196)](_0x5115d9(0x177),_0x5115d9(0x170),{'raw_path':_0x14976b,'absolute':_0x590c0d});try{const _0x276656=await a0_0x25800f[_0x5115d9(0xe9)](_0x590c0d);return logger[_0x5115d9(0x196)](_0x5115d9(0x177),'path_validation_resolved',{'resolved':_0x276656,'symlink':_0x276656!==_0x590c0d}),_0x276656;}catch(_0x16f078){if(_0x16f078[_0x5115d9(0x101)]===_0x5115d9(0xe8)){const _0xff7f82=a0_0x5748e1['dirname'](_0x590c0d);try{const _0x2a305d=await a0_0x25800f[_0x5115d9(0xe9)](_0xff7f82),_0x6df898=a0_0x5748e1[_0x5115d9(0x162)](_0x2a305d,a0_0x5748e1[_0x5115d9(0x155)](_0x590c0d));return logger[_0x5115d9(0x196)](_0x5115d9(0x177),_0x5115d9(0xdd),{'resolved':_0x6df898,'new_file':!![]}),_0x6df898;}catch{logger[_0x5115d9(0x172)]('MCP',_0x5115d9(0xde),{'raw_path':_0x14976b,'error':_0x5115d9(0x152)+_0xff7f82});throw new Error(_0x5115d9(0x152)+_0xff7f82);}}logger['error'](_0x5115d9(0x177),'path_validation_failed',{'raw_path':_0x14976b,'error':_0x16f078[_0x5115d9(0x1a9)]});throw _0x16f078;}}const MorphEditFileArgsSchema=z[a0_0x3e026d(0x16a)]({'path':z[a0_0x3e026d(0x16d)](),'code_edit':z[a0_0x3e026d(0x16d)]()[a0_0x3e026d(0x1c1)](a0_0x3e026d(0x169)),'instruction':z[a0_0x3e026d(0x16d)]()[a0_0x3e026d(0x1c1)]('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0x3e026d(0x1e6)]()[a0_0x3e026d(0x145)](![])[a0_0x3e026d(0x1c1)](a0_0x3e026d(0xf3))}),CODEBASE_SEARCH_QUERY_DESCRIPTION='Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.',WarpGrepArgsSchema=z[a0_0x3e026d(0x16a)]({'search_string':z[a0_0x3e026d(0x16d)]()[a0_0x3e026d(0x1c1)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x3e026d(0x16d)]()[a0_0x3e026d(0x1c1)](a0_0x3e026d(0x1a4)),'search_type':z[a0_0x3e026d(0x12e)]([a0_0x3e026d(0x145),a0_0x3e026d(0x1d5)])[a0_0x3e026d(0x198)]()['describe'](a0_0x3e026d(0x13d))}),WarpGrepGitHubArgsSchema=z[a0_0x3e026d(0x16a)]({'search_string':z[a0_0x3e026d(0x16d)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x3e026d(0x16d)]()[a0_0x3e026d(0x198)]()[a0_0x3e026d(0x1c1)]('GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'owner_repo':z['string']()[a0_0x3e026d(0x198)]()[a0_0x3e026d(0x1c1)](a0_0x3e026d(0x14e)),'branch':z['string']()[a0_0x3e026d(0x198)]()[a0_0x3e026d(0x1c1)](a0_0x3e026d(0xf6))}),CodebaseSearchArgsSchema=z[a0_0x3e026d(0x16a)]({'query':z[a0_0x3e026d(0x16d)]()[a0_0x3e026d(0x1c1)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x3e026d(0x16d)]()['describe']('Repository\x20identifier'),'branch':z[a0_0x3e026d(0x16d)]()['optional']()['describe'](a0_0x3e026d(0x16c)),'commitHash':z['string']()['optional']()['describe']('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x3e026d(0x1fb)](z[a0_0x3e026d(0x16d)]())[a0_0x3e026d(0x145)]([])[a0_0x3e026d(0x1c1)](a0_0x3e026d(0x16f)),'limit':z[a0_0x3e026d(0x12a)]()[a0_0x3e026d(0x198)]()[a0_0x3e026d(0x145)](0xa)[a0_0x3e026d(0x1c1)](a0_0x3e026d(0xdf))}),server=new Server({'name':'morph-mcp','version':a0_0x3e026d(0x17f)},{'capabilities':{'tools':{}}});server[a0_0x3e026d(0x1bc)](ListToolsRequestSchema,async()=>{const _0x48906f=a0_0x3e026d,_0x5774c4=[{'name':TOOL_NAMES[_0x48906f(0x1c9)],'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'+_0x48906f(0x13a)+_0x48906f(0x106)+_0x48906f(0x185)+'-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a'+_0x48906f(0x194)+'Example\x20format:\x0a'+_0x48906f(0x121)+'Rules:\x0a'+_0x48906f(0x1a8)+_0x48906f(0x1cd)+'-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a'+_0x48906f(0x10e),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x48906f(0x138)],'description':_0x48906f(0x1f0)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x48906f(0x1ac)+_0x48906f(0x157)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x3f3979=_0x5774c4[_0x48906f(0x1ab)](_0x41769d=>{const _0x34eeee=_0x48906f;if(DISABLED_TOOLS[_0x34eeee(0x1e1)](_0x41769d[_0x34eeee(0x188)]))return console[_0x34eeee(0x172)](_0x34eeee(0x118)+_0x41769d['name']+_0x34eeee(0xf0)),![];if(_0x34eeee(0x1f2)in _0x41769d&&_0x41769d[_0x34eeee(0x1f2)]&&!MORPH_API_KEY)return logMcpStderr(_0x34eeee(0x159)+_0x41769d['name']+_0x34eeee(0x1da)),![];return!![];});return{'tools':_0x3f3979['map'](_0x2dee15=>({'name':_0x2dee15[_0x48906f(0x188)],'description':_0x2dee15[_0x48906f(0xfe)],'inputSchema':_0x2dee15['inputSchema']}))};}),server[a0_0x3e026d(0x1bc)](CallToolRequestSchema,async _0x16aaa8=>{const _0x14b0d9=a0_0x3e026d,{name:_0x16603f,arguments:_0x1888ae}=_0x16aaa8[_0x14b0d9(0xf1)],_0x341237=Date[_0x14b0d9(0x200)]();logger[_0x14b0d9(0x196)]('MCP',_0x14b0d9(0x1cb),{'tool':_0x16603f,'args':_0x16603f===_0x14b0d9(0x158)?{'path':_0x1888ae?.[_0x14b0d9(0x1a1)],'instruction':_0x1888ae?.[_0x14b0d9(0x1e7)]||_0x1888ae?.[_0x14b0d9(0x1fa)],'dryRun':_0x1888ae?.[_0x14b0d9(0xee)]}:_0x1888ae});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x14b0d9(0xd9),'text':'No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.'}],'isError':!![]};if(!MORPH_API_KEY[_0x14b0d9(0x1c2)]('sk-')&&!MORPH_API_KEY['startsWith'](_0x14b0d9(0x132)))return{'content':[{'type':_0x14b0d9(0xd9),'text':_0x14b0d9(0x137)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0x16603f))return{'content':[{'type':_0x14b0d9(0xd9),'text':'Tool\x20\x22'+_0x16603f+_0x14b0d9(0x1e4)}],'isError':![]};switch(_0x16603f){case TOOL_NAMES[_0x14b0d9(0x1c9)]:{let _0x1c75f5=_0x1888ae;if(_0x1c75f5&&typeof _0x1c75f5==='object'){if(!('path'in _0x1c75f5)){const _0x2d688c=_0x1c75f5['target_file']??_0x1c75f5[_0x14b0d9(0x109)]??_0x1c75f5['target_filepath']??_0x1c75f5[_0x14b0d9(0x192)]??_0x1c75f5[_0x14b0d9(0x1ed)];if(_0x2d688c)_0x1c75f5={..._0x1c75f5,'path':_0x2d688c};}'instructions'in _0x1c75f5&&!(_0x14b0d9(0x1e7)in _0x1c75f5)&&(_0x1c75f5={..._0x1c75f5,'instruction':_0x1c75f5[_0x14b0d9(0x1fa)]});if(!(_0x14b0d9(0x120)in _0x1c75f5)){const _0x59457f=_0x1c75f5[_0x14b0d9(0x101)]??_0x1c75f5[_0x14b0d9(0x165)]??_0x1c75f5[_0x14b0d9(0x193)]??_0x1c75f5['edit'];if(_0x59457f)_0x1c75f5={..._0x1c75f5,'code_edit':_0x59457f};}}const _0x122f22=MorphEditFileArgsSchema['safeParse'](_0x1c75f5);if(!_0x122f22[_0x14b0d9(0x1dd)])throw new Error(_0x14b0d9(0x1c6)+_0x122f22[_0x14b0d9(0x172)]);const _0x3a7301=await validatePath(_0x122f22['data'][_0x14b0d9(0x1a1)]);let _0x592f59=null,_0x148f34=!![],_0x34911c=null;try{_0x592f59=await a0_0x25800f[_0x14b0d9(0x174)](_0x3a7301,_0x14b0d9(0x108)),logger['debug'](_0x14b0d9(0x177),_0x14b0d9(0x167),{'path':_0x3a7301,'size_bytes':_0x592f59['length']});}catch(_0x2e84cf){const _0x4cf8fa=_0x2e84cf['code'];_0x4cf8fa===_0x14b0d9(0xe8)?(_0x148f34=![],_0x592f59='',logger['debug'](_0x14b0d9(0x177),'file_read_complete',{'path':_0x3a7301,'exists':![]})):(_0x34911c='Failed\x20to\x20read\x20file:\x20'+(_0x4cf8fa||'unknown')+_0x14b0d9(0x183)+(_0x2e84cf instanceof Error?_0x2e84cf[_0x14b0d9(0x1a9)]:String(_0x2e84cf)),logger[_0x14b0d9(0x172)](_0x14b0d9(0x177),_0x14b0d9(0x149),{'path':_0x3a7301,'error':_0x34911c}),logMcpStderr('Warning:\x20'+_0x34911c));}let _0x7a42a0;try{const _0x71b95c=MORPH_API_KEY;if(!_0x71b95c)throw new Error(_0x14b0d9(0x18d));const _0x41c91f=a0_0x5748e1[_0x14b0d9(0x124)](_0x3a7301),_0x340ad4=a0_0x5748e1[_0x14b0d9(0x155)](_0x3a7301);logger[_0x14b0d9(0x196)](_0x14b0d9(0x177),'api_request_start',{'model':_0x14b0d9(0x195),'path':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x1a1)],'instruction_len':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x1e7)][_0x14b0d9(0x10c)],'code_edit_len':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x120)][_0x14b0d9(0x10c)],'original_code_len':_0x592f59?.[_0x14b0d9(0x10c)]??0x0,'dry_run':_0x122f22['data'][_0x14b0d9(0xee)]});const _0x121395=Date['now'](),_0xe42830=await executeEditFile({'target_filepath':_0x340ad4,'code_edit':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x120)],'instruction':_0x122f22[_0x14b0d9(0x12b)]['instruction']},{'morphApiKey':_0x71b95c,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x41c91f,'autoWrite':!_0x122f22['data']['dryRun'],'generateUdiff':![],'debug':![]}),_0x4dd9d1=Date['now']()-_0x121395;_0x7a42a0=_0xe42830['completionId'];if(!_0xe42830['success'])throw new Error(_0xe42830['error']||_0x14b0d9(0x1f1));const _0xdf137f=_0xe42830['changes'],_0x1d6689=_0x14b0d9(0x1d7)+_0xdf137f[_0x14b0d9(0x112)]+_0x14b0d9(0x1b6)+_0xdf137f['linesRemoved']+_0x14b0d9(0x1b7)+_0xdf137f[_0x14b0d9(0x1ca)];logger[_0x14b0d9(0x196)](_0x14b0d9(0x177),_0x14b0d9(0x1ef),{'tool':_0x14b0d9(0x158),'success':!![],'latency_ms':Date[_0x14b0d9(0x200)]()-_0x341237,'edit_latency_ms':_0x4dd9d1,'changes':{'added':_0xdf137f[_0x14b0d9(0x112)],'removed':_0xdf137f[_0x14b0d9(0x14d)],'modified':_0xdf137f[_0x14b0d9(0x1ca)]},'completion_id':_0x7a42a0});if(_0x122f22[_0x14b0d9(0x12b)]['dryRun'])return{'content':[{'type':_0x14b0d9(0xd9),'text':_0x14b0d9(0x1c4)+(_0x148f34?'':_0x14b0d9(0x144))+':\x20'+_0x122f22['data']['instruction']+'.\x20Changes:\x20'+_0x1d6689+'.\x20Path:\x20'+_0x122f22[_0x14b0d9(0x12b)]['path']+'.'}]};return{'content':[{'type':'text','text':_0x14b0d9(0x128)+(_0x148f34?'Applied':_0x14b0d9(0x15b))+':\x20'+_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x1e7)]+_0x14b0d9(0xe5)+_0x1d6689+_0x14b0d9(0xda)+_0x122f22[_0x14b0d9(0x12b)]['path']+'.'}]};}catch(_0x1a927d){const _0x1337d5=handleMorphAPIError(_0x1a927d);if(_0x1337d5)return logger[_0x14b0d9(0x172)](_0x14b0d9(0x177),_0x14b0d9(0x10d),{'tool':'edit_file','error':_0x14b0d9(0x190),'latency_ms':Date[_0x14b0d9(0x200)]()-_0x341237}),_0x1337d5;const _0x20daf7=_0x1a927d instanceof Error?_0x1a927d[_0x14b0d9(0x1a9)]:String(_0x1a927d);return logger[_0x14b0d9(0x172)](_0x14b0d9(0x177),_0x14b0d9(0x10d),{'tool':'edit_file','error':_0x20daf7,'path':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x1a1)],'validated_path':_0x3a7301,'latency_ms':Date[_0x14b0d9(0x200)]()-_0x341237,'stack':_0x1a927d instanceof Error?_0x1a927d['stack']:undefined}),reportMorphError({'error_message':_0x20daf7,'error_type':_0x1a927d instanceof Error?_0x1a927d[_0x14b0d9(0x11e)][_0x14b0d9(0x188)]:_0x14b0d9(0x156),'context':{'tool':_0x14b0d9(0x158),'completion_id':_0x7a42a0,'file_path':_0x122f22[_0x14b0d9(0x12b)]['path'],'validated_path':_0x3a7301,'instruction':_0x122f22['data'][_0x14b0d9(0x1e7)],'model':MORPH_LARGE_APPLY?_0x14b0d9(0x1d1):_0x14b0d9(0x195),'dry_run':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0xee)],'file_exists':_0x148f34,'file_read_error':_0x34911c,'file_readable':_0x592f59!==null,'request_content':{'path':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x1a1)],'code_edit':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x120)],'instruction':_0x122f22[_0x14b0d9(0x12b)][_0x14b0d9(0x1e7)],'original_code':_0x592f59!==null?_0x592f59[_0x14b0d9(0x10c)]>0xc350?_0x592f59['substring'](0x0,0xc350)+_0x14b0d9(0x105)+_0x592f59['length']+'\x20chars)':_0x592f59:_0x14b0d9(0x11b)+(_0x34911c||_0x14b0d9(0x10f))+']','original_code_length':_0x592f59?.[_0x14b0d9(0x10c)]??0x0,'model':MORPH_LARGE_APPLY?_0x14b0d9(0x1d1):_0x14b0d9(0x195),'dry_run':_0x122f22['data'][_0x14b0d9(0xee)]}},'stack_trace':_0x1a927d instanceof Error?_0x1a927d[_0x14b0d9(0x14c)]:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':_0x14b0d9(0xd9),'text':_0x14b0d9(0x151)+_0x20daf7}],'isError':!![]};}}case TOOL_NAMES[_0x14b0d9(0x138)]:{const _0x38c771=WarpGrepArgsSchema[_0x14b0d9(0x147)](_0x1888ae);if(!_0x38c771[_0x14b0d9(0x1dd)])return{'content':[{'type':_0x14b0d9(0xd9),'text':_0x14b0d9(0xff)+_0x38c771[_0x14b0d9(0x172)]}],'isError':!![]};const _0x300a94=_0x522c4b=>{const _0x4467e4=_0x14b0d9,_0xb9ab76=[];for(const _0x2630ec of _0x522c4b||[]){if(_0x2630ec[_0x4467e4(0x163)]===_0x4467e4(0x168)&&Array[_0x4467e4(0x19b)](_0x2630ec['tool_calls']))for(const _0x134ab1 of _0x2630ec['tool_calls']){try{const _0x461b1a=_0x134ab1[_0x4467e4(0x1ff)]?.[_0x4467e4(0x188)],_0x50cd2d=JSON['parse'](_0x134ab1['function']?.['arguments']||'{}');if(_0x461b1a===_0x4467e4(0x187))_0xb9ab76['push'](_0x4467e4(0x1ae)+_0x50cd2d[_0x4467e4(0x1f9)]+'\x27\x20'+(_0x50cd2d[_0x4467e4(0x1a1)]||'.'));else{if(_0x461b1a===_0x4467e4(0xf9))_0xb9ab76[_0x4467e4(0xe4)](_0x4467e4(0x10b)+_0x50cd2d['path']);else{if(_0x461b1a==='list_directory')_0xb9ab76[_0x4467e4(0xe4)](_0x4467e4(0x1b8)+(_0x50cd2d[_0x4467e4(0x1fd)]||'.'));else{if(_0x461b1a===_0x4467e4(0x1b1))_0xb9ab76['push'](_0x4467e4(0x154)+_0x50cd2d[_0x4467e4(0x1f9)]+'\x27\x20'+(_0x50cd2d[_0x4467e4(0x1a1)]||'.'));else _0x461b1a===_0x4467e4(0x13e)&&_0xb9ab76[_0x4467e4(0xe4)](_0x4467e4(0x13e));}}}}catch{}}}return _0xb9ab76;},_0x42a8cd=_0x5c0123=>{const _0x1249e6=_0x14b0d9,_0x1fe563=[];if(!_0x5c0123||!Array['isArray'](_0x5c0123))return _0x1fe563;const _0x4710ef=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x1249e6(0x1bd),'tool':_0x1249e6(0xf9)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x1249e6(0x15c),'tool':_0x1249e6(0xf9)},{'pattern':/\[READ ERROR\]/,'error_type':_0x1249e6(0x1ea),'tool':_0x1249e6(0xf9)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x1249e6(0x115),'tool':_0x1249e6(0xf9)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x1249e6(0x1db),'tool':_0x1249e6(0x127)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x1249e6(0x164),'tool':_0x1249e6(0x127)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x1249e6(0x115),'tool':_0x1249e6(0xf9)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x1249e6(0xf9)},{'pattern':/not a text file/,'error_type':_0x1249e6(0x115),'tool':'read'},{'pattern':/symbolic link/,'error_type':_0x1249e6(0x1f6),'tool':'read'},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x1249e6(0xf9)},{'pattern':/status="error"/,'error_type':_0x1249e6(0x141),'tool':_0x1249e6(0xf2)}];let _0x27dfaf=0x0;for(const _0xde8bde of _0x5c0123){_0xde8bde[_0x1249e6(0x163)]===_0x1249e6(0x168)&&Array['isArray'](_0xde8bde['tool_calls'])&&_0x27dfaf++;const _0x22dfa7=_0xde8bde[_0x1249e6(0x193)];if((_0xde8bde[_0x1249e6(0x163)]===_0x1249e6(0xf7)||_0xde8bde[_0x1249e6(0x163)]===_0x1249e6(0x171))&&_0x22dfa7&&typeof _0x22dfa7===_0x1249e6(0x16d))for(const {pattern:_0x262d84,error_type:_0x3d3fae,tool:_0x1428aa}of _0x4710ef){const _0x312d56=_0x22dfa7['match'](new RegExp(_0x262d84[_0x1249e6(0x113)],'g'));if(_0x312d56)for(const _0x591b28 of _0x312d56){const _0xb49356=_0x22dfa7[_0x1249e6(0x104)](_0x591b28),_0x3d6832=_0x22dfa7[_0x1249e6(0x1a2)](_0xb49356,Math['min'](_0xb49356+0xc8,_0x22dfa7['length']));_0x1fe563[_0x1249e6(0xe4)]({'tool':_0x1428aa,'error_type':_0x3d3fae,'error_message':_0x3d6832[_0x1249e6(0x1a7)]('\x0a')[0x0],'turn':_0x27dfaf});}}}return _0x1fe563;};try{const _0x5d62a7=a0_0x5748e1[_0x14b0d9(0x1d2)](_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)]),_0x417c25=_0x38c771['data'][_0x14b0d9(0x1bf)],_0x1ebe4d=_0x417c25===_0x14b0d9(0x1d5)?{'allowNames':[_0x14b0d9(0x1d5)]}:undefined,_0x524007=new LocalRipgrepProvider(_0x5d62a7,undefined,_0x1ebe4d);logger[_0x14b0d9(0x196)]('MCP',_0x14b0d9(0x1de),{'type':_0x14b0d9(0x13c),'repo_root':_0x5d62a7,'search_type':_0x417c25||_0x14b0d9(0x145)}),logger[_0x14b0d9(0x196)](_0x14b0d9(0x177),'warp_grep_start',{'query':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'repo_root':_0x5d62a7,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x3d8956=Date[_0x14b0d9(0x200)](),_0x5310c3=await runWarpGrep({'searchTerm':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'repoRoot':_0x5d62a7,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x524007,'search_type':_0x417c25}),_0x50ec21=Date['now']()-_0x3d8956,_0x548019=_0x5310c3[_0x14b0d9(0x13e)]?.[_0x14b0d9(0x14b)]?.['files']?.['length']??0x0;logger['debug'](_0x14b0d9(0x177),'warp_grep_complete',{'termination':_0x5310c3[_0x14b0d9(0x153)],'turns':_0x5310c3[_0x14b0d9(0x14f)]?.[_0x14b0d9(0x1f3)]??0x0,'files_found':_0x548019,'latency_ms':_0x50ec21});const _0x2d0523=_0x42a8cd(_0x5310c3[_0x14b0d9(0x189)]);_0x2d0523['length']>0x0&&reportMorphError({'error_message':_0x14b0d9(0x1f4)+_0x2d0523[_0x14b0d9(0x10c)]+_0x14b0d9(0x15d),'error_type':_0x14b0d9(0x134),'level':_0x14b0d9(0x18e),'tool':'codebase_search','context':{'repo_path':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)],'query':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'model':'morph-warp-grep-v2.1','termination_reason':_0x5310c3[_0x14b0d9(0x153)],'sub_tool_errors':_0x2d0523,'timings':_0x5310c3['timings'],'tool_calls':_0x300a94(_0x5310c3[_0x14b0d9(0x189)]),'messages':_0x5310c3[_0x14b0d9(0x189)]?.[_0x14b0d9(0x1c5)](_0x5a1434=>({'role':_0x5a1434[_0x14b0d9(0x163)],'content':_0x5a1434['content'],..._0x5a1434[_0x14b0d9(0xeb)]?{'tool_calls':_0x5a1434[_0x14b0d9(0xeb)]['length']}:{},..._0x5a1434[_0x14b0d9(0xfa)]?{'tool_call_id':_0x5a1434[_0x14b0d9(0xfa)]}:{}}))},'source':'mcp-filesystem'})['catch'](()=>{});let _0x2330a6='';if(_0x5310c3['terminationReason']==='completed'&&_0x5310c3['finish']?.[_0x14b0d9(0x14b)]?.[_0x14b0d9(0xfc)]){const _0x50f4f0=_0x5310c3[_0x14b0d9(0x13e)][_0x14b0d9(0x14b)][_0x14b0d9(0xfc)];if(_0x50f4f0[_0x14b0d9(0x10c)]===0x0)return _0x2330a6=_0x5310c3[_0x14b0d9(0x13e)][_0x14b0d9(0x1b5)]||_0x14b0d9(0x166),{'content':[{'type':_0x14b0d9(0xd9),'text':_0x2330a6}]};const _0x1f2093=[],_0x37a7a6=[_0x14b0d9(0x197)];for(const _0x22c7ca of _0x5310c3[_0x14b0d9(0x189)]){if(_0x22c7ca[_0x14b0d9(0x163)]===_0x14b0d9(0x168)&&Array[_0x14b0d9(0x19b)](_0x22c7ca[_0x14b0d9(0xeb)]))for(const _0x3ce1b3 of _0x22c7ca[_0x14b0d9(0xeb)]){try{const _0x4949ae=_0x3ce1b3[_0x14b0d9(0x1ff)]?.['name'],_0x3e7bd9=JSON[_0x14b0d9(0x17c)](_0x3ce1b3[_0x14b0d9(0x1ff)]?.[_0x14b0d9(0xfb)]||'{}');if(_0x4949ae===_0x14b0d9(0x187))_0x37a7a6['push'](_0x14b0d9(0x1d4)+_0x3e7bd9['pattern']+_0x14b0d9(0x1f8)+(_0x3e7bd9['path']||'.')+'`');else{if(_0x4949ae===_0x14b0d9(0xf9))_0x37a7a6[_0x14b0d9(0xe4)](_0x14b0d9(0x122)+_0x3e7bd9[_0x14b0d9(0x1a1)]+'`');else{if(_0x4949ae===_0x14b0d9(0x12d))_0x37a7a6[_0x14b0d9(0xe4)]('-\x20Listed\x20directory\x20`'+(_0x3e7bd9['command']||'.')+'`');else _0x4949ae===_0x14b0d9(0x1b1)&&_0x37a7a6[_0x14b0d9(0xe4)](_0x14b0d9(0x1e9)+_0x3e7bd9[_0x14b0d9(0x1f9)]+_0x14b0d9(0x130)+(_0x3e7bd9[_0x14b0d9(0x1a1)]||'.')+'`');}}}catch{}}}_0x1f2093['push'](_0x37a7a6['join']('\x0a'));const _0x2df97a=['',_0x14b0d9(0x17e)];for(const _0x300eb7 of _0x50f4f0){if(_0x300eb7[_0x14b0d9(0xe3)]==='*')_0x2df97a[_0x14b0d9(0xe4)]('-\x20'+_0x300eb7[_0x14b0d9(0x1a1)]+':*');else{if(Array[_0x14b0d9(0x19b)](_0x300eb7[_0x14b0d9(0xe3)])){const _0x3182d8=_0x300eb7[_0x14b0d9(0xe3)][_0x14b0d9(0x1c5)](([_0x110539,_0x173cca])=>{if(_0x110539===_0x173cca)return''+_0x110539;return _0x110539+'-'+_0x173cca;});_0x2df97a[_0x14b0d9(0xe4)]('-\x20'+_0x300eb7[_0x14b0d9(0x1a1)]+':'+_0x3182d8['join'](','));}else _0x2df97a['push']('-\x20'+_0x300eb7['path']+':*');}}_0x2df97a[_0x14b0d9(0xe4)](''),_0x1f2093['push'](_0x2df97a[_0x14b0d9(0x162)]('\x0a')),_0x1f2093[_0x14b0d9(0xe4)](_0x14b0d9(0x17d));const _0x1426f2=[],_0x94cf32=[];for(const _0x6e82f of _0x50f4f0){let _0x24b09d=a0_0x5748e1[_0x14b0d9(0x1d2)](_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)],_0x6e82f[_0x14b0d9(0x1a1)]),_0x462970=null,_0x981736=null;try{_0x462970=await a0_0x25800f[_0x14b0d9(0x174)](_0x24b09d,{'encoding':'utf-8'});}catch(_0x480cda){const _0x5e3736=fixPathRepetition(_0x24b09d);if(_0x5e3736)try{_0x462970=await a0_0x25800f[_0x14b0d9(0x174)](_0x5e3736,{'encoding':_0x14b0d9(0x108)}),_0x24b09d=_0x5e3736;}catch{_0x981736=_0x480cda instanceof Error?_0x480cda:new Error(String(_0x480cda));}else _0x981736=_0x480cda instanceof Error?_0x480cda:new Error(String(_0x480cda));}if(_0x462970!==null){const _0x5c007d=_0x462970[_0x14b0d9(0x1a7)](/\r?\n/),_0x2df880=[];if(_0x6e82f[_0x14b0d9(0xe3)]==='*'||!Array['isArray'](_0x6e82f[_0x14b0d9(0xe3)]))for(let _0x294a53=0x1;_0x294a53<=_0x5c007d[_0x14b0d9(0x10c)];_0x294a53++){const _0x109e4e=_0x5c007d[_0x294a53-0x1];_0x2df880[_0x14b0d9(0xe4)](_0x294a53+'|\x20'+_0x109e4e);}else for(const [_0x596dc0,_0x309c0e]of _0x6e82f[_0x14b0d9(0xe3)]){_0x2df880[_0x14b0d9(0x10c)]>0x0&&_0x2df880[_0x14b0d9(0xe4)]('');for(let _0x13d5f2=_0x596dc0;_0x13d5f2<=_0x309c0e&&_0x13d5f2<=_0x5c007d[_0x14b0d9(0x10c)];_0x13d5f2++){const _0xd5aa1a=_0x5c007d[_0x13d5f2-0x1];_0x2df880[_0x14b0d9(0xe4)](_0x13d5f2+'|\x20'+_0xd5aa1a);}}_0x94cf32['push']({'path':_0x6e82f[_0x14b0d9(0x1a1)],'content':_0x2df880['join']('\x0a')});}else _0x1426f2[_0x14b0d9(0xe4)](_0x14b0d9(0x1fc)+_0x6e82f[_0x14b0d9(0x1a1)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x981736?.[_0x14b0d9(0x1a9)]||_0x14b0d9(0x1bb))+_0x14b0d9(0x140));}try{const _0x5603ea=await compactFileContexts(_0x94cf32,_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],MORPH_API_KEY,MORPH_API_URL);for(const _0x456eee of _0x5603ea){_0x1426f2[_0x14b0d9(0xe4)](_0x14b0d9(0x1fc)+_0x456eee[_0x14b0d9(0x1a1)]+_0x14b0d9(0x19d)+_0x456eee['content']+'\x0a</file>');}}catch(_0x268265){logger[_0x14b0d9(0x18e)]('MCP',_0x14b0d9(0x1e8),{'error':_0x268265 instanceof Error?_0x268265[_0x14b0d9(0x1a9)]:String(_0x268265),'files_count':_0x94cf32[_0x14b0d9(0x10c)]});for(const _0x26b00e of _0x94cf32){_0x1426f2[_0x14b0d9(0xe4)]('<file\x20path=\x22'+_0x26b00e[_0x14b0d9(0x1a1)]+_0x14b0d9(0x19d)+_0x26b00e[_0x14b0d9(0x193)]+_0x14b0d9(0x140));}}_0x1f2093[_0x14b0d9(0xe4)](_0x1426f2[_0x14b0d9(0x162)]('\x0a\x0a')),_0x2330a6=_0x1f2093[_0x14b0d9(0x162)]('\x0a');const _0x457d95=_0x5310c3[_0x14b0d9(0x10a)]?.['filter'](_0x165080=>_0x165080[_0x14b0d9(0x1a9)]?.[_0x14b0d9(0x1c2)]('File\x20read\x20error:'))||[];if(_0x457d95[_0x14b0d9(0x10c)]>0x0){const _0x4e5eaa=_0x457d95['map'](_0x310ce1=>_0x310ce1['message'])['join'](';\x20');reportMorphError({'error_message':_0x4e5eaa,'error_type':_0x14b0d9(0x18b),'context':{'tool':_0x14b0d9(0x1eb),'repo_path':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)],'query':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'model':'morph-warp-grep-v2.1','termination_reason':_0x14b0d9(0x100),'error_count':_0x457d95['length'],'is_timeout':![],'timings':_0x5310c3[_0x14b0d9(0x14f)],'files_attempted':_0x50f4f0[_0x14b0d9(0x1c5)](_0x1d70d3=>({'path':_0x1d70d3[_0x14b0d9(0x1a1)],'lines':_0x1d70d3['lines']})),'tool_calls':_0x300a94(_0x5310c3['messages']),'messages':_0x5310c3[_0x14b0d9(0x189)]?.[_0x14b0d9(0x1c5)](_0x57ad9f=>({'role':_0x57ad9f[_0x14b0d9(0x163)],'content':_0x57ad9f['content'],..._0x57ad9f[_0x14b0d9(0xeb)]?{'tool_calls':_0x57ad9f[_0x14b0d9(0xeb)][_0x14b0d9(0x10c)]}:{},..._0x57ad9f[_0x14b0d9(0xfa)]?{'tool_call_id':_0x57ad9f['tool_call_id']}:{}})),'request_content':{'query':_0x38c771['data'][_0x14b0d9(0x117)],'repo_path':_0x38c771[_0x14b0d9(0x12b)]['repo_path'],'repoRoot':a0_0x5748e1[_0x14b0d9(0x1d2)](_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)]),'model':_0x14b0d9(0x181)}},'source':_0x14b0d9(0xdb)})[_0x14b0d9(0x19c)](()=>{});}}else{if(_0x5310c3[_0x14b0d9(0x153)]==='terminated'&&_0x5310c3[_0x14b0d9(0x10a)]['length']>0x0){const _0x490a19=_0x5310c3[_0x14b0d9(0x10a)][_0x14b0d9(0x1c5)](_0x197686=>_0x197686[_0x14b0d9(0x1a9)])[_0x14b0d9(0x162)](';\x20');_0x2330a6=_0x14b0d9(0x114)+_0x490a19;const _0x4906eb=_0x490a19[_0x14b0d9(0x14a)]()[_0x14b0d9(0xe2)](_0x14b0d9(0x1d0))||_0x490a19[_0x14b0d9(0x14a)]()[_0x14b0d9(0xe2)]('timed\x20out')||_0x490a19[_0x14b0d9(0x14a)]()[_0x14b0d9(0xe2)](_0x14b0d9(0x1ad)),_0x9dc4de=_0x5310c3[_0x14b0d9(0x13e)]?.['metadata']?.[_0x14b0d9(0xfc)],_0x27a02d=_0x5310c3['errors'][0x0];reportMorphError({'error_message':_0x490a19,'error_type':_0x4906eb?'TimeoutError':_0x27a02d?.['constructor']?.[_0x14b0d9(0x188)]||_0x14b0d9(0x13b),'context':{'tool':'codebase_search','repo_path':_0x38c771[_0x14b0d9(0x12b)]['repo_path'],'query':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'model':_0x14b0d9(0x181),'termination_reason':_0x5310c3[_0x14b0d9(0x153)],'error_count':_0x5310c3[_0x14b0d9(0x10a)]['length'],'is_timeout':_0x4906eb,'timings':_0x5310c3[_0x14b0d9(0x14f)],'files_attempted':_0x9dc4de?.['map'](_0x561bfc=>({'path':_0x561bfc[_0x14b0d9(0x1a1)],'lines':_0x561bfc['lines']})),'tool_calls':_0x300a94(_0x5310c3[_0x14b0d9(0x189)]),'messages':_0x5310c3[_0x14b0d9(0x189)]?.[_0x14b0d9(0x1c5)](_0x3afb31=>({'role':_0x3afb31[_0x14b0d9(0x163)],'content':_0x3afb31[_0x14b0d9(0x193)],..._0x3afb31[_0x14b0d9(0xeb)]?{'tool_calls':_0x3afb31['tool_calls']['length']}:{},..._0x3afb31[_0x14b0d9(0xfa)]?{'tool_call_id':_0x3afb31[_0x14b0d9(0xfa)]}:{}})),'request_content':{'query':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'repo_path':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)],'repoRoot':a0_0x5748e1[_0x14b0d9(0x1d2)](_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x27a02d?.[_0x14b0d9(0x14c)]||undefined,'source':'mcp-filesystem'})[_0x14b0d9(0x19c)](()=>{});}else _0x2330a6='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0x14b0d9(0xd9),'text':_0x2330a6}]};}catch(_0x224734){const _0x3a9684=handleMorphAPIError(_0x224734);if(_0x3a9684)return logger[_0x14b0d9(0x172)](_0x14b0d9(0x177),_0x14b0d9(0x10d),{'tool':_0x14b0d9(0x1eb),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x14b0d9(0x200)]()-_0x341237}),_0x3a9684;const _0x5f1819=_0x224734 instanceof Error?_0x224734['message']:String(_0x224734);logger[_0x14b0d9(0x172)](_0x14b0d9(0x177),_0x14b0d9(0x10d),{'tool':_0x14b0d9(0x1eb),'error':_0x5f1819,'repo_path':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)],'query':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'latency_ms':Date[_0x14b0d9(0x200)]()-_0x341237});const _0x52323d=_0x5f1819[_0x14b0d9(0x14a)]()['includes'](_0x14b0d9(0x1d0))||_0x5f1819[_0x14b0d9(0x14a)]()[_0x14b0d9(0xe2)](_0x14b0d9(0xea))||_0x5f1819['toLowerCase']()[_0x14b0d9(0xe2)](_0x14b0d9(0x1ad))||_0x224734 instanceof Error&&_0x224734['name']===_0x14b0d9(0x12f);return reportMorphError({'error_message':_0x5f1819,'error_type':_0x52323d?_0x14b0d9(0x12f):_0x224734 instanceof Error?_0x224734[_0x14b0d9(0x11e)][_0x14b0d9(0x188)]:_0x14b0d9(0x156),'context':{'tool':'codebase_search','repo_path':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)],'query':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'model':_0x14b0d9(0x181),'is_timeout':_0x52323d,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'repo_path':_0x38c771[_0x14b0d9(0x12b)][_0x14b0d9(0xdc)],'repoRoot':a0_0x5748e1[_0x14b0d9(0x1d2)](_0x38c771[_0x14b0d9(0x12b)]['repo_path']),'model':_0x14b0d9(0x181)}},'stack_trace':_0x224734 instanceof Error?_0x224734[_0x14b0d9(0x14c)]:undefined,'source':_0x14b0d9(0xdb)})[_0x14b0d9(0x19c)](()=>{}),{'content':[{'type':_0x14b0d9(0xd9),'text':_0x14b0d9(0x1cf)+_0x5f1819}],'isError':![]};}}case TOOL_NAMES['GITHUB_CODEBASE_SEARCH']:{const _0x180938=WarpGrepGitHubArgsSchema[_0x14b0d9(0x147)](_0x1888ae);if(!_0x180938[_0x14b0d9(0x1dd)])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x180938[_0x14b0d9(0x172)]}],'isError':!![]};const _0x300827=_0x180938[_0x14b0d9(0x12b)][_0x14b0d9(0x11c)]||_0x180938['data']['owner_repo'];if(!_0x300827)return{'content':[{'type':_0x14b0d9(0xd9),'text':_0x14b0d9(0x1be)}],'isError':!![]};const _0x3d6d95=MORPH_API_KEY;if(!_0x3d6d95)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x4545a7=Date['now']();logger['debug'](_0x14b0d9(0x177),_0x14b0d9(0x191),{'identifier':_0x300827,'query':_0x180938[_0x14b0d9(0x12b)]['search_string'],'branch':_0x180938[_0x14b0d9(0x12b)]['branch']});try{const _0x3f8bf8=new WarpGrepClient({'morphApiKey':_0x3d6d95,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x132168=await _0x3f8bf8[_0x14b0d9(0x11f)]({'searchTerm':_0x180938[_0x14b0d9(0x12b)]['search_string'],'github':_0x300827,'branch':_0x180938[_0x14b0d9(0x12b)]['branch']}),_0x22ef68=Date['now']()-_0x4545a7;logMcpStderr(_0x14b0d9(0x1af)+_0x22ef68+_0x14b0d9(0x1e3)+_0x132168['success']);const _0x4c7546=formatResult(_0x132168);return{'content':[{'type':_0x14b0d9(0xd9),'text':_0x4c7546}]};}catch(_0x2c2960){const _0x3923af=handleMorphAPIError(_0x2c2960);if(_0x3923af)return _0x3923af;const _0x2cec4b=Date[_0x14b0d9(0x200)]()-_0x4545a7,_0x1eadb3=_0x2c2960 instanceof Error?_0x2c2960[_0x14b0d9(0x1a9)]:String(_0x2c2960);return logMcpStderr(_0x14b0d9(0x119)+_0x2cec4b+'ms:',_0x1eadb3),reportMorphError({'error_message':_0x1eadb3,'error_type':_0x2c2960 instanceof Error?_0x2c2960[_0x14b0d9(0x11e)][_0x14b0d9(0x188)]:'UnknownError','context':{'tool':_0x14b0d9(0x182),'github_url':_0x300827,'search_string':_0x180938[_0x14b0d9(0x12b)][_0x14b0d9(0x117)],'branch':_0x180938[_0x14b0d9(0x12b)][_0x14b0d9(0x1f7)]},'stack_trace':_0x2c2960 instanceof Error?_0x2c2960['stack']:undefined,'source':_0x14b0d9(0xdb),'tool':'github_codebase_search','latency_ms':_0x2cec4b})[_0x14b0d9(0x19c)](()=>{}),{'content':[{'type':_0x14b0d9(0xd9),'text':_0x14b0d9(0x19f)+_0x1eadb3}],'isError':![]};}}default:throw new Error(_0x14b0d9(0x17b)+_0x16603f);}}catch(_0x4d0735){const _0x16f040=_0x4d0735 instanceof Error?_0x4d0735[_0x14b0d9(0x1a9)]:String(_0x4d0735);return reportMorphError({'error_message':_0x16f040,'error_type':_0x4d0735 instanceof Error?_0x4d0735[_0x14b0d9(0x11e)][_0x14b0d9(0x188)]:_0x14b0d9(0x156),'context':{'tool':_0x16603f,'arguments':_0x1888ae?JSON[_0x14b0d9(0x1b4)](_0x1888ae)[_0x14b0d9(0x1a2)](0x0,0x1f4):undefined,'mcp_server_version':_0x14b0d9(0x17f)},'stack_trace':_0x4d0735 instanceof Error?_0x4d0735[_0x14b0d9(0x14c)]:undefined,'source':_0x14b0d9(0xdb)})[_0x14b0d9(0x19c)](()=>{}),{'content':[{'type':_0x14b0d9(0xd9),'text':'Error:\x20'+_0x16f040}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0xeff3ad){const _0x181a2c=a0_0x3e026d,_0x1f4997=await getValidRootDirectories(_0xeff3ad);if(_0x1f4997[_0x181a2c(0x10c)]>0x0)allowedDirectories=[..._0x1f4997],logMcpStderr(_0x181a2c(0x1b2)+_0x1f4997[_0x181a2c(0x10c)]+_0x181a2c(0x150));else{logMcpStderr(_0x181a2c(0x125));if(ENABLE_WORKSPACE_MODE)try{const _0x566d26=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x566d26&&(allowedDirectories=[_0x566d26],logMcpStderr(_0x181a2c(0x107)+_0x566d26));}catch(_0x5d1034){logMcpStderr(_0x181a2c(0x1b0)+_0x5d1034);}}}server[a0_0x3e026d(0x15e)](RootsListChangedNotificationSchema,async()=>{const _0x56a2a0=a0_0x3e026d;try{const _0x589af8=await server[_0x56a2a0(0x1c8)]();_0x589af8&&_0x56a2a0(0x136)in _0x589af8&&await updateAllowedDirectoriesFromRoots(_0x589af8[_0x56a2a0(0x136)]);}catch(_0x5731f1){logMcpStderr(_0x56a2a0(0x1c3),_0x5731f1 instanceof Error?_0x5731f1['message']:String(_0x5731f1));}}),server[a0_0x3e026d(0x110)]=async()=>{const _0x5a94e1=a0_0x3e026d,_0x5e14ca=server[_0x5a94e1(0x176)]();if(_0x5e14ca?.[_0x5a94e1(0x136)])try{const _0x3bc3d2=await server[_0x5a94e1(0x1c8)]();_0x3bc3d2&&_0x5a94e1(0x136)in _0x3bc3d2?await updateAllowedDirectoriesFromRoots(_0x3bc3d2[_0x5a94e1(0x136)]):logMcpStderr(_0x5a94e1(0x133));}catch(_0x4b023a){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x4b023a instanceof Error?_0x4b023a[_0x5a94e1(0x1a9)]:String(_0x4b023a));}else{if(allowedDirectories[_0x5a94e1(0x10c)]>0x0)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x5a94e1(0x116));else throw new Error(_0x5a94e1(0x18f));}}};async function runServer(){const _0x27e674=a0_0x3e026d,_0x172f32=new StdioServerTransport();await server['connect'](_0x172f32),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x27e674(0x10c)]===0x0&&logMcpStderr(_0x27e674(0x143));}runServer()['catch'](_0x24abdb=>{const _0x29e136=a0_0x3e026d;logMcpStderr(_0x29e136(0x15f),_0x24abdb),process['exit'](0x1);});
|
|
2
|
+
const a0_0xc88ac9=a0_0xaecf;(function(_0x20e87c,_0x423f17){const _0x50dc6b=a0_0xaecf,_0x443a8a=_0x20e87c();while(!![]){try{const _0x53b668=-parseInt(_0x50dc6b(0x172))/0x1+-parseInt(_0x50dc6b(0x1a4))/0x2*(parseInt(_0x50dc6b(0x1c2))/0x3)+parseInt(_0x50dc6b(0x18c))/0x4*(parseInt(_0x50dc6b(0x24b))/0x5)+parseInt(_0x50dc6b(0x19c))/0x6*(parseInt(_0x50dc6b(0x1ed))/0x7)+parseInt(_0x50dc6b(0x22b))/0x8+-parseInt(_0x50dc6b(0x1c5))/0x9*(-parseInt(_0x50dc6b(0x179))/0xa)+-parseInt(_0x50dc6b(0x158))/0xb;if(_0x53b668===_0x423f17)break;else _0x443a8a['push'](_0x443a8a['shift']());}catch(_0x2049cd){_0x443a8a['push'](_0x443a8a['shift']());}}}(a0_0x579d,0x9364b));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_0x38ee0b from'fs/promises';import a0_0x2fcbcf from'path';import a0_0x5b5c6e from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{logger}from'./logger.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';function a0_0x579d(){const _0x251cad=['timeout','ToolException','MORPH_WARP_GREP_TIMEOUT','success','<file\x20path=\x22','mcp-filesystem','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','arguments','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','--help','package.json','api-key','read','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','constructor','toLowerCase','grep\x20\x27','safeParse','sep','Error\x20running\x20fast\x20context\x20search:\x20','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','36177wrosFP','MORPH_API_KEY','github_codebase_search','26154Mpmwmj','normalize','github_search_start','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','morph-mcp','target_filepath','list_directory','branch','.\x20Path:\x20','catch','search_type','basename','file','tool_call_received','data','api_request_start','-\x20Preserve\x20exact\x20indentation\x0a','glob','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','Fallback:\x20Using\x20workspace\x20root\x20','ENOENT','application/json','realpath','error','user','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','TimeoutError','\x0aExamples:','MORPH_LARGE_APPLY','morph-','0.2.0','indexOf','errors','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','utf-8','Failed\x20to\x20request\x20roots\x20from\x20client:','BinaryFile','filter','response','dryRun','7875PRCRaL','boolean','❌\x20Morph\x20Edit\x20Failed:\x20','Unknown\x20tool:\x20','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','SymlinkError','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','compaction_failed','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','@morphllm/morphmcp\x20','lines','oninitialized','isArray','grep_search','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','unknown','tsconfig.json','split','-\x20Glob\x20search\x20`','.git','\x22.\x20Known\x20tools:\x20','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','array','UnknownError','sk-','dirname','morph-warp-grep-v2.1','PathError','log','access','\x0a</file>','Workspace\x20mode\x20enabled:\x20Using\x20','size','.\x20Changes:\x20','edit','Relevant\x20context\x20found:','min','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','readFile','API\x20error\x20(auth/rate-limit)','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','https://morphllm.com/api/error-report','provider_created','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','requiresApiKey','file_read_complete','FileNotFound','new_string','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Morph\x20Edit\x20Preview','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.','stack','\x20disabled\x20via\x20DISABLED_TOOLS','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','params','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','assistant','tool_call_error','filePath','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','7072560qhXVaU','changes','\x22>\x0aError\x20reading\x20file:\x20','setNotificationHandler','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','\x0aOptions:','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','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','Warning:\x20','Applied','terminated','map','path_validation_resolved','File\x20read\x20error:','finish','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','[github_codebase_search]\x20Failed\x20in\x20','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.','Specific\x20commit\x20hash\x20to\x20search','tool_calls','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','\x27\x20in\x20`','instruction','path_validation_failed','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','optional','text','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','version','messages','read\x20','--api-key=','2748905eXEGch','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.','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.','completionId','SubToolError','\x20chars)','../package.json','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','-\x20Grepped\x20\x27','Example\x20format:\x0a','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','completed_with_file_errors','object','RipgrepError','Morph\x20FastApply\x20failed\x20without\x20error\x20message','ReadError','\x0a...\x20(truncated,\x20total:\x20','Created\x20File','number','CODEBASE_SEARCH','Cargo.toml','env','morph-v3-large','warn','string','unknown\x20error','function','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Disabled\x20tools:\x20','composer.json','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','timings','`\x20in\x20`','RipgrepNotAvailable','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','Invalid\x20arguments:\x20','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','searchGitHub','terminationReason','\x20valid\x20directories','linesModified','--api-key','repo_path','message','files','post','has','Parent\x20directory\x20does\x20not\x20exist:\x20','describe','setRequestHandler','inputSchema','join','Warning:\x20Workspace\x20fallback\x20failed:\x20','Error:\x20','GitHub\x20search\x20failed:\x20','default','LocalRipgrepProvider','MCP','\x22>\x0a','13624512HLShfl','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.','morph-v3-fast','payload','MORPH_API_URL','metadata','grep','DISABLED_TOOLS','toISOString','role','context','Tool\x20','false','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','startsWith','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','ENABLE_WORKSPACE_MODE','homedir','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','pattern','WarpGrep\x20sub-tool\x20errors:\x20','Bearer\x20','exit','length','now','substring','827195WqTZao','enum','\x20(new\x20file)','parse','isDirectory','linesAdded','status','1010DzBgxF','match','codebase_search','resolve','name','Repository\x20identifier','slice','timed\x20out',',\x20removed\x20','[could\x20not\x20read\x20file:\x20','-\x20Listed\x20directory\x20`','node_modules','tool_call_id','**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','-\x20Read\x20file\x20`','.vscode','code_edit','description','owner_repo','8sXqUdj','push','file_path','Here\x20is\x20the\x20content\x20of\x20files:\x0a','roots','tool','--version','linesRemoved','etimedout','search_string','Fatal\x20error\x20running\x20server:','debug','Failed\x20to\x20read\x20file:\x20','Unknown\x20error','FileReadError','cwd','3186skYbuN','content','[github_codebase_search]\x20Done\x20in\x20','github_url','instructions','argv','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','includes','34NKbFiF','command','completed','edit_file','Error\x20accessing\x20directory\x20','connect','\x20\x20morph-mcp','path'];a0_0x579d=function(){return _0x251cad;};return a0_0x579d();}import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x260df5 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x3798e6){const _0xde5763=a0_0xaecf,_0x3fad36=_0x3798e6[_0xde5763(0x1ff)](a0_0x2fcbcf[_0xde5763(0x1bf)])[_0xde5763(0x1ea)](Boolean);if(_0x3fad36[_0xde5763(0x16f)]<0x2)return null;for(let _0x1f1b1a=Math['floor'](_0x3fad36['length']/0x2);_0x1f1b1a>=0x1;_0x1f1b1a--){for(let _0xb2c63=0x0;_0xb2c63<=_0x3fad36['length']-0x2*_0x1f1b1a;_0xb2c63++){const _0x349157=_0x3fad36[_0xde5763(0x17f)](_0xb2c63,_0xb2c63+_0x1f1b1a),_0x26bc90=_0x3fad36['slice'](_0xb2c63+_0x1f1b1a,_0xb2c63+0x2*_0x1f1b1a);if(_0x349157['every']((_0x2decdd,_0x2c1f07)=>_0x2decdd===_0x26bc90[_0x2c1f07])){const _0x5af69e=[..._0x3fad36[_0xde5763(0x17f)](0x0,_0xb2c63),..._0x3fad36[_0xde5763(0x17f)](_0xb2c63+_0x1f1b1a)];return a0_0x2fcbcf[_0xde5763(0x1bf)]+_0x5af69e['join'](a0_0x2fcbcf[_0xde5763(0x1bf)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x2a30a7=a0_0xaecf;try{const _0x2c4aba=require(_0x2a30a7(0x251));return _0x2c4aba[_0x2a30a7(0x247)]??_0x2a30a7(0x1fd);}catch(_0x12d452){return logMcpStderr(_0x2a30a7(0x22f),_0x12d452),_0x2a30a7(0x1fd);}}function printHelp(){const _0x4feef5=a0_0xaecf;console[_0x4feef5(0x20a)](_0x4feef5(0x1f6)+getPackageVersion()),console['log'](_0x4feef5(0x1fc)),console[_0x4feef5(0x20a)](_0x4feef5(0x230)),console[_0x4feef5(0x20a)](_0x4feef5(0x225)),console[_0x4feef5(0x20a)]('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0x4feef5(0x20a)](_0x4feef5(0x26d)),console[_0x4feef5(0x20a)](_0x4feef5(0x1e0)),console[_0x4feef5(0x20a)](_0x4feef5(0x1aa)),console[_0x4feef5(0x20a)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0xc88ac9(0x1a1)][a0_0xc88ac9(0x17f)](0x2),VERSION_FLAGS=new Set([a0_0xc88ac9(0x192),'-v','-V']),HELP_FLAGS=new Set([a0_0xc88ac9(0x1b5),'-h']);cliArgs['some'](_0x3fe0c4=>VERSION_FLAGS['has'](_0x3fe0c4))&&(console[a0_0xc88ac9(0x20a)](a0_0xc88ac9(0x1f6)+getPackageVersion()),process[a0_0xc88ac9(0x16e)](0x0));cliArgs['some'](_0x5364e4=>HELP_FLAGS[a0_0xc88ac9(0x27a)](_0x5364e4))&&(printHelp(),process[a0_0xc88ac9(0x16e)](0x0));function getCliArg(_0x3161f7){const _0x24ae3a=a0_0xc88ac9;for(let _0x45f702=0x0;_0x45f702<cliArgs[_0x24ae3a(0x16f)];_0x45f702++){const _0x3d5b79=cliArgs[_0x45f702];if(_0x3d5b79['startsWith']('--'+_0x3161f7+'='))return _0x3d5b79['slice'](('--'+_0x3161f7+'=')[_0x24ae3a(0x16f)]);if(_0x3d5b79==='--'+_0x3161f7&&_0x45f702+0x1<cliArgs['length'])return cliArgs[_0x45f702+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0xc88ac9(0x16f)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0xc88ac9(0x27a)](arg)||HELP_FLAGS['has'](arg))continue;if(arg[a0_0xc88ac9(0x166)](a0_0xc88ac9(0x24a)))continue;if(arg===a0_0xc88ac9(0x275)){i++;continue;}args[a0_0xc88ac9(0x18d)](arg);}const WORKSPACE_ROOT=process[a0_0xc88ac9(0x260)]['WORKSPACE_ROOT']||process[a0_0xc88ac9(0x260)]['PWD']||process[a0_0xc88ac9(0x19b)](),ENABLE_WORKSPACE_MODE=process['env'][a0_0xc88ac9(0x168)]!==a0_0xc88ac9(0x164),MORPH_API_KEY=getCliArg(a0_0xc88ac9(0x1b7))??process[a0_0xc88ac9(0x260)][a0_0xc88ac9(0x1c3)],MORPH_API_URL=process[a0_0xc88ac9(0x260)][a0_0xc88ac9(0x15c)],MORPH_LARGE_APPLY=process['env'][a0_0xc88ac9(0x1e1)]!==a0_0xc88ac9(0x164),MORPH_WARP_GREP_TIMEOUT=process['env']['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0xc88ac9(0x260)][a0_0xc88ac9(0x1ae)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0xc88ac9(0x260)][a0_0xc88ac9(0x15f)]?new Set(process[a0_0xc88ac9(0x260)][a0_0xc88ac9(0x15f)][a0_0xc88ac9(0x1ff)](',')[a0_0xc88ac9(0x236)](_0x459f8a=>_0x459f8a['trim']())[a0_0xc88ac9(0x1ea)](_0xa79574=>_0xa79574[a0_0xc88ac9(0x16f)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0xc88ac9(0x20e)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0xc88ac9(0x1dc)](a0_0xc88ac9(0x1d7)+tool+a0_0xc88ac9(0x202)+[...KNOWN_TOOL_NAMES][a0_0xc88ac9(0x27f)](',\x20'));}console[a0_0xc88ac9(0x1dc)](a0_0xc88ac9(0x267)+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0xc88ac9(0x166)]('sk-')&&!MORPH_API_KEY[a0_0xc88ac9(0x166)](a0_0xc88ac9(0x1e2))&&logMcpStderr(a0_0xc88ac9(0x216));async function reportMorphError(_0x45035b){const _0x1e188b=a0_0xc88ac9;try{await a0_0x260df5[_0x1e188b(0x279)](_0x1e188b(0x217),{..._0x45035b,'timestamp':new Date()[_0x1e188b(0x160)](),'source':_0x45035b['source']||_0x1e188b(0x1b1),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x45035b[_0x1e188b(0x162)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x1e188b(0x1da),'Authorization':_0x1e188b(0x16d)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x33ccf9,_0x5ba7f8){const _0x54f55e=a0_0xc88ac9;if(_0x33ccf9&&typeof _0x33ccf9===_0x54f55e(0x257)&&_0x54f55e(0x178)in _0x33ccf9)return _0x33ccf9[_0x54f55e(0x178)];if(_0x33ccf9&&typeof _0x33ccf9===_0x54f55e(0x257)&&_0x54f55e(0x1eb)in _0x33ccf9)return _0x33ccf9[_0x54f55e(0x1eb)]?.['status'];const _0x40d2e8=_0x5ba7f8[_0x54f55e(0x17a)](/\b(401|429)\b/);return _0x40d2e8?parseInt(_0x40d2e8[0x1],0xa):null;}function handleMorphAPIError(_0x19652a){const _0xa81595=a0_0xc88ac9,_0x36f93f=_0x19652a instanceof Error?_0x19652a[_0xa81595(0x277)]:String(_0x19652a),_0x1ed314=extractStatusCode(_0x19652a,_0x36f93f);switch(_0x1ed314){case 0x191:return{'content':[{'type':'text','text':_0xa81595(0x220)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0xa81595(0x245),'text':_0xa81595(0x26f)}],'isError':!![]};default:return null;}}args[a0_0xc88ac9(0x16f)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0xc88ac9(0x255)),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr(a0_0xc88ac9(0x1f1)),logMcpStderr(a0_0xc88ac9(0x22a)),logMcpStderr(a0_0xc88ac9(0x213)),logMcpStderr(a0_0xc88ac9(0x232)));function normalizePath(_0x421017){const _0xbae44d=a0_0xc88ac9;return a0_0x2fcbcf[_0xbae44d(0x1c6)](_0x421017);}function expandHome(_0x4ec92b){const _0x166493=a0_0xc88ac9;if(_0x4ec92b[_0x166493(0x166)]('~/')||_0x4ec92b==='~')return a0_0x2fcbcf['join'](a0_0x5b5c6e[_0x166493(0x169)](),_0x4ec92b[_0x166493(0x17f)](0x1));return _0x4ec92b;}let allowedDirectories=await Promise['all'](args['map'](async _0x2a113e=>{const _0x3280da=a0_0xc88ac9,_0x4d0fbf=expandHome(_0x2a113e),_0x3025e8=a0_0x2fcbcf[_0x3280da(0x17c)](_0x4d0fbf);try{const _0x2c35e1=await a0_0x38ee0b[_0x3280da(0x1db)](_0x3025e8);return normalizePath(_0x2c35e1);}catch(_0x44d67f){return normalizePath(_0x3025e8);}}));function a0_0xaecf(_0x2b4e99,_0x79d43f){_0x2b4e99=_0x2b4e99-0x155;const _0x579d48=a0_0x579d();let _0xaecf6c=_0x579d48[_0x2b4e99];return _0xaecf6c;}if(ENABLE_WORKSPACE_MODE&&args[a0_0xc88ac9(0x16f)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0xc88ac9(0x18d)](workspaceDir),logMcpStderr(a0_0xc88ac9(0x20d)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x5e09b3){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x5e09b3);}async function detectWorkspaceRoot(_0x255a9c){const _0x19e2e6=a0_0xc88ac9;let _0x3765d3=a0_0x2fcbcf['resolve'](_0x255a9c);const _0x281680=[_0x19e2e6(0x201),_0x19e2e6(0x188),_0x19e2e6(0x1b6),_0x19e2e6(0x25f),'pyproject.toml','go.mod','.cursor',_0x19e2e6(0x1fe),_0x19e2e6(0x268)];while(_0x3765d3!==a0_0x2fcbcf['dirname'](_0x3765d3)){for(const _0x5c5a49 of _0x281680){const _0x7a7ebb=a0_0x2fcbcf[_0x19e2e6(0x27f)](_0x3765d3,_0x5c5a49);try{return await a0_0x38ee0b[_0x19e2e6(0x20b)](_0x7a7ebb),normalizePath(_0x3765d3);}catch{}}_0x3765d3=a0_0x2fcbcf[_0x19e2e6(0x207)](_0x3765d3);}return normalizePath(_0x255a9c);}await Promise['all'](args[a0_0xc88ac9(0x236)](async _0x1d589c=>{const _0x47ebb8=a0_0xc88ac9;try{const _0x32ade2=await a0_0x38ee0b['stat'](expandHome(_0x1d589c));!_0x32ade2[_0x47ebb8(0x176)]()&&(logMcpStderr(_0x47ebb8(0x281)+_0x1d589c+'\x20is\x20not\x20a\x20directory'),process[_0x47ebb8(0x16e)](0x1));}catch(_0x51ea45){logMcpStderr(_0x47ebb8(0x1a8)+_0x1d589c+':',_0x51ea45),process[_0x47ebb8(0x16e)](0x1);}}));async function validatePath(_0x442334){const _0x3d69bc=a0_0xc88ac9,_0x2936b1=expandHome(_0x442334),_0x3bbeb0=a0_0x2fcbcf['resolve'](_0x2936b1);logger[_0x3d69bc(0x197)](_0x3d69bc(0x156),'path_validation_start',{'raw_path':_0x442334,'absolute':_0x3bbeb0});try{const _0x155421=await a0_0x38ee0b['realpath'](_0x3bbeb0);return logger['debug'](_0x3d69bc(0x156),_0x3d69bc(0x237),{'resolved':_0x155421,'symlink':_0x155421!==_0x3bbeb0}),_0x155421;}catch(_0x4963a2){if(_0x4963a2['code']===_0x3d69bc(0x1d9)){const _0x1ee7e1=a0_0x2fcbcf[_0x3d69bc(0x207)](_0x3bbeb0);try{const _0x58c7b2=await a0_0x38ee0b[_0x3d69bc(0x1db)](_0x1ee7e1),_0x10abe4=a0_0x2fcbcf[_0x3d69bc(0x27f)](_0x58c7b2,a0_0x2fcbcf[_0x3d69bc(0x1d0)](_0x3bbeb0));return logger[_0x3d69bc(0x197)](_0x3d69bc(0x156),_0x3d69bc(0x237),{'resolved':_0x10abe4,'new_file':!![]}),_0x10abe4;}catch{logger[_0x3d69bc(0x1dc)]('MCP',_0x3d69bc(0x242),{'raw_path':_0x442334,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x1ee7e1});throw new Error(_0x3d69bc(0x27b)+_0x1ee7e1);}}logger['error'](_0x3d69bc(0x156),'path_validation_failed',{'raw_path':_0x442334,'error':_0x4963a2['message']});throw _0x4963a2;}}const MorphEditFileArgsSchema=z[a0_0xc88ac9(0x257)]({'path':z[a0_0xc88ac9(0x263)](),'code_edit':z[a0_0xc88ac9(0x263)]()[a0_0xc88ac9(0x27c)](a0_0xc88ac9(0x246)),'instruction':z[a0_0xc88ac9(0x263)]()[a0_0xc88ac9(0x27c)](a0_0xc88ac9(0x223)),'dryRun':z[a0_0xc88ac9(0x1ee)]()['default'](![])[a0_0xc88ac9(0x27c)]('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0xc88ac9(0x24c),WarpGrepArgsSchema=z[a0_0xc88ac9(0x257)]({'search_string':z['string']()[a0_0xc88ac9(0x27c)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0xc88ac9(0x27c)](a0_0xc88ac9(0x1b4)),'search_type':z[a0_0xc88ac9(0x173)](['default',a0_0xc88ac9(0x184)])[a0_0xc88ac9(0x244)]()[a0_0xc88ac9(0x27c)](a0_0xc88ac9(0x252))}),WarpGrepGitHubArgsSchema=z[a0_0xc88ac9(0x257)]({'search_string':z[a0_0xc88ac9(0x263)]()[a0_0xc88ac9(0x27c)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0xc88ac9(0x263)]()[a0_0xc88ac9(0x244)]()['describe'](a0_0xc88ac9(0x159)),'owner_repo':z['string']()[a0_0xc88ac9(0x244)]()['describe'](a0_0xc88ac9(0x1c8)),'branch':z[a0_0xc88ac9(0x263)]()[a0_0xc88ac9(0x244)]()[a0_0xc88ac9(0x27c)](a0_0xc88ac9(0x226))}),CodebaseSearchArgsSchema=z[a0_0xc88ac9(0x257)]({'query':z[a0_0xc88ac9(0x263)]()[a0_0xc88ac9(0x27c)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0xc88ac9(0x263)]()[a0_0xc88ac9(0x27c)](a0_0xc88ac9(0x17e)),'branch':z[a0_0xc88ac9(0x263)]()[a0_0xc88ac9(0x244)]()[a0_0xc88ac9(0x27c)](a0_0xc88ac9(0x1b9)),'commitHash':z[a0_0xc88ac9(0x263)]()[a0_0xc88ac9(0x244)]()['describe'](a0_0xc88ac9(0x23d)),'targetDirectories':z[a0_0xc88ac9(0x204)](z[a0_0xc88ac9(0x263)]())[a0_0xc88ac9(0x283)]([])[a0_0xc88ac9(0x27c)](a0_0xc88ac9(0x1f3)),'limit':z[a0_0xc88ac9(0x25d)]()[a0_0xc88ac9(0x244)]()[a0_0xc88ac9(0x283)](0xa)['describe']('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0xc88ac9(0x1c9),'version':a0_0xc88ac9(0x1e3)},{'capabilities':{'tools':{}}});server[a0_0xc88ac9(0x27d)](ListToolsRequestSchema,async()=>{const _0x15bc47=a0_0xc88ac9,_0x4e5e65=[{'name':TOOL_NAMES['EDIT_FILE'],'description':_0x15bc47(0x186)+'Parameters:\x0a'+_0x15bc47(0x1b2)+'-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a'+_0x15bc47(0x167)+_0x15bc47(0x231)+_0x15bc47(0x254)+_0x15bc47(0x203)+'Rules:\x0a'+'-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a'+_0x15bc47(0x1d5)+_0x15bc47(0x1de)+_0x15bc47(0x266),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x15bc47(0x25e)],'description':_0x15bc47(0x269)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x15bc47(0x1f5)+_0x15bc47(0x219)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x73a303=_0x4e5e65[_0x15bc47(0x1ea)](_0x232aa1=>{const _0x40ba9c=_0x15bc47;if(DISABLED_TOOLS[_0x40ba9c(0x27a)](_0x232aa1[_0x40ba9c(0x17d)]))return console['error'](_0x40ba9c(0x163)+_0x232aa1[_0x40ba9c(0x17d)]+_0x40ba9c(0x222)),![];if(_0x40ba9c(0x21a)in _0x232aa1&&_0x232aa1[_0x40ba9c(0x21a)]&&!MORPH_API_KEY)return logMcpStderr(_0x40ba9c(0x233)+_0x232aa1[_0x40ba9c(0x17d)]+_0x40ba9c(0x1e6)),![];return!![];});return{'tools':_0x73a303[_0x15bc47(0x236)](_0x169b30=>({'name':_0x169b30[_0x15bc47(0x17d)],'description':_0x169b30[_0x15bc47(0x18a)],'inputSchema':_0x169b30[_0x15bc47(0x27e)]}))};}),server[a0_0xc88ac9(0x27d)](CallToolRequestSchema,async _0x44c039=>{const _0x32a950=a0_0xc88ac9,{name:_0x5ec9b5,arguments:_0x245588}=_0x44c039[_0x32a950(0x224)],_0x44c3bf=Date['now']();logger['debug']('MCP',_0x32a950(0x1d2),{'tool':_0x5ec9b5,'args':_0x5ec9b5===_0x32a950(0x1a7)?{'path':_0x245588?.[_0x32a950(0x1ab)],'instruction':_0x245588?.[_0x32a950(0x241)]||_0x245588?.['instructions'],'dryRun':_0x245588?.[_0x32a950(0x1ec)]}:_0x245588});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x32a950(0x245),'text':_0x32a950(0x1c1)}],'isError':!![]};if(!MORPH_API_KEY[_0x32a950(0x166)](_0x32a950(0x206))&&!MORPH_API_KEY[_0x32a950(0x166)](_0x32a950(0x1e2)))return{'content':[{'type':_0x32a950(0x245),'text':_0x32a950(0x24d)}],'isError':!![]};if(DISABLED_TOOLS[_0x32a950(0x27a)](_0x5ec9b5))return{'content':[{'type':'text','text':'Tool\x20\x22'+_0x5ec9b5+'\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.'}],'isError':![]};switch(_0x5ec9b5){case TOOL_NAMES['EDIT_FILE']:{let _0x282c5f=_0x245588;if(_0x282c5f&&typeof _0x282c5f==='object'){if(!(_0x32a950(0x1ab)in _0x282c5f)){const _0x21acb2=_0x282c5f['target_file']??_0x282c5f[_0x32a950(0x229)]??_0x282c5f[_0x32a950(0x1ca)]??_0x282c5f[_0x32a950(0x18e)]??_0x282c5f[_0x32a950(0x1d1)];if(_0x21acb2)_0x282c5f={..._0x282c5f,'path':_0x21acb2};}_0x32a950(0x1a0)in _0x282c5f&&!(_0x32a950(0x241)in _0x282c5f)&&(_0x282c5f={..._0x282c5f,'instruction':_0x282c5f[_0x32a950(0x1a0)]});if(!(_0x32a950(0x189)in _0x282c5f)){const _0x4584a1=_0x282c5f['code']??_0x282c5f[_0x32a950(0x21d)]??_0x282c5f[_0x32a950(0x19d)]??_0x282c5f[_0x32a950(0x210)];if(_0x4584a1)_0x282c5f={..._0x282c5f,'code_edit':_0x4584a1};}}const _0x744aec=MorphEditFileArgsSchema[_0x32a950(0x1be)](_0x282c5f);if(!_0x744aec[_0x32a950(0x1af)])throw new Error(_0x32a950(0x270)+_0x744aec[_0x32a950(0x1dc)]);const _0x539ff0=await validatePath(_0x744aec[_0x32a950(0x1d3)][_0x32a950(0x1ab)]);let _0x93ccb=null,_0x12d48f=!![],_0x11caf5=null;try{_0x93ccb=await a0_0x38ee0b[_0x32a950(0x214)](_0x539ff0,'utf-8'),logger[_0x32a950(0x197)](_0x32a950(0x156),'file_read_complete',{'path':_0x539ff0,'size_bytes':_0x93ccb['length']});}catch(_0x8f131a){const _0x255eca=_0x8f131a['code'];_0x255eca==='ENOENT'?(_0x12d48f=![],_0x93ccb='',logger[_0x32a950(0x197)](_0x32a950(0x156),_0x32a950(0x21b),{'path':_0x539ff0,'exists':![]})):(_0x11caf5=_0x32a950(0x198)+(_0x255eca||_0x32a950(0x1fd))+'\x20-\x20'+(_0x8f131a instanceof Error?_0x8f131a[_0x32a950(0x277)]:String(_0x8f131a)),logger[_0x32a950(0x1dc)](_0x32a950(0x156),'file_read_failed',{'path':_0x539ff0,'error':_0x11caf5}),logMcpStderr(_0x32a950(0x233)+_0x11caf5));}let _0x372bd3;try{const _0x349e64=MORPH_API_KEY;if(!_0x349e64)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x2bd79f=a0_0x2fcbcf[_0x32a950(0x207)](_0x539ff0),_0x20a54a=a0_0x2fcbcf[_0x32a950(0x1d0)](_0x539ff0);logger[_0x32a950(0x197)](_0x32a950(0x156),_0x32a950(0x1d4),{'model':_0x32a950(0x15a),'path':_0x744aec[_0x32a950(0x1d3)][_0x32a950(0x1ab)],'instruction_len':_0x744aec[_0x32a950(0x1d3)]['instruction'][_0x32a950(0x16f)],'code_edit_len':_0x744aec['data'][_0x32a950(0x189)][_0x32a950(0x16f)],'original_code_len':_0x93ccb?.[_0x32a950(0x16f)]??0x0,'dry_run':_0x744aec['data'][_0x32a950(0x1ec)]});const _0x2c98a0=Date[_0x32a950(0x170)](),_0x4b321f=await executeEditFile({'target_filepath':_0x20a54a,'code_edit':_0x744aec[_0x32a950(0x1d3)]['code_edit'],'instruction':_0x744aec[_0x32a950(0x1d3)][_0x32a950(0x241)]},{'morphApiKey':_0x349e64,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x2bd79f,'autoWrite':!_0x744aec[_0x32a950(0x1d3)]['dryRun'],'generateUdiff':![],'debug':![]}),_0xc05998=Date[_0x32a950(0x170)]()-_0x2c98a0;_0x372bd3=_0x4b321f[_0x32a950(0x24e)];if(!_0x4b321f[_0x32a950(0x1af)])throw new Error(_0x4b321f[_0x32a950(0x1dc)]||_0x32a950(0x259));const _0x414fdc=_0x4b321f[_0x32a950(0x22c)],_0x3f8289='added\x20'+_0x414fdc[_0x32a950(0x177)]+_0x32a950(0x181)+_0x414fdc[_0x32a950(0x193)]+',\x20modified\x20'+_0x414fdc[_0x32a950(0x274)];logger[_0x32a950(0x197)](_0x32a950(0x156),'tool_call_complete',{'tool':'edit_file','success':!![],'latency_ms':Date[_0x32a950(0x170)]()-_0x44c3bf,'edit_latency_ms':_0xc05998,'changes':{'added':_0x414fdc[_0x32a950(0x177)],'removed':_0x414fdc[_0x32a950(0x193)],'modified':_0x414fdc[_0x32a950(0x274)]},'completion_id':_0x372bd3});if(_0x744aec[_0x32a950(0x1d3)][_0x32a950(0x1ec)])return{'content':[{'type':_0x32a950(0x245),'text':_0x32a950(0x21f)+(_0x12d48f?'':_0x32a950(0x174))+':\x20'+_0x744aec[_0x32a950(0x1d3)][_0x32a950(0x241)]+_0x32a950(0x20f)+_0x3f8289+_0x32a950(0x1cd)+_0x744aec[_0x32a950(0x1d3)][_0x32a950(0x1ab)]+'.'}]};return{'content':[{'type':'text','text':'Morph\x20Edit\x20'+(_0x12d48f?_0x32a950(0x234):_0x32a950(0x25c))+':\x20'+_0x744aec['data'][_0x32a950(0x241)]+_0x32a950(0x20f)+_0x3f8289+_0x32a950(0x1cd)+_0x744aec['data'][_0x32a950(0x1ab)]+'.'}]};}catch(_0x1e4346){const _0x27257a=handleMorphAPIError(_0x1e4346);if(_0x27257a)return logger['error']('MCP',_0x32a950(0x228),{'tool':'edit_file','error':_0x32a950(0x215),'latency_ms':Date['now']()-_0x44c3bf}),_0x27257a;const _0x51afa9=_0x1e4346 instanceof Error?_0x1e4346[_0x32a950(0x277)]:String(_0x1e4346);return logger[_0x32a950(0x1dc)]('MCP',_0x32a950(0x228),{'tool':_0x32a950(0x1a7),'error':_0x51afa9,'path':_0x744aec[_0x32a950(0x1d3)]['path'],'validated_path':_0x539ff0,'latency_ms':Date[_0x32a950(0x170)]()-_0x44c3bf,'stack':_0x1e4346 instanceof Error?_0x1e4346['stack']:undefined}),reportMorphError({'error_message':_0x51afa9,'error_type':_0x1e4346 instanceof Error?_0x1e4346['constructor']['name']:_0x32a950(0x205),'context':{'tool':_0x32a950(0x1a7),'completion_id':_0x372bd3,'file_path':_0x744aec[_0x32a950(0x1d3)][_0x32a950(0x1ab)],'validated_path':_0x539ff0,'instruction':_0x744aec[_0x32a950(0x1d3)][_0x32a950(0x241)],'model':MORPH_LARGE_APPLY?_0x32a950(0x261):'morph-v3-fast','dry_run':_0x744aec['data'][_0x32a950(0x1ec)],'file_exists':_0x12d48f,'file_read_error':_0x11caf5,'file_readable':_0x93ccb!==null,'request_content':{'path':_0x744aec[_0x32a950(0x1d3)][_0x32a950(0x1ab)],'code_edit':_0x744aec[_0x32a950(0x1d3)]['code_edit'],'instruction':_0x744aec[_0x32a950(0x1d3)][_0x32a950(0x241)],'original_code':_0x93ccb!==null?_0x93ccb[_0x32a950(0x16f)]>0xc350?_0x93ccb[_0x32a950(0x171)](0x0,0xc350)+_0x32a950(0x25b)+_0x93ccb[_0x32a950(0x16f)]+_0x32a950(0x250):_0x93ccb:_0x32a950(0x182)+(_0x11caf5||_0x32a950(0x264))+']','original_code_length':_0x93ccb?.[_0x32a950(0x16f)]??0x0,'model':MORPH_LARGE_APPLY?_0x32a950(0x261):_0x32a950(0x15a),'dry_run':_0x744aec[_0x32a950(0x1d3)][_0x32a950(0x1ec)]}},'stack_trace':_0x1e4346 instanceof Error?_0x1e4346['stack']:undefined,'source':_0x32a950(0x1b1)})[_0x32a950(0x1ce)](()=>{}),{'content':[{'type':_0x32a950(0x245),'text':_0x32a950(0x1ef)+_0x51afa9}],'isError':!![]};}}case TOOL_NAMES[_0x32a950(0x25e)]:{const _0x4cd2f7=WarpGrepArgsSchema[_0x32a950(0x1be)](_0x245588);if(!_0x4cd2f7[_0x32a950(0x1af)])return{'content':[{'type':_0x32a950(0x245),'text':_0x32a950(0x26e)+_0x4cd2f7[_0x32a950(0x1dc)]}],'isError':!![]};const _0x470a1e=_0x564630=>{const _0x3bb1ff=_0x32a950,_0xee8d51=[];for(const _0x40e6b9 of _0x564630||[]){if(_0x40e6b9[_0x3bb1ff(0x161)]===_0x3bb1ff(0x227)&&Array[_0x3bb1ff(0x1f9)](_0x40e6b9[_0x3bb1ff(0x23e)]))for(const _0x8e8b17 of _0x40e6b9[_0x3bb1ff(0x23e)]){try{const _0x52744b=_0x8e8b17[_0x3bb1ff(0x265)]?.['name'],_0x462612=JSON[_0x3bb1ff(0x175)](_0x8e8b17[_0x3bb1ff(0x265)]?.[_0x3bb1ff(0x1b3)]||'{}');if(_0x52744b===_0x3bb1ff(0x1fa))_0xee8d51['push'](_0x3bb1ff(0x1bd)+_0x462612[_0x3bb1ff(0x16b)]+'\x27\x20'+(_0x462612[_0x3bb1ff(0x1ab)]||'.'));else{if(_0x52744b===_0x3bb1ff(0x1b8))_0xee8d51[_0x3bb1ff(0x18d)](_0x3bb1ff(0x249)+_0x462612[_0x3bb1ff(0x1ab)]);else{if(_0x52744b==='list_directory')_0xee8d51['push']('list_directory\x20'+(_0x462612[_0x3bb1ff(0x1a5)]||'.'));else{if(_0x52744b===_0x3bb1ff(0x1d6))_0xee8d51[_0x3bb1ff(0x18d)]('glob\x20\x27'+_0x462612[_0x3bb1ff(0x16b)]+'\x27\x20'+(_0x462612['path']||'.'));else _0x52744b===_0x3bb1ff(0x239)&&_0xee8d51['push']('finish');}}}}catch{}}}return _0xee8d51;},_0x357219=_0x4cbb2b=>{const _0x16de5c=_0x32a950,_0x2d23c1=[];if(!_0x4cbb2b||!Array[_0x16de5c(0x1f9)](_0x4cbb2b))return _0x2d23c1;const _0x2daef5=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x16de5c(0x21c),'tool':_0x16de5c(0x1b8)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x16de5c(0x209),'tool':_0x16de5c(0x1b8)},{'pattern':/\[READ ERROR\]/,'error_type':_0x16de5c(0x25a),'tool':_0x16de5c(0x1b8)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x16de5c(0x1e9),'tool':_0x16de5c(0x1b8)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x16de5c(0x258),'tool':_0x16de5c(0x15e)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x16de5c(0x26c),'tool':_0x16de5c(0x15e)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x16de5c(0x1e9),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x16de5c(0x1f2),'tool':_0x16de5c(0x1b8)},{'pattern':/not a text file/,'error_type':_0x16de5c(0x1e9),'tool':'read'},{'pattern':/symbolic link/,'error_type':_0x16de5c(0x1f2),'tool':'read'},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x16de5c(0x1b8)},{'pattern':/status="error"/,'error_type':_0x16de5c(0x1ad),'tool':'unknown'}];let _0x12c7a3=0x0;for(const _0x17fe1b of _0x4cbb2b){_0x17fe1b['role']===_0x16de5c(0x227)&&Array[_0x16de5c(0x1f9)](_0x17fe1b[_0x16de5c(0x23e)])&&_0x12c7a3++;const _0x2ce0e7=_0x17fe1b[_0x16de5c(0x19d)];if((_0x17fe1b[_0x16de5c(0x161)]===_0x16de5c(0x191)||_0x17fe1b['role']===_0x16de5c(0x1dd))&&_0x2ce0e7&&typeof _0x2ce0e7===_0x16de5c(0x263))for(const {pattern:_0x4bdb92,error_type:_0x5c417f,tool:_0x1efc41}of _0x2daef5){const _0x5968e9=_0x2ce0e7[_0x16de5c(0x17a)](new RegExp(_0x4bdb92['source'],'g'));if(_0x5968e9)for(const _0x124020 of _0x5968e9){const _0x580188=_0x2ce0e7[_0x16de5c(0x1e4)](_0x124020),_0x61d187=_0x2ce0e7[_0x16de5c(0x171)](_0x580188,Math[_0x16de5c(0x212)](_0x580188+0xc8,_0x2ce0e7[_0x16de5c(0x16f)]));_0x2d23c1[_0x16de5c(0x18d)]({'tool':_0x1efc41,'error_type':_0x5c417f,'error_message':_0x61d187[_0x16de5c(0x1ff)]('\x0a')[0x0],'turn':_0x12c7a3});}}}return _0x2d23c1;};try{const _0x59761f=a0_0x2fcbcf['resolve'](_0x4cd2f7['data'][_0x32a950(0x276)]),_0x5c6041=_0x4cd2f7[_0x32a950(0x1d3)][_0x32a950(0x1cf)],_0x5182ff=_0x5c6041===_0x32a950(0x184)?{'allowNames':['node_modules']}:undefined,_0x2f79bc=new LocalRipgrepProvider(_0x59761f,undefined,_0x5182ff);logger[_0x32a950(0x197)](_0x32a950(0x156),_0x32a950(0x218),{'type':_0x32a950(0x155),'repo_root':_0x59761f,'search_type':_0x5c6041||_0x32a950(0x283)}),logger[_0x32a950(0x197)]('MCP','warp_grep_start',{'query':_0x4cd2f7[_0x32a950(0x1d3)]['search_string'],'repo_root':_0x59761f,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x41ef83=Date[_0x32a950(0x170)](),_0x250d74=await runWarpGrep({'searchTerm':_0x4cd2f7[_0x32a950(0x1d3)][_0x32a950(0x195)],'repoRoot':_0x59761f,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x2f79bc,'search_type':_0x5c6041}),_0x4027fd=Date[_0x32a950(0x170)]()-_0x41ef83,_0x3f79f6=_0x250d74[_0x32a950(0x239)]?.[_0x32a950(0x15d)]?.[_0x32a950(0x278)]?.['length']??0x0;logger[_0x32a950(0x197)](_0x32a950(0x156),'warp_grep_complete',{'termination':_0x250d74[_0x32a950(0x272)],'turns':_0x250d74[_0x32a950(0x26a)]?.['turns']??0x0,'files_found':_0x3f79f6,'latency_ms':_0x4027fd});const _0xad8399=_0x357219(_0x250d74[_0x32a950(0x248)]);_0xad8399[_0x32a950(0x16f)]>0x0&&reportMorphError({'error_message':_0x32a950(0x16c)+_0xad8399['length']+'\x20error(s)','error_type':_0x32a950(0x24f),'level':_0x32a950(0x262),'tool':'codebase_search','context':{'repo_path':_0x4cd2f7['data'][_0x32a950(0x276)],'query':_0x4cd2f7[_0x32a950(0x1d3)][_0x32a950(0x195)],'model':_0x32a950(0x208),'termination_reason':_0x250d74[_0x32a950(0x272)],'sub_tool_errors':_0xad8399,'timings':_0x250d74['timings'],'tool_calls':_0x470a1e(_0x250d74['messages']),'messages':_0x250d74['messages']?.[_0x32a950(0x236)](_0x5dc8b8=>({'role':_0x5dc8b8['role'],'content':_0x5dc8b8['content'],..._0x5dc8b8[_0x32a950(0x23e)]?{'tool_calls':_0x5dc8b8[_0x32a950(0x23e)][_0x32a950(0x16f)]}:{},..._0x5dc8b8['tool_call_id']?{'tool_call_id':_0x5dc8b8[_0x32a950(0x185)]}:{}}))},'source':'mcp-filesystem'})[_0x32a950(0x1ce)](()=>{});let _0xcc351d='';if(_0x250d74[_0x32a950(0x272)]===_0x32a950(0x1a6)&&_0x250d74[_0x32a950(0x239)]?.[_0x32a950(0x15d)]?.[_0x32a950(0x278)]){const _0xbc4e8d=_0x250d74['finish'][_0x32a950(0x15d)][_0x32a950(0x278)];if(_0xbc4e8d['length']===0x0)return _0xcc351d=_0x250d74[_0x32a950(0x239)][_0x32a950(0x15b)]||_0x32a950(0x165),{'content':[{'type':_0x32a950(0x245),'text':_0xcc351d}]};const _0xbca72d=[],_0x486a34=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x4a3721 of _0x250d74[_0x32a950(0x248)]){if(_0x4a3721[_0x32a950(0x161)]==='assistant'&&Array['isArray'](_0x4a3721[_0x32a950(0x23e)]))for(const _0x2f733b of _0x4a3721[_0x32a950(0x23e)]){try{const _0x260279=_0x2f733b[_0x32a950(0x265)]?.[_0x32a950(0x17d)],_0x493380=JSON[_0x32a950(0x175)](_0x2f733b[_0x32a950(0x265)]?.[_0x32a950(0x1b3)]||'{}');if(_0x260279===_0x32a950(0x1fa))_0x486a34[_0x32a950(0x18d)](_0x32a950(0x253)+_0x493380[_0x32a950(0x16b)]+_0x32a950(0x240)+(_0x493380[_0x32a950(0x1ab)]||'.')+'`');else{if(_0x260279===_0x32a950(0x1b8))_0x486a34[_0x32a950(0x18d)](_0x32a950(0x187)+_0x493380['path']+'`');else{if(_0x260279===_0x32a950(0x1cb))_0x486a34[_0x32a950(0x18d)](_0x32a950(0x183)+(_0x493380['command']||'.')+'`');else _0x260279==='glob'&&_0x486a34[_0x32a950(0x18d)](_0x32a950(0x200)+_0x493380['pattern']+_0x32a950(0x26b)+(_0x493380[_0x32a950(0x1ab)]||'.')+'`');}}}catch{}}}_0xbca72d['push'](_0x486a34[_0x32a950(0x27f)]('\x0a'));const _0x4f8e7f=['',_0x32a950(0x211)];for(const _0x370147 of _0xbc4e8d){if(_0x370147[_0x32a950(0x1f7)]==='*')_0x4f8e7f[_0x32a950(0x18d)]('-\x20'+_0x370147[_0x32a950(0x1ab)]+':*');else{if(Array['isArray'](_0x370147[_0x32a950(0x1f7)])){const _0x375efe=_0x370147['lines'][_0x32a950(0x236)](([_0x16b57a,_0x37a7ee])=>{if(_0x16b57a===_0x37a7ee)return''+_0x16b57a;return _0x16b57a+'-'+_0x37a7ee;});_0x4f8e7f[_0x32a950(0x18d)]('-\x20'+_0x370147[_0x32a950(0x1ab)]+':'+_0x375efe[_0x32a950(0x27f)](','));}else _0x4f8e7f['push']('-\x20'+_0x370147[_0x32a950(0x1ab)]+':*');}}_0x4f8e7f[_0x32a950(0x18d)](''),_0xbca72d['push'](_0x4f8e7f[_0x32a950(0x27f)]('\x0a')),_0xbca72d[_0x32a950(0x18d)](_0x32a950(0x18f));const _0x54c0fa=[],_0x55c9b3=[];for(const _0x5507cb of _0xbc4e8d){let _0x5dd10d=a0_0x2fcbcf[_0x32a950(0x17c)](_0x4cd2f7[_0x32a950(0x1d3)][_0x32a950(0x276)],_0x5507cb['path']),_0x19d0d8=null,_0x338417=null;try{_0x19d0d8=await a0_0x38ee0b[_0x32a950(0x214)](_0x5dd10d,{'encoding':_0x32a950(0x1e7)});}catch(_0x5e0bbc){const _0x136c76=fixPathRepetition(_0x5dd10d);if(_0x136c76)try{_0x19d0d8=await a0_0x38ee0b['readFile'](_0x136c76,{'encoding':_0x32a950(0x1e7)}),_0x5dd10d=_0x136c76;}catch{_0x338417=_0x5e0bbc instanceof Error?_0x5e0bbc:new Error(String(_0x5e0bbc));}else _0x338417=_0x5e0bbc instanceof Error?_0x5e0bbc:new Error(String(_0x5e0bbc));}if(_0x19d0d8!==null){const _0x4a1fff=_0x19d0d8[_0x32a950(0x1ff)](/\r?\n/),_0x550107=[];if(_0x5507cb['lines']==='*'||!Array[_0x32a950(0x1f9)](_0x5507cb['lines']))for(let _0x3126cf=0x1;_0x3126cf<=_0x4a1fff[_0x32a950(0x16f)];_0x3126cf++){const _0x2a4359=_0x4a1fff[_0x3126cf-0x1];_0x550107['push'](_0x3126cf+'|\x20'+_0x2a4359);}else for(const [_0x37230c,_0x850772]of _0x5507cb[_0x32a950(0x1f7)]){_0x550107[_0x32a950(0x16f)]>0x0&&_0x550107[_0x32a950(0x18d)]('');for(let _0x517de0=_0x37230c;_0x517de0<=_0x850772&&_0x517de0<=_0x4a1fff[_0x32a950(0x16f)];_0x517de0++){const _0x5740df=_0x4a1fff[_0x517de0-0x1];_0x550107[_0x32a950(0x18d)](_0x517de0+'|\x20'+_0x5740df);}}_0x55c9b3['push']({'path':_0x5507cb[_0x32a950(0x1ab)],'content':_0x550107[_0x32a950(0x27f)]('\x0a')});}else _0x54c0fa[_0x32a950(0x18d)](_0x32a950(0x1b0)+_0x5507cb[_0x32a950(0x1ab)]+_0x32a950(0x22d)+(_0x338417?.[_0x32a950(0x277)]||_0x32a950(0x199))+_0x32a950(0x20c));}try{const _0x2c4d1d=await compactFileContexts(_0x55c9b3,_0x4cd2f7[_0x32a950(0x1d3)][_0x32a950(0x195)],MORPH_API_KEY,MORPH_API_URL);for(const _0x358bf7 of _0x2c4d1d){_0x54c0fa[_0x32a950(0x18d)](_0x32a950(0x1b0)+_0x358bf7[_0x32a950(0x1ab)]+_0x32a950(0x157)+_0x358bf7[_0x32a950(0x19d)]+_0x32a950(0x20c));}}catch(_0x3d1fc6){logger[_0x32a950(0x262)](_0x32a950(0x156),_0x32a950(0x1f4),{'error':_0x3d1fc6 instanceof Error?_0x3d1fc6[_0x32a950(0x277)]:String(_0x3d1fc6),'files_count':_0x55c9b3[_0x32a950(0x16f)]});for(const _0x256848 of _0x55c9b3){_0x54c0fa[_0x32a950(0x18d)](_0x32a950(0x1b0)+_0x256848['path']+_0x32a950(0x157)+_0x256848[_0x32a950(0x19d)]+'\x0a</file>');}}_0xbca72d['push'](_0x54c0fa['join']('\x0a\x0a')),_0xcc351d=_0xbca72d[_0x32a950(0x27f)]('\x0a');const _0x4bd632=_0x250d74['errors']?.['filter'](_0x3ce1d8=>_0x3ce1d8[_0x32a950(0x277)]?.[_0x32a950(0x166)](_0x32a950(0x238)))||[];if(_0x4bd632[_0x32a950(0x16f)]>0x0){const _0x418e5d=_0x4bd632[_0x32a950(0x236)](_0xf421c0=>_0xf421c0['message'])['join'](';\x20');reportMorphError({'error_message':_0x418e5d,'error_type':_0x32a950(0x19a),'context':{'tool':'codebase_search','repo_path':_0x4cd2f7[_0x32a950(0x1d3)][_0x32a950(0x276)],'query':_0x4cd2f7[_0x32a950(0x1d3)][_0x32a950(0x195)],'model':_0x32a950(0x208),'termination_reason':_0x32a950(0x256),'error_count':_0x4bd632[_0x32a950(0x16f)],'is_timeout':![],'timings':_0x250d74[_0x32a950(0x26a)],'files_attempted':_0xbc4e8d['map'](_0x2f62bf=>({'path':_0x2f62bf[_0x32a950(0x1ab)],'lines':_0x2f62bf[_0x32a950(0x1f7)]})),'tool_calls':_0x470a1e(_0x250d74[_0x32a950(0x248)]),'messages':_0x250d74[_0x32a950(0x248)]?.[_0x32a950(0x236)](_0x28084c=>({'role':_0x28084c['role'],'content':_0x28084c[_0x32a950(0x19d)],..._0x28084c[_0x32a950(0x23e)]?{'tool_calls':_0x28084c['tool_calls'][_0x32a950(0x16f)]}:{},..._0x28084c[_0x32a950(0x185)]?{'tool_call_id':_0x28084c[_0x32a950(0x185)]}:{}})),'request_content':{'query':_0x4cd2f7['data'][_0x32a950(0x195)],'repo_path':_0x4cd2f7[_0x32a950(0x1d3)][_0x32a950(0x276)],'repoRoot':a0_0x2fcbcf[_0x32a950(0x17c)](_0x4cd2f7[_0x32a950(0x1d3)][_0x32a950(0x276)]),'model':_0x32a950(0x208)}},'source':_0x32a950(0x1b1)})[_0x32a950(0x1ce)](()=>{});}}else{if(_0x250d74[_0x32a950(0x272)]===_0x32a950(0x235)&&_0x250d74[_0x32a950(0x1e5)][_0x32a950(0x16f)]>0x0){const _0x2c5fe1=_0x250d74[_0x32a950(0x1e5)][_0x32a950(0x236)](_0x9d0ee7=>_0x9d0ee7[_0x32a950(0x277)])[_0x32a950(0x27f)](';\x20');_0xcc351d=_0x32a950(0x281)+_0x2c5fe1;const _0x1e1af5=_0x2c5fe1['toLowerCase']()[_0x32a950(0x1a3)](_0x32a950(0x1ac))||_0x2c5fe1['toLowerCase']()[_0x32a950(0x1a3)]('timed\x20out')||_0x2c5fe1['toLowerCase']()['includes'](_0x32a950(0x194)),_0x5d1391=_0x250d74[_0x32a950(0x239)]?.['metadata']?.['files'],_0x5a792d=_0x250d74[_0x32a950(0x1e5)][0x0];reportMorphError({'error_message':_0x2c5fe1,'error_type':_0x1e1af5?_0x32a950(0x1df):_0x5a792d?.[_0x32a950(0x1bb)]?.[_0x32a950(0x17d)]||'WarpGrepError','context':{'tool':_0x32a950(0x17b),'repo_path':_0x4cd2f7[_0x32a950(0x1d3)][_0x32a950(0x276)],'query':_0x4cd2f7[_0x32a950(0x1d3)]['search_string'],'model':_0x32a950(0x208),'termination_reason':_0x250d74['terminationReason'],'error_count':_0x250d74[_0x32a950(0x1e5)]['length'],'is_timeout':_0x1e1af5,'timings':_0x250d74['timings'],'files_attempted':_0x5d1391?.['map'](_0x2c6074=>({'path':_0x2c6074['path'],'lines':_0x2c6074[_0x32a950(0x1f7)]})),'tool_calls':_0x470a1e(_0x250d74['messages']),'messages':_0x250d74[_0x32a950(0x248)]?.[_0x32a950(0x236)](_0x4f0fcf=>({'role':_0x4f0fcf[_0x32a950(0x161)],'content':_0x4f0fcf['content'],..._0x4f0fcf[_0x32a950(0x23e)]?{'tool_calls':_0x4f0fcf[_0x32a950(0x23e)][_0x32a950(0x16f)]}:{},..._0x4f0fcf['tool_call_id']?{'tool_call_id':_0x4f0fcf[_0x32a950(0x185)]}:{}})),'request_content':{'query':_0x4cd2f7[_0x32a950(0x1d3)]['search_string'],'repo_path':_0x4cd2f7[_0x32a950(0x1d3)][_0x32a950(0x276)],'repoRoot':a0_0x2fcbcf[_0x32a950(0x17c)](_0x4cd2f7['data']['repo_path']),'model':_0x32a950(0x208)}},'stack_trace':_0x5a792d?.[_0x32a950(0x221)]||undefined,'source':'mcp-filesystem'})['catch'](()=>{});}else _0xcc351d=_0x32a950(0x1ba);}return{'content':[{'type':_0x32a950(0x245),'text':_0xcc351d}]};}catch(_0xae8f8a){const _0xfc3dc7=handleMorphAPIError(_0xae8f8a);if(_0xfc3dc7)return logger['error']('MCP',_0x32a950(0x228),{'tool':_0x32a950(0x17b),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x32a950(0x170)]()-_0x44c3bf}),_0xfc3dc7;const _0x36875c=_0xae8f8a instanceof Error?_0xae8f8a[_0x32a950(0x277)]:String(_0xae8f8a);logger[_0x32a950(0x1dc)]('MCP',_0x32a950(0x228),{'tool':'codebase_search','error':_0x36875c,'repo_path':_0x4cd2f7[_0x32a950(0x1d3)][_0x32a950(0x276)],'query':_0x4cd2f7['data'][_0x32a950(0x195)],'latency_ms':Date[_0x32a950(0x170)]()-_0x44c3bf});const _0x35ac39=_0x36875c[_0x32a950(0x1bc)]()[_0x32a950(0x1a3)](_0x32a950(0x1ac))||_0x36875c[_0x32a950(0x1bc)]()[_0x32a950(0x1a3)](_0x32a950(0x180))||_0x36875c['toLowerCase']()[_0x32a950(0x1a3)]('etimedout')||_0xae8f8a instanceof Error&&_0xae8f8a['name']===_0x32a950(0x1df);return reportMorphError({'error_message':_0x36875c,'error_type':_0x35ac39?_0x32a950(0x1df):_0xae8f8a instanceof Error?_0xae8f8a[_0x32a950(0x1bb)]['name']:_0x32a950(0x205),'context':{'tool':_0x32a950(0x17b),'repo_path':_0x4cd2f7[_0x32a950(0x1d3)][_0x32a950(0x276)],'query':_0x4cd2f7['data'][_0x32a950(0x195)],'model':'morph-warp-grep-v2.1','is_timeout':_0x35ac39,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x4cd2f7[_0x32a950(0x1d3)][_0x32a950(0x195)],'repo_path':_0x4cd2f7['data'][_0x32a950(0x276)],'repoRoot':a0_0x2fcbcf[_0x32a950(0x17c)](_0x4cd2f7[_0x32a950(0x1d3)][_0x32a950(0x276)]),'model':_0x32a950(0x208)}},'stack_trace':_0xae8f8a instanceof Error?_0xae8f8a[_0x32a950(0x221)]:undefined,'source':_0x32a950(0x1b1)})[_0x32a950(0x1ce)](()=>{}),{'content':[{'type':_0x32a950(0x245),'text':_0x32a950(0x1c0)+_0x36875c}],'isError':![]};}}case TOOL_NAMES['GITHUB_CODEBASE_SEARCH']:{const _0x7b96b9=WarpGrepGitHubArgsSchema[_0x32a950(0x1be)](_0x245588);if(!_0x7b96b9[_0x32a950(0x1af)])return{'content':[{'type':_0x32a950(0x245),'text':_0x32a950(0x26e)+_0x7b96b9[_0x32a950(0x1dc)]}],'isError':!![]};const _0x455e94=_0x7b96b9[_0x32a950(0x1d3)][_0x32a950(0x19f)]||_0x7b96b9[_0x32a950(0x1d3)][_0x32a950(0x18b)];if(!_0x455e94)return{'content':[{'type':_0x32a950(0x245),'text':_0x32a950(0x23f)}],'isError':!![]};const _0x3fe051=MORPH_API_KEY;if(!_0x3fe051)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x4b9c0e=Date['now']();logger[_0x32a950(0x197)](_0x32a950(0x156),_0x32a950(0x1c7),{'identifier':_0x455e94,'query':_0x7b96b9[_0x32a950(0x1d3)][_0x32a950(0x195)],'branch':_0x7b96b9[_0x32a950(0x1d3)][_0x32a950(0x1cc)]});try{const _0xaa803b=new WarpGrepClient({'morphApiKey':_0x3fe051,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x4932a2=await _0xaa803b[_0x32a950(0x271)]({'searchTerm':_0x7b96b9[_0x32a950(0x1d3)][_0x32a950(0x195)],'github':_0x455e94,'branch':_0x7b96b9[_0x32a950(0x1d3)][_0x32a950(0x1cc)]}),_0x4dcd68=Date['now']()-_0x4b9c0e;logMcpStderr(_0x32a950(0x19e)+_0x4dcd68+'ms.\x20Success:\x20'+_0x4932a2[_0x32a950(0x1af)]);const _0x4e981a=formatResult(_0x4932a2);return{'content':[{'type':'text','text':_0x4e981a}]};}catch(_0x1cecd2){const _0xdba2fe=handleMorphAPIError(_0x1cecd2);if(_0xdba2fe)return _0xdba2fe;const _0x2d860d=Date['now']()-_0x4b9c0e,_0x193fc9=_0x1cecd2 instanceof Error?_0x1cecd2[_0x32a950(0x277)]:String(_0x1cecd2);return logMcpStderr(_0x32a950(0x23b)+_0x2d860d+'ms:',_0x193fc9),reportMorphError({'error_message':_0x193fc9,'error_type':_0x1cecd2 instanceof Error?_0x1cecd2[_0x32a950(0x1bb)]['name']:_0x32a950(0x205),'context':{'tool':_0x32a950(0x1c4),'github_url':_0x455e94,'search_string':_0x7b96b9[_0x32a950(0x1d3)][_0x32a950(0x195)],'branch':_0x7b96b9[_0x32a950(0x1d3)]['branch']},'stack_trace':_0x1cecd2 instanceof Error?_0x1cecd2[_0x32a950(0x221)]:undefined,'source':_0x32a950(0x1b1),'tool':_0x32a950(0x1c4),'latency_ms':_0x2d860d})[_0x32a950(0x1ce)](()=>{}),{'content':[{'type':_0x32a950(0x245),'text':_0x32a950(0x282)+_0x193fc9}],'isError':![]};}}default:throw new Error(_0x32a950(0x1f0)+_0x5ec9b5);}}catch(_0xa6e2d3){const _0x56b6c1=_0xa6e2d3 instanceof Error?_0xa6e2d3['message']:String(_0xa6e2d3);return reportMorphError({'error_message':_0x56b6c1,'error_type':_0xa6e2d3 instanceof Error?_0xa6e2d3[_0x32a950(0x1bb)]['name']:_0x32a950(0x205),'context':{'tool':_0x5ec9b5,'arguments':_0x245588?JSON['stringify'](_0x245588)[_0x32a950(0x171)](0x0,0x1f4):undefined,'mcp_server_version':_0x32a950(0x1e3)},'stack_trace':_0xa6e2d3 instanceof Error?_0xa6e2d3[_0x32a950(0x221)]:undefined,'source':_0x32a950(0x1b1)})['catch'](()=>{}),{'content':[{'type':_0x32a950(0x245),'text':_0x32a950(0x281)+_0x56b6c1}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x4f2ba9){const _0x2d3ba7=a0_0xc88ac9,_0x4b2fe9=await getValidRootDirectories(_0x4f2ba9);if(_0x4b2fe9['length']>0x0)allowedDirectories=[..._0x4b2fe9],logMcpStderr(_0x2d3ba7(0x1fb)+_0x4b2fe9[_0x2d3ba7(0x16f)]+_0x2d3ba7(0x273));else{logMcpStderr(_0x2d3ba7(0x243));if(ENABLE_WORKSPACE_MODE)try{const _0x3644a5=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3644a5&&(allowedDirectories=[_0x3644a5],logMcpStderr(_0x2d3ba7(0x1d8)+_0x3644a5));}catch(_0x39c73b){logMcpStderr(_0x2d3ba7(0x280)+_0x39c73b);}}}server[a0_0xc88ac9(0x22e)](RootsListChangedNotificationSchema,async()=>{const _0x18ece7=a0_0xc88ac9;try{const _0x2a2e48=await server['listRoots']();_0x2a2e48&&_0x18ece7(0x190)in _0x2a2e48&&await updateAllowedDirectoriesFromRoots(_0x2a2e48[_0x18ece7(0x190)]);}catch(_0x145b6d){logMcpStderr(_0x18ece7(0x1e8),_0x145b6d instanceof Error?_0x145b6d['message']:String(_0x145b6d));}}),server[a0_0xc88ac9(0x1f8)]=async()=>{const _0xcd9248=a0_0xc88ac9,_0x4b2aa4=server['getClientCapabilities']();if(_0x4b2aa4?.[_0xcd9248(0x190)])try{const _0x1a9ba0=await server['listRoots']();_0x1a9ba0&&_0xcd9248(0x190)in _0x1a9ba0?await updateAllowedDirectoriesFromRoots(_0x1a9ba0[_0xcd9248(0x190)]):logMcpStderr(_0xcd9248(0x21e));}catch(_0x44085c){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x44085c instanceof Error?_0x44085c[_0xcd9248(0x277)]:String(_0x44085c));}else{if(allowedDirectories['length']>0x0)logMcpStderr(_0xcd9248(0x23a),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0xcd9248(0x23c));}}};async function runServer(){const _0x5ef245=a0_0xc88ac9,_0x5309a2=new StdioServerTransport();await server[_0x5ef245(0x1a9)](_0x5309a2),logMcpStderr(_0x5ef245(0x1a2)),allowedDirectories[_0x5ef245(0x16f)]===0x0&&logMcpStderr(_0x5ef245(0x16a));}runServer()[a0_0xc88ac9(0x1ce)](_0x5572ca=>{const _0x3dfdad=a0_0xc88ac9;logMcpStderr(_0x3dfdad(0x196),_0x5572ca),process[_0x3dfdad(0x16e)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var a1_0x46753c=a1_0x530c;(function(_0x52f32a,_0x476b7e){var _0x345cd7=a1_0x530c,_0x6ba256=_0x52f32a();while(!![]){try{var _0x20fd58=parseInt(_0x345cd7(0xcb))/0x1*(parseInt(_0x345cd7(0xd1))/0x2)+-parseInt(_0x345cd7(0xce))/0x3+parseInt(_0x345cd7(0xc7))/0x4*(parseInt(_0x345cd7(0xc4))/0x5)+parseInt(_0x345cd7(0xca))/0x6*(parseInt(_0x345cd7(0xd3))/0x7)+-parseInt(_0x345cd7(0xc0))/0x8+-parseInt(_0x345cd7(0xd4))/0x9+parseInt(_0x345cd7(0xc8))/0xa;if(_0x20fd58===_0x476b7e)break;else _0x6ba256['push'](_0x6ba256['shift']());}catch(_0x3ae6e6){_0x6ba256['push'](_0x6ba256['shift']());}}}(a1_0x28ec,0x3ef9b));function a1_0x530c(_0x14654b,_0x449404){_0x14654b=_0x14654b-0xc0;var _0x28ec8a=a1_0x28ec();var _0x530c3c=_0x28ec8a[_0x14654b];return _0x530c3c;}import a1_0x1b3941 from'os';import{logger}from'./logger.js';export function getOperatingSystemType(_0x2972db=a1_0x1b3941['platform']()){var _0x2220ea=a1_0x530c;switch(_0x2972db){case _0x2220ea(0xd2):return _0x2220ea(0xcc);case _0x2220ea(0xc9):return _0x2220ea(0xcd);case _0x2220ea(0xd0):return _0x2220ea(0xcf);default:return _0x2220ea(0xd5);}}function a1_0x28ec(){var _0x279fc5=['114CXunZl','4540SzJhZO','macOS','Windows','160284vGiwat','Linux','linux','40FokveA','darwin','83489vhQbBU','4336101guLtDX','Unknown','2586392xwOXrW','MCP','[os=','platform','587645SyNYGq','map','error','4jbkqEC','6815210qZNxCx','win32'];a1_0x28ec=function(){return _0x279fc5;};return a1_0x28ec();}export function formatMcpLogMessage(_0x136e23,_0x27af1e=a1_0x1b3941[a1_0x46753c(0xc3)]()){var _0x10604f=a1_0x46753c;return _0x10604f(0xc2)+getOperatingSystemType(_0x27af1e)+']\x20'+_0x136e23;}export function logMcpStderr(_0x3de374,..._0x159d9f){var _0x324fae=a1_0x46753c;console[_0x324fae(0xc6)](formatMcpLogMessage(_0x3de374),..._0x159d9f),logger['info'](_0x324fae(0xc1),_0x3de374,_0x159d9f['length']?{'args':_0x159d9f[_0x324fae(0xc5)](_0x3220c5=>String(_0x3220c5))}:undefined);}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
function a2_0x4339(){const _0xbc4be9=[']\x20[','2192kBoARY','stringify','error','7465255kxrtDB','toISOString','enable','7494516aoYGOl','_log','warn','debug','388iplkAi','write','info','enabled','fileStream','3095460usUfNu','132208CyIDee','3wtvUgT','env','4486152vkYjas','11764593wWBgHf','isEnabled'];a2_0x4339=function(){return _0xbc4be9;};return a2_0x4339();}const a2_0x476d74=a2_0x38f1;function a2_0x38f1(_0x472384,_0x440b1f){_0x472384=_0x472384-0x155;const _0x433903=a2_0x4339();let _0x38f196=_0x433903[_0x472384];return _0x38f196;}(function(_0x5ecf55,_0x53fbad){const _0x1010c2=a2_0x38f1,_0xc903a0=_0x5ecf55();while(!![]){try{const _0x34ccf2=parseInt(_0x1010c2(0x168))/0x1*(parseInt(_0x1010c2(0x15e))/0x2)+-parseInt(_0x1010c2(0x158))/0x3*(-parseInt(_0x1010c2(0x157))/0x4)+parseInt(_0x1010c2(0x156))/0x5+-parseInt(_0x1010c2(0x164))/0x6+-parseInt(_0x1010c2(0x161))/0x7+parseInt(_0x1010c2(0x15a))/0x8+parseInt(_0x1010c2(0x15b))/0x9;if(_0x34ccf2===_0x53fbad)break;else _0xc903a0['push'](_0xc903a0['shift']());}catch(_0xf8a70d){_0xc903a0['push'](_0xc903a0['shift']());}}}(a2_0x4339,0x99c1b));import{createWriteStream}from'fs';class MorphLogger{[a2_0x476d74(0x16b)];[a2_0x476d74(0x155)];constructor(){const _0x1991cc=a2_0x476d74;this['enabled']=process[_0x1991cc(0x159)]['MORPH_DEBUG']==='1'||!!process[_0x1991cc(0x159)]['MORPH_LOG_FILE'];const _0x6388da=process['env']['MORPH_LOG_FILE'];this[_0x1991cc(0x155)]=_0x6388da?createWriteStream(_0x6388da,{'flags':'a'}):null;}[a2_0x476d74(0x167)](_0x57af0c,_0x480b05,_0x4cd7f3){const _0x5938f8=a2_0x476d74;this['_log'](_0x5938f8(0x167),_0x57af0c,_0x480b05,_0x4cd7f3);}[a2_0x476d74(0x16a)](_0x590877,_0xccf82b,_0xb91d0){const _0x3c7aa5=a2_0x476d74;this[_0x3c7aa5(0x165)](_0x3c7aa5(0x16a),_0x590877,_0xccf82b,_0xb91d0);}[a2_0x476d74(0x166)](_0x39175c,_0x3f9fdc,_0x4330e7){const _0x1745ec=a2_0x476d74;this[_0x1745ec(0x165)](_0x1745ec(0x166),_0x39175c,_0x3f9fdc,_0x4330e7);}[a2_0x476d74(0x160)](_0x264e3f,_0x582517,_0x55521c){const _0x138da3=a2_0x476d74;this[_0x138da3(0x165)]('error',_0x264e3f,_0x582517,_0x55521c);}[a2_0x476d74(0x163)](){const _0x4c48eb=a2_0x476d74;this[_0x4c48eb(0x16b)]=!![];}get[a2_0x476d74(0x15c)](){const _0x129707=a2_0x476d74;return this[_0x129707(0x16b)];}[a2_0x476d74(0x165)](_0x319338,_0x3e3f93,_0x15d700,_0x21d6d9){const _0xb05933=a2_0x476d74;if(_0x319338!=='error'&&!this[_0xb05933(0x16b)])return;const _0x5a0d0b=new Date()[_0xb05933(0x162)](),_0x56690b='['+_0x5a0d0b+_0xb05933(0x15d)+_0x319338['toUpperCase']()+_0xb05933(0x15d)+_0x3e3f93+']';console[_0xb05933(0x160)](_0x21d6d9?_0x56690b+'\x20'+_0x15d700+'\x20'+JSON[_0xb05933(0x15f)](_0x21d6d9):_0x56690b+'\x20'+_0x15d700),this[_0xb05933(0x155)]?.[_0xb05933(0x169)](JSON[_0xb05933(0x15f)]({'ts':_0x5a0d0b,'level':_0x319338,'component':_0x3e3f93,'msg':_0x15d700,..._0x21d6d9&&{'data':_0x21d6d9}})+'\x0a');}}export const logger=new MorphLogger();
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x47ebb5,_0x2721f1){const _0x3f3b16=a3_0x45e1,_0xb47b35=_0x47ebb5();while(!![]){try{const _0x2afcff=-parseInt(_0x3f3b16(0x81))/0x1+parseInt(_0x3f3b16(0x82))/0x2+parseInt(_0x3f3b16(0x74))/0x3*(parseInt(_0x3f3b16(0x77))/0x4)+-parseInt(_0x3f3b16(0x72))/0x5*(-parseInt(_0x3f3b16(0x75))/0x6)+-parseInt(_0x3f3b16(0x84))/0x7*(-parseInt(_0x3f3b16(0x83))/0x8)+-parseInt(_0x3f3b16(0x7b))/0x9+-parseInt(_0x3f3b16(0x7d))/0xa;if(_0x2afcff===_0x2721f1)break;else _0xb47b35['push'](_0xb47b35['shift']());}catch(_0x21504b){_0xb47b35['push'](_0xb47b35['shift']());}}}(a3_0x50ff,0x46965));import a3_0x141ef7 from'path';function a3_0x45e1(_0x3a509c,_0x3d0db3){_0x3a509c=_0x3a509c-0x72;const _0x50ff2e=a3_0x50ff();let _0x45e12a=_0x50ff2e[_0x3a509c];return _0x45e12a;}import a3_0x3625d6 from'os';function a3_0x50ff(){const _0xe3baff=['replace','match','slice','70398qzVAiT','637888AqlYqU','8cMGPRx','136633DuxojV','5495outzXG','startsWith','3ZecCVF','258WOkiRG','substring','1982632AioEEL','charAt','toUpperCase','join','1613178ezVWye','normalize','3426130nmDxWw'];a3_0x50ff=function(){return _0xe3baff;};return a3_0x50ff();}export function convertToWindowsPath(_0x250a3e){const _0x18dd72=a3_0x45e1;if(_0x250a3e['startsWith']('/mnt/')){const _0x3e8752=_0x250a3e['charAt'](0x5)[_0x18dd72(0x79)](),_0x5ef481=_0x250a3e['slice'](0x6)['replace'](/\//g,'\x5c');return _0x3e8752+':'+_0x5ef481;}if(_0x250a3e[_0x18dd72(0x7f)](/^\/[a-zA-Z]\//)){const _0x56d7c5=_0x250a3e['charAt'](0x1)[_0x18dd72(0x79)](),_0x4205ab=_0x250a3e[_0x18dd72(0x80)](0x2)[_0x18dd72(0x7e)](/\//g,'\x5c');return _0x56d7c5+':'+_0x4205ab;}if(_0x250a3e['match'](/^[a-zA-Z]:/))return _0x250a3e[_0x18dd72(0x7e)](/\//g,'\x5c');return _0x250a3e;}export function normalizePath(_0x35048b){const _0x4f970d=a3_0x45e1;_0x35048b=_0x35048b['trim']()[_0x4f970d(0x7e)](/^["']|["']$/g,'');const _0x422d09=_0x35048b[_0x4f970d(0x73)]('/')&&!_0x35048b[_0x4f970d(0x7f)](/^\/mnt\/[a-z]\//i)&&!_0x35048b[_0x4f970d(0x7f)](/^\/[a-zA-Z]\//);if(_0x422d09)return _0x35048b['replace'](/\/+/g,'/')['replace'](/\/+$/,'');_0x35048b=convertToWindowsPath(_0x35048b);if(_0x35048b[_0x4f970d(0x73)]('\x5c\x5c')){let _0x4ad598=_0x35048b;_0x4ad598=_0x4ad598['replace'](/^\\{2,}/,'\x5c\x5c');const _0x42fd4c=_0x4ad598[_0x4f970d(0x76)](0x2)['replace'](/\\\\/g,'\x5c');_0x35048b='\x5c\x5c'+_0x42fd4c;}else _0x35048b=_0x35048b[_0x4f970d(0x7e)](/\\\\/g,'\x5c');let _0x28f97b=a3_0x141ef7[_0x4f970d(0x7c)](_0x35048b);_0x35048b[_0x4f970d(0x73)]('\x5c\x5c')&&!_0x28f97b[_0x4f970d(0x73)]('\x5c\x5c')&&(_0x28f97b='\x5c'+_0x28f97b);if(_0x28f97b[_0x4f970d(0x7f)](/^[a-zA-Z]:/)){let _0x3ffd5f=_0x28f97b['replace'](/\//g,'\x5c');return/^[a-z]:/['test'](_0x3ffd5f)&&(_0x3ffd5f=_0x3ffd5f[_0x4f970d(0x78)](0x0)[_0x4f970d(0x79)]()+_0x3ffd5f[_0x4f970d(0x80)](0x1)),_0x3ffd5f;}return _0x28f97b[_0x4f970d(0x7e)](/\//g,'\x5c');}export function expandHome(_0x3a5a49){const _0x1d6491=a3_0x45e1;if(_0x3a5a49[_0x1d6491(0x73)]('~/')||_0x3a5a49==='~')return a3_0x141ef7[_0x1d6491(0x7a)](a3_0x3625d6['homedir'](),_0x3a5a49[_0x1d6491(0x80)](0x1));return _0x3a5a49;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a4_0x6bc9(_0xf1aae1,_0x1d2494){_0xf1aae1=_0xf1aae1-0x12c;const _0x3525bd=a4_0x3525();let _0x6bc9b5=_0x3525bd[_0xf1aae1];return _0x6bc9b5;}(function(_0x898191,_0x358916){const _0x4c261c=a4_0x6bc9,_0x27d063=_0x898191();while(!![]){try{const _0x30c08a=parseInt(_0x4c261c(0x13f))/0x1+-parseInt(_0x4c261c(0x130))/0x2*(-parseInt(_0x4c261c(0x131))/0x3)+parseInt(_0x4c261c(0x134))/0x4+parseInt(_0x4c261c(0x13a))/0x5*(-parseInt(_0x4c261c(0x12d))/0x6)+parseInt(_0x4c261c(0x135))/0x7*(parseInt(_0x4c261c(0x133))/0x8)+-parseInt(_0x4c261c(0x13b))/0x9+-parseInt(_0x4c261c(0x12c))/0xa;if(_0x30c08a===_0x358916)break;else _0x27d063['push'](_0x27d063['shift']());}catch(_0x4202f3){_0x27d063['push'](_0x27d063['shift']());}}}(a4_0x3525,0xe3db2));import a4_0x4549cc from'path';function a4_0x3525(){const _0x2ae655=['sep','Path\x20must\x20be\x20absolute\x20after\x20normalization','355eZTtwO','14596398wTsOpN','normalize','includes','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','1087482wyPbHr','string','7616980DqrovA','59334GpBJEd','isAbsolute','length','1044052TRaOZU','3nZcOUO','isArray','32BFaslp','5917060SWoZzt','1627787MPxMZV','startsWith','some'];a4_0x3525=function(){return _0x2ae655;};return a4_0x3525();}export function isPathWithinAllowedDirectories(_0x41e63a,_0x191beb){const _0x272ab0=a4_0x6bc9;if(typeof _0x41e63a!==_0x272ab0(0x140)||!Array[_0x272ab0(0x132)](_0x191beb))return![];if(!_0x41e63a||_0x191beb[_0x272ab0(0x12f)]===0x0)return![];if(_0x41e63a[_0x272ab0(0x13d)]('\x00'))return![];let _0x4d4143;try{_0x4d4143=a4_0x4549cc['resolve'](a4_0x4549cc[_0x272ab0(0x13c)](_0x41e63a));}catch{return![];}if(!a4_0x4549cc['isAbsolute'](_0x4d4143))throw new Error(_0x272ab0(0x139));return _0x191beb[_0x272ab0(0x137)](_0x379a32=>{const _0x1bae58=_0x272ab0;if(typeof _0x379a32!==_0x1bae58(0x140)||!_0x379a32)return![];if(_0x379a32[_0x1bae58(0x13d)]('\x00'))return![];let _0x231b7f;try{_0x231b7f=a4_0x4549cc['resolve'](a4_0x4549cc[_0x1bae58(0x13c)](_0x379a32));}catch{return![];}if(!a4_0x4549cc[_0x1bae58(0x12e)](_0x231b7f))throw new Error(_0x1bae58(0x13e));if(_0x4d4143===_0x231b7f)return!![];if(_0x231b7f===a4_0x4549cc['sep'])return _0x4d4143['startsWith'](a4_0x4549cc[_0x1bae58(0x138)]);return _0x4d4143[_0x1bae58(0x136)](_0x231b7f+a4_0x4549cc[_0x1bae58(0x138)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x139d2a,_0xa5b752){const _0x47b93c=a5_0x14f2,_0x28f055=_0x139d2a();while(!![]){try{const _0x39961b=-parseInt(_0x47b93c(0x135))/0x1+parseInt(_0x47b93c(0x13c))/0x2*(parseInt(_0x47b93c(0x137))/0x3)+-parseInt(_0x47b93c(0x13a))/0x4*(parseInt(_0x47b93c(0x130))/0x5)+parseInt(_0x47b93c(0x136))/0x6+-parseInt(_0x47b93c(0x134))/0x7*(-parseInt(_0x47b93c(0x123))/0x8)+parseInt(_0x47b93c(0x133))/0x9+-parseInt(_0x47b93c(0x139))/0xa;if(_0x39961b===_0xa5b752)break;else _0x28f055['push'](_0x28f055['shift']());}catch(_0x70675d){_0x28f055['push'](_0x28f055['shift']());}}}(a5_0x2099,0x6e3a0));function a5_0x2099(){const _0x2de26f=['file://','join','homedir','5ZuxRob','push','message','5161050ZnkaHJ','553NGPqPO','833956uVIxgq','4360632liyLnF','1754139XSGnMQ','resolve','4189960fipoCW','3518264JmyZfa','stat','2fqjVgx','70792NSNQHJ','slice','non-directory\x20root','realpath','uri','invalid\x20path\x20or\x20inaccessible','\x20due\x20to\x20error:\x20','startsWith','Skipping\x20invalid\x20directory:\x20','Skipping\x20'];a5_0x2099=function(){return _0x2de26f;};return a5_0x2099();}import{promises as a5_0x968f78}from'fs';import a5_0x49e055 from'path';import a5_0x5df5cf from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x259ae7){const _0x412431=a5_0x14f2;try{const _0x10c98e=_0x259ae7[_0x412431(0x12a)](_0x412431(0x12d))?_0x259ae7[_0x412431(0x124)](0x7):_0x259ae7,_0x1eed79=_0x10c98e[_0x412431(0x12a)]('~/')||_0x10c98e==='~'?a5_0x49e055[_0x412431(0x12e)](a5_0x5df5cf[_0x412431(0x12f)](),_0x10c98e['slice'](0x1)):_0x10c98e,_0x506001=a5_0x49e055[_0x412431(0x138)](_0x1eed79),_0x444f5c=await a5_0x968f78[_0x412431(0x126)](_0x506001);return normalizePath(_0x444f5c);}catch{return null;}}function formatDirectoryError(_0x36edb3,_0x4d2dae,_0x4f0ed4){const _0x1a06df=a5_0x14f2;if(_0x4f0ed4)return _0x1a06df(0x12c)+_0x4f0ed4+':\x20'+_0x36edb3;const _0x3cadcb=_0x4d2dae instanceof Error?_0x4d2dae[_0x1a06df(0x132)]:String(_0x4d2dae);return _0x1a06df(0x12b)+_0x36edb3+_0x1a06df(0x129)+_0x3cadcb;}function a5_0x14f2(_0x5758e1,_0x2c92c6){_0x5758e1=_0x5758e1-0x123;const _0x209937=a5_0x2099();let _0x14f2da=_0x209937[_0x5758e1];return _0x14f2da;}export async function getValidRootDirectories(_0x3224eb){const _0xc3a36=a5_0x14f2,_0x4040d4=[];for(const _0x2f5ab1 of _0x3224eb){const _0x56885d=await parseRootUri(_0x2f5ab1[_0xc3a36(0x127)]);if(!_0x56885d){logMcpStderr(formatDirectoryError(_0x2f5ab1[_0xc3a36(0x127)],undefined,_0xc3a36(0x128)));continue;}try{const _0x249bcc=await a5_0x968f78[_0xc3a36(0x13b)](_0x56885d);_0x249bcc['isDirectory']()?_0x4040d4[_0xc3a36(0x131)](_0x56885d):logMcpStderr(formatDirectoryError(_0x56885d,undefined,_0xc3a36(0x125)));}catch(_0x43ac68){logMcpStderr(formatDirectoryError(_0x56885d,_0x43ac68));}}return _0x4040d4;}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a6_0x5a54dc=a6_0x36d9;function a6_0x38be(){const _0x163d3d=['498404budhJY','1742428wiwMgS','859746kLVbnn','edit_file','11959122FNgtKs','2449104HYFHNw','values','4180100regQDf','998382ighyes'];a6_0x38be=function(){return _0x163d3d;};return a6_0x38be();}(function(_0x440350,_0x21ed4){const _0x10e2a3=a6_0x36d9,_0x1d451a=_0x440350();while(!![]){try{const _0x1f94b9=parseInt(_0x10e2a3(0x135))/0x1+parseInt(_0x10e2a3(0x12d))/0x2+-parseInt(_0x10e2a3(0x132))/0x3+-parseInt(_0x10e2a3(0x12e))/0x4+-parseInt(_0x10e2a3(0x134))/0x5+-parseInt(_0x10e2a3(0x12f))/0x6+parseInt(_0x10e2a3(0x131))/0x7;if(_0x1f94b9===_0x21ed4)break;else _0x1d451a['push'](_0x1d451a['shift']());}catch(_0x340949){_0x1d451a['push'](_0x1d451a['shift']());}}}(a6_0x38be,0xb0f08));export const TOOL_NAMES={'EDIT_FILE':a6_0x5a54dc(0x130),'CODEBASE_SEARCH':'codebase_search','GITHUB_CODEBASE_SEARCH':'github_codebase_search'};function a6_0x36d9(_0x25c916,_0x382a34){_0x25c916=_0x25c916-0x12d;const _0x38be7a=a6_0x38be();let _0x36d900=_0x38be7a[_0x25c916];return _0x36d900;}export const ALL_TOOL_NAMES=Object[a6_0x5a54dc(0x133)](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.189",
|
|
4
4
|
"description": "Fast & accurate MCP server with AI-powered file editing and intelligent code search. Prevents context pollution and saves time for a better user experience.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Morph (https://morphllm.com)",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@google/generative-ai": "^0.21.0",
|
|
37
37
|
"@modelcontextprotocol/sdk": "^1.12.3",
|
|
38
|
-
"@morphllm/morphsdk": "0.2.
|
|
38
|
+
"@morphllm/morphsdk": "0.2.179",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|