@ranger-testing/ranger-cli 1.0.9 → 1.0.12
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 +111 -0
- package/build/cli.js +245 -8
- package/build/cli.js.map +1 -1
- package/build/commands/addEnv.js +1 -1
- package/build/commands/addEnv.js.map +1 -1
- package/build/commands/clean.js +1 -1
- package/build/commands/clean.js.map +1 -1
- package/build/commands/dataMcpServer.js +1 -1
- package/build/commands/dataMcpServer.js.map +1 -1
- package/build/commands/env.js +46 -0
- package/build/commands/env.js.map +1 -0
- package/build/commands/feature.js +494 -0
- package/build/commands/feature.js.map +1 -0
- package/build/commands/index.js +1 -0
- package/build/commands/index.js.map +1 -1
- package/build/commands/skillup.js +67 -16
- package/build/commands/skillup.js.map +1 -1
- package/build/commands/start.js +1 -1
- package/build/commands/start.js.map +1 -1
- package/build/commands/status.js +45 -51
- package/build/commands/status.js.map +1 -1
- package/build/commands/update.js +32 -52
- package/build/commands/update.js.map +1 -1
- package/build/commands/updateEnv.js +1 -1
- package/build/commands/updateEnv.js.map +1 -1
- package/build/commands/useEnv.js +1 -1
- package/build/commands/useEnv.js.map +1 -1
- package/build/commands/utils/browserSessionsApi.js +1 -1
- package/build/commands/utils/browserSessionsApi.js.map +1 -1
- package/build/commands/utils/claudeConfig.js +73 -0
- package/build/commands/utils/claudeConfig.js.map +1 -0
- package/build/commands/utils/cliSecret.js +1 -1
- package/build/commands/utils/environment.js +69 -0
- package/build/commands/utils/environment.js.map +1 -0
- package/build/commands/utils/featureApi.js +190 -0
- package/build/commands/utils/featureApi.js.map +1 -0
- package/build/commands/utils/featureReportGenerator.js +170 -0
- package/build/commands/utils/featureReportGenerator.js.map +1 -0
- package/build/commands/utils/keychain.js +1 -1
- package/build/commands/utils/localAgentInstallationsApi.js +1 -1
- package/build/commands/utils/localAgentInstallationsApi.js.map +1 -1
- package/build/commands/utils/mcpConfig.js +1 -1
- package/build/commands/utils/settings.js +2 -2
- package/build/commands/utils/settings.js.map +1 -1
- package/build/commands/utils/skills.js +1 -1
- package/build/commands/utils/skills.js.map +1 -1
- package/build/commands/verifyFeature.js +451 -0
- package/build/commands/verifyFeature.js.map +1 -0
- package/build/commands/verifyInBrowser.js +1 -1
- package/build/commands/verifyInBrowser.js.map +1 -1
- package/build/skills/bug-bash.md +4 -9
- package/build/skills/e2e-test-recommender.md +5 -10
- package/build/skills/feature-tracker/SKILL.md +185 -0
- package/build/skills/feature-tracker/create.md +105 -0
- package/build/skills/feature-tracker/manage.md +145 -0
- package/build/skills/feature-tracker/report.md +159 -0
- package/build/skills/feature-tracker/start.md +93 -0
- package/build/skills/feature-tracker/verify.md +143 -0
- package/package.json +23 -20
- package/build/agents/bug-basher.md +0 -259
- package/build/agents/e2e-test-recommender.md +0 -164
- package/build/agents/quality-advocate.md +0 -164
- package/build/agents/ui-verifier.md +0 -100
- package/build/commands/addApp.js +0 -21
- package/build/commands/initAgents.js +0 -84
- package/build/commands/utils/agents.js +0 -45
- package/build/index.js +0 -436
- package/build/test-auth.js +0 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(_0x13c49b,_0x203f8a){const _0x40bda7=_0x377d,_0x59e0d5=_0x13c49b();while(!![]){try{const _0x5212a4=parseInt(_0x40bda7(0x1bc))/0x1+parseInt(_0x40bda7(0x194))/0x2+parseInt(_0x40bda7(0x1b8))/0x3*(parseInt(_0x40bda7(0x1a2))/0x4)+parseInt(_0x40bda7(0x178))/0x5*(-parseInt(_0x40bda7(0x1c1))/0x6)+parseInt(_0x40bda7(0x1a6))/0x7+parseInt(_0x40bda7(0x19d))/0x8+-parseInt(_0x40bda7(0x183))/0x9*(parseInt(_0x40bda7(0x1a0))/0xa);if(_0x5212a4===_0x203f8a)break;else _0x59e0d5['push'](_0x59e0d5['shift']());}catch(_0x17ed22){_0x59e0d5['push'](_0x59e0d5['shift']());}}}(_0x1631,0xc25b0));const _0x101903=(function(){let _0x19d0f9=!![];return function(_0x204fd9,_0x4c5079){const _0x30ddc5=_0x19d0f9?function(){const _0x40e501=_0x377d;if(_0x4c5079){const _0x28b0f2=_0x4c5079[_0x40e501(0x1b0)](_0x204fd9,arguments);return _0x4c5079=null,_0x28b0f2;}}:function(){};return _0x19d0f9=![],_0x30ddc5;};}()),_0x14f67b=_0x101903(this,function(){const _0x2d1115=_0x377d,_0x53f75d={'rYrlA':_0x2d1115(0x1a8)};return _0x14f67b[_0x2d1115(0x180)]()[_0x2d1115(0x1ab)](_0x53f75d[_0x2d1115(0x1ae)])[_0x2d1115(0x180)]()[_0x2d1115(0x18d)](_0x14f67b)[_0x2d1115(0x1ab)](_0x2d1115(0x1a8));});_0x14f67b();function _0x377d(_0xd432b7,_0x2f3c20){_0xd432b7=_0xd432b7-0x177;const _0x2ebca3=_0x1631();let _0x14f67b=_0x2ebca3[_0xd432b7];if(_0x377d['csvpVP']===undefined){var _0x101903=function(_0x590bf6){const _0xe53412='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3dad7f='',_0x3b4b33='',_0x151689=_0x3dad7f+_0x101903;for(let _0x1d085b=0x0,_0x322a90,_0x4093e9,_0x17bd0f=0x0;_0x4093e9=_0x590bf6['charAt'](_0x17bd0f++);~_0x4093e9&&(_0x322a90=_0x1d085b%0x4?_0x322a90*0x40+_0x4093e9:_0x4093e9,_0x1d085b++%0x4)?_0x3dad7f+=_0x151689['charCodeAt'](_0x17bd0f+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x322a90>>(-0x2*_0x1d085b&0x6)):_0x1d085b:0x0){_0x4093e9=_0xe53412['indexOf'](_0x4093e9);}for(let _0x18e6d4=0x0,_0xad31d5=_0x3dad7f['length'];_0x18e6d4<_0xad31d5;_0x18e6d4++){_0x3b4b33+='%'+('00'+_0x3dad7f['charCodeAt'](_0x18e6d4)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3b4b33);};_0x377d['dIqoRr']=_0x101903,_0x377d['CSYZJC']={},_0x377d['csvpVP']=!![];}const _0x163124=_0x2ebca3[0x0],_0x377d3d=_0xd432b7+_0x163124,_0x1a6d4a=_0x377d['CSYZJC'][_0x377d3d];if(!_0x1a6d4a){const _0x56809a=function(_0x5114a4){this['owrSgW']=_0x5114a4,this['UrxNIn']=[0x1,0x0,0x0],this['HCzEhi']=function(){return'newState';},this['CkucEP']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['zHxKiy']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x56809a['prototype']['xkjqVf']=function(){const _0x35173e=new RegExp(this['CkucEP']+this['zHxKiy']),_0x1eee63=_0x35173e['test'](this['HCzEhi']['toString']())?--this['UrxNIn'][0x1]:--this['UrxNIn'][0x0];return this['SLNFaP'](_0x1eee63);},_0x56809a['prototype']['SLNFaP']=function(_0x2b7da9){if(!Boolean(~_0x2b7da9))return _0x2b7da9;return this['uZPJae'](this['owrSgW']);},_0x56809a['prototype']['uZPJae']=function(_0x418a53){for(let _0x4b382e=0x0,_0xb9fe41=this['UrxNIn']['length'];_0x4b382e<_0xb9fe41;_0x4b382e++){this['UrxNIn']['push'](Math['round'](Math['random']())),_0xb9fe41=this['UrxNIn']['length'];}return _0x418a53(this['UrxNIn'][0x0]);},new _0x56809a(_0x377d)['xkjqVf'](),_0x14f67b=_0x377d['dIqoRr'](_0x14f67b),_0x377d['CSYZJC'][_0x377d3d]=_0x14f67b;}else _0x14f67b=_0x1a6d4a;return _0x14f67b;}import*as _0x561ab7 from'readline';import{getToken,getServerUrl}from'./utils/keychain.js';export async function dataMcpServer(){const _0x5d3e5f=_0x377d,_0x32a8a5={'KRfQd':'(((.+)+)+)+$','SxnGy':function(_0x35bb37,_0x21bbae,_0x33341c){return _0x35bb37(_0x21bbae,_0x33341c);},'DzrWP':_0x5d3e5f(0x1b2),'LtlIG':_0x5d3e5f(0x1a4),'PFxeg':'2.0','nnzSR':_0x5d3e5f(0x1c0),'cbnRO':function(_0x3f0e0f,_0x39338b){return _0x3f0e0f===_0x39338b;},'ABGBW':function(_0x1258b7,_0x4e31c1){return _0x1258b7!==_0x4e31c1;},'ZmsTQ':_0x5d3e5f(0x185),'wzxag':_0x5d3e5f(0x18b),'tXVNe':function(_0x57855d,_0x3871fa){return _0x57855d===_0x3871fa;},'GTYve':_0x5d3e5f(0x17f),'KKCZw':_0x5d3e5f(0x1ba),'WVpPi':'VwASR','GrVrv':_0x5d3e5f(0x191),'LNkCx':function(_0x338ccb,_0x4c4d07){return _0x338ccb instanceof _0x4c4d07;},'CBtyD':_0x5d3e5f(0x1be),'EeqnC':_0x5d3e5f(0x17e),'eaRhA':function(_0x18156a){return _0x18156a();},'Umszz':_0x5d3e5f(0x199),'IHxzb':_0x5d3e5f(0x1a3),'Jbkyr':_0x5d3e5f(0x181),'jXQpE':_0x5d3e5f(0x18f)},_0xcbcd0e=await _0x32a8a5[_0x5d3e5f(0x177)](getToken),_0x452472=await _0x32a8a5[_0x5d3e5f(0x177)](getServerUrl);if(!_0xcbcd0e){const _0x1491d8={'jsonrpc':_0x5d3e5f(0x1b7),'id':null,'error':{'code':-0x7f5b,'message':_0x32a8a5[_0x5d3e5f(0x1b9)]}};console[_0x5d3e5f(0x1aa)](JSON['stringify'](_0x1491d8)),process['exit'](0x1);}if(!_0x452472){const _0x5892c0={'jsonrpc':_0x32a8a5['PFxeg'],'id':null,'error':{'code':-0x7f5b,'message':_0x32a8a5['IHxzb']}};console[_0x5d3e5f(0x1aa)](JSON[_0x5d3e5f(0x1ac)](_0x5892c0)),process[_0x5d3e5f(0x1b6)](0x1);}const _0x3af6c4=_0x452472+_0x5d3e5f(0x192),_0x29fafb=_0x561ab7['createInterface']({'input':process[_0x5d3e5f(0x197)],'output':process['stdout'],'terminal':![]});_0x29fafb['on'](_0x32a8a5[_0x5d3e5f(0x19f)],async _0x478d7e=>{const _0x2696f8=_0x5d3e5f,_0x111445={'ePlRc':_0x32a8a5[_0x2696f8(0x196)]};if(!_0x478d7e[_0x2696f8(0x1bf)]())return;try{const _0x1b783f=JSON[_0x2696f8(0x184)](_0x478d7e),_0x3ae1d2=await _0x32a8a5['SxnGy'](fetch,_0x3af6c4,{'method':_0x32a8a5['DzrWP'],'headers':{'Content-Type':_0x32a8a5[_0x2696f8(0x19b)],'Accept':_0x2696f8(0x179),'Authorization':_0x2696f8(0x186)+_0xcbcd0e},'body':JSON[_0x2696f8(0x1ac)](_0x1b783f)});if(!_0x3ae1d2['ok']){const _0x43fd33={'jsonrpc':_0x32a8a5[_0x2696f8(0x17b)],'id':_0x1b783f['id']??null,'error':{'code':-0x7f5b,'message':'HTTP\x20error:\x20'+_0x3ae1d2[_0x2696f8(0x195)]+'\x20'+_0x3ae1d2['statusText']}};console[_0x2696f8(0x1aa)](JSON['stringify'](_0x43fd33));return;}const _0x87b536=_0x3ae1d2[_0x2696f8(0x18e)][_0x2696f8(0x1bb)]('content-type')||'';if(_0x87b536['includes'](_0x32a8a5['nnzSR'])){const _0xfcb7e=_0x3ae1d2[_0x2696f8(0x187)]?.[_0x2696f8(0x1b4)]();if(!_0xfcb7e)return;const _0x14a4bc=new TextDecoder();let _0xf1ac7d='';while(!![]){if(_0x32a8a5[_0x2696f8(0x19c)](_0x2696f8(0x1a1),_0x2696f8(0x18a))){if(_0x29106f){const _0x31fbe8=_0x586221[_0x2696f8(0x1b0)](_0x23793f,arguments);return _0x591e7c=null,_0x31fbe8;}}else{const {done:_0x3094c5,value:_0x24cb67}=await _0xfcb7e[_0x2696f8(0x1b3)]();if(_0x3094c5)break;_0xf1ac7d+=_0x14a4bc[_0x2696f8(0x182)](_0x24cb67,{'stream':!![]});const _0xea1ac3=_0xf1ac7d[_0x2696f8(0x190)]('\x0a\x0a');_0xf1ac7d=_0xea1ac3[_0x2696f8(0x17d)]()||'';for(const _0xcaa1fa of _0xea1ac3){if(!_0xcaa1fa[_0x2696f8(0x1bf)]())continue;const _0x2addf9=_0xcaa1fa['split']('\x0a');for(const _0x1aaf76 of _0x2addf9){if(_0x32a8a5[_0x2696f8(0x1af)](_0x32a8a5[_0x2696f8(0x1b1)],_0x32a8a5['ZmsTQ']))_0x570348[_0x2696f8(0x1b6)](0x0);else{if(_0x1aaf76[_0x2696f8(0x1ad)](_0x32a8a5[_0x2696f8(0x193)])){if(_0x32a8a5[_0x2696f8(0x1a5)](_0x32a8a5[_0x2696f8(0x19a)],_0x32a8a5[_0x2696f8(0x1bd)]))return _0x123b24[_0x2696f8(0x180)]()[_0x2696f8(0x1ab)](TwqfWl[_0x2696f8(0x1a7)])['toString']()[_0x2696f8(0x18d)](_0x220bf9)['search'](_0x2696f8(0x1a8));else{const _0x46e9a5=_0x1aaf76[_0x2696f8(0x189)](0x6);_0x46e9a5['trim']()&&console[_0x2696f8(0x1aa)](_0x46e9a5);}}}}}}}}else{const _0x1df480=await _0x3ae1d2['json']();console[_0x2696f8(0x1aa)](JSON[_0x2696f8(0x1ac)](_0x1df480));}}catch(_0x2284d3){if(_0x32a8a5[_0x2696f8(0x1af)](_0x32a8a5[_0x2696f8(0x19e)],_0x32a8a5[_0x2696f8(0x1b5)])){const _0x389eb5={'jsonrpc':_0x32a8a5[_0x2696f8(0x17b)],'id':null,'error':{'code':-0x7f5b,'message':_0x32a8a5[_0x2696f8(0x17c)](_0x2284d3,Error)?_0x2284d3[_0x2696f8(0x198)]:_0x32a8a5['CBtyD']}};console[_0x2696f8(0x1aa)](JSON['stringify'](_0x389eb5));}else _0x442d32[_0x2696f8(0x1aa)](_0x81f9cb);}}),_0x29fafb['on'](_0x32a8a5[_0x5d3e5f(0x17a)],()=>{const _0x378ab8=_0x5d3e5f,_0x16beb9={'jqnKN':_0x32a8a5[_0x378ab8(0x17b)],'iNwww':function(_0x247070,_0x1c7ca8){return _0x247070 instanceof _0x1c7ca8;},'SjsOt':_0x32a8a5[_0x378ab8(0x1a9)]};if(_0x32a8a5[_0x378ab8(0x1af)](_0x32a8a5['EeqnC'],'Svkgw')){const _0x160087={'jsonrpc':_0x16beb9[_0x378ab8(0x188)],'id':null,'error':{'code':-0x7f5b,'message':_0x16beb9['iNwww'](_0x33b2b1,_0x1abf68)?_0x1ff9cc[_0x378ab8(0x198)]:_0x16beb9[_0x378ab8(0x18c)]}};_0x5718fa[_0x378ab8(0x1aa)](_0x3b89cc[_0x378ab8(0x1ac)](_0x160087));}else process[_0x378ab8(0x1b6)](0x0);});}function _0x1631(){const _0x38b9ad=['D09bC0e','z2v0','odu0nJqYvKXlCNvk','s0TdwNC','vw5RBM93BIbLCNjVCG','DhjPBq','Dgv4Dc9LDMvUDc1ZDhjLyw0','otiWmJaZoePkyu9kqW','zwfsAee','nvnJC2DeCq','yxbWBgLJyxrPB24VANnVBIWGDgv4Dc9LDMvUDc1ZDhjLyw0','ALHrCeu','uez4zwC','te5Rq3G','Cg9W','u3zRz3C','zNvRqu4','Dg9tDhjPBMC','BgLUzq','zgvJB2rL','ovPku2LsqG','CgfYC2u','rLLHseq','qMvHCMvYia','yM9KEq','ANfUs04','C2XPy2u','wKLitMG','zgf0ytOG','u2PZt3q','y29UC3rYDwn0B3i','AgvHzgvYCW','y2XVC2u','C3bSAxq','D0PxyLm','l21JCa','D3P4ywC','mtC1mJe2nKvdD3PNqW','C3rHDhvZ','s1jMuwq','C3rKAw4','BwvZC2fNzq','tM8GqvbjihrVA2vUigzVDw5KigLUieTLEwnOywLUlIbsDw46ihjHBMDLCIbZDgfYDca8Dg9Rzw4+','r1rzDMu','thrSsuC','y2jUuK8','mJCYnti4rwXSqKrt','v1zWugK','sMjRExi','mtiZmdy0mtb1EeHesxG','u2nQvLC','odK3mZaWuNr4DvvY','tM8GC2vYDMvYifvstcbMB3vUzcbPBIblzxLJAgfPBI4GuNvUoIbYyw5NzxiGC3rHCNqGphrVA2vUpG','yxbWBgLJyxrPB24VANnVBG','DfHwtMu','otqYody3mu1lqwT2sa','zvbSuMm','kcGOlISPkYKRksSK','q0j0Euq','Bg9N','C2vHCMnO','C3rYAw5NAwz5','C3rHCNrZv2L0Aa','CLLYBee','qujhqLC','yxbWBhK','wM1Zvfe','ue9tva','CMvHza','z2v0uMvHzgvY','r3jwCNy','zxHPDa','mI4W','nKT4D2P3sW','vw1ZENO'];_0x1631=function(){return _0x38b9ad;};return _0x1631();}
|
|
1
|
+
(function(_0x27c324,_0x43294f){const _0x3f7229=_0x33e9,_0x1c7d3d=_0x27c324();while(!![]){try{const _0x149fc9=parseInt(_0x3f7229(0x138))/0x1*(-parseInt(_0x3f7229(0x114))/0x2)+parseInt(_0x3f7229(0x14f))/0x3*(-parseInt(_0x3f7229(0x109))/0x4)+-parseInt(_0x3f7229(0x14e))/0x5*(parseInt(_0x3f7229(0x129))/0x6)+parseInt(_0x3f7229(0x130))/0x7+-parseInt(_0x3f7229(0x132))/0x8+-parseInt(_0x3f7229(0x137))/0x9+-parseInt(_0x3f7229(0x12d))/0xa*(-parseInt(_0x3f7229(0x11a))/0xb);if(_0x149fc9===_0x43294f)break;else _0x1c7d3d['push'](_0x1c7d3d['shift']());}catch(_0x4a049f){_0x1c7d3d['push'](_0x1c7d3d['shift']());}}}(_0x1ccd,0x638b7));const _0x1b01dd=(function(){const _0x1d8ba4=_0x33e9,_0xcce209={'NiUfq':'2.0','nTRNU':_0x1d8ba4(0x156),'aTZEf':function(_0x1f10f4,_0x25b40a){return _0x1f10f4===_0x25b40a;},'sujDG':_0x1d8ba4(0x136),'NvPQQ':function(_0x2e8449,_0xf75440){return _0x2e8449===_0xf75440;},'bECcR':_0x1d8ba4(0x126)};let _0x530885=!![];return function(_0x177eee,_0x38a7a6){const _0x180063=_0x1d8ba4,_0xe49364={'nNsNt':_0xcce209[_0x180063(0x15a)],'HeMIu':_0xcce209['nTRNU'],'EvRqB':function(_0x19c835,_0x461a41){const _0x2d85d1=_0x180063;return _0xcce209[_0x2d85d1(0x11b)](_0x19c835,_0x461a41);},'QUCDB':_0xcce209['sujDG']};if(_0xcce209[_0x180063(0x152)](_0xcce209['bECcR'],_0xcce209['bECcR'])){const _0x1767d1=_0x530885?function(){const _0x4af6f8=_0x180063;if(_0xe49364[_0x4af6f8(0x108)](_0xe49364[_0x4af6f8(0x135)],_0x4af6f8(0x12b))){const _0xeba390={'jsonrpc':_0xe49364[_0x4af6f8(0x13c)],'id':null,'error':{'code':-0x7f5b,'message':_0x5d1603 instanceof _0x24d3e2?_0x1cca71['message']:_0xe49364[_0x4af6f8(0x133)]}};_0x281f47[_0x4af6f8(0x15b)](_0x58e91c['stringify'](_0xeba390));}else{if(_0x38a7a6){const _0x391405=_0x38a7a6[_0x4af6f8(0x11c)](_0x177eee,arguments);return _0x38a7a6=null,_0x391405;}}}:function(){};return _0x530885=![],_0x1767d1;}else{const _0x1bf194={'jsonrpc':_0xe49364[_0x180063(0x13c)],'id':_0x26f915['id']??null,'error':{'code':-0x7f5b,'message':_0x180063(0x10b)+_0x15fef6['status']+'\x20'+_0x26d907[_0x180063(0x148)]}};_0x45792e[_0x180063(0x15b)](_0x1980d4[_0x180063(0x159)](_0x1bf194));return;}};}()),_0x50626c=_0x1b01dd(this,function(){const _0x9b0e04=_0x33e9,_0x582062={'UTtzr':_0x9b0e04(0x15d)};return _0x50626c[_0x9b0e04(0x150)]()[_0x9b0e04(0x11d)](_0x582062['UTtzr'])[_0x9b0e04(0x150)]()[_0x9b0e04(0x139)](_0x50626c)[_0x9b0e04(0x11d)](_0x582062[_0x9b0e04(0x117)]);});function _0x33e9(_0x4c9e77,_0x2b1397){_0x4c9e77=_0x4c9e77-0x108;const _0x8fe049=_0x1ccd();let _0x50626c=_0x8fe049[_0x4c9e77];if(_0x33e9['KsRNMF']===undefined){var _0x1b01dd=function(_0xa4f75f){const _0x3e8b49='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2d76e5='',_0x362c71='',_0x5a38cc=_0x2d76e5+_0x1b01dd;for(let _0x5b735d=0x0,_0x3a5423,_0x4e0b2f,_0x53bc27=0x0;_0x4e0b2f=_0xa4f75f['charAt'](_0x53bc27++);~_0x4e0b2f&&(_0x3a5423=_0x5b735d%0x4?_0x3a5423*0x40+_0x4e0b2f:_0x4e0b2f,_0x5b735d++%0x4)?_0x2d76e5+=_0x5a38cc['charCodeAt'](_0x53bc27+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x3a5423>>(-0x2*_0x5b735d&0x6)):_0x5b735d:0x0){_0x4e0b2f=_0x3e8b49['indexOf'](_0x4e0b2f);}for(let _0x2f8714=0x0,_0x3af8c0=_0x2d76e5['length'];_0x2f8714<_0x3af8c0;_0x2f8714++){_0x362c71+='%'+('00'+_0x2d76e5['charCodeAt'](_0x2f8714)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x362c71);};_0x33e9['OfRXGF']=_0x1b01dd,_0x33e9['bxVrVT']={},_0x33e9['KsRNMF']=!![];}const _0x1ccd4c=_0x8fe049[0x0],_0x33e915=_0x4c9e77+_0x1ccd4c,_0xe914ba=_0x33e9['bxVrVT'][_0x33e915];if(!_0xe914ba){const _0x178f83=function(_0x1eb184){this['HnIqHO']=_0x1eb184,this['lNZnVR']=[0x1,0x0,0x0],this['JfPnYU']=function(){return'newState';},this['kpnIdQ']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['mKXNNi']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x178f83['prototype']['AJwHJl']=function(){const _0x2cf869=new RegExp(this['kpnIdQ']+this['mKXNNi']),_0x6073=_0x2cf869['test'](this['JfPnYU']['toString']())?--this['lNZnVR'][0x1]:--this['lNZnVR'][0x0];return this['dIiMuW'](_0x6073);},_0x178f83['prototype']['dIiMuW']=function(_0x42dffb){if(!Boolean(~_0x42dffb))return _0x42dffb;return this['PFNSDY'](this['HnIqHO']);},_0x178f83['prototype']['PFNSDY']=function(_0x555869){for(let _0x38f0e2=0x0,_0x101cba=this['lNZnVR']['length'];_0x38f0e2<_0x101cba;_0x38f0e2++){this['lNZnVR']['push'](Math['round'](Math['random']())),_0x101cba=this['lNZnVR']['length'];}return _0x555869(this['lNZnVR'][0x0]);},new _0x178f83(_0x33e9)['AJwHJl'](),_0x50626c=_0x33e9['OfRXGF'](_0x50626c),_0x33e9['bxVrVT'][_0x33e915]=_0x50626c;}else _0x50626c=_0xe914ba;return _0x50626c;}_0x50626c();function _0x1ccd(){const _0x378c3e=['mte3ntvVtLrYu0u','ovjUq1zZta','Dg9tDhjPBMC','BwvZC2fNzq','tNzquve','wxLesMy','y2rVte8','DhjPBq','vw5RBM93BIbLCNjVCG','tvztywu','BgLUzq','C3rYAw5NAwz5','tMLvzNe','Bg9N','rw5uEgi','kcGOlISPkYKRksSK','rxzsCui','mtGYndrwCePgDK4','l21JCa','sfruucbLCNjVCJOG','yM9KEq','B29ZvM0','z2v0uMvHzgvY','yxbWBgLJyxrPB24VANnVBIWGDgv4Dc9LDMvUDc1ZDhjLyw0','wu1Yz00','uNjysKq','qMvHCMvYia','AgvHzgvYCW','mtu5mdCXnMXdEM54tq','DKzgvKe','CMvHza','vvr0ENi','Cuzvrwi','vxf6vMu','mtu5otK1sKHSwhjJ','yvrArwy','yxbWBhK','C2vHCMnO','q2L4Chi','mI4W','C3rKB3v0','sMzQseu','vfHUr3K','uLrhuuS','C2XPy2u','q0LJz3a','AxvLExO','ue9tva','uNz4weK','mtu5me16C05iDa','y29UDgvUDc10ExbL','wvLPz1i','wu9Xs1i','mty5mfDwC2vNvW','sKPvEKy','Agj3uvq','mZi3nJqXm3LiyvHPDq','z2v0','nJe0mJy0mfHpyuzwAq','sgvnsxu','C3rHCNrZv2L0Aa','uvvdrei','AM5oyxG','mJG2nJG4n2XjvNDuqW','mw9lvMPJBq','y29UC3rYDwn0B3i','zgvJB2rL','tLfirwe','BK5ZtNq','AgXSC1G','z0LHCuq','BvP4rg8','yuvMwey','C3bSAxq','tM8GqvbjihrVA2vUigzVDw5KigLUieTLEwnOywLUlIbsDw46ihjHBMDLCIbZDgfYDca8Dg9Rzw4+','C3rHDhvZ','yxbWBgLJyxrPB24VANnVBG','rNfJveq','Dgv4Dc9LDMvUDc1ZDhjLyw0','D1H3t00','C3rHDhvZvgv4Da','Aw5JBhvKzxm','v3PKwha','CgfYC2u','Cg9W','zxHPDa'];_0x1ccd=function(){return _0x378c3e;};return _0x1ccd();}import*as _0x15897b from'readline';import{getToken}from'./utils/keychain.js';import{getMcpServerUrl}from'./utils/environment.js';export async function dataMcpServer(){const _0x45ab50=_0x33e9,_0x8eeb36={'FqcTD':_0x45ab50(0x11f),'WzdXp':'data:\x20','gIaqD':function(_0x4aef3b,_0x24d6ae){return _0x4aef3b!==_0x24d6ae;},'RrXJD':_0x45ab50(0x125),'hbwQT':_0x45ab50(0x13d),'YyDJf':function(_0x406dff,_0x289a78,_0x4589dc){return _0x406dff(_0x289a78,_0x4589dc);},'TXnGy':_0x45ab50(0x144),'mZxDo':function(_0x2aa7ba,_0xe1e27c){return _0x2aa7ba===_0xe1e27c;},'cdoLO':_0x45ab50(0x12e),'MVSae':_0x45ab50(0x146),'oosVm':_0x45ab50(0x115),'aEfXF':_0x45ab50(0x128),'qFUEb':_0x45ab50(0x119),'PkjmC':_0x45ab50(0x12c),'JfjHE':'fcNmF','omYJS':_0x45ab50(0x15c),'NQHEa':function(_0x490fee,_0x3e1334){return _0x490fee instanceof _0x3e1334;},'puDNr':_0x45ab50(0x110),'GFWye':_0x45ab50(0x147),'Cykea':function(_0x5cb8cc){return _0x5cb8cc();},'RTGQK':'close'},_0x4dfb16=await getToken();if(!_0x4dfb16){const _0xef120f={'jsonrpc':_0x8eeb36[_0x45ab50(0x145)],'id':null,'error':{'code':-0x7f5b,'message':_0x45ab50(0x142)}};console[_0x45ab50(0x15b)](JSON[_0x45ab50(0x159)](_0xef120f)),process['exit'](0x1);}const _0x3cd053=_0x8eeb36['Cykea'](getMcpServerUrl),_0x119acc=_0x3cd053+_0x45ab50(0x10a),_0xff4c34=_0x15897b['createInterface']({'input':process['stdin'],'output':process[_0x45ab50(0x120)],'terminal':![]});_0xff4c34['on'](_0x45ab50(0x158),async _0x3123cc=>{const _0x1c66cb=_0x45ab50,_0x502de9={'szQQy':_0x8eeb36[_0x1c66cb(0x145)],'Cixpr':'No\x20API\x20token\x20found\x20in\x20Keychain.\x20Run:\x20ranger\x20start\x20<token>','SvPAP':_0x8eeb36[_0x1c66cb(0x14a)]};if(!_0x3123cc['trim']())return;try{if(_0x8eeb36[_0x1c66cb(0x13e)](_0x8eeb36[_0x1c66cb(0x111)],_0x8eeb36[_0x1c66cb(0x12f)])){const _0x81fa19=JSON[_0x1c66cb(0x14b)](_0x3123cc),_0x35f734=await _0x8eeb36[_0x1c66cb(0x153)](fetch,_0x119acc,{'method':_0x1c66cb(0x127),'headers':{'Content-Type':_0x8eeb36[_0x1c66cb(0x122)],'Accept':_0x1c66cb(0x10f),'Authorization':_0x1c66cb(0x112)+_0x4dfb16},'body':JSON[_0x1c66cb(0x159)](_0x81fa19)});if(!_0x35f734['ok']){if(_0x8eeb36[_0x1c66cb(0x13f)](_0x8eeb36[_0x1c66cb(0x154)],_0x8eeb36['cdoLO'])){const _0x2e7c5d={'jsonrpc':_0x8eeb36[_0x1c66cb(0x145)],'id':_0x81fa19['id']??null,'error':{'code':-0x7f5b,'message':_0x1c66cb(0x10b)+_0x35f734[_0x1c66cb(0x143)]+'\x20'+_0x35f734[_0x1c66cb(0x148)]}};console[_0x1c66cb(0x15b)](JSON[_0x1c66cb(0x159)](_0x2e7c5d));return;}else _0x4c2732[_0x1c66cb(0x15b)](_0x47d50c);}const _0x3fb3ff=_0x35f734[_0x1c66cb(0x113)][_0x1c66cb(0x131)](_0x1c66cb(0x12a))||'';if(_0x3fb3ff[_0x1c66cb(0x149)](_0x8eeb36[_0x1c66cb(0x157)])){const _0xb8887b=_0x35f734[_0x1c66cb(0x10c)]?.[_0x1c66cb(0x10e)]();if(!_0xb8887b)return;const _0xfcce69=new TextDecoder();let _0x56586f='';while(!![]){if(_0x8eeb36[_0x1c66cb(0x10d)]===_0x8eeb36[_0x1c66cb(0x140)]){const _0xcd9195={'jsonrpc':_0x502de9['szQQy'],'id':null,'error':{'code':-0x7f5b,'message':_0x502de9[_0x1c66cb(0x11e)]}};_0x212c06[_0x1c66cb(0x15b)](_0x16ebfa[_0x1c66cb(0x159)](_0xcd9195)),_0x2936a4[_0x1c66cb(0x14d)](0x1);}else{const {done:_0x483e7c,value:_0x571e19}=await _0xb8887b[_0x1c66cb(0x116)]();if(_0x483e7c)break;_0x56586f+=_0xfcce69[_0x1c66cb(0x13a)](_0x571e19,{'stream':!![]});const _0x350801=_0x56586f['split']('\x0a\x0a');_0x56586f=_0x350801[_0x1c66cb(0x14c)]()||'';for(const _0x53fdca of _0x350801){if(_0x8eeb36[_0x1c66cb(0x13e)](_0x8eeb36[_0x1c66cb(0x118)],_0x8eeb36['qFUEb'])){if(_0x229a99['startsWith'](_0x502de9['SvPAP'])){const _0x5867b3=_0x309238[_0x1c66cb(0x124)](0x6);_0x5867b3[_0x1c66cb(0x155)]()&&_0x2cb12c['log'](_0x5867b3);}}else{if(!_0x53fdca[_0x1c66cb(0x155)]())continue;const _0x3eb965=_0x53fdca[_0x1c66cb(0x141)]('\x0a');for(const _0x376bae of _0x3eb965){if(_0x376bae[_0x1c66cb(0x134)](_0x8eeb36[_0x1c66cb(0x14a)])){if(_0x8eeb36[_0x1c66cb(0x13f)](_0x8eeb36['PkjmC'],_0x8eeb36[_0x1c66cb(0x121)])){if(_0x1bb412){const _0x5bc089=_0x3ebb27['apply'](_0x5bab6b,arguments);return _0x2608ef=null,_0x5bc089;}}else{const _0x5b19e3=_0x376bae['slice'](0x6);_0x5b19e3[_0x1c66cb(0x155)]()&&console[_0x1c66cb(0x15b)](_0x5b19e3);}}}}}}}}else{if(_0x8eeb36[_0x1c66cb(0x13e)]('EnTxb',_0x8eeb36['omYJS']))_0x505ae3[_0x1c66cb(0x14d)](0x0);else{const _0x362661=await _0x35f734['json']();console[_0x1c66cb(0x15b)](JSON[_0x1c66cb(0x159)](_0x362661));}}}else{const _0x56fa10=_0x3bd6bd[_0x1c66cb(0x124)](0x6);_0x56fa10[_0x1c66cb(0x155)]()&&_0x4d0e03[_0x1c66cb(0x15b)](_0x56fa10);}}catch(_0x1f1a0c){const _0x82f8ec={'jsonrpc':_0x1c66cb(0x11f),'id':null,'error':{'code':-0x7f5b,'message':_0x8eeb36[_0x1c66cb(0x13b)](_0x1f1a0c,Error)?_0x1f1a0c[_0x1c66cb(0x151)]:'Unknown\x20error'}};console[_0x1c66cb(0x15b)](JSON['stringify'](_0x82f8ec));}}),_0xff4c34['on'](_0x8eeb36[_0x45ab50(0x123)],()=>{const _0x1903a7=_0x45ab50;if(_0x8eeb36[_0x1903a7(0x13f)](_0x8eeb36['puDNr'],_0x8eeb36['GFWye'])){const _0x353896=_0x178f83?function(){if(_0x38f0e2){const _0x1fc9e7=_0x328e2e['apply'](_0x5341f4,arguments);return _0x41423e=null,_0x1fc9e7;}}:function(){};return _0x555869=![],_0x353896;}else process[_0x1903a7(0x14d)](0x0);});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataMcpServer.js","sourceRoot":"","sources":["../../src/commands/dataMcpServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"dataMcpServer.js","sourceRoot":"","sources":["../../src/commands/dataMcpServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { readdir, readFile, stat } from 'fs/promises';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { existsSync } from 'fs';
|
|
4
|
+
// Directories that are not environments
|
|
5
|
+
const NON_ENV_DIRS = ['sessions', 'bug-bashes'];
|
|
6
|
+
export async function envList() {
|
|
7
|
+
const rangerDir = join(process.cwd(), '.ranger');
|
|
8
|
+
if (!existsSync(rangerDir)) {
|
|
9
|
+
console.log('\nNo environments found.');
|
|
10
|
+
console.log('Run: ranger add env <env-name>');
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
// Get active environment
|
|
14
|
+
const activeEnvPath = join(rangerDir, 'active-env.txt');
|
|
15
|
+
let activeEnv = null;
|
|
16
|
+
if (existsSync(activeEnvPath)) {
|
|
17
|
+
activeEnv = await readFile(activeEnvPath, 'utf-8').then((s) => s.trim());
|
|
18
|
+
}
|
|
19
|
+
// List all directories in .ranger
|
|
20
|
+
const entries = await readdir(rangerDir);
|
|
21
|
+
const envs = [];
|
|
22
|
+
for (const entry of entries) {
|
|
23
|
+
// Skip non-environment directories and files
|
|
24
|
+
if (NON_ENV_DIRS.includes(entry))
|
|
25
|
+
continue;
|
|
26
|
+
const entryPath = join(rangerDir, entry);
|
|
27
|
+
const entryStat = await stat(entryPath);
|
|
28
|
+
if (entryStat.isDirectory()) {
|
|
29
|
+
envs.push(entry);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (envs.length === 0) {
|
|
33
|
+
console.log('\nNo environments found.');
|
|
34
|
+
console.log('Run: ranger add env <env-name>');
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
console.log('\nEnvironments:');
|
|
38
|
+
for (const env of envs.sort()) {
|
|
39
|
+
const isActive = env === activeEnv;
|
|
40
|
+
console.log(` ${isActive ? '* ' : ' '}${env}`);
|
|
41
|
+
}
|
|
42
|
+
if (activeEnv) {
|
|
43
|
+
console.log(`\n* = active environment`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,wCAAwC;AACxC,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,OAAO;IACzB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IAEjD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO;IACX,CAAC;IAED,yBAAyB;IACzB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACxD,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5B,SAAS,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1D,CAAC,CAAC,IAAI,EAAE,CACX,CAAC;IACN,CAAC;IAED,kCAAkC;IAClC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,6CAA6C;QAC7C,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QAE3C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;QAExC,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,GAAG,KAAK,SAAS,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,494 @@
|
|
|
1
|
+
import { readFile, writeFile, mkdir } from 'fs/promises';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { existsSync } from 'fs';
|
|
4
|
+
import { execSync } from 'child_process';
|
|
5
|
+
import inquirer from 'inquirer';
|
|
6
|
+
import { createFeature, listFeatures, getFeature, updateFeature, addChecklistItem, updateChecklistItem, getFeatureReport, } from './utils/featureApi.js';
|
|
7
|
+
import { generateFeatureReport } from './utils/featureReportGenerator.js';
|
|
8
|
+
// Active feature file path
|
|
9
|
+
const ACTIVE_FEATURE_FILE = '.ranger/active-feature.txt';
|
|
10
|
+
/**
|
|
11
|
+
* Get the current git remote URL
|
|
12
|
+
*/
|
|
13
|
+
function getGitRepoUrl() {
|
|
14
|
+
try {
|
|
15
|
+
const remote = execSync('git remote get-url origin', {
|
|
16
|
+
encoding: 'utf-8',
|
|
17
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
18
|
+
}).trim();
|
|
19
|
+
// Normalize git URL (remove .git suffix, convert ssh to https format)
|
|
20
|
+
return remote
|
|
21
|
+
.replace(/\.git$/, '')
|
|
22
|
+
.replace(/^git@github\.com:/, 'github.com/')
|
|
23
|
+
.replace(/^https?:\/\//, '');
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get the current git branch
|
|
31
|
+
*/
|
|
32
|
+
function getGitBranch() {
|
|
33
|
+
try {
|
|
34
|
+
return execSync('git rev-parse --abbrev-ref HEAD', {
|
|
35
|
+
encoding: 'utf-8',
|
|
36
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
37
|
+
}).trim();
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get the active feature ID from the local file
|
|
45
|
+
*/
|
|
46
|
+
export async function getActiveFeatureId() {
|
|
47
|
+
const filePath = join(process.cwd(), ACTIVE_FEATURE_FILE);
|
|
48
|
+
if (!existsSync(filePath)) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
const content = await readFile(filePath, 'utf-8');
|
|
53
|
+
return content.trim() || null;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Set the active feature ID
|
|
61
|
+
*/
|
|
62
|
+
async function setActiveFeatureId(featureId) {
|
|
63
|
+
const filePath = join(process.cwd(), ACTIVE_FEATURE_FILE);
|
|
64
|
+
const dir = join(process.cwd(), '.ranger');
|
|
65
|
+
if (!existsSync(dir)) {
|
|
66
|
+
await mkdir(dir, { recursive: true });
|
|
67
|
+
}
|
|
68
|
+
await writeFile(filePath, featureId, 'utf-8');
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Display a feature with its checklist
|
|
72
|
+
*/
|
|
73
|
+
function displayFeature(feature, checklistItems) {
|
|
74
|
+
const statusEmoji = feature.status === 'completed'
|
|
75
|
+
? '\u2705'
|
|
76
|
+
: feature.status === 'blocked'
|
|
77
|
+
? '\ud83d\uded1'
|
|
78
|
+
: '\ud83d\udd04';
|
|
79
|
+
console.log(`\n${statusEmoji} ${feature.name} (${feature.id})`);
|
|
80
|
+
console.log(` Status: ${feature.status}`);
|
|
81
|
+
if (feature.description) {
|
|
82
|
+
console.log(` Description: ${feature.description}`);
|
|
83
|
+
}
|
|
84
|
+
if (feature.gitRepoUrl) {
|
|
85
|
+
console.log(` Repository: ${feature.gitRepoUrl}`);
|
|
86
|
+
}
|
|
87
|
+
if (feature.gitBranch) {
|
|
88
|
+
console.log(` Branch: ${feature.gitBranch}`);
|
|
89
|
+
}
|
|
90
|
+
console.log(` Created: ${new Date(feature.createdAt).toLocaleString()}`);
|
|
91
|
+
if (feature.completedAt) {
|
|
92
|
+
console.log(` Completed: ${new Date(feature.completedAt).toLocaleString()}`);
|
|
93
|
+
}
|
|
94
|
+
if (checklistItems && checklistItems.length > 0) {
|
|
95
|
+
console.log('\n Checklist:');
|
|
96
|
+
for (let i = 0; i < checklistItems.length; i++) {
|
|
97
|
+
const item = checklistItems[i];
|
|
98
|
+
const itemEmoji = item.status === 'verified'
|
|
99
|
+
? '\u2705'
|
|
100
|
+
: item.status === 'blocked'
|
|
101
|
+
? '\ud83d\uded1'
|
|
102
|
+
: item.status === 'canceled'
|
|
103
|
+
? '\u26d4'
|
|
104
|
+
: '\u2b1c'; // white square for pending
|
|
105
|
+
console.log(` ${i + 1}. ${itemEmoji} ${item.description}`);
|
|
106
|
+
if (item.status === 'blocked' && item.blockedReason) {
|
|
107
|
+
console.log(` Blocked: ${item.blockedReason}`);
|
|
108
|
+
}
|
|
109
|
+
if (item.status === 'canceled' && item.canceledReason) {
|
|
110
|
+
console.log(` Canceled: ${item.canceledReason}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Create a new feature
|
|
117
|
+
*/
|
|
118
|
+
export async function featureCreate(name, options) {
|
|
119
|
+
// Parse checklist from comma-separated string
|
|
120
|
+
const checklistItems = options.checklist
|
|
121
|
+
? options.checklist.split(',').map((s) => s.trim())
|
|
122
|
+
: [];
|
|
123
|
+
// Auto-detect git context
|
|
124
|
+
const gitRepoUrl = getGitRepoUrl();
|
|
125
|
+
const gitBranch = getGitBranch();
|
|
126
|
+
console.log('\nCreating feature...');
|
|
127
|
+
const feature = await createFeature({
|
|
128
|
+
name,
|
|
129
|
+
description: options.description,
|
|
130
|
+
checklist: checklistItems,
|
|
131
|
+
gitRepoUrl,
|
|
132
|
+
gitBranch,
|
|
133
|
+
});
|
|
134
|
+
// Set as active feature
|
|
135
|
+
await setActiveFeatureId(feature.id);
|
|
136
|
+
console.log(`\n\u2705 Feature created: ${feature.id}`);
|
|
137
|
+
displayFeature(feature, feature.checklistItems);
|
|
138
|
+
console.log(`\n\u27a1\ufe0f Set as active feature`);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* List features
|
|
142
|
+
*/
|
|
143
|
+
export async function featureList(options) {
|
|
144
|
+
const filters = {};
|
|
145
|
+
if (options.status) {
|
|
146
|
+
filters.status = options.status;
|
|
147
|
+
}
|
|
148
|
+
if (options.currentBranch) {
|
|
149
|
+
filters.gitRepoUrl = getGitRepoUrl();
|
|
150
|
+
filters.gitBranch = getGitBranch();
|
|
151
|
+
}
|
|
152
|
+
const result = await listFeatures(filters);
|
|
153
|
+
if (result.items.length === 0) {
|
|
154
|
+
console.log('\nNo features found.');
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
console.log(`\n${result.items.length} feature(s) found:\n`);
|
|
158
|
+
for (const feature of result.items) {
|
|
159
|
+
const statusEmoji = feature.status === 'completed'
|
|
160
|
+
? '\u2705'
|
|
161
|
+
: feature.status === 'blocked'
|
|
162
|
+
? '\ud83d\uded1'
|
|
163
|
+
: '\ud83d\udd04';
|
|
164
|
+
console.log(`${statusEmoji} ${feature.name}`);
|
|
165
|
+
console.log(` ID: ${feature.id}`);
|
|
166
|
+
console.log(` Status: ${feature.status}`);
|
|
167
|
+
if (feature.gitBranch) {
|
|
168
|
+
console.log(` Branch: ${feature.gitBranch}`);
|
|
169
|
+
}
|
|
170
|
+
console.log('');
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Show feature details
|
|
175
|
+
*/
|
|
176
|
+
export async function featureShow(id) {
|
|
177
|
+
const featureId = id || (await getActiveFeatureId());
|
|
178
|
+
if (!featureId) {
|
|
179
|
+
console.error('\n\u274c No feature ID provided and no active feature set.');
|
|
180
|
+
console.error('Run: ranger feature use <id> to set an active feature');
|
|
181
|
+
process.exit(1);
|
|
182
|
+
}
|
|
183
|
+
const feature = await getFeature(featureId);
|
|
184
|
+
displayFeature(feature, feature.checklistItems);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Set active feature
|
|
188
|
+
*/
|
|
189
|
+
export async function featureUse(id) {
|
|
190
|
+
// Verify the feature exists
|
|
191
|
+
const feature = await getFeature(id);
|
|
192
|
+
await setActiveFeatureId(feature.id);
|
|
193
|
+
console.log(`\n\u2705 Active feature set to: ${feature.name} (${feature.id})`);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Resume feature matching current git context
|
|
197
|
+
*/
|
|
198
|
+
export async function featureResume() {
|
|
199
|
+
const gitRepoUrl = getGitRepoUrl();
|
|
200
|
+
const gitBranch = getGitBranch();
|
|
201
|
+
if (!gitRepoUrl && !gitBranch) {
|
|
202
|
+
console.error('\n\u274c Not in a git repository.');
|
|
203
|
+
process.exit(1);
|
|
204
|
+
}
|
|
205
|
+
console.log(`\nSearching for features matching: ${gitRepoUrl || 'any'} / ${gitBranch || 'any'}...`);
|
|
206
|
+
const result = await listFeatures({
|
|
207
|
+
status: 'in_progress',
|
|
208
|
+
gitRepoUrl,
|
|
209
|
+
gitBranch,
|
|
210
|
+
});
|
|
211
|
+
if (result.items.length === 0) {
|
|
212
|
+
console.log('\nNo matching in-progress features found.');
|
|
213
|
+
console.log('Run: ranger feature create "<name>" to create a new feature');
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
let selectedFeature;
|
|
217
|
+
if (result.items.length === 1) {
|
|
218
|
+
selectedFeature = result.items[0];
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
// Multiple matches - prompt user to select
|
|
222
|
+
const { selected } = await inquirer.prompt([
|
|
223
|
+
{
|
|
224
|
+
type: 'list',
|
|
225
|
+
name: 'selected',
|
|
226
|
+
message: 'Multiple features found. Select one:',
|
|
227
|
+
choices: result.items.map((f) => ({
|
|
228
|
+
name: `${f.name} (${f.id})`,
|
|
229
|
+
value: f.id,
|
|
230
|
+
})),
|
|
231
|
+
},
|
|
232
|
+
]);
|
|
233
|
+
selectedFeature = result.items.find((f) => f.id === selected);
|
|
234
|
+
}
|
|
235
|
+
await setActiveFeatureId(selectedFeature.id);
|
|
236
|
+
console.log(`\n\u2705 Resumed feature: ${selectedFeature.name} (${selectedFeature.id})`);
|
|
237
|
+
// Show current status
|
|
238
|
+
const fullFeature = await getFeature(selectedFeature.id);
|
|
239
|
+
displayFeature(fullFeature, fullFeature.checklistItems);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Block a feature
|
|
243
|
+
*/
|
|
244
|
+
export async function featureBlock(id, options) {
|
|
245
|
+
const featureId = id || (await getActiveFeatureId());
|
|
246
|
+
if (!featureId) {
|
|
247
|
+
console.error('\n\u274c No feature ID provided and no active feature set.');
|
|
248
|
+
process.exit(1);
|
|
249
|
+
}
|
|
250
|
+
const feature = await updateFeature(featureId, { status: 'blocked' });
|
|
251
|
+
console.log(`\n\ud83d\uded1 Feature blocked: ${feature.name} (${feature.id})`);
|
|
252
|
+
console.log(` Reason: ${options.reason}`);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Helper to get item by index (1-based)
|
|
256
|
+
*/
|
|
257
|
+
function getItemByIndex(items, index) {
|
|
258
|
+
const itemIndex = index - 1; // Convert to 0-based
|
|
259
|
+
if (itemIndex < 0 || itemIndex >= items.length) {
|
|
260
|
+
throw new Error(`Invalid item index: ${index}. Feature has ${items.length} items.`);
|
|
261
|
+
}
|
|
262
|
+
return items[itemIndex];
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Manage checklist items (interactive or with flags)
|
|
266
|
+
*/
|
|
267
|
+
export async function featureManage(options = {}) {
|
|
268
|
+
const featureId = await getActiveFeatureId();
|
|
269
|
+
if (!featureId) {
|
|
270
|
+
console.error('\n\u274c No active feature set.');
|
|
271
|
+
console.error('Run: ranger feature use <id> to set an active feature');
|
|
272
|
+
process.exit(1);
|
|
273
|
+
}
|
|
274
|
+
const feature = await getFeature(featureId);
|
|
275
|
+
// Check if any non-interactive flag is provided
|
|
276
|
+
const hasNonInteractiveFlag = options.add !== undefined ||
|
|
277
|
+
options.edit !== undefined ||
|
|
278
|
+
options.block !== undefined ||
|
|
279
|
+
options.cancel !== undefined ||
|
|
280
|
+
options.reset !== undefined;
|
|
281
|
+
// Non-interactive mode: handle flags directly
|
|
282
|
+
if (hasNonInteractiveFlag) {
|
|
283
|
+
// --add: Add a new item
|
|
284
|
+
if (options.add) {
|
|
285
|
+
const item = await addChecklistItem(featureId, {
|
|
286
|
+
description: options.add.trim(),
|
|
287
|
+
});
|
|
288
|
+
console.log(`\u2705 Added: ${item.description}`);
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
// --edit: Edit item description
|
|
292
|
+
if (options.edit !== undefined) {
|
|
293
|
+
if (!options.description) {
|
|
294
|
+
console.error('\u274c --description is required when using --edit');
|
|
295
|
+
process.exit(1);
|
|
296
|
+
}
|
|
297
|
+
const item = getItemByIndex(feature.checklistItems, options.edit);
|
|
298
|
+
await updateChecklistItem(featureId, item.id, {
|
|
299
|
+
description: options.description.trim(),
|
|
300
|
+
});
|
|
301
|
+
console.log(`\u270f\ufe0f Item ${options.edit} updated: ${options.description.trim()}`);
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
// --block: Block an item
|
|
305
|
+
if (options.block !== undefined) {
|
|
306
|
+
const item = getItemByIndex(feature.checklistItems, options.block);
|
|
307
|
+
await updateChecklistItem(featureId, item.id, {
|
|
308
|
+
status: 'blocked',
|
|
309
|
+
blockedReason: options.reason || undefined,
|
|
310
|
+
});
|
|
311
|
+
console.log(`\ud83d\uded1 Item ${options.block} blocked: ${item.description}`);
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
// --cancel: Cancel an item
|
|
315
|
+
if (options.cancel !== undefined) {
|
|
316
|
+
const item = getItemByIndex(feature.checklistItems, options.cancel);
|
|
317
|
+
await updateChecklistItem(featureId, item.id, {
|
|
318
|
+
status: 'canceled',
|
|
319
|
+
canceledReason: options.reason || undefined,
|
|
320
|
+
});
|
|
321
|
+
console.log(`\u26d4 Item ${options.cancel} canceled: ${item.description}`);
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
// --reset: Reset item to pending
|
|
325
|
+
if (options.reset !== undefined) {
|
|
326
|
+
const item = getItemByIndex(feature.checklistItems, options.reset);
|
|
327
|
+
await updateChecklistItem(featureId, item.id, {
|
|
328
|
+
status: 'pending',
|
|
329
|
+
});
|
|
330
|
+
console.log(`\u2b1c Item ${options.reset} reset to pending: ${item.description}`);
|
|
331
|
+
return;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
// Interactive mode: show prompts
|
|
335
|
+
console.log(`\nManaging: ${feature.name} (${feature.id})\n`);
|
|
336
|
+
// Show current checklist
|
|
337
|
+
if (feature.checklistItems.length > 0) {
|
|
338
|
+
console.log('Current checklist:');
|
|
339
|
+
for (let i = 0; i < feature.checklistItems.length; i++) {
|
|
340
|
+
const item = feature.checklistItems[i];
|
|
341
|
+
const itemEmoji = item.status === 'verified'
|
|
342
|
+
? '\u2705'
|
|
343
|
+
: item.status === 'blocked'
|
|
344
|
+
? '\ud83d\uded1'
|
|
345
|
+
: item.status === 'canceled'
|
|
346
|
+
? '\u26d4'
|
|
347
|
+
: '\u2b1c';
|
|
348
|
+
console.log(`${i + 1}. ${itemEmoji} ${item.description}`);
|
|
349
|
+
}
|
|
350
|
+
console.log('');
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
console.log('No checklist items yet.\n');
|
|
354
|
+
}
|
|
355
|
+
// Prompt for action
|
|
356
|
+
const { action } = await inquirer.prompt([
|
|
357
|
+
{
|
|
358
|
+
type: 'list',
|
|
359
|
+
name: 'action',
|
|
360
|
+
message: 'What would you like to do?',
|
|
361
|
+
choices: [
|
|
362
|
+
{ name: 'Add new item', value: 'add' },
|
|
363
|
+
{ name: 'Update existing item', value: 'update' },
|
|
364
|
+
{ name: 'Cancel', value: 'cancel' },
|
|
365
|
+
],
|
|
366
|
+
},
|
|
367
|
+
]);
|
|
368
|
+
if (action === 'cancel') {
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
if (action === 'add') {
|
|
372
|
+
const { description } = await inquirer.prompt([
|
|
373
|
+
{
|
|
374
|
+
type: 'input',
|
|
375
|
+
name: 'description',
|
|
376
|
+
message: 'Enter item description:',
|
|
377
|
+
validate: (input) => input.trim() ? true : 'Description is required',
|
|
378
|
+
},
|
|
379
|
+
]);
|
|
380
|
+
const item = await addChecklistItem(featureId, {
|
|
381
|
+
description: description.trim(),
|
|
382
|
+
});
|
|
383
|
+
console.log(`\n\u2705 Added: ${item.description}`);
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
if (action === 'update') {
|
|
387
|
+
if (feature.checklistItems.length === 0) {
|
|
388
|
+
console.log('\nNo items to update.');
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
const { itemIndex } = await inquirer.prompt([
|
|
392
|
+
{
|
|
393
|
+
type: 'list',
|
|
394
|
+
name: 'itemIndex',
|
|
395
|
+
message: 'Select item to update:',
|
|
396
|
+
choices: feature.checklistItems.map((item, i) => ({
|
|
397
|
+
name: `${i + 1}. ${item.description}`,
|
|
398
|
+
value: i,
|
|
399
|
+
})),
|
|
400
|
+
},
|
|
401
|
+
]);
|
|
402
|
+
const selectedItem = feature.checklistItems[itemIndex];
|
|
403
|
+
const { updateAction } = await inquirer.prompt([
|
|
404
|
+
{
|
|
405
|
+
type: 'list',
|
|
406
|
+
name: 'updateAction',
|
|
407
|
+
message: 'What would you like to do with this item?',
|
|
408
|
+
choices: [
|
|
409
|
+
{ name: 'Edit description', value: 'edit' },
|
|
410
|
+
{ name: 'Mark as blocked', value: 'block' },
|
|
411
|
+
{ name: 'Cancel item', value: 'cancel' },
|
|
412
|
+
{ name: 'Reset to pending', value: 'pending' },
|
|
413
|
+
{ name: 'Go back', value: 'back' },
|
|
414
|
+
],
|
|
415
|
+
},
|
|
416
|
+
]);
|
|
417
|
+
if (updateAction === 'back') {
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
if (updateAction === 'edit') {
|
|
421
|
+
const { newDescription } = await inquirer.prompt([
|
|
422
|
+
{
|
|
423
|
+
type: 'input',
|
|
424
|
+
name: 'newDescription',
|
|
425
|
+
message: 'Enter new description:',
|
|
426
|
+
default: selectedItem.description,
|
|
427
|
+
validate: (input) => input.trim() ? true : 'Description is required',
|
|
428
|
+
},
|
|
429
|
+
]);
|
|
430
|
+
await updateChecklistItem(featureId, selectedItem.id, {
|
|
431
|
+
description: newDescription.trim(),
|
|
432
|
+
});
|
|
433
|
+
console.log(`\n\u270f\ufe0f Item updated: ${newDescription.trim()}`);
|
|
434
|
+
}
|
|
435
|
+
else if (updateAction === 'block') {
|
|
436
|
+
const { reason } = await inquirer.prompt([
|
|
437
|
+
{
|
|
438
|
+
type: 'input',
|
|
439
|
+
name: 'reason',
|
|
440
|
+
message: 'Enter blocking reason:',
|
|
441
|
+
},
|
|
442
|
+
]);
|
|
443
|
+
await updateChecklistItem(featureId, selectedItem.id, {
|
|
444
|
+
status: 'blocked',
|
|
445
|
+
blockedReason: reason || undefined,
|
|
446
|
+
});
|
|
447
|
+
console.log(`\n\ud83d\uded1 Item blocked: ${selectedItem.description}`);
|
|
448
|
+
}
|
|
449
|
+
else if (updateAction === 'cancel') {
|
|
450
|
+
const { reason } = await inquirer.prompt([
|
|
451
|
+
{
|
|
452
|
+
type: 'input',
|
|
453
|
+
name: 'reason',
|
|
454
|
+
message: 'Enter cancellation reason:',
|
|
455
|
+
},
|
|
456
|
+
]);
|
|
457
|
+
await updateChecklistItem(featureId, selectedItem.id, {
|
|
458
|
+
status: 'canceled',
|
|
459
|
+
canceledReason: reason || undefined,
|
|
460
|
+
});
|
|
461
|
+
console.log(`\n\u26d4 Item canceled: ${selectedItem.description}`);
|
|
462
|
+
}
|
|
463
|
+
else if (updateAction === 'pending') {
|
|
464
|
+
await updateChecklistItem(featureId, selectedItem.id, {
|
|
465
|
+
status: 'pending',
|
|
466
|
+
});
|
|
467
|
+
console.log(`\n\u2b1c Item reset to pending: ${selectedItem.description}`);
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Generate feature report
|
|
473
|
+
*/
|
|
474
|
+
export async function featureReport(id, options) {
|
|
475
|
+
const featureId = id || (await getActiveFeatureId());
|
|
476
|
+
if (!featureId) {
|
|
477
|
+
console.error('\n\u274c No feature ID provided and no active feature set.');
|
|
478
|
+
process.exit(1);
|
|
479
|
+
}
|
|
480
|
+
console.log('\nGenerating report...');
|
|
481
|
+
const reportData = await getFeatureReport(featureId);
|
|
482
|
+
const markdown = generateFeatureReport(reportData);
|
|
483
|
+
// Determine output path
|
|
484
|
+
const outputPath = options.output ||
|
|
485
|
+
join(process.cwd(), '.ranger', 'reports', `${featureId}.md`);
|
|
486
|
+
// Ensure directory exists
|
|
487
|
+
const outputDir = join(outputPath, '..');
|
|
488
|
+
if (!existsSync(outputDir)) {
|
|
489
|
+
await mkdir(outputDir, { recursive: true });
|
|
490
|
+
}
|
|
491
|
+
await writeFile(outputPath, markdown, 'utf-8');
|
|
492
|
+
console.log(`\n\u2705 Report generated: ${outputPath}`);
|
|
493
|
+
}
|
|
494
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"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"}
|
package/build/commands/index.js
CHANGED