@ranger-testing/ranger-cli 1.0.10 → 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 +230 -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 +65 -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 +42 -11
- package/build/commands/status.js.map +1 -1
- package/build/commands/update.js +29 -16
- 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/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 _0x4177(_0x6378ff,_0x4c1970){_0x6378ff=_0x6378ff-0x1d6;const _0x5b064e=_0x173b();let _0x223518=_0x5b064e[_0x6378ff];if(_0x4177['FkwOHA']===undefined){var _0x3b406d=function(_0x39fad6){const _0x3ff1ba='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x206ccd='',_0xeb3876='',_0x54b7ec=_0x206ccd+_0x3b406d;for(let _0x2f659e=0x0,_0x241c98,_0x4595e2,_0x52e216=0x0;_0x4595e2=_0x39fad6['charAt'](_0x52e216++);~_0x4595e2&&(_0x241c98=_0x2f659e%0x4?_0x241c98*0x40+_0x4595e2:_0x4595e2,_0x2f659e++%0x4)?_0x206ccd+=_0x54b7ec['charCodeAt'](_0x52e216+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x241c98>>(-0x2*_0x2f659e&0x6)):_0x2f659e:0x0){_0x4595e2=_0x3ff1ba['indexOf'](_0x4595e2);}for(let _0x42d080=0x0,_0x1e0ec1=_0x206ccd['length'];_0x42d080<_0x1e0ec1;_0x42d080++){_0xeb3876+='%'+('00'+_0x206ccd['charCodeAt'](_0x42d080)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xeb3876);};_0x4177['iCNmhx']=_0x3b406d,_0x4177['JjmWln']={},_0x4177['FkwOHA']=!![];}const _0x173bb8=_0x5b064e[0x0],_0x417740=_0x6378ff+_0x173bb8,_0x44d752=_0x4177['JjmWln'][_0x417740];if(!_0x44d752){const _0x575f31=function(_0x495a6b){this['dYvLDh']=_0x495a6b,this['zyFccE']=[0x1,0x0,0x0],this['eVUMpV']=function(){return'newState';},this['lDxeXc']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['oOFsWW']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x575f31['prototype']['ZKbzXq']=function(){const _0x2ebcb0=new RegExp(this['lDxeXc']+this['oOFsWW']),_0x5141b5=_0x2ebcb0['test'](this['eVUMpV']['toString']())?--this['zyFccE'][0x1]:--this['zyFccE'][0x0];return this['ZnEmEW'](_0x5141b5);},_0x575f31['prototype']['ZnEmEW']=function(_0x35d46d){if(!Boolean(~_0x35d46d))return _0x35d46d;return this['JCdHjo'](this['dYvLDh']);},_0x575f31['prototype']['JCdHjo']=function(_0x227ad9){for(let _0x2f087a=0x0,_0x4c28f6=this['zyFccE']['length'];_0x2f087a<_0x4c28f6;_0x2f087a++){this['zyFccE']['push'](Math['round'](Math['random']())),_0x4c28f6=this['zyFccE']['length'];}return _0x227ad9(this['zyFccE'][0x0]);},new _0x575f31(_0x4177)['ZKbzXq'](),_0x223518=_0x4177['iCNmhx'](_0x223518),_0x4177['JjmWln'][_0x417740]=_0x223518;}else _0x223518=_0x44d752;return _0x223518;}function _0x173b(){const _0xe19607=['l21JCa','CgrJu0e','mtuZEwTbAxvV','wNzbuLC','CM5Wz1e','C3rYAw5NAwz5','zgvJB2rL','tgX6sNG','DhjPBq','CNPUzNy','mZKZndruEMvUuwq','CMTqsvu','Aw5JBhvKzxm','Cg9W','yxbWBgLJyxrPB24VANnVBIWGDgv4Dc9LDMvUDc1ZDhjLyw0','z2v0uMvHzgvY','BNLMqK8','C3rKB3v0','BgLUzq','Dg9tDhjPBMC','sM1wt20','mtG3otG3nw1WCfDSva','C3rHDhvZvgv4Da','ufDfs0e','uhHgrwK','AgvHzgvYCW','uwfztee','kcGOlISPkYKRksSK','ANnVBG','nJnmqMzLDMO','tM8GqvbjihrVA2vUigzVDw5KigLUieTLEwnOywLUlIbsDw46ihjHBMDLCIbZDgfYDca8Dg9Rzw4+','C3rHCNrZv2L0Aa','C3bSAxq','y29UC3rYDwn0B3i','ntK2ohzNyKroAq','wwDiD0C','BvrJtwu','yxbWBhK','zfLxBhO','C2XPy2u','uezyzvi','mJy5ntm1menIBLPnuW','mJa0mtaYy2Tjrhz6','otuYotLLsufVu1u','AvD3DKK','sg9cB0K','zxHPDa','mI4W','ELD4v3m','BwvZC2fNzq','yxbWBgLJyxrPB24VANnVBG','ue9tva','Dgv4Dc9LDMvUDc1ZDhjLyw0','v2fTExm','nLDrAfHIqG','DuPfwg8','wwXlzxe','CMvHza','zfL4sg0','CgfYC2u','qMvHCMvYia','vNbUyKi','C2vHCMnO','Bfvivgy','zgf0ytOG','ALHVA0i','B2ndALO','sfruucbLCNjVCJOG','vw5RBM93BIbLCNjVCG','odK3nde1wKTss2Dh','Bg9N','qunsqK0'];_0x173b=function(){return _0xe19607;};return _0x173b();}(function(_0x30e785,_0x5c50b7){const _0x2d99ab=_0x4177,_0x5e7372=_0x30e785();while(!![]){try{const _0xb0e953=parseInt(_0x2d99ab(0x1fe))/0x1+-parseInt(_0x2d99ab(0x1fd))/0x2+parseInt(_0x2d99ab(0x21d))/0x3*(-parseInt(_0x2d99ab(0x1f5))/0x4)+-parseInt(_0x2d99ab(0x218))/0x5*(-parseInt(_0x2d99ab(0x209))/0x6)+-parseInt(_0x2d99ab(0x1f0))/0x7*(parseInt(_0x2d99ab(0x1dd))/0x8)+-parseInt(_0x2d99ab(0x1e8))/0x9+parseInt(_0x2d99ab(0x1fc))/0xa;if(_0xb0e953===_0x5c50b7)break;else _0x5e7372['push'](_0x5e7372['shift']());}catch(_0xf58cab){_0x5e7372['push'](_0x5e7372['shift']());}}}(_0x173b,0x1b98d));const _0x3b406d=(function(){const _0x381133={'pdcSA':function(_0x24f28f,_0x264284){return _0x24f28f===_0x264284;}};let _0xdd3816=!![];return function(_0x2bbf64,_0x867693){const _0x2d36b2=_0xdd3816?function(){const _0x5e7628=_0x4177;if(_0x867693){if(_0x381133[_0x5e7628(0x21c)](_0x5e7628(0x20b),_0x5e7628(0x215))){if(_0x82b81b){const _0x434446=_0x3c0619[_0x5e7628(0x1f8)](_0x5375ff,arguments);return _0x217d01=null,_0x434446;}}else{const _0x1ee634=_0x867693[_0x5e7628(0x1f8)](_0x2bbf64,arguments);return _0x867693=null,_0x1ee634;}}}:function(){};return _0xdd3816=![],_0x2d36b2;};}()),_0x223518=_0x3b406d(this,function(){const _0x18fa81=_0x4177,_0x4aded8={'dYWlz':_0x18fa81(0x1ee)};return _0x223518['toString']()[_0x18fa81(0x211)](_0x18fa81(0x1ee))[_0x18fa81(0x1e6)]()[_0x18fa81(0x1f4)](_0x223518)[_0x18fa81(0x211)](_0x4aded8[_0x18fa81(0x1f9)]);});_0x223518();import*as _0x477aad from'readline';import{getToken,getServerUrl}from'./utils/keychain.js';export async function dataMcpServer(){const _0x2eb5b9=_0x4177,_0x167783={'dYxHm':_0x2eb5b9(0x202),'YgHwG':'No\x20server\x20URL\x20found\x20in\x20Keychain.\x20Run:\x20ranger\x20start\x20<token>','egywF':function(_0x48f688,_0x293256){return _0x48f688 instanceof _0x293256;},'LlzJx':function(_0x550470,_0x553353){return _0x550470===_0x553353;},'Wamys':_0x2eb5b9(0x1e7),'PxFEi':_0x2eb5b9(0x206),'lUHTf':'content-type','PFXeR':_0x2eb5b9(0x207),'lPkih':function(_0x18a2ab,_0x1d6ea5){return _0x18a2ab!==_0x1d6ea5;},'PWEKA':_0x2eb5b9(0x213),'QaYLA':_0x2eb5b9(0x1d7),'jXokB':'jSbhO','iWwvI':function(_0x123acd,_0x3858bc){return _0x123acd===_0x3858bc;},'ACRBM':'KbrDY','VpnbB':_0x2eb5b9(0x203),'rznfv':function(_0x27b436){return _0x27b436();},'HoBoI':function(_0x2a3784){return _0x2a3784();},'rkPIU':_0x2eb5b9(0x1f1),'ZvARW':_0x2eb5b9(0x1e5)},_0x5439d4=await _0x167783[_0x2eb5b9(0x1dc)](getToken),_0x1dae40=await _0x167783[_0x2eb5b9(0x200)](getServerUrl);if(!_0x5439d4){const _0x43fb47={'jsonrpc':_0x2eb5b9(0x202),'id':null,'error':{'code':-0x7f5b,'message':_0x167783[_0x2eb5b9(0x1de)]}};console[_0x2eb5b9(0x219)](JSON[_0x2eb5b9(0x1d8)](_0x43fb47)),process[_0x2eb5b9(0x201)](0x1);}if(!_0x1dae40){const _0x413457={'jsonrpc':_0x167783[_0x2eb5b9(0x20d)],'id':null,'error':{'code':-0x7f5b,'message':_0x167783[_0x2eb5b9(0x1f6)]}};console['log'](JSON[_0x2eb5b9(0x1d8)](_0x413457)),process['exit'](0x1);}const _0x20b7fc=_0x1dae40+_0x2eb5b9(0x21b),_0xd97089=_0x477aad['createInterface']({'input':process['stdin'],'output':process[_0x2eb5b9(0x1e4)],'terminal':![]});_0xd97089['on'](_0x167783[_0x2eb5b9(0x1d6)],async _0x35ba94=>{const _0x31beb1=_0x2eb5b9,_0x3974f2={'bGyMa':_0x167783[_0x31beb1(0x20d)],'mTcMe':function(_0x17433b,_0xcae022){return _0x167783['egywF'](_0x17433b,_0xcae022);}};if(!_0x35ba94[_0x31beb1(0x1db)]())return;try{if(_0x167783[_0x31beb1(0x1da)](_0x31beb1(0x20a),_0x167783[_0x31beb1(0x208)])){const _0x347291=_0x575f31?function(){const _0x13c630=_0x31beb1;if(_0x2f087a){const _0x31e5ea=_0x2d8706[_0x13c630(0x1f8)](_0x4ea9ea,arguments);return _0x54cd3e=null,_0x31e5ea;}}:function(){};return _0x227ad9=![],_0x347291;}else{const _0x349483=JSON[_0x31beb1(0x20e)](_0x35ba94),_0x3666a7=await fetch(_0x20b7fc,{'method':_0x167783[_0x31beb1(0x1eb)],'headers':{'Content-Type':_0x31beb1(0x205),'Accept':_0x31beb1(0x1e1),'Authorization':_0x31beb1(0x20f)+_0x5439d4},'body':JSON[_0x31beb1(0x1d8)](_0x349483)});if(!_0x3666a7['ok']){const _0x4eaeaf={'jsonrpc':_0x167783['dYxHm'],'id':_0x349483['id']??null,'error':{'code':-0x7f5b,'message':_0x31beb1(0x216)+_0x3666a7['status']+'\x20'+_0x3666a7[_0x31beb1(0x1e9)]}};console[_0x31beb1(0x219)](JSON[_0x31beb1(0x1d8)](_0x4eaeaf));return;}const _0x44c38b=_0x3666a7[_0x31beb1(0x1ec)]['get'](_0x167783[_0x31beb1(0x212)])||'';if(_0x44c38b[_0x31beb1(0x1df)](_0x167783[_0x31beb1(0x1fb)])){const _0x5c3150=_0x3666a7['body']?.[_0x31beb1(0x1e2)]();if(!_0x5c3150)return;const _0x59e1ad=new TextDecoder();let _0x1bd487='';while(!![]){const {done:_0x1ed3c4,value:_0x46b454}=await _0x5c3150[_0x31beb1(0x20c)]();if(_0x1ed3c4)break;_0x1bd487+=_0x59e1ad[_0x31beb1(0x1d9)](_0x46b454,{'stream':!![]});const _0x3f7a23=_0x1bd487[_0x31beb1(0x1f3)]('\x0a\x0a');_0x1bd487=_0x3f7a23[_0x31beb1(0x1e0)]()||'';for(const _0x3ba140 of _0x3f7a23){if(!_0x3ba140[_0x31beb1(0x1db)]())continue;const _0x22d9e7=_0x3ba140[_0x31beb1(0x1f3)]('\x0a');for(const _0x4a081f of _0x22d9e7){if(_0x167783['lPkih']('bqETy',_0x31beb1(0x1e3))){if(_0x4a081f['startsWith'](_0x167783[_0x31beb1(0x1ea)])){const _0x407ed3=_0x4a081f[_0x31beb1(0x1fa)](0x6);if(_0x407ed3['trim']()){if(_0x167783[_0x31beb1(0x1ed)]!==_0x31beb1(0x1d7)){const _0x5a3f06={'jsonrpc':_0x3974f2['bGyMa'],'id':null,'error':{'code':-0x7f5b,'message':_0x3974f2[_0x31beb1(0x1f7)](_0x44b09d,_0x7c9667)?_0x3e41e2['message']:'Unknown\x20error'}};_0x5a9b96[_0x31beb1(0x219)](_0x20cf33[_0x31beb1(0x1d8)](_0x5a3f06));}else console[_0x31beb1(0x219)](_0x407ed3);}}}else{const _0x5882cc={'jsonrpc':_0x167783[_0x31beb1(0x20d)],'id':null,'error':{'code':-0x7f5b,'message':_0x167783[_0x31beb1(0x1f6)]}};_0x3fcf66[_0x31beb1(0x219)](_0x24aa66[_0x31beb1(0x1d8)](_0x5882cc)),_0x3cf3e6[_0x31beb1(0x201)](0x1);}}}}}else{const _0x46e7e7=await _0x3666a7[_0x31beb1(0x1ef)]();console['log'](JSON[_0x31beb1(0x1d8)](_0x46e7e7));}}}catch(_0x267c8e){if(_0x167783['lPkih'](_0x167783[_0x31beb1(0x214)],_0x167783[_0x31beb1(0x214)]))_0x5985f5['exit'](0x0);else{const _0x39ca6d={'jsonrpc':'2.0','id':null,'error':{'code':-0x7f5b,'message':_0x267c8e instanceof Error?_0x267c8e[_0x31beb1(0x204)]:_0x31beb1(0x217)}};console[_0x31beb1(0x219)](JSON[_0x31beb1(0x1d8)](_0x39ca6d));}}}),_0xd97089['on']('close',()=>{const _0x33fc22=_0x2eb5b9;if(_0x167783[_0x33fc22(0x1ff)](_0x167783[_0x33fc22(0x21a)],_0x167783[_0x33fc22(0x210)])){if(_0xc1afed[_0x33fc22(0x1f2)](_0x33fc22(0x213))){const _0x4a74b7=_0x4e2b32['slice'](0x6);_0x4a74b7[_0x33fc22(0x1db)]()&&_0x2d2ef9[_0x33fc22(0x219)](_0x4a74b7);}}else process[_0x33fc22(0x201)](0x0);});}
|
|
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