apt-mcp-agent-setup 1.1.0 → 1.1.2
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/README.md +12 -7
- package/bin/cli.js +1 -1
- package/bundle/NOTICES.md +0 -0
- package/bundle/core.enc +0 -0
- package/bundle/mcp-rules.enc +0 -0
- package/bundle/skills-base.enc +0 -0
- package/bundle/skills-be.enc +0 -0
- package/bundle/skills-fe.enc +0 -0
- package/bundle/skills-mobile.enc +0 -0
- package/integrity-manifest.json +16 -16
- package/package.json +3 -2
- package/src/installer/global-setup.js +1 -1
- package/src/installer/platform-config.js +1 -1
- package/src/installer/prerequisites.js +1 -1
- package/src/installer/project-setup.js +1 -1
- package/src/installer/setup-wizard.js +1 -1
- package/src/license/crypto.js +1 -1
- package/src/license/fingerprint.js +1 -1
- package/src/license/terms.js +1 -1
- package/src/license/verify.js +1 -1
- package/src/presets/index.js +1 -1
- package/src/proxy/backends.js +1 -1
- package/src/proxy/router.config.js +1 -1
- package/src/proxy/router.js +1 -1
- package/src/proxy/server.js +1 -1
- package/src/templates/AGENTS.md +42 -19
- package/src/templates/design-config.md +52 -0
- package/src/templates/jira-config.md +52 -0
package/src/proxy/server.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x2004a1=_0x1408;(function(_0x3f2334,_0x34468a){const _0x106946=_0x1408,_0x3fab51=_0x3f2334();while(!![]){try{const _0x1984c8=-parseInt(_0x106946(0x110))/0x1+parseInt(_0x106946(0x120))/0x2+-parseInt(_0x106946(0xc2))/0x3+parseInt(_0x106946(0x123))/0x4*(-parseInt(_0x106946(0xea))/0x5)+parseInt(_0x106946(0x11f))/0x6*(-parseInt(_0x106946(0x111))/0x7)+parseInt(_0x106946(0xed))/0x8*(-parseInt(_0x106946(0xdf))/0x9)+parseInt(_0x106946(0xdd))/0xa;if(_0x1984c8===_0x34468a)break;else _0x3fab51['push'](_0x3fab51['shift']());}catch(_0x444c14){_0x3fab51['push'](_0x3fab51['shift']());}}}(_0x3ed5,0x8034f));function _0x1408(_0x376a98,_0x488f7){_0x376a98=_0x376a98-0xbc;const _0x3ed580=_0x3ed5();let _0x1408e3=_0x3ed580[_0x376a98];if(_0x1408['uNpgwH']===undefined){var _0x328b55=function(_0x1bee17){const _0x386fb1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2cfabe='',_0x147070='';for(let _0x852245=0x0,_0x4771f5,_0x1eb846,_0x56ca7b=0x0;_0x1eb846=_0x1bee17['charAt'](_0x56ca7b++);~_0x1eb846&&(_0x4771f5=_0x852245%0x4?_0x4771f5*0x40+_0x1eb846:_0x1eb846,_0x852245++%0x4)?_0x2cfabe+=String['fromCharCode'](0xff&_0x4771f5>>(-0x2*_0x852245&0x6)):0x0){_0x1eb846=_0x386fb1['indexOf'](_0x1eb846);}for(let _0x3e1e2c=0x0,_0x2266fa=_0x2cfabe['length'];_0x3e1e2c<_0x2266fa;_0x3e1e2c++){_0x147070+='%'+('00'+_0x2cfabe['charCodeAt'](_0x3e1e2c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x147070);};_0x1408['anQZct']=_0x328b55,_0x1408['oxxKnG']={},_0x1408['uNpgwH']=!![];}const _0x3920c9=_0x3ed580[0x0],_0x458227=_0x376a98+_0x3920c9,_0x1d2d23=_0x1408['oxxKnG'][_0x458227];return!_0x1d2d23?(_0x1408e3=_0x1408['anQZct'](_0x1408e3),_0x1408['oxxKnG'][_0x458227]=_0x1408e3):_0x1408e3=_0x1d2d23,_0x1408e3;}const fs=require('fs'),path=require(_0x2004a1(0x132)),os=require('os'),{verifyLicense}=require('../license/verify.js'),{spawnBackends}=require(_0x2004a1(0x145)),{translateToolList,mapExposedToOriginal}=require(_0x2004a1(0xe5));function _0x3ed5(){const _0x433554=['w01ducbbz2vUDf0GrMfPBgvKihrVihnHDMuGCMvMCMvZAgvKigXPy2vUC2uGDg9Rzw4GDg8GzgLZAZO','ywXS','w01ducbbz2vUDf0GrMfPBgvKihrVihbHCNnLiePtt04TuLbdig1LC3nHz2uGzNjVBsbJBgLLBNq6','Dg9VBhmVy2fSBa','ANnVBNjWyW','ufjprfvdveLptL9qvujmsunFs0vz','w01ducbbz2vUDf0Gsw50zwDYAxr5ignOzwnRigzHAwXLzdOGrMfPBgvKihrVihbHCNnLigLUDgvNCML0Es1Tyw5PzMvZDc5QC29UlIbfEgL0Aw5NlG','zgLYBMfTzq','BgLZDenOyw5Nzwq','Agv4','DMfSDwvZ','uhjVEhLtzxj2zxi','oda1mZy2sgz5wwfA','n0Dpu1PbDW','BgLJzw5ZzuTLEq','D3jPDgu','l2HLyxj0yMvHDa','yMfJA2vUzhm','w01ducbbz2vUDf0GtgLJzw5ZzsbLEhbPCMvKig9Uia','BwfZDgvYlNb1yMXPyY5Wzw0','ChjVAMvJDfbHDgG','zNjVBq','C3rKAw5mAxn0zw5LCG','y3jLyxrLsgfZAa','yxbWBgLJyxrPB24VANnVBG','w01ducbbz2vUDf0Gsw50zwDYAxr5ignOzwnRigzHAwXLzdOG','C2LNBMf0DxjL','ndGXmty1mLn5D0TzyW','odu1ode0uw9Hy1vK','Dg9VBhmVBgLZDa','ChvIBgLJs2v5','mZe4mtaYogvtyuLVCG','CMvHzezPBgvtEw5J','Dg9Rzw4','Dg9ju09tDhjPBMC','DxrMoa','BwfZDgvYu2vJCMv0','Aw50zwDYAxr5twfUAwzLC3rqyxrO','w01ducbbz2vUDf0GDg9VBhmVBgLZDcbYzxf1zxn0igzHAwXLzcbMB3iGC2vYDMLJzsa','w01ducbbz2vUDf0Gsw50zwDYAxr5ignOzwnRigzHAwXLzdOGsw52ywXPzcbZAwDUyxr1CMuUiev4AxrPBMCU','DMfSAwq','w01ducbbz2vUDf0GtgLJzw5ZzsbRzxKGDMvYAwzPy2f0Aw9UigzHAwXLzdOG','AM9PBG','ChjVDg9JB2XwzxjZAw9U','D3jPDgvgAwXLu3LUyW','mI4W','Cgf0Aa','DMvYAwz5','w01ducbbz2vUDf0GtgLJzw5ZzsbRzxKGDMvYAwzPzwqGC3vJy2vZC2z1BgX5igzVCIb1C2vYoIa','DMvYC2LVBG','C2vUzfjLCxvLC3q','w01ducbbz2vUDf0GrMfPBgvKihrVigLUAxrPywXPEMuGC2vYDMLJzsa','AgvHCNrIzwf0sw50zxj2ywW','CMvJDxjZAxzL','Aw5PDgLHBgL6zq','D3jPDgvfCNjVCG','Dw5RBM93BG','BMfTzq','zxHPC3rZu3LUyW','C3rHDhvZ','CMvZDwX0','CMvHC29U','y2fWywjPBgL0AwvZ','ig1VzgLMAwvKlIbfEgL0Aw5NlG','BwnWlwfNzw50lxbYB3H5','lI9IywnRzw5KCY5QCW','C3rKAw4','zxjYB3i','BgvUz3rO','BwvZC2fNzq','Cgf1C2u','C3rHCNq','C2HHmJu2','lMfUAgrO','Bg9HzeXPy2vUC2vlzxK','ANnVBG','zxHW','igLZig5VDcbYDw5UAw5N','B3jPz2LUywXoyw1L','CgvYzM9YBuHLyxj0yMvHDa','BgLJzw5Zzs5RzxK','zgLZDa','mty2mJi3mff3qKX2uW','zxHWB3j0CW','lIbszw5LDYbHDcbODhrWCZOVl2fUAgrOlMLVl3jLBMv3lIbfEgL0Aw5NlG','Cgf5Bg9Hza','BwfW','w01ducbbz2vUDf0GsgvHCNrIzwf0ignOzwnRoIb0B2TLBIbOyxmGBgvZCYb0AgfUidyGzgf5CYbYzw1HAw5PBMCUifjLzNjLC2HPBMCUlI4','AgfUzgXLq2XPzw50rgf0yq','w01ducbbz2vUDf0GsgvHCNrIzwf0ihjLzNjLC2GGzMfPBgvKoIbtzxj2zxiGCMv0DxjUzwqG','zgf0yq','CgfYC2u','CgfYyw1Z','Dg9VBhm','DhjPBq','y29Kzq','Aw50zwDYAxr5lw1HBMLMzxn0lMPZB24','q29UDgvUDc1uExbL','BwfPBG','w01ducbbz2vUDf0Gsw50zwDYAxr5ignOzwnRigzHAwXLzdOGu2LNBMf0DxjLihzLCMLMAwnHDgLVBIbMywLSzwqUiev4AxrPBMCU','ywrTAw4','zw50CMLLCW','Cg9W','zxHPDa','C3rKB3v0','C3bSAxq','w01ducbbz2vUDf0Gsw50zwDYAxr5ignOzwnRigzHAwXLzdOGsw52ywXPzcbTyw5PzMvZDcbMB3jTyxqUiev4AxrPBMCU','tgLJzw5ZzsbLEhbPCMvK','y2XPzw50qNvMzMvY','mZq5mtu0mJbusfnXvxq','y3j5ChrV','nZq3swD2BLPp','vgfYz2v0igjHy2TLBMqG','y2HPBgq','zMXHDa','CNvUBMLUzW','vg9VBcbUB3qGzM91BMq6ia','lI9YB3v0zxiUANm','w01ducbbz2vUDf0GtgLJzw5ZzsbRzxKGAgfZigjLzw4GCMv2B2TLzc4GrxHPDgLUzY4','Ag9TzwrPCG','w01ducbbz2vUDf0GsgvHCNrIzwf0oIbmAwnLBNnLihrVA2vUihn1y2nLC3nMDwXSEsbYzwzYzxnOzwqU','mJaYnc0Xms0Wnq','nxHwsMDTCG','C3rVCa','C2LNBMfS','ndiXodrmyKPOEMe','lIbdB250Aw51Aw5NihDPDgGGy2fJAgvKihrVA2vUlG','Aw5JBhvKzxm','DxbKyxrL','yMfZzty0DxjS','lI4VBgLJzw5Zzs92zxjPzNKUANm','AgfUzgXLq2XPzw50twvZC2fNzq','zgLZCgXHEu5HBwu','y2f0y2G','C3rYAw5NAwz5','zMLSzxm','zgLNzxn0','y3DK','rMfPBgvKihrVihf1zxj5ihrVB2WGBgLZDdOG','rMfPBgvKihrVihn0yxj0ifbYB3H5u2vYDMvYoG','D3jPDgvuB0nSAwvUDa','w01ducbbz2vUDf0Gsw50zwDYAxr5ignOzwnRigzHAwXLzdOGAw50zwDYAxr5lw1HBMLMzxn0lMPZB24GBwLZC2LUzY4GrxHPDgLUzY4','CMvTB3zLtgLZDgvUzxi','lI4VBgLJzw5Zzs9MAw5NzxjWCMLUDc5QCW','lI4VlI4','Dg9tDhjPBMC','ms4WlJa','zgv2AwnLswq'];_0x3ed5=function(){return _0x433554;};return _0x3ed5();}class ProxyServer{constructor(_0x5699df={}){const _0x5dee42=_0x2004a1;this[_0x5dee42(0x118)]=_0x5699df['projectPath']||process[_0x5dee42(0xf9)](),this[_0x5dee42(0x112)]=_0x5699df[_0x5dee42(0x112)]||this[_0x5dee42(0x14e)](),this[_0x5dee42(0x103)]=_0x5699df['deviceId'],this[_0x5dee42(0x122)]=_0x5699df['publicKey']||_0x5699df[_0x5dee42(0x128)],this[_0x5dee42(0x115)]=null,this['clientBuffer']='',this['running']=![],this[_0x5dee42(0xd8)]=_0x5699df['stdout']||process['stdout'],this[_0x5dee42(0x129)]=_0x5699df['integrityManifestPath']||path['join'](__dirname,_0x5dee42(0x100),_0x5dee42(0xd0));}[_0x2004a1(0x14e)](){const _0x589161=_0x2004a1,_0xf8fb9c=path[_0x589161(0x12e)](os['homedir'](),_0x589161(0x14d),_0x589161(0xc0));if(fs[_0x589161(0x13e)](_0xf8fb9c))return fs[_0x589161(0x124)](_0xf8fb9c,_0x589161(0x127))[_0x589161(0xce)]();return null;}async[_0x2004a1(0xbf)](){const _0x58976c=_0x2004a1,_0x52c869=process.env.MCP_SKIP_LICENSE_CHECK==='1';if(_0x52c869||!this[_0x58976c(0x112)])return;const _0x349d22=this['licenseKey']['split']('.');if(_0x349d22[_0x58976c(0x148)]!==0x3)return;let _0x456423;try{_0x456423=JSON[_0x58976c(0xcb)](Buffer[_0x58976c(0x119)](_0x349d22[0x1],'base64url')[_0x58976c(0x101)](_0x58976c(0x127)));}catch(_0xfdc96f){return;}if(!_0x456423||!_0x456423[_0x58976c(0xbc)])return;const _0x458aa0=0x6*0x18*0xe10*0x3e8,_0x58e39d=_0x456423[_0x58976c(0xbc)]-Date['now']();if(_0x58e39d<_0x458aa0){console[_0x58976c(0x147)](_0x58976c(0xc7));const _0x392fa1=process.env.MCP_ACTIVATION_URL||'https://agentkit.alphatechs.ai',_0x1b4b4f=_0x392fa1+_0x58976c(0x114),_0x55d5b3=new AbortController(),_0x34117c=setTimeout(()=>_0x55d5b3['abort'](),0x1388);try{const _0x309c96={};_0x309c96[_0x58976c(0xd1)]=_0x58976c(0x11c);const _0x5772eb={};_0x5772eb[_0x58976c(0x125)]=this[_0x58976c(0x112)];const _0xe73868=await fetch(_0x1b4b4f,{'method':'POST','headers':_0x309c96,'body':JSON['stringify'](_0x5772eb),'signal':_0x55d5b3[_0x58976c(0xec)]});clearTimeout(_0x34117c);if(_0xe73868[_0x58976c(0x13f)]===0x193){console['error'](_0x58976c(0xe6)),process[_0x58976c(0xd7)](0x1);return;}if(_0xe73868[_0x58976c(0x13f)]===0x191){console['error']('[MCP\x20Agent]\x20License\x20key\x20expired\x20or\x20invalid.\x20Exiting.'),process[_0x58976c(0xd7)](0x1);return;}if(!_0xe73868['ok']){console[_0x58976c(0x147)](_0x58976c(0xc9)+_0xe73868['status']+_0x58976c(0xee));return;}const _0x5e0eef=await _0xe73868[_0x58976c(0x14f)]();if(_0x5e0eef&&_0x5e0eef[_0x58976c(0x125)]){this['licenseKey']=_0x5e0eef[_0x58976c(0x125)];const _0x51d975=path[_0x58976c(0x12e)](os[_0x58976c(0xe7)](),_0x58976c(0x14d),_0x58976c(0xc0));try{const _0x40bdcf={};_0x40bdcf[_0x58976c(0x139)]=!![],fs['mkdirSync'](path[_0x58976c(0x10b)](_0x51d975),_0x40bdcf),fs[_0x58976c(0x130)](_0x51d975,_0x5e0eef['token'],'utf8'),console['error'](_0x58976c(0xe8));}catch(_0x1ca04f){console[_0x58976c(0x147)](_0x58976c(0x104),_0x1ca04f[_0x58976c(0x149)]);}}}catch(_0x2dd892){clearTimeout(_0x34117c),console[_0x58976c(0x147)]('[MCP\x20Agent]\x20Heartbeat\x20check\x20failed\x20or\x20timed\x20out:',_0x2dd892[_0x58976c(0x149)],'.\x20Continuing\x20with\x20cached\x20token.');}}}async['start'](){const _0x1a9d18=_0x2004a1;console[_0x1a9d18(0x147)]('[MCP\x20Agent]\x20Starting\x20server\x20at\x20'+this['projectPath']);if(!this[_0x1a9d18(0x122)]){if(process.env.MCP_ADMIN_DIR){const _0x121c46=path[_0x1a9d18(0x12e)](process.env.MCP_ADMIN_DIR,_0x1a9d18(0x117));fs['existsSync'](_0x121c46)&&(this[_0x1a9d18(0x122)]=fs[_0x1a9d18(0x124)](_0x121c46,_0x1a9d18(0x127))['trim']());}if(!this[_0x1a9d18(0x122)]){let _0x47eb03=__dirname;while(_0x47eb03){const _0x1cf242=path[_0x1a9d18(0x12e)](_0x47eb03,_0x1a9d18(0xd4),_0x1a9d18(0x117));if(fs[_0x1a9d18(0x13e)](_0x1cf242)){this[_0x1a9d18(0x122)]=fs['readFileSync'](_0x1cf242,_0x1a9d18(0x127))[_0x1a9d18(0xce)]();break;}const _0x141111=path[_0x1a9d18(0x10b)](_0x47eb03);if(_0x141111===_0x47eb03)break;_0x47eb03=_0x141111;}}}const _0x598acd=this[_0x1a9d18(0x129)],_0x24fff0=!__dirname['replace'](/\\/g,'/')[_0x1a9d18(0xd9)]('/')[_0x1a9d18(0xef)](_0x1a9d18(0xc1)),_0x409e88=process.env.MCP_SKIP_INTEGRITY_CHECK==='1'||_0x24fff0&&!fs[_0x1a9d18(0x13e)](_0x598acd);if(!_0x409e88){const _0x4ec533=require(_0x1a9d18(0xde));if(!fs[_0x1a9d18(0x13e)](_0x598acd)){console[_0x1a9d18(0x147)](_0x1a9d18(0xfd)),process[_0x1a9d18(0xd7)](0x1);return;}let _0x21f216;try{_0x21f216=JSON[_0x1a9d18(0xcb)](fs[_0x1a9d18(0x124)](_0x598acd,_0x1a9d18(0x127)));}catch(_0x2d5df0){console[_0x1a9d18(0x147)](_0x1a9d18(0x10a)),process['exit'](0x1);return;}if(!_0x21f216[_0x1a9d18(0xf7)]||!_0x21f216[_0x1a9d18(0x11e)]){console[_0x1a9d18(0x147)](_0x1a9d18(0xda)),process['exit'](0x1);return;}const _0x11265c=this[_0x1a9d18(0x122)]||require(_0x1a9d18(0xf2))[_0x1a9d18(0x109)];try{const _0x1b01ac=JSON[_0x1a9d18(0xf6)](_0x21f216['files']),_0x55e3a8=Buffer['from'](_0x21f216[_0x1a9d18(0x11e)],_0x1a9d18(0xf1)),_0x29a548=_0x4ec533[_0x1a9d18(0x133)](null,Buffer[_0x1a9d18(0x119)](_0x1b01ac),_0x11265c,_0x55e3a8);if(!_0x29a548){console[_0x1a9d18(0x147)](_0x1a9d18(0x12b)),process[_0x1a9d18(0xd7)](0x1);return;}}catch(_0x487d8c){console['error'](_0x1a9d18(0xd3)),process['exit'](0x1);return;}const _0x4282df=path['join'](__dirname,_0x1a9d18(0x100));for(const [_0x50d030,_0x2ca5fc]of Object[_0x1a9d18(0xd5)](_0x21f216[_0x1a9d18(0xf7)])){const _0x9ded79=path['join'](_0x4282df,_0x50d030);if(!fs['existsSync'](_0x9ded79)){console[_0x1a9d18(0x147)](_0x1a9d18(0x11d)+_0x50d030+'\x20modified.\x20Exiting.'),process[_0x1a9d18(0xd7)](0x1);return;}try{const _0x57ec1c=fs[_0x1a9d18(0x124)](_0x9ded79),_0x23aa95=_0x4ec533[_0x1a9d18(0x11b)](_0x1a9d18(0x14c))[_0x1a9d18(0xf0)](_0x57ec1c)[_0x1a9d18(0xf8)](_0x1a9d18(0x10d));if(_0x23aa95!==_0x2ca5fc){console['error'](_0x1a9d18(0x11d)+_0x50d030+'\x20modified.\x20Exiting.'),process[_0x1a9d18(0xd7)](0x1);return;}}catch(_0x432e52){console[_0x1a9d18(0x147)](_0x1a9d18(0x11d)+_0x50d030+_0x1a9d18(0x143)),process[_0x1a9d18(0xd7)](0x1);return;}}}const _0x40adbe=process.env.MCP_SKIP_LICENSE_CHECK==='1';if(!_0x40adbe){if(!this[_0x1a9d18(0x103)]){const {getFingerprint:_0xcb36d8}=require(_0x1a9d18(0xff));this[_0x1a9d18(0x103)]=_0xcb36d8();}const _0x4957aa=verifyLicense(this[_0x1a9d18(0x112)],this['deviceId'],this[_0x1a9d18(0x122)]);if(!_0x4957aa[_0x1a9d18(0x12c)]){if(_0x4957aa[_0x1a9d18(0x141)]===_0x1a9d18(0xdb)){const _0x44028a=_0x4957aa[_0x1a9d18(0xc5)]||{},_0x5a45f4=_0x44028a[_0x1a9d18(0xbc)]?new Date(_0x44028a['exp'])[_0x1a9d18(0x126)]()[_0x1a9d18(0xd9)]('T')[0x0]:_0x1a9d18(0x13c);console[_0x1a9d18(0x147)](_0x1a9d18(0x116)+_0x5a45f4+_0x1a9d18(0xc4));}else console['error'](_0x1a9d18(0x12d)+_0x4957aa[_0x1a9d18(0x141)]+'.\x20Contact\x20support\x20at\x20support@anhdh.io.\x20Exiting.');process[_0x1a9d18(0xd7)](0x1);return;}console['error'](_0x1a9d18(0x134)+_0x4957aa[_0x1a9d18(0xc5)]['user']),await this['performHeartbeat'](),this[_0x1a9d18(0x138)]=setInterval(()=>{this['performHeartbeat']()['catch'](_0x51a3ab=>{const _0x126a49=_0x1408;console[_0x126a49(0x147)]('[MCP\x20Agent]\x20Periodic\x20heartbeat\x20error:',_0x51a3ab[_0x126a49(0x149)]);});},0x18*0x3c*0x3c*0x3e8);}this[_0x1a9d18(0x115)]=spawnBackends(this[_0x1a9d18(0x118)]),this['running']=!![];for(const _0x5bf6ec of Object['values'](this[_0x1a9d18(0x115)])){_0x5bf6ec['start']();}this['stdinListener']=_0xa4004a=>{const _0x19444e=_0x1a9d18;this[_0x19444e(0xc8)](_0xa4004a[_0x19444e(0x101)]());},process[_0x1a9d18(0x146)]['on'](_0x1a9d18(0xca),this['stdinListener']);}['handleClientData'](_0x3142a2){const _0x17f296=_0x2004a1;this[_0x17f296(0xdc)]+=_0x3142a2;const _0x497982=this[_0x17f296(0xdc)][_0x17f296(0xd9)]('\x0a');this[_0x17f296(0xdc)]=_0x497982[_0x17f296(0xd6)]();for(const _0x47089b of _0x497982){const _0x23fadc=_0x47089b[_0x17f296(0xce)]();if(!_0x23fadc)continue;try{const _0x192faf=JSON[_0x17f296(0xcb)](_0x23fadc);this[_0x17f296(0xf3)](_0x192faf);}catch(_0x3a2a54){console[_0x17f296(0x147)](_0x17f296(0x106),_0x47089b,_0x3a2a54[_0x17f296(0x149)]);}}}async['handleClientMessage'](_0x46adc0){const _0x319bf0=_0x2004a1,{id:_0x44ce74,method:_0x4e4cdb,params:_0x2d5508}=_0x46adc0;if(!_0x4e4cdb)return;if(_0x4e4cdb===_0x319bf0(0x13a)){Promise[_0x319bf0(0x105)](Object[_0x319bf0(0x10e)](this[_0x319bf0(0x115)])['map'](_0x49550a=>_0x49550a[_0x319bf0(0x136)]('initialize',_0x2d5508)[_0x319bf0(0xf5)](_0x336a96=>{const _0x4f4f1a=_0x319bf0;console[_0x4f4f1a(0x147)](_0x4f4f1a(0x137)+(_0x49550a[_0x4f4f1a(0xf4)]||_0x49550a[_0x4f4f1a(0x13d)])+':',_0x336a96['message']);})));const _0x3c1ae5={};_0x3c1ae5[_0x319bf0(0x10c)]=![];const _0x333953={};_0x333953[_0x319bf0(0xcd)]=_0x3c1ae5;const _0x546586={};_0x546586[_0x319bf0(0x13d)]=_0x319bf0(0x144),_0x546586[_0x319bf0(0x135)]=_0x319bf0(0x102);const _0xe31875={};_0xe31875[_0x319bf0(0x12f)]=_0x2d5508[_0x319bf0(0x12f)]||_0x319bf0(0xe9),_0xe31875[_0x319bf0(0x142)]=_0x333953,_0xe31875['serverInfo']=_0x546586;const _0x1e2126={};_0x1e2126[_0x319bf0(0x108)]=_0x319bf0(0x131),_0x1e2126['id']=_0x44ce74,_0x1e2126[_0x319bf0(0x140)]=_0xe31875;const _0x987ebd=_0x1e2126;this[_0x319bf0(0xfc)](_0x987ebd);return;}if(_0x4e4cdb===_0x319bf0(0x121)){try{const _0x4cd453=Object[_0x319bf0(0xd5)](this['backends'])[_0x319bf0(0xc6)](async([_0xd067c0,_0x4acf75])=>{const _0x2c1dfd=_0x319bf0;try{const _0xf7e3d8=await _0x4acf75[_0x2c1dfd(0x136)](_0x2c1dfd(0x121)),_0x2cf1ab=_0xf7e3d8&&_0xf7e3d8[_0x2c1dfd(0x140)]&&_0xf7e3d8['result']['tools']||[];return translateToolList(_0x2cf1ab,_0xd067c0);}catch(_0x36916f){return console[_0x2c1dfd(0x147)](_0x2c1dfd(0x12a)+_0xd067c0+':',_0x36916f[_0x2c1dfd(0x149)]),[];}}),_0x32c2d8=await Promise[_0x319bf0(0x105)](_0x4cd453),_0x49f706=_0x32c2d8[_0x319bf0(0xe2)](),_0x257725={};_0x257725['tools']=_0x49f706;const _0x338e5e={};_0x338e5e['jsonrpc']=_0x319bf0(0x131),_0x338e5e['id']=_0x44ce74,_0x338e5e[_0x319bf0(0x140)]=_0x257725;const _0x2791f8=_0x338e5e;this[_0x319bf0(0xfc)](_0x2791f8);}catch(_0x247079){this[_0x319bf0(0x13b)](_0x44ce74,-0x7f5b,_0x319bf0(0xfa)+_0x247079[_0x319bf0(0x149)]);}return;}if(_0x4e4cdb===_0x319bf0(0x107)){const _0x564d8a=_0x2d5508['name'],_0x13b8dc=mapExposedToOriginal(_0x564d8a);if(!_0x13b8dc)return this[_0x319bf0(0x13b)](_0x44ce74,-0x7f59,_0x319bf0(0xe4)+_0x564d8a);try{const _0xe2ee1a=this[_0x319bf0(0x115)][_0x13b8dc['backend']];if(!_0xe2ee1a)return this[_0x319bf0(0x13b)](_0x44ce74,-0x7f5b,_0x319bf0(0xe0)+_0x13b8dc['backend']+_0x319bf0(0xbd));const _0x956632={..._0x2d5508};_0x956632[_0x319bf0(0x13d)]=_0x13b8dc[_0x319bf0(0xbe)];const _0x4c1b41={..._0x46adc0};_0x4c1b41[_0x319bf0(0xcc)]=_0x956632;const _0xc628a1=_0x4c1b41,_0x741ecf=await _0xe2ee1a['forwardRequest'](_0xc628a1);this[_0x319bf0(0xfc)](_0x741ecf);}catch(_0x21642a){this['writeError'](_0x44ce74,-0x7f5b,'Tool\x20execution\x20failed:\x20'+_0x21642a[_0x319bf0(0x149)]);}return;}for(const _0x656a0f of Object[_0x319bf0(0x10e)](this[_0x319bf0(0x115)])){_0x656a0f['child']&&_0x656a0f[_0x319bf0(0xe1)][_0x319bf0(0x146)][_0x319bf0(0x113)](JSON[_0x319bf0(0xf6)](_0x46adc0)+'\x0a');}}[_0x2004a1(0xfc)](_0x1cc76c){const _0xe2800=_0x2004a1;this[_0xe2800(0xd8)][_0xe2800(0x113)](JSON['stringify'](_0x1cc76c)+'\x0a');}['writeError'](_0x1e41da,_0x19bf17,_0x1b3892){const _0x530149=_0x2004a1,_0x909d91={};_0x909d91[_0x530149(0xcf)]=_0x19bf17,_0x909d91[_0x530149(0x149)]=_0x1b3892;const _0xc25af={};_0xc25af[_0x530149(0x108)]=_0x530149(0x131),_0xc25af['id']=_0x1e41da,_0xc25af[_0x530149(0x147)]=_0x909d91;const _0x378556=_0xc25af;this[_0x530149(0xfc)](_0x378556);}[_0x2004a1(0xeb)](){const _0xe364cf=_0x2004a1;this[_0xe364cf(0xe3)]=![];this['heartbeatInterval']&&(clearInterval(this[_0xe364cf(0x138)]),this[_0xe364cf(0x138)]=null);this[_0xe364cf(0x11a)]&&(process['stdin'][_0xe364cf(0xfe)](_0xe364cf(0xca),this['stdinListener']),this[_0xe364cf(0x11a)]=null,process[_0xe364cf(0x146)][_0xe364cf(0x14a)]());if(this['backends'])for(const _0x245b48 of Object['values'](this[_0xe364cf(0x115)])){_0x245b48[_0xe364cf(0xeb)]();}}}const _0x14e4bd={};_0x14e4bd[_0x2004a1(0x10f)]=ProxyServer,module[_0x2004a1(0xc3)]=_0x14e4bd;if(require[_0x2004a1(0xd2)]===module){const server=new ProxyServer();server[_0x2004a1(0x14b)]()[_0x2004a1(0xf5)](_0x528ebf=>{const _0x4ab56e=_0x2004a1;console[_0x4ab56e(0x147)](_0x4ab56e(0xfb),_0x528ebf[_0x4ab56e(0x149)]),process['exit'](0x1);});}
|
|
1
|
+
const _0x2fb957=_0x49a4;(function(_0x244f05,_0x43ecf8){const _0x436102=_0x49a4,_0x104d2d=_0x244f05();while(!![]){try{const _0x38ce90=parseInt(_0x436102(0x1d2))/0x1+-parseInt(_0x436102(0x190))/0x2+parseInt(_0x436102(0x162))/0x3*(-parseInt(_0x436102(0x19c))/0x4)+parseInt(_0x436102(0x175))/0x5*(parseInt(_0x436102(0x193))/0x6)+parseInt(_0x436102(0x1a3))/0x7+-parseInt(_0x436102(0x164))/0x8*(-parseInt(_0x436102(0x156))/0x9)+parseInt(_0x436102(0x1aa))/0xa;if(_0x38ce90===_0x43ecf8)break;else _0x104d2d['push'](_0x104d2d['shift']());}catch(_0x50e0bb){_0x104d2d['push'](_0x104d2d['shift']());}}}(_0x40ed,0xf3d2e));function _0x49a4(_0xf04edc,_0x2d12fc){_0xf04edc=_0xf04edc-0x14f;const _0x40eda3=_0x40ed();let _0x49a438=_0x40eda3[_0xf04edc];if(_0x49a4['GwxqtY']===undefined){var _0x1100b0=function(_0x2edcde){const _0x4df87d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x15086f='',_0x5354f2='';for(let _0x51389c=0x0,_0x7535b,_0x302e3a,_0x1fd427=0x0;_0x302e3a=_0x2edcde['charAt'](_0x1fd427++);~_0x302e3a&&(_0x7535b=_0x51389c%0x4?_0x7535b*0x40+_0x302e3a:_0x302e3a,_0x51389c++%0x4)?_0x15086f+=String['fromCharCode'](0xff&_0x7535b>>(-0x2*_0x51389c&0x6)):0x0){_0x302e3a=_0x4df87d['indexOf'](_0x302e3a);}for(let _0x1ec99d=0x0,_0x5cd7a2=_0x15086f['length'];_0x1ec99d<_0x5cd7a2;_0x1ec99d++){_0x5354f2+='%'+('00'+_0x15086f['charCodeAt'](_0x1ec99d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5354f2);};_0x49a4['YSIRjp']=_0x1100b0,_0x49a4['fxKhwb']={},_0x49a4['GwxqtY']=!![];}const _0x5d4438=_0x40eda3[0x0],_0x1d25c3=_0xf04edc+_0x5d4438,_0x395924=_0x49a4['fxKhwb'][_0x1d25c3];return!_0x395924?(_0x49a438=_0x49a4['YSIRjp'](_0x49a438),_0x49a4['fxKhwb'][_0x1d25c3]=_0x49a438):_0x49a438=_0x395924,_0x49a438;}const fs=require('fs'),path=require(_0x2fb957(0x1b3)),os=require('os'),{verifyLicense}=require(_0x2fb957(0x154)),{spawnBackends}=require(_0x2fb957(0x1b0)),{translateToolList,mapExposedToOriginal}=require('./router.js');class ProxyServer{constructor(_0x4717e4={}){const _0x836019=_0x2fb957;this[_0x836019(0x171)]=_0x4717e4['projectPath']||process[_0x836019(0x189)](),this[_0x836019(0x16c)]=_0x4717e4[_0x836019(0x16c)]||this[_0x836019(0x1c7)](),this[_0x836019(0x188)]=_0x4717e4[_0x836019(0x188)],this['publicKey']=_0x4717e4[_0x836019(0x198)]||_0x4717e4['masterSecret'],this[_0x836019(0x1cd)]=null,this[_0x836019(0x1a5)]='',this[_0x836019(0x15f)]=![],this['stdout']=_0x4717e4[_0x836019(0x1b2)]||process[_0x836019(0x1b2)],this['integrityManifestPath']=_0x4717e4[_0x836019(0x1d7)]||path[_0x836019(0x1ac)](__dirname,_0x836019(0x178),_0x836019(0x194));}['loadLicenseKey'](){const _0xfb820a=_0x2fb957,_0x163c2f=path[_0xfb820a(0x1ac)](os[_0xfb820a(0x1b6)](),_0xfb820a(0x180),_0xfb820a(0x172));if(fs['existsSync'](_0x163c2f))return fs[_0xfb820a(0x1d5)](_0x163c2f,_0xfb820a(0x191))['trim']();return null;}async['performHeartbeat'](){const _0x3e77b5=_0x2fb957,_0x5a7627=process.env.MCP_SKIP_LICENSE_CHECK==='1';if(_0x5a7627||!this['licenseKey'])return;const _0x117bcb=this['licenseKey']['split']('.');if(_0x117bcb['length']!==0x3)return;let _0x52130c;try{_0x52130c=JSON['parse'](Buffer[_0x3e77b5(0x160)](_0x117bcb[0x1],_0x3e77b5(0x197))['toString'](_0x3e77b5(0x191)));}catch(_0x37c5c5){return;}if(!_0x52130c||!_0x52130c[_0x3e77b5(0x1c5)])return;const _0x1393d5=0x6*0x18*0xe10*0x3e8,_0x512d44=_0x52130c['exp']-Date[_0x3e77b5(0x166)]();if(_0x512d44<_0x1393d5){console[_0x3e77b5(0x1da)](_0x3e77b5(0x187));const _0xe6b3c1=process.env.MCP_ACTIVATION_URL||_0x3e77b5(0x18b),_0x237474=_0xe6b3c1+_0x3e77b5(0x1bf),_0x242531=new AbortController(),_0xdcb4d1=setTimeout(()=>_0x242531[_0x3e77b5(0x199)](),0x1388);try{const _0x2ad30e={};_0x2ad30e[_0x3e77b5(0x18a)]=_0x3e77b5(0x1ba);const _0x155a38={};_0x155a38[_0x3e77b5(0x19b)]=this[_0x3e77b5(0x16c)];const _0x5460ce=await fetch(_0x237474,{'method':'POST','headers':_0x2ad30e,'body':JSON['stringify'](_0x155a38),'signal':_0x242531[_0x3e77b5(0x1a2)]});clearTimeout(_0xdcb4d1);if(_0x5460ce[_0x3e77b5(0x1a9)]===0x193){console['error']('[MCP\x20Agent]\x20License\x20key\x20has\x20been\x20revoked.\x20Exiting.'),process[_0x3e77b5(0x173)](0x1);return;}if(_0x5460ce['status']===0x191){console[_0x3e77b5(0x1da)]('[MCP\x20Agent]\x20License\x20key\x20expired\x20or\x20invalid.\x20Exiting.'),process[_0x3e77b5(0x173)](0x1);return;}if(!_0x5460ce['ok']){console[_0x3e77b5(0x1da)](_0x3e77b5(0x1a7)+_0x5460ce[_0x3e77b5(0x1a9)]+_0x3e77b5(0x1a6));return;}const _0x44b4f1=await _0x5460ce[_0x3e77b5(0x15b)]();if(_0x44b4f1&&_0x44b4f1['token']){this[_0x3e77b5(0x16c)]=_0x44b4f1[_0x3e77b5(0x19b)];const _0x160966=path['join'](os[_0x3e77b5(0x1b6)](),_0x3e77b5(0x180),_0x3e77b5(0x172));try{const _0x459c47={};_0x459c47[_0x3e77b5(0x185)]=!![],fs[_0x3e77b5(0x1bb)](path[_0x3e77b5(0x1d4)](_0x160966),_0x459c47),fs[_0x3e77b5(0x184)](_0x160966,_0x44b4f1[_0x3e77b5(0x19b)],'utf8'),console[_0x3e77b5(0x1da)](_0x3e77b5(0x15e));}catch(_0x4210a9){console[_0x3e77b5(0x1da)](_0x3e77b5(0x19f),_0x4210a9[_0x3e77b5(0x1b8)]);}}}catch(_0x11fc22){clearTimeout(_0xdcb4d1),console[_0x3e77b5(0x1da)](_0x3e77b5(0x181),_0x11fc22[_0x3e77b5(0x1b8)],'.\x20Continuing\x20with\x20cached\x20token.');}}}async[_0x2fb957(0x14f)](){const _0x3f0cc1=_0x2fb957;console[_0x3f0cc1(0x1da)](_0x3f0cc1(0x1c3)+this[_0x3f0cc1(0x171)]);if(!this[_0x3f0cc1(0x198)]){if(process.env.MCP_ADMIN_DIR){const _0x40e286=path['join'](process.env.MCP_ADMIN_DIR,_0x3f0cc1(0x168));fs['existsSync'](_0x40e286)&&(this[_0x3f0cc1(0x198)]=fs[_0x3f0cc1(0x1d5)](_0x40e286,_0x3f0cc1(0x191))[_0x3f0cc1(0x1d8)]());}if(!this[_0x3f0cc1(0x198)]){let _0x314213=__dirname;while(_0x314213){const _0x3eebff=path[_0x3f0cc1(0x1ac)](_0x314213,_0x3f0cc1(0x186),_0x3f0cc1(0x168));if(fs[_0x3f0cc1(0x159)](_0x3eebff)){this[_0x3f0cc1(0x198)]=fs[_0x3f0cc1(0x1d5)](_0x3eebff,'utf8')[_0x3f0cc1(0x1d8)]();break;}const _0x5de5e2=path[_0x3f0cc1(0x1d4)](_0x314213);if(_0x5de5e2===_0x314213)break;_0x314213=_0x5de5e2;}}}const _0x1b54c2=this['integrityManifestPath'],_0xca14be=!__dirname[_0x3f0cc1(0x16b)](/\\/g,'/')[_0x3f0cc1(0x18c)]('/')[_0x3f0cc1(0x1c4)]('dist'),_0xeb5d79=process.env.MCP_SKIP_INTEGRITY_CHECK==='1'||_0xca14be&&!fs['existsSync'](_0x1b54c2);if(!_0xeb5d79){const _0x2088ca=require(_0x3f0cc1(0x1c1));if(!fs['existsSync'](_0x1b54c2)){console[_0x3f0cc1(0x1da)](_0x3f0cc1(0x16f)),process[_0x3f0cc1(0x173)](0x1);return;}let _0x4c032e;try{_0x4c032e=JSON[_0x3f0cc1(0x1c8)](fs[_0x3f0cc1(0x1d5)](_0x1b54c2,_0x3f0cc1(0x191)));}catch(_0xe67ad6){console['error']('[MCP\x20Agent]\x20Integrity\x20check\x20failed:\x20Failed\x20to\x20parse\x20integrity-manifest.json.\x20Exiting.'),process[_0x3f0cc1(0x173)](0x1);return;}if(!_0x4c032e[_0x3f0cc1(0x1d0)]||!_0x4c032e[_0x3f0cc1(0x1b4)]){console[_0x3f0cc1(0x1da)](_0x3f0cc1(0x1cc)),process[_0x3f0cc1(0x173)](0x1);return;}const _0x5e19e6=this['publicKey']||require(_0x3f0cc1(0x154))['PRODUCTION_PUBLIC_KEY'];try{const _0x25d728=JSON[_0x3f0cc1(0x1a8)](_0x4c032e['files']),_0x121323=Buffer[_0x3f0cc1(0x160)](_0x4c032e[_0x3f0cc1(0x1b4)],_0x3f0cc1(0x197)),_0x8288f1=_0x2088ca[_0x3f0cc1(0x1d9)](null,Buffer[_0x3f0cc1(0x160)](_0x25d728),_0x5e19e6,_0x121323);if(!_0x8288f1){console[_0x3f0cc1(0x1da)](_0x3f0cc1(0x158)),process[_0x3f0cc1(0x173)](0x1);return;}}catch(_0x103385){console['error']('[MCP\x20Agent]\x20Integrity\x20check\x20failed:\x20Signature\x20verification\x20failed.\x20Exiting.'),process['exit'](0x1);return;}const _0x531b6b=path[_0x3f0cc1(0x1ac)](__dirname,_0x3f0cc1(0x178));for(const [_0x62b805,_0x18519a]of Object[_0x3f0cc1(0x16d)](_0x4c032e['files'])){const _0x3dad7a=path[_0x3f0cc1(0x1ac)](_0x531b6b,_0x62b805);if(!fs[_0x3f0cc1(0x159)](_0x3dad7a)){console['error'](_0x3f0cc1(0x151)+_0x62b805+_0x3f0cc1(0x192)),process[_0x3f0cc1(0x173)](0x1);return;}try{const _0x96c458=fs['readFileSync'](_0x3dad7a),_0x212afa=_0x2088ca[_0x3f0cc1(0x1dc)](_0x3f0cc1(0x155))[_0x3f0cc1(0x19a)](_0x96c458)[_0x3f0cc1(0x17d)](_0x3f0cc1(0x18e));if(_0x212afa!==_0x18519a){console[_0x3f0cc1(0x1da)]('[MCP\x20Agent]\x20Integrity\x20check\x20failed:\x20'+_0x62b805+_0x3f0cc1(0x192)),process[_0x3f0cc1(0x173)](0x1);return;}}catch(_0x16ee45){console['error'](_0x3f0cc1(0x151)+_0x62b805+_0x3f0cc1(0x192)),process[_0x3f0cc1(0x173)](0x1);return;}}}const _0x3ed3f3=process.env.MCP_SKIP_LICENSE_CHECK==='1';if(!_0x3ed3f3){if(!this[_0x3f0cc1(0x188)]){const {getFingerprint:_0x3b0627}=require(_0x3f0cc1(0x182));this[_0x3f0cc1(0x188)]=_0x3b0627();}const _0x1a3fe7=verifyLicense(this[_0x3f0cc1(0x16c)],this[_0x3f0cc1(0x188)],this['publicKey']);if(!_0x1a3fe7['valid']){if(_0x1a3fe7['reason']==='License\x20expired'){const _0x255b38=_0x1a3fe7[_0x3f0cc1(0x1a1)]||{},_0x8af656=_0x255b38['exp']?new Date(_0x255b38[_0x3f0cc1(0x1c5)])[_0x3f0cc1(0x165)]()[_0x3f0cc1(0x18c)]('T')[0x0]:_0x3f0cc1(0x17f);console['error']('[MCP\x20Agent]\x20License\x20expired\x20on\x20'+_0x8af656+_0x3f0cc1(0x152));}else console['error'](_0x3f0cc1(0x1bd)+_0x1a3fe7[_0x3f0cc1(0x167)]+_0x3f0cc1(0x16e));process[_0x3f0cc1(0x173)](0x1);return;}console[_0x3f0cc1(0x1da)](_0x3f0cc1(0x176)+_0x1a3fe7[_0x3f0cc1(0x1a1)][_0x3f0cc1(0x153)]),await this[_0x3f0cc1(0x174)](),this[_0x3f0cc1(0x1d3)]=setInterval(()=>{const _0x4c069e=_0x3f0cc1;this[_0x4c069e(0x174)]()[_0x4c069e(0x195)](_0x4565f7=>{const _0x1457de=_0x4c069e;console[_0x1457de(0x1da)](_0x1457de(0x1db),_0x4565f7[_0x1457de(0x1b8)]);});},0x18*0x3c*0x3c*0x3e8);}this['backends']=spawnBackends(this['projectPath']),this['running']=!![];for(const _0x4a6322 of Object[_0x3f0cc1(0x1c9)](this[_0x3f0cc1(0x1cd)])){_0x4a6322[_0x3f0cc1(0x14f)]();}this[_0x3f0cc1(0x161)]=_0x2db438=>{const _0x949da5=_0x3f0cc1;this[_0x949da5(0x1a4)](_0x2db438[_0x949da5(0x17a)]());},process['stdin']['on'](_0x3f0cc1(0x18d),this[_0x3f0cc1(0x161)]);}[_0x2fb957(0x1a4)](_0x22558c){const _0x2e79a6=_0x2fb957;this[_0x2e79a6(0x1a5)]+=_0x22558c;const _0x17bb3b=this[_0x2e79a6(0x1a5)][_0x2e79a6(0x18c)]('\x0a');this[_0x2e79a6(0x1a5)]=_0x17bb3b[_0x2e79a6(0x1a0)]();for(const _0x3ff2ba of _0x17bb3b){const _0x2a3f25=_0x3ff2ba[_0x2e79a6(0x1d8)]();if(!_0x2a3f25)continue;try{const _0x11c7bc=JSON[_0x2e79a6(0x1c8)](_0x2a3f25);this[_0x2e79a6(0x169)](_0x11c7bc);}catch(_0x4441b2){console[_0x2e79a6(0x1da)](_0x2e79a6(0x1b9),_0x3ff2ba,_0x4441b2['message']);}}}async[_0x2fb957(0x169)](_0x58e40f){const _0x1752f6=_0x2fb957,{id:_0x25a7f8,method:_0x447810,params:_0x1fad4b}=_0x58e40f;if(!_0x447810)return;if(_0x447810===_0x1752f6(0x170)){Promise[_0x1752f6(0x196)](Object[_0x1752f6(0x1c9)](this['backends'])[_0x1752f6(0x1b7)](_0x19fbb4=>_0x19fbb4[_0x1752f6(0x15c)](_0x1752f6(0x170),_0x1fad4b)[_0x1752f6(0x195)](_0x286437=>{const _0x55d038=_0x1752f6;console['error']('[MCP\x20Agent]\x20Failed\x20to\x20initialize\x20service\x20'+(_0x19fbb4[_0x55d038(0x15a)]||_0x19fbb4['name'])+':',_0x286437['message']);})));const _0x32a840={};_0x32a840['listChanged']=![];const _0x1a624d={};_0x1a624d['tools']=_0x32a840;const _0x406786={};_0x406786[_0x1752f6(0x183)]=_0x1752f6(0x1b1),_0x406786[_0x1752f6(0x1d1)]=_0x1752f6(0x16a);const _0x2c5c0d={};_0x2c5c0d['protocolVersion']=_0x1fad4b[_0x1752f6(0x1cb)]||_0x1752f6(0x1c6),_0x2c5c0d[_0x1752f6(0x150)]=_0x1a624d,_0x2c5c0d['serverInfo']=_0x406786;const _0x13f887={};_0x13f887['jsonrpc']=_0x1752f6(0x1c2),_0x13f887['id']=_0x25a7f8,_0x13f887[_0x1752f6(0x17b)]=_0x2c5c0d;const _0x1fc1cd=_0x13f887;this['writeToClient'](_0x1fc1cd);return;}if(_0x447810===_0x1752f6(0x157)){try{const _0x8b10ad=Object[_0x1752f6(0x16d)](this['backends'])[_0x1752f6(0x1b7)](async([_0x98c6e5,_0x31245f])=>{const _0x381456=_0x1752f6;try{const _0xd531f3=await _0x31245f[_0x381456(0x15c)]('tools/list'),_0x4142bd=_0xd531f3&&_0xd531f3[_0x381456(0x17b)]&&_0xd531f3['result'][_0x381456(0x17e)]||[];return translateToolList(_0x4142bd,_0x98c6e5);}catch(_0x18edb3){return console['error']('[MCP\x20Agent]\x20tools/list\x20request\x20failed\x20for\x20service\x20'+_0x98c6e5+':',_0x18edb3[_0x381456(0x1b8)]),[];}}),_0x36ffc7=await Promise[_0x1752f6(0x196)](_0x8b10ad),_0x1a7e6e=_0x36ffc7[_0x1752f6(0x177)](),_0x67b778={};_0x67b778[_0x1752f6(0x17e)]=_0x1a7e6e;const _0x25cddb={};_0x25cddb['jsonrpc']=_0x1752f6(0x1c2),_0x25cddb['id']=_0x25a7f8,_0x25cddb['result']=_0x67b778;const _0x181a0f=_0x25cddb;this[_0x1752f6(0x1d6)](_0x181a0f);}catch(_0x41c81d){this[_0x1752f6(0x1b5)](_0x25a7f8,-0x7f5b,_0x1752f6(0x179)+_0x41c81d[_0x1752f6(0x1b8)]);}return;}if(_0x447810===_0x1752f6(0x1ae)){const _0x10c6f4=_0x1fad4b['name'],_0x18add1=mapExposedToOriginal(_0x10c6f4);if(!_0x18add1)return this[_0x1752f6(0x1b5)](_0x25a7f8,-0x7f59,_0x1752f6(0x1cf)+_0x10c6f4);try{const _0x2e6109=this[_0x1752f6(0x1cd)][_0x18add1[_0x1752f6(0x1af)]];if(!_0x2e6109)return this[_0x1752f6(0x1b5)](_0x25a7f8,-0x7f5b,'Target\x20backend\x20'+_0x18add1[_0x1752f6(0x1af)]+_0x1752f6(0x1ca));const _0x1dd1bc={..._0x1fad4b};_0x1dd1bc['name']=_0x18add1[_0x1752f6(0x1ab)];const _0x286cfa={..._0x58e40f};_0x286cfa['params']=_0x1dd1bc;const _0x5d6b54=_0x286cfa,_0x46f0fe=await _0x2e6109['forwardRequest'](_0x5d6b54);this[_0x1752f6(0x1d6)](_0x46f0fe);}catch(_0x5a0c54){this[_0x1752f6(0x1b5)](_0x25a7f8,-0x7f5b,_0x1752f6(0x19e)+_0x5a0c54[_0x1752f6(0x1b8)]);}return;}for(const _0x504e66 of Object[_0x1752f6(0x1c9)](this[_0x1752f6(0x1cd)])){_0x504e66[_0x1752f6(0x17c)]&&_0x504e66[_0x1752f6(0x17c)][_0x1752f6(0x1ad)][_0x1752f6(0x15d)](JSON['stringify'](_0x58e40f)+'\x0a');}}[_0x2fb957(0x1d6)](_0x48dc95){const _0x217a8a=_0x2fb957;this[_0x217a8a(0x1b2)][_0x217a8a(0x15d)](JSON['stringify'](_0x48dc95)+'\x0a');}['writeError'](_0x1c7483,_0x4a8203,_0x3691a9){const _0x1dfe1d=_0x2fb957,_0x5148e6={};_0x5148e6[_0x1dfe1d(0x1ce)]=_0x4a8203,_0x5148e6['message']=_0x3691a9;const _0x526bdd={};_0x526bdd['jsonrpc']=_0x1dfe1d(0x1c2),_0x526bdd['id']=_0x1c7483,_0x526bdd[_0x1dfe1d(0x1da)]=_0x5148e6;const _0x28ab7b=_0x526bdd;this['writeToClient'](_0x28ab7b);}[_0x2fb957(0x19d)](){const _0x3f66a5=_0x2fb957;this[_0x3f66a5(0x15f)]=![];this[_0x3f66a5(0x1d3)]&&(clearInterval(this[_0x3f66a5(0x1d3)]),this[_0x3f66a5(0x1d3)]=null);this['stdinListener']&&(process[_0x3f66a5(0x1ad)][_0x3f66a5(0x1bc)](_0x3f66a5(0x18d),this[_0x3f66a5(0x161)]),this[_0x3f66a5(0x161)]=null,process[_0x3f66a5(0x1ad)][_0x3f66a5(0x1c0)]());if(this[_0x3f66a5(0x1cd)])for(const _0x2f86ef of Object[_0x3f66a5(0x1c9)](this[_0x3f66a5(0x1cd)])){_0x2f86ef[_0x3f66a5(0x19d)]();}}}function _0x40ed(){const _0x1516ff=['BwnWlwfNzw50lxbYB3H5','C3rKB3v0','Cgf0Aa','C2LNBMf0DxjL','D3jPDgvfCNjVCG','Ag9TzwrPCG','BwfW','BwvZC2fNzq','w01ducbbz2vUDf0GrMfPBgvKihrVihbHCNnLiePtt04TuLbdig1LC3nHz2uGzNjVBsbJBgLLBNq6','yxbWBgLJyxrPB24VANnVBG','BwTKAxjtEw5J','CMvTB3zLtgLZDgvUzxi','w01ducbbz2vUDf0GtgLJzw5ZzsbRzxKGDMvYAwzPy2f0Aw9UigzHAwXLzdOG','BwfPBG','l2HLyxj0yMvHDa','Cgf1C2u','y3j5ChrV','mI4W','w01ducbbz2vUDf0Gu3rHCNrPBMCGC2vYDMvYigf0ia','Aw5JBhvKzxm','zxHW','mJaYnc0Xms0Wnq','Bg9HzeXPy2vUC2vlzxK','CgfYC2u','DMfSDwvZ','igLZig5VDcbYDw5UAw5N','ChjVDg9JB2XwzxjZAw9U','w01ducbbz2vUDf0Gsw50zwDYAxr5ignOzwnRigzHAwXLzdOGsw52ywXPzcbTyw5PzMvZDcbMB3jTyxqUiev4AxrPBMCU','yMfJA2vUzhm','y29Kzq','vg9VBcbUB3qGzM91BMq6ia','zMLSzxm','DMvYC2LVBG','ndm1nde0BMvHzxzy','AgvHCNrIzwf0sw50zxj2ywW','zgLYBMfTzq','CMvHzezPBgvtEw5J','D3jPDgvuB0nSAwvUDa','Aw50zwDYAxr5twfUAwzLC3rqyxrO','DhjPBq','DMvYAwz5','zxjYB3i','w01ducbbz2vUDf0GugvYAw9KAwmGAgvHCNrIzwf0igvYCM9YoG','y3jLyxrLsgfZAa','C3rHCNq','y2fWywjPBgL0AwvZ','w01ducbbz2vUDf0Gsw50zwDYAxr5ignOzwnRigzHAwXLzdOG','lIbszw5LDYbHDcbODhrWCZOVl2fUAgrOlMLVl3jLBMv3lIbfEgL0Aw5NlG','DxnLCG','lI4VBgLJzw5Zzs92zxjPzNKUANm','C2HHmJu2','ouT3su5crq','Dg9VBhmVBgLZDa','w01ducbbz2vUDf0Gsw50zwDYAxr5ignOzwnRigzHAwXLzdOGsw52ywXPzcbZAwDUyxr1CMuUiev4AxrPBMCU','zxHPC3rZu3LUyW','zgLZCgXHEu5HBwu','ANnVBG','C2vUzfjLCxvLC3q','D3jPDgu','w01ducbbz2vUDf0GsgvHCNrIzwf0oIbmAwnLBNnLihrVA2vUihn1y2nLC3nMDwXSEsbYzwzYzxnOzwqU','CNvUBMLUzW','zNjVBq','C3rKAw5mAxn0zw5LCG','mJyZmtu5mvnjqvDLrq','uhjVEhLtzxj2zxi','ntKYnJGWoePmz0Hqvq','Dg9ju09tDhjPBMC','BM93','CMvHC29U','BwfZDgvYlNb1yMXPyY5Wzw0','AgfUzgXLq2XPzw50twvZC2fNzq','ms4WlJa','CMvWBgfJzq','BgLJzw5ZzuTLEq','zw50CMLLCW','lIbdB250ywn0ihn1ChbVCNqGyxqGC3vWCg9YDebHBMHKAc5PBY4GrxHPDgLUzY4','w01ducbbz2vUDf0Gsw50zwDYAxr5ignOzwnRigzHAwXLzdOGAw50zwDYAxr5lw1HBMLMzxn0lMPZB24GBwLZC2LUzY4GrxHPDgLUzY4','Aw5PDgLHBgL6zq','ChjVAMvJDfbHDgG','BgLJzw5Zzs5RzxK','zxHPDa','CgvYzM9YBuHLyxj0yMvHDa','mtKXodG1Dw9grwne','w01ducbbz2vUDf0GtgLJzw5ZzsbRzxKGDMvYAwzPzwqGC3vJy2vZC2z1BgX5igzVCIb1C2vYoIa','zMXHDa','lI4VlI4','rMfPBgvKihrVihf1zxj5ihrVB2WGBgLZDdOG','Dg9tDhjPBMC','CMvZDwX0','y2HPBgq','zgLNzxn0','Dg9VBhm','Dw5RBM93BG','lMfUAgrO','w01ducbbz2vUDf0GsgvHCNrIzwf0ignOzwnRigzHAwXLzcbVCIb0Aw1LzcbVDxq6','lI4VBgLJzw5Zzs9MAw5NzxjWCMLUDc5QCW','BMfTzq','D3jPDgvgAwXLu3LUyW','CMvJDxjZAxzL','ywrTAw4','w01ducbbz2vUDf0GsgvHCNrIzwf0ignOzwnRoIb0B2TLBIbOyxmGBgvZCYb0AgfUidyGzgf5CYbYzw1HAw5PBMCUifjLzNjLC2HPBMCUlI4','zgv2AwnLswq','y3DK','q29UDgvUDc1uExbL','Ahr0Chm6lY9Hz2vUDgTPDc5HBhbOyxrLy2HZlMfP','C3bSAxq','zgf0yq','Agv4','rMfPBgvKihrVihn0yxj0ifbYB3H5u2vYDMvYoG','mZi5otmZne9mwer4sa','DxrMoa','ig1VzgLMAwvKlIbfEgL0Aw5NlG','mtm4z0HIzu1R','Aw50zwDYAxr5lw1HBMLMzxn0lMPZB24','y2f0y2G','ywXS','yMfZzty0DxjS','ChvIBgLJs2v5','ywjVCNq','DxbKyxrL','Dg9Rzw4','oe1zC250Aa','C3rVCa','vg9VBcbLEgvJDxrPB24GzMfPBgvKoIa','w01ducbbz2vUDf0GrMfPBgvKihrVihnHDMuGCMvMCMvZAgvKigXPy2vUC2uGDg9Rzw4GDg8GzgLZAZO','Cg9W','Cgf5Bg9Hza','C2LNBMfS','ntGXnJKWouTusuvWvG','AgfUzgXLq2XPzw50rgf0yq','y2XPzw50qNvMzMvY','lIbdB250Aw51Aw5NihDPDgGGy2fJAgvKihrVA2vUlG','w01ducbbz2vUDf0GsgvHCNrIzwf0ihjLzNjLC2GGzMfPBgvKoIbtzxj2zxiGCMv0DxjUzwqG','C3rYAw5NAwz5','C3rHDhvZ','mtuXmJG0mdb1vLzlteC','B3jPz2LUywXoyw1L','AM9PBG','C3rKAw4','Dg9VBhmVy2fSBa','yMfJA2vUza','lI9IywnRzw5KCY5QCW'];_0x40ed=function(){return _0x1516ff;};return _0x40ed();}const _0x41dc5d={};_0x41dc5d[_0x2fb957(0x163)]=ProxyServer,module['exports']=_0x41dc5d;if(require[_0x2fb957(0x1be)]===module){const server=new ProxyServer();server[_0x2fb957(0x14f)]()[_0x2fb957(0x195)](_0x196dcc=>{const _0x5635b0=_0x2fb957;console[_0x5635b0(0x1da)](_0x5635b0(0x18f),_0x196dcc[_0x5635b0(0x1b8)]),process[_0x5635b0(0x173)](0x1);});}
|
package/src/templates/AGENTS.md
CHANGED
|
@@ -43,6 +43,26 @@ Tool selection rules, index policies, memory conventions, and auto-skill activat
|
|
|
43
43
|
- Impact: `impact_analysis` (always update index first)
|
|
44
44
|
- Memory: `remember` / `recall` / `read_knowledge` (see conventions in mcp-tools.md)
|
|
45
45
|
|
|
46
|
+
### PM tools
|
|
47
|
+
|
|
48
|
+
PM preset connects to Jira for project management. See `docs/agents/jira-config.md`.
|
|
49
|
+
|
|
50
|
+
**Quick reference:**
|
|
51
|
+
- Search tasks: `pm-search-tasks` (JQL query)
|
|
52
|
+
- Task CRUD: `pm-get-task`, `pm-create-task`, `pm-update-task`
|
|
53
|
+
- Status transitions: `pm-change-status`
|
|
54
|
+
- Comments: `pm-add-comment`
|
|
55
|
+
- Projects/Boards: `pm-list-projects`, `pm-get-board`
|
|
56
|
+
- Confluence: `pm-search-docs`, `pm-get-doc`
|
|
57
|
+
|
|
58
|
+
### Design tools
|
|
59
|
+
|
|
60
|
+
Optional design tool integration for FE/mobile. See `docs/agents/design-config.md`.
|
|
61
|
+
|
|
62
|
+
**Quick reference:**
|
|
63
|
+
- Figma: `design-read-figma` (extract layout/styles), `design-get-figma-images` (download assets)
|
|
64
|
+
- Stitch: `design-stitch-generate` (create screen), `design-stitch-get-code` (pull code), `design-stitch-get-dna` (design tokens)
|
|
65
|
+
|
|
46
66
|
---
|
|
47
67
|
|
|
48
68
|
## Session Start Protocol (MANDATORY)
|
|
@@ -52,31 +72,33 @@ At the start of every session:
|
|
|
52
72
|
2. Read `.agents/memory/MEMORY.md` to load persistent project conventions.
|
|
53
73
|
3. Read `docs/agents/mcp-tools.md` to load MCP tool selection rules & memory conventions.
|
|
54
74
|
4. Call `read_knowledge` to load dynamic knowledge graph from memory.
|
|
75
|
+
5. **Read `.agents/skill-triggers.json` to load auto-routing rules for all skills/workflows/tools.**
|
|
55
76
|
|
|
56
77
|
---
|
|
57
78
|
|
|
58
|
-
## Auto-
|
|
79
|
+
## Unified Auto-Routing (MANDATORY)
|
|
80
|
+
|
|
81
|
+
All 60+ skills, 12 workflows, and 28 MCP tools are indexed in `.agents/skill-triggers.json`.
|
|
82
|
+
The agent MUST use this trigger map to automatically invoke the right tool based on user's natural language.
|
|
59
83
|
|
|
60
|
-
|
|
84
|
+
**How it works:**
|
|
85
|
+
1. **Detect** — Scan user message for keywords (EN + VI), URL patterns, file extensions
|
|
86
|
+
2. **Filter** — Only match skills the user has installed (preset-aware)
|
|
87
|
+
3. **Execute** — Based on risk level:
|
|
61
88
|
|
|
62
|
-
|
|
|
89
|
+
| Risk Level | Behavior | Examples |
|
|
63
90
|
|---|---|---|
|
|
64
|
-
| `
|
|
65
|
-
| `
|
|
66
|
-
| `
|
|
67
|
-
| `prd-gen` | New feature/product description with enough context | Load SKILL.md → Extract PRD from conversation context |
|
|
68
|
-
| `prototype` | "mockup", "explore options", unclear UI/logic | Load SKILL.md → Build throwaway prototype |
|
|
69
|
-
| `tdd-loop` | Feature implementation, bug fix, "write tests" | Load SKILL.md → Apply RED-GREEN-REFACTOR loop |
|
|
91
|
+
| `safe` | 🔄 Auto-invoke, announce skill name | analytics, search, review, debug |
|
|
92
|
+
| `suggest` | 💡 Show suggestion, wait for confirm | create, deploy, refactor, generate |
|
|
93
|
+
| `ambiguous` | 🤔 Show alternatives, let user choose | "design" → Stitch / Figma / mockup |
|
|
70
94
|
|
|
71
|
-
|
|
95
|
+
**Override:** User can always use explicit `@agent` mentions or `/slash-commands`. Explicit > auto-routing.
|
|
72
96
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
| `mobile-rules` | Any mobile UI implementation: Flutter, touch interaction | Load SKILL.md → Apply platform conventions |
|
|
79
|
-
| `flutter-*` | Flutter-specific tasks: layout, routing, testing | Auto-select matching flutter skill |
|
|
97
|
+
**Missing preset:** If trigger matches but preset not installed → show install hint, don't silently fail.
|
|
98
|
+
|
|
99
|
+
**Context awareness:** Track conversation topic to improve routing (e.g., Flutter context + "add test" → `flutter-add-widget-test`, not generic `testing-patterns`).
|
|
100
|
+
|
|
101
|
+
Full routing protocol: `.agents/skills/intelligent-routing/SKILL.md`
|
|
80
102
|
|
|
81
103
|
---
|
|
82
104
|
|
|
@@ -100,5 +122,6 @@ Every user request must pass through the Socratic Gate before ANY implementation
|
|
|
100
122
|
- **Performance**: Measure first. Adhere to current Core Web Vitals standards.
|
|
101
123
|
|
|
102
124
|
### Quick Reference
|
|
103
|
-
- **Masters**: `orchestrator`, `project-planner`, `security-auditor`, `backend-specialist`, `frontend-specialist`, `mobile-developer`, `debugger`
|
|
104
|
-
- **
|
|
125
|
+
- **Masters**: `orchestrator`, `project-planner`, `security-auditor`, `backend-specialist`, `frontend-specialist`, `mobile-developer`, `pm-specialist`, `debugger`
|
|
126
|
+
- **Auto-routing**: `.agents/skill-triggers.json` (85+ triggers, all roles)
|
|
127
|
+
- **Key docs**: `docs/agents/mcp-tools.md`, `docs/agents/jira-config.md`, `docs/agents/design-config.md`
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Design Tools Configuration
|
|
2
|
+
|
|
3
|
+
How the design-to-code skills connect to external design tools.
|
|
4
|
+
|
|
5
|
+
## Figma (if configured)
|
|
6
|
+
|
|
7
|
+
| Setting | Value |
|
|
8
|
+
|---|---|
|
|
9
|
+
| **MCP Server** | `GLips/Figma-Context-MCP` |
|
|
10
|
+
| **Auth** | `FIGMA_ACCESS_TOKEN` env var (Personal Access Token, free) |
|
|
11
|
+
| **Mode** | Read-only — extracts layout, styles, assets |
|
|
12
|
+
| **Get token** | https://www.figma.com/developers/api#access-tokens |
|
|
13
|
+
|
|
14
|
+
### Usage
|
|
15
|
+
|
|
16
|
+
Paste a Figma file or frame URL in chat:
|
|
17
|
+
```
|
|
18
|
+
https://figma.com/file/{fileKey}/{fileName}
|
|
19
|
+
https://figma.com/file/{fileKey}?node-id={nodeId}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Agent auto-detects → extracts design → generates code.
|
|
23
|
+
|
|
24
|
+
## Stitch (if configured)
|
|
25
|
+
|
|
26
|
+
| Setting | Value |
|
|
27
|
+
|---|---|
|
|
28
|
+
| **MCP Server** | `@_davideast/stitch-mcp` |
|
|
29
|
+
| **Auth** | Google account (browser login) |
|
|
30
|
+
| **Mode** | Collaborative — agent creates → user tweaks → agent pulls code |
|
|
31
|
+
| **Cost** | Free (Google Labs Beta) |
|
|
32
|
+
| **Enable** | `STITCH_ENABLED=true` env var |
|
|
33
|
+
|
|
34
|
+
### Usage
|
|
35
|
+
|
|
36
|
+
Ask agent to design a screen:
|
|
37
|
+
```
|
|
38
|
+
"Design login page cho banking app"
|
|
39
|
+
"Tạo giao diện dashboard từ specs này"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Agent creates on Stitch → shares link → user tweaks → says "pull code".
|
|
43
|
+
|
|
44
|
+
## Environment Variables
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Figma (free)
|
|
48
|
+
export FIGMA_ACCESS_TOKEN=figd_xxxxx
|
|
49
|
+
|
|
50
|
+
# Stitch (free beta)
|
|
51
|
+
export STITCH_ENABLED=true
|
|
52
|
+
```
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Jira Configuration
|
|
2
|
+
|
|
3
|
+
PM preset connects to Jira for project management. This file defines connection details and conventions.
|
|
4
|
+
|
|
5
|
+
## Primary Jira (Bank/Client)
|
|
6
|
+
|
|
7
|
+
- **URL:** ${JIRA_PRIMARY_URL}
|
|
8
|
+
- **Auth Method:** API Token (Cloud) / PAT (Server/Data Center)
|
|
9
|
+
- **Default Project:** ${JIRA_PRIMARY_PROJECT}
|
|
10
|
+
- **Type:** Cloud / Server / Data Center
|
|
11
|
+
|
|
12
|
+
## Secondary Jira (Internal) — Optional
|
|
13
|
+
|
|
14
|
+
- **URL:** ${JIRA_SECONDARY_URL}
|
|
15
|
+
- **Auth Method:** PAT
|
|
16
|
+
- **Default Project:** ${JIRA_SECONDARY_PROJECT}
|
|
17
|
+
|
|
18
|
+
## Credentials Storage
|
|
19
|
+
|
|
20
|
+
Credentials are stored as environment variables, **NOT** in this file:
|
|
21
|
+
|
|
22
|
+
| Variable | Description |
|
|
23
|
+
|---|---|
|
|
24
|
+
| `JIRA_PRIMARY_URL` | Primary Jira base URL |
|
|
25
|
+
| `JIRA_PRIMARY_USERNAME` | Email (Cloud) or username (Server) |
|
|
26
|
+
| `JIRA_PRIMARY_TOKEN` | API Token (Cloud) or PAT (Server) |
|
|
27
|
+
| `JIRA_SECONDARY_URL` | Secondary Jira base URL (optional) |
|
|
28
|
+
| `JIRA_SECONDARY_USERNAME` | Secondary Jira username (optional) |
|
|
29
|
+
| `JIRA_SECONDARY_TOKEN` | Secondary Jira token (optional) |
|
|
30
|
+
|
|
31
|
+
## When a skill says "query Jira"
|
|
32
|
+
|
|
33
|
+
Use the `pm-search-tasks` tool with JQL syntax. Example:
|
|
34
|
+
```
|
|
35
|
+
pm-search-tasks jql="status != Done AND dueDate < now() ORDER BY dueDate ASC"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## When a skill says "create task on Jira"
|
|
39
|
+
|
|
40
|
+
Use the `pm-create-task` tool. **Always confirm with user before executing write operations.**
|
|
41
|
+
|
|
42
|
+
## When a skill says "update Jira"
|
|
43
|
+
|
|
44
|
+
Use the `pm-update-task` or `pm-change-status` tool. Show the change summary and ask for confirmation.
|
|
45
|
+
|
|
46
|
+
## Switching between Jira instances
|
|
47
|
+
|
|
48
|
+
If two Jira instances are configured, specify which one when querying:
|
|
49
|
+
- Primary (default): bank/client Jira
|
|
50
|
+
- Secondary: internal company Jira
|
|
51
|
+
|
|
52
|
+
The agent defaults to the primary Jira unless the user explicitly asks for the internal one.
|