@ranger-testing/ranger-cli 1.0.14 → 1.1.1

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.
Files changed (85) hide show
  1. package/README.md +87 -324
  2. package/build/cli.js +76 -64
  3. package/build/cli.js.map +1 -1
  4. package/build/commands/addEnv.js +1 -1
  5. package/build/commands/addEnv.js.map +1 -1
  6. package/build/commands/clean.js +1 -1
  7. package/build/commands/clean.js.map +1 -1
  8. package/build/commands/dataMcpServer.js +1 -1
  9. package/build/commands/feature.js +94 -34
  10. package/build/commands/feature.js.map +1 -1
  11. package/build/commands/hook.js +28 -0
  12. package/build/commands/hook.js.map +1 -0
  13. package/build/commands/hooks/disable.js +30 -0
  14. package/build/commands/hooks/disable.js.map +1 -0
  15. package/build/commands/hooks/enable.js +48 -0
  16. package/build/commands/hooks/enable.js.map +1 -0
  17. package/build/commands/hooks/exitPlanMode.js +35 -0
  18. package/build/commands/hooks/exitPlanMode.js.map +1 -0
  19. package/build/commands/hooks/index.js +11 -0
  20. package/build/commands/hooks/index.js.map +1 -0
  21. package/build/commands/hooks/output.js +53 -0
  22. package/build/commands/hooks/output.js.map +1 -0
  23. package/build/commands/hooks/planReminder.js +46 -0
  24. package/build/commands/hooks/planReminder.js.map +1 -0
  25. package/build/commands/hooks/planStart.js +30 -0
  26. package/build/commands/hooks/planStart.js.map +1 -0
  27. package/build/commands/hooks/postEdit.js +43 -0
  28. package/build/commands/hooks/postEdit.js.map +1 -0
  29. package/build/commands/hooks/preCompact.js +30 -0
  30. package/build/commands/hooks/preCompact.js.map +1 -0
  31. package/build/commands/hooks/sessionEnd.js +21 -0
  32. package/build/commands/hooks/sessionEnd.js.map +1 -0
  33. package/build/commands/hooks/sessionStart.js +75 -0
  34. package/build/commands/hooks/sessionStart.js.map +1 -0
  35. package/build/commands/hooks/stopHook.js +54 -0
  36. package/build/commands/hooks/stopHook.js.map +1 -0
  37. package/build/commands/index.js +1 -3
  38. package/build/commands/index.js.map +1 -1
  39. package/build/commands/skillup.js +36 -70
  40. package/build/commands/skillup.js.map +1 -1
  41. package/build/commands/start.js +1 -1
  42. package/build/commands/start.js.map +1 -1
  43. package/build/commands/status.js +17 -21
  44. package/build/commands/status.js.map +1 -1
  45. package/build/commands/updateEnv.js +1 -1
  46. package/build/commands/updateEnv.js.map +1 -1
  47. package/build/commands/useEnv.js +1 -1
  48. package/build/commands/utils/browserSessionsApi.js +1 -1
  49. package/build/commands/utils/claudePlugin.js +85 -0
  50. package/build/commands/utils/claudePlugin.js.map +1 -0
  51. package/build/commands/utils/cliSecret.js +1 -1
  52. package/build/commands/utils/desirePathLog.js +133 -0
  53. package/build/commands/utils/desirePathLog.js.map +1 -0
  54. package/build/commands/utils/featureApi.js +23 -0
  55. package/build/commands/utils/featureApi.js.map +1 -1
  56. package/build/commands/utils/git.js +44 -0
  57. package/build/commands/utils/git.js.map +1 -0
  58. package/build/commands/utils/keychain.js +1 -1
  59. package/build/commands/utils/localAgentInstallationsApi.js +1 -1
  60. package/build/commands/utils/sessionCache.js +282 -0
  61. package/build/commands/utils/sessionCache.js.map +1 -0
  62. package/build/commands/utils/skillContent.js +3 -3
  63. package/build/commands/utils/skillContent.js.map +1 -1
  64. package/build/commands/utils/skills.js +1 -1
  65. package/build/commands/utils/skills.js.map +1 -1
  66. package/build/commands/verifyFeature.js +32 -3
  67. package/build/commands/verifyFeature.js.map +1 -1
  68. package/build/commands/verifyInBrowser.js +1 -1
  69. package/build/skills/ranger/SKILL.md +170 -0
  70. package/build/skills/ranger/create.md +151 -0
  71. package/build/skills/ranger/start.md +122 -0
  72. package/build/skills/{feature-tracker → ranger}/verify.md +48 -3
  73. package/package.json +2 -3
  74. package/build/commands/postEditHook.js +0 -25
  75. package/build/commands/postEditHook.js.map +0 -1
  76. package/build/commands/preCompactHook.js +0 -85
  77. package/build/commands/preCompactHook.js.map +0 -1
  78. package/build/commands/sessionStartHook.js +0 -64
  79. package/build/commands/sessionStartHook.js.map +0 -1
  80. package/build/commands/utils/mcpConfig.js +0 -1
  81. package/build/commands/utils/mcpConfig.js.map +0 -1
  82. package/build/skills/feature-tracker/SKILL.md +0 -163
  83. package/build/skills/feature-tracker/create.md +0 -114
  84. package/build/skills/feature-tracker/report.md +0 -159
  85. package/build/skills/feature-tracker/start.md +0 -93
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/commands/utils/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAOzC;;GAEG;AACH,MAAM,UAAU,YAAY;IACxB,IAAI,CAAC;QACD,OAAO,QAAQ,CAAC,iCAAiC,EAAE;YAC/C,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IACzB,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,2BAA2B,EAAE;YACjD,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,sEAAsE;QACtE,OAAO,MAAM;aACR,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;aACrB,OAAO,CAAC,mBAAmB,EAAE,aAAa,CAAC;aAC3C,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACtB,OAAO;QACH,MAAM,EAAE,YAAY,EAAE;QACtB,OAAO,EAAE,aAAa,EAAE;KAC3B,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- const _0x7f1751=_0x48b6;(function(_0x18d563,_0x25c060){const _0x2dd52b=_0x48b6,_0x524c25=_0x18d563();while(!![]){try{const _0x6cc373=parseInt(_0x2dd52b(0x1d6))/0x1+parseInt(_0x2dd52b(0x1d3))/0x2+-parseInt(_0x2dd52b(0x1db))/0x3+parseInt(_0x2dd52b(0x1c0))/0x4+-parseInt(_0x2dd52b(0x1d1))/0x5+-parseInt(_0x2dd52b(0x1cd))/0x6+-parseInt(_0x2dd52b(0x1c5))/0x7*(parseInt(_0x2dd52b(0x1d0))/0x8);if(_0x6cc373===_0x25c060)break;else _0x524c25['push'](_0x524c25['shift']());}catch(_0x147206){_0x524c25['push'](_0x524c25['shift']());}}}(_0x43a9,0x93422));const _0x47dbdb=(function(){const _0x113500=_0x48b6,_0x1f63ae={'mwykC':function(_0x6fe02,_0x4b91dc){return _0x6fe02!==_0x4b91dc;},'AqHRY':_0x113500(0x1ca)};let _0x845579=!![];return function(_0x5dc65e,_0x1524a7){const _0x10dd2d=_0x845579?function(){const _0x806570=_0x48b6;if(_0x1524a7){if(_0x1f63ae[_0x806570(0x1c1)](_0x1f63ae[_0x806570(0x1d2)],_0x1f63ae[_0x806570(0x1d2)])){const _0x1882c3=_0x399f42[_0x806570(0x1c8)](_0x56b073,arguments);return _0xd41451=null,_0x1882c3;}else{const _0x511b38=_0x1524a7[_0x806570(0x1c8)](_0x5dc65e,arguments);return _0x1524a7=null,_0x511b38;}}}:function(){};return _0x845579=![],_0x10dd2d;};}()),_0x5abd98=_0x47dbdb(this,function(){const _0x456ba3=_0x48b6,_0x2f3659={'MiJGn':_0x456ba3(0x1c6)};return _0x5abd98[_0x456ba3(0x1cf)]()['search'](_0x2f3659[_0x456ba3(0x1ce)])[_0x456ba3(0x1cf)]()['constructor'](_0x5abd98)[_0x456ba3(0x1c4)](_0x456ba3(0x1c6));});_0x5abd98();import _0xe6e874 from'keytar';import{appendFile}from'fs/promises';const SERVICE_NAME=_0x7f1751(0x1cb),ACCOUNT_TOKEN='api-token',ENV_TOKEN=_0x7f1751(0x1da);function isGitHubCI(){const _0x18bfa0=_0x7f1751;return!!process['env'][_0x18bfa0(0x1c7)];}async function writeToGitHubEnv(_0x18af61,_0x595ab8){const _0x1a1038=_0x7f1751,_0x23a75e={'JxxrY':function(_0x282a92,_0x33911b){return _0x282a92===_0x33911b;},'wAjvn':_0x1a1038(0x1c9),'wwIYh':function(_0x1d7c3e,_0x57183e,_0x53d1ec){return _0x1d7c3e(_0x57183e,_0x53d1ec);}},_0x710346=process['env'][_0x1a1038(0x1c7)];if(_0x710346){if(_0x23a75e['JxxrY'](_0x23a75e['wAjvn'],_0x1a1038(0x1d7)))return _0x3bfb57[_0x1a1038(0x1d4)][_0x2a423a];else await _0x23a75e[_0x1a1038(0x1c2)](appendFile,_0x710346,_0x18af61+'='+_0x595ab8+'\x0a');}}export async function storeToken(_0x3ad974){const _0x5bf774=_0x7f1751,_0x392b77={'tAuwJ':function(_0x53fc96){return _0x53fc96();},'luRFV':function(_0x5e832c,_0x4fd53f,_0x2f649c){return _0x5e832c(_0x4fd53f,_0x2f649c);}};_0x392b77[_0x5bf774(0x1d5)](isGitHubCI)?await _0x392b77[_0x5bf774(0x1d8)](writeToGitHubEnv,ENV_TOKEN,_0x3ad974):await _0xe6e874[_0x5bf774(0x1d9)](SERVICE_NAME,ACCOUNT_TOKEN,_0x3ad974);}export async function getToken(){const _0x1825b4=_0x7f1751;if(process[_0x1825b4(0x1d4)][ENV_TOKEN])return process[_0x1825b4(0x1d4)][ENV_TOKEN];return await _0xe6e874[_0x1825b4(0x1c3)](SERVICE_NAME,ACCOUNT_TOKEN);}function _0x48b6(_0x5516c1,_0x9c7968){_0x5516c1=_0x5516c1-0x1c0;const _0x4f1420=_0x43a9();let _0x5abd98=_0x4f1420[_0x5516c1];if(_0x48b6['gHfnZd']===undefined){var _0x47dbdb=function(_0x4f1444){const _0x50b4cd='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4e8155='',_0xfe441e='',_0x3f756f=_0x4e8155+_0x47dbdb;for(let _0x57c9b3=0x0,_0x39ab89,_0x523777,_0x2804a2=0x0;_0x523777=_0x4f1444['charAt'](_0x2804a2++);~_0x523777&&(_0x39ab89=_0x57c9b3%0x4?_0x39ab89*0x40+_0x523777:_0x523777,_0x57c9b3++%0x4)?_0x4e8155+=_0x3f756f['charCodeAt'](_0x2804a2+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x39ab89>>(-0x2*_0x57c9b3&0x6)):_0x57c9b3:0x0){_0x523777=_0x50b4cd['indexOf'](_0x523777);}for(let _0x4495ee=0x0,_0x318a8f=_0x4e8155['length'];_0x4495ee<_0x318a8f;_0x4495ee++){_0xfe441e+='%'+('00'+_0x4e8155['charCodeAt'](_0x4495ee)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xfe441e);};_0x48b6['fSNqYr']=_0x47dbdb,_0x48b6['WPOvwn']={},_0x48b6['gHfnZd']=!![];}const _0x43a9dc=_0x4f1420[0x0],_0x48b68a=_0x5516c1+_0x43a9dc,_0x407806=_0x48b6['WPOvwn'][_0x48b68a];if(!_0x407806){const _0xc16167=function(_0x4e755b){this['NvTNOI']=_0x4e755b,this['xOJKTj']=[0x1,0x0,0x0],this['HhCoOv']=function(){return'newState';},this['rslnuJ']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['vAdhPt']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0xc16167['prototype']['VmWJue']=function(){const _0x13d1ba=new RegExp(this['rslnuJ']+this['vAdhPt']),_0x43f389=_0x13d1ba['test'](this['HhCoOv']['toString']())?--this['xOJKTj'][0x1]:--this['xOJKTj'][0x0];return this['WkoLKB'](_0x43f389);},_0xc16167['prototype']['WkoLKB']=function(_0x16a847){if(!Boolean(~_0x16a847))return _0x16a847;return this['QoYQJZ'](this['NvTNOI']);},_0xc16167['prototype']['QoYQJZ']=function(_0x1ec511){for(let _0x28752c=0x0,_0x562985=this['xOJKTj']['length'];_0x28752c<_0x562985;_0x28752c++){this['xOJKTj']['push'](Math['round'](Math['random']())),_0x562985=this['xOJKTj']['length'];}return _0x1ec511(this['xOJKTj'][0x0]);},new _0xc16167(_0x48b6)['VmWJue'](),_0x5abd98=_0x48b6['fSNqYr'](_0x5abd98),_0x48b6['WPOvwn'][_0x48b68a]=_0x5abd98;}else _0x5abd98=_0x407806;return _0x5abd98;}function _0x43a9(){const _0x5b3069=['ote4otiWvuT3yxzU','qxfiuLK','mtK4nZGYmhn1Eevjqq','zw52','Def1D0O','mta5ntqXmwDyzMHqrW','vfjTzeG','BhvsrLy','C2v0ugfZC3DVCMq','uKfor0vsx01duf9ut0TftG','odGYodq5C2POveHn','ndCXnZa5mKj4Ehv0Ca','BxD5A0m','D3DjwwG','z2v0ugfZC3DVCMq','C2vHCMnO','ndyZmtK3u1Luvg1K','kcGOlISPkYKRksSK','r0Lusfvcx0vovG','yxbWBhK','AeLIwfu','twPOEKi','CMfUz2vYlwnSAq','thnPAK8','nJm3ndCWmgzRs3HkuW','twLkr24','Dg9tDhjPBMC','mtm2Cw5tvufm'];_0x43a9=function(){return _0x5b3069;};return _0x43a9();}export async function deleteToken(){return await _0xe6e874['deletePassword'](SERVICE_NAME,ACCOUNT_TOKEN);}export async function deleteAllCredentials(){const _0x6ba9e0=_0x7f1751,_0x53ec33={'LsijO':function(_0x259254){return _0x259254();}};await _0x53ec33[_0x6ba9e0(0x1cc)](deleteToken);}
1
+ const _0x16b339=_0x1a7d;(function(_0x2ea4cd,_0x14d17e){const _0xb4dcc3=_0x1a7d,_0x54c8e5=_0x2ea4cd();while(!![]){try{const _0x1f266e=parseInt(_0xb4dcc3(0xa0))/0x1+-parseInt(_0xb4dcc3(0xaa))/0x2+parseInt(_0xb4dcc3(0x94))/0x3*(parseInt(_0xb4dcc3(0xa7))/0x4)+parseInt(_0xb4dcc3(0x8f))/0x5+parseInt(_0xb4dcc3(0x8e))/0x6*(parseInt(_0xb4dcc3(0x9e))/0x7)+-parseInt(_0xb4dcc3(0xa1))/0x8+-parseInt(_0xb4dcc3(0x98))/0x9*(parseInt(_0xb4dcc3(0x97))/0xa);if(_0x1f266e===_0x14d17e)break;else _0x54c8e5['push'](_0x54c8e5['shift']());}catch(_0x3003e2){_0x54c8e5['push'](_0x54c8e5['shift']());}}}(_0x45c6,0x7f382));const _0x3cc7c3=(function(){let _0x815489=!![];return function(_0x858d7c,_0x56f22c){const _0x12c459=_0x815489?function(){if(_0x56f22c){const _0x16ca29=_0x56f22c['apply'](_0x858d7c,arguments);return _0x56f22c=null,_0x16ca29;}}:function(){};return _0x815489=![],_0x12c459;};}()),_0x511b52=_0x3cc7c3(this,function(){const _0x2a3815=_0x1a7d,_0xb1b9c7={'JbmKD':_0x2a3815(0xab)};return _0x511b52[_0x2a3815(0x90)]()[_0x2a3815(0x96)](_0xb1b9c7[_0x2a3815(0x95)])[_0x2a3815(0x90)]()[_0x2a3815(0x99)](_0x511b52)['search'](_0xb1b9c7[_0x2a3815(0x95)]);});_0x511b52();function _0x45c6(){const _0x3f0d60=['yxbWBhK','oduYDKzPrKf4','ndqYmtCWmej3Axbhtq','Dg9tDhjPBMC','yxbPlxrVA2vU','tgH6rxm','v1HHsfe','mtu2owjwAujwrq','sMjTs0q','C2vHCMnO','mti4odiYntbhr0PIAxe','ouTjCeXHsq','y29UC3rYDwn0B3i','ALHjrNm','zgvSzxrLugfZC3DVCMq','D3vcBe0','CMfUz2vYlwnSAq','mZG4mZzSzKHcB0G','rwPpBgC','odmZnZqWDu9zq1PR','nZC2nta4ohruwfLOzW','uKfor0vsx01duf9ut0TftG','BgPKwNG','C2v0ugfZC3DVCMq','BufTtxu','zw52','ndG5mK9yrKLjvq','r0Lusfvcx0vovG','z2v0ugfZC3DVCMq','nZmXmtq4CMvZvMrO','kcGOlISPkYKRksSK'];_0x45c6=function(){return _0x3f0d60;};return _0x45c6();}import _0x5933b5 from'keytar';import{appendFile}from'fs/promises';const SERVICE_NAME=_0x16b339(0x9d),ACCOUNT_TOKEN=_0x16b339(0x91),ENV_TOKEN=_0x16b339(0xa2);function isGitHubCI(){const _0x4feb7b=_0x16b339;return!!process[_0x4feb7b(0xa6)][_0x4feb7b(0xa8)];}function _0x1a7d(_0x3a41ba,_0x41b51e){_0x3a41ba=_0x3a41ba-0x8d;const _0x4dc7ae=_0x45c6();let _0x511b52=_0x4dc7ae[_0x3a41ba];if(_0x1a7d['UMaCHd']===undefined){var _0x3cc7c3=function(_0x4cab1c){const _0x4b7d68='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1d456f='',_0x31cfea='',_0x3afd22=_0x1d456f+_0x3cc7c3;for(let _0x442466=0x0,_0x5d4ad0,_0x376d34,_0x2943cd=0x0;_0x376d34=_0x4cab1c['charAt'](_0x2943cd++);~_0x376d34&&(_0x5d4ad0=_0x442466%0x4?_0x5d4ad0*0x40+_0x376d34:_0x376d34,_0x442466++%0x4)?_0x1d456f+=_0x3afd22['charCodeAt'](_0x2943cd+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x5d4ad0>>(-0x2*_0x442466&0x6)):_0x442466:0x0){_0x376d34=_0x4b7d68['indexOf'](_0x376d34);}for(let _0x417e15=0x0,_0x220774=_0x1d456f['length'];_0x417e15<_0x220774;_0x417e15++){_0x31cfea+='%'+('00'+_0x1d456f['charCodeAt'](_0x417e15)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x31cfea);};_0x1a7d['yZEiQs']=_0x3cc7c3,_0x1a7d['sPHEEZ']={},_0x1a7d['UMaCHd']=!![];}const _0x45c6b1=_0x4dc7ae[0x0],_0x1a7daa=_0x3a41ba+_0x45c6b1,_0x448aba=_0x1a7d['sPHEEZ'][_0x1a7daa];if(!_0x448aba){const _0x41cb76=function(_0x584020){this['erCwfX']=_0x584020,this['YglveY']=[0x1,0x0,0x0],this['aJoTjr']=function(){return'newState';},this['ftrNrP']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['NBqsNz']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x41cb76['prototype']['MMqqeQ']=function(){const _0x7218b2=new RegExp(this['ftrNrP']+this['NBqsNz']),_0x440bd8=_0x7218b2['test'](this['aJoTjr']['toString']())?--this['YglveY'][0x1]:--this['YglveY'][0x0];return this['hRFFaN'](_0x440bd8);},_0x41cb76['prototype']['hRFFaN']=function(_0x160a9e){if(!Boolean(~_0x160a9e))return _0x160a9e;return this['DcmcJi'](this['erCwfX']);},_0x41cb76['prototype']['DcmcJi']=function(_0x1218d3){for(let _0x15a829=0x0,_0x17c976=this['YglveY']['length'];_0x15a829<_0x17c976;_0x15a829++){this['YglveY']['push'](Math['round'](Math['random']())),_0x17c976=this['YglveY']['length'];}return _0x1218d3(this['YglveY'][0x0]);},new _0x41cb76(_0x1a7d)['MMqqeQ'](),_0x511b52=_0x1a7d['yZEiQs'](_0x511b52),_0x1a7d['sPHEEZ'][_0x1a7daa]=_0x511b52;}else _0x511b52=_0x448aba;return _0x511b52;}async function writeToGitHubEnv(_0x122f82,_0x4d7f6b){const _0x2c7c42=_0x16b339,_0x4ae581={'SroZN':function(_0x32e0d5,_0x2cd955){return _0x32e0d5===_0x2cd955;},'jXIFs':_0x2c7c42(0x92),'wuBlM':'zXqNP'},_0x904f18=process[_0x2c7c42(0xa6)][_0x2c7c42(0xa8)];if(_0x904f18){if(_0x4ae581['SroZN'](_0x4ae581[_0x2c7c42(0x9a)],_0x4ae581[_0x2c7c42(0x9c)]))return!!_0x54280f['env']['GITHUB_ENV'];else await appendFile(_0x904f18,_0x122f82+'='+_0x4d7f6b+'\x0a');}}export async function storeToken(_0x446b23){const _0x2ca23d=_0x16b339,_0xe4d529={'mAmMu':function(_0x1626a6){return _0x1626a6();},'WXaHQ':function(_0xe17d4b,_0x236979,_0x26ab91){return _0xe17d4b(_0x236979,_0x26ab91);},'ljdZx':_0x2ca23d(0x9f)};if(_0xe4d529[_0x2ca23d(0xa5)](isGitHubCI))await _0xe4d529[_0x2ca23d(0x93)](writeToGitHubEnv,ENV_TOKEN,_0x446b23);else{if(_0xe4d529[_0x2ca23d(0xa3)]===_0xe4d529[_0x2ca23d(0xa3)])await _0x5933b5[_0x2ca23d(0xa4)](SERVICE_NAME,ACCOUNT_TOKEN,_0x446b23);else{const _0x5b8e8f=_0x41cb76?function(){const _0x31326d=_0x2ca23d;if(_0x15a829){const _0x54c3d3=_0x53ba89[_0x31326d(0x8d)](_0x267407,arguments);return _0x3218a8=null,_0x54c3d3;}}:function(){};return _0x1218d3=![],_0x5b8e8f;}}}export async function getToken(){const _0x3d6200=_0x16b339;if(process[_0x3d6200(0xa6)][ENV_TOKEN])return process[_0x3d6200(0xa6)][ENV_TOKEN];return await _0x5933b5[_0x3d6200(0xa9)](SERVICE_NAME,ACCOUNT_TOKEN);}export async function deleteToken(){const _0x2e4718=_0x16b339;return await _0x5933b5[_0x2e4718(0x9b)](SERVICE_NAME,ACCOUNT_TOKEN);}export async function deleteAllCredentials(){await deleteToken();}
@@ -1 +1 @@
1
- (function(_0x261f30,_0x329217){const _0xa57cc7=_0x1c79,_0x496e95=_0x261f30();while(!![]){try{const _0x263230=-parseInt(_0xa57cc7(0xeb))/0x1*(-parseInt(_0xa57cc7(0xf4))/0x2)+-parseInt(_0xa57cc7(0xed))/0x3*(parseInt(_0xa57cc7(0xfd))/0x4)+-parseInt(_0xa57cc7(0xe4))/0x5+parseInt(_0xa57cc7(0xe9))/0x6+-parseInt(_0xa57cc7(0xf6))/0x7*(-parseInt(_0xa57cc7(0xf1))/0x8)+parseInt(_0xa57cc7(0xe8))/0x9+-parseInt(_0xa57cc7(0xe0))/0xa;if(_0x263230===_0x329217)break;else _0x496e95['push'](_0x496e95['shift']());}catch(_0x54bc3b){_0x496e95['push'](_0x496e95['shift']());}}}(_0x56ef,0x4facf));const _0x13ac89=(function(){const _0x500cdc={'ZOmBk':function(_0x2a78a6,_0x598aff){return _0x2a78a6!==_0x598aff;}};let _0x476658=!![];return function(_0x3377de,_0x3d37cd){const _0x41303f=_0x1c79,_0x531e4f={'XrYve':function(_0x5d4609,_0x40f807){return _0x500cdc['ZOmBk'](_0x5d4609,_0x40f807);},'uyxlb':_0x41303f(0xef)},_0x10694c=_0x476658?function(){const _0x46dc01=_0x41303f;if(_0x3d37cd){if(_0x531e4f['XrYve'](_0x46dc01(0xfe),_0x531e4f[_0x46dc01(0xf9)])){const _0x31eb0a=_0x3d37cd['apply'](_0x3377de,arguments);return _0x3d37cd=null,_0x31eb0a;}else return;}}:function(){};return _0x476658=![],_0x10694c;};}()),_0x281f19=_0x13ac89(this,function(){const _0xb45c15=_0x1c79;return _0x281f19[_0xb45c15(0xf3)]()[_0xb45c15(0xf8)](_0xb45c15(0xea))[_0xb45c15(0xf3)]()['constructor'](_0x281f19)['search'](_0xb45c15(0xea));});_0x281f19();import{getToken}from'./keychain.js';function _0x56ef(){const _0x39f096=['ue9tva','l2fWAs92ms9Ty3aVBg9JywWTywDLBNqTAw5ZDgfSBgf0Aw9UCW','CNDHC0K','mtm4nZmWmffZqurIra','zxjYB3i','C3rYAw5NAwz5','qMvHCMvYia','nZiXodi3Ew9Vv0D2','oty5nJe4zw5jCw5t','kcGOlISPkYKRksSK','nJeXnJGZsfLZzLL2','DvzvDfC','mJfMsxzpDu0','BNvSthq','yvvwzw8','yxbWBhK','otzutNHhEuS','C0jVBwG','Dg9tDhjPBMC','mKvftKLNva','tLvur2O','ntq0mJvmy05RrM8','rMfPBgvKihrVigXVzYbZA2LSBcbPBNn0ywXSyxrPB246ia','C2vHCMnO','DxL4Bgi','yxLoC3q','Dgv4Da','BxL5BwO','mta0nZG4u1nrrvPb','CernALC','B0fmy28','mtu5ntK5mgrQr1z5Cq'];_0x56ef=function(){return _0x39f096;};return _0x56ef();}import{getApiBaseUrl}from'./environment.js';function _0x1c79(_0xc49ca8,_0x213845){_0xc49ca8=_0xc49ca8-0xe0;const _0x2cbec2=_0x56ef();let _0x281f19=_0x2cbec2[_0xc49ca8];if(_0x1c79['rrPErt']===undefined){var _0x13ac89=function(_0x4846f4){const _0x3932d6='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3c556c='',_0x3ee9a6='',_0x425318=_0x3c556c+_0x13ac89;for(let _0x553577=0x0,_0x3abee8,_0x1fd0a1,_0x3ecd34=0x0;_0x1fd0a1=_0x4846f4['charAt'](_0x3ecd34++);~_0x1fd0a1&&(_0x3abee8=_0x553577%0x4?_0x3abee8*0x40+_0x1fd0a1:_0x1fd0a1,_0x553577++%0x4)?_0x3c556c+=_0x425318['charCodeAt'](_0x3ecd34+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x3abee8>>(-0x2*_0x553577&0x6)):_0x553577:0x0){_0x1fd0a1=_0x3932d6['indexOf'](_0x1fd0a1);}for(let _0x22a1ad=0x0,_0x31f2b1=_0x3c556c['length'];_0x22a1ad<_0x31f2b1;_0x22a1ad++){_0x3ee9a6+='%'+('00'+_0x3c556c['charCodeAt'](_0x22a1ad)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3ee9a6);};_0x1c79['fxTojG']=_0x13ac89,_0x1c79['GknpTY']={},_0x1c79['rrPErt']=!![];}const _0x56ef47=_0x2cbec2[0x0],_0x1c79d5=_0xc49ca8+_0x56ef47,_0x46f3e1=_0x1c79['GknpTY'][_0x1c79d5];if(!_0x46f3e1){const _0x140e46=function(_0x3912ad){this['utOQRC']=_0x3912ad,this['zIWjIj']=[0x1,0x0,0x0],this['EznyKR']=function(){return'newState';},this['GJPXHN']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['mIuqMm']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x140e46['prototype']['srrpSt']=function(){const _0x46c47e=new RegExp(this['GJPXHN']+this['mIuqMm']),_0x1b0652=_0x46c47e['test'](this['EznyKR']['toString']())?--this['zIWjIj'][0x1]:--this['zIWjIj'][0x0];return this['wrnByH'](_0x1b0652);},_0x140e46['prototype']['wrnByH']=function(_0x582503){if(!Boolean(~_0x582503))return _0x582503;return this['iDaFRQ'](this['utOQRC']);},_0x140e46['prototype']['iDaFRQ']=function(_0x13a07b){for(let _0x1eb87a=0x0,_0x4cc7be=this['zIWjIj']['length'];_0x1eb87a<_0x4cc7be;_0x1eb87a++){this['zIWjIj']['push'](Math['round'](Math['random']())),_0x4cc7be=this['zIWjIj']['length'];}return _0x13a07b(this['zIWjIj'][0x0]);},new _0x140e46(_0x1c79)['srrpSt'](),_0x281f19=_0x1c79['fxTojG'](_0x281f19),_0x1c79['GknpTY'][_0x1c79d5]=_0x281f19;}else _0x281f19=_0x46f3e1;return _0x281f19;}export async function logLocalAgentInstallation(_0x49c7b0,_0x2ed03d,_0x53db63){const _0x31ee1a=_0x1c79,_0xf552f9={'nulLt':function(_0x46ce8d){return _0x46ce8d();},'oALco':_0x31ee1a(0xf5),'myymj':_0x31ee1a(0xe3),'ayNst':function(_0x2c1e9f){return _0x2c1e9f();},'uVUtW':function(_0x588109,_0x18c7c7,_0x48d8f9){return _0x588109(_0x18c7c7,_0x48d8f9);},'sBomh':_0x31ee1a(0xe1),'XVcuE':'application/json'},_0x523d78=await _0xf552f9[_0x31ee1a(0xee)](getToken);if(!_0x523d78){if(_0xf552f9[_0x31ee1a(0xff)]===_0xf552f9[_0x31ee1a(0xfc)]){if(_0x38781c){const _0x1a9311=_0x2088b3[_0x31ee1a(0xf0)](_0x20ca9f,arguments);return _0x42447e=null,_0x1a9311;}}else return;}const _0xddbdbd=_0xf552f9[_0x31ee1a(0xfa)](getApiBaseUrl),_0x4fbb30=await _0xf552f9[_0x31ee1a(0xec)](fetch,_0xddbdbd+_0x31ee1a(0xe2),{'method':_0xf552f9[_0x31ee1a(0xf2)],'headers':{'Authorization':_0x31ee1a(0xe7)+_0x523d78,'Content-Type':_0xf552f9['XVcuE']},'body':JSON[_0x31ee1a(0xe6)]({'skillName':_0x49c7b0,'cliVersion':_0x53db63,'metadata':_0x2ed03d})});if(!_0x4fbb30['ok']){const _0x4e52de=await _0x4fbb30[_0x31ee1a(0xfb)]();console[_0x31ee1a(0xe5)](_0x31ee1a(0xf7)+_0x4e52de);}}
1
+ (function(_0x2f8194,_0x472bb1){const _0x50b5cd=_0x5545,_0xf014ab=_0x2f8194();while(!![]){try{const _0x1de5bf=-parseInt(_0x50b5cd(0x11f))/0x1*(parseInt(_0x50b5cd(0x143))/0x2)+parseInt(_0x50b5cd(0x136))/0x3+-parseInt(_0x50b5cd(0x13c))/0x4*(-parseInt(_0x50b5cd(0x122))/0x5)+parseInt(_0x50b5cd(0x126))/0x6*(parseInt(_0x50b5cd(0x138))/0x7)+-parseInt(_0x50b5cd(0x13a))/0x8*(-parseInt(_0x50b5cd(0x13f))/0x9)+-parseInt(_0x50b5cd(0x140))/0xa+parseInt(_0x50b5cd(0x120))/0xb;if(_0x1de5bf===_0x472bb1)break;else _0xf014ab['push'](_0xf014ab['shift']());}catch(_0xb164d6){_0xf014ab['push'](_0xf014ab['shift']());}}}(_0x41a6,0xca519));const _0x5f472e=(function(){const _0x2c472d=_0x5545,_0x475f23={'gbvzm':_0x2c472d(0x142),'ZRqHe':function(_0x86e32f,_0xb7217){return _0x86e32f!==_0xb7217;},'ltLXV':_0x2c472d(0x135)};let _0x15041a=!![];return function(_0x538c96,_0x1e7611){const _0x4e5c6d=_0x2c472d,_0x110ce8={'tSUxJ':function(_0x1724db,_0x366ea0){return _0x1724db!==_0x366ea0;},'TkkQM':_0x475f23[_0x4e5c6d(0x12f)],'BVcdM':_0x4e5c6d(0x125)};if(_0x475f23[_0x4e5c6d(0x12d)](_0x475f23[_0x4e5c6d(0x130)],_0x475f23[_0x4e5c6d(0x130)]))return;else{const _0x1c0d58=_0x15041a?function(){const _0x295956=_0x4e5c6d;if(_0x110ce8[_0x295956(0x11e)](_0x110ce8[_0x295956(0x12e)],_0x110ce8[_0x295956(0x133)])){if(_0x1e7611){const _0x461cf6=_0x1e7611[_0x295956(0x134)](_0x538c96,arguments);return _0x1e7611=null,_0x461cf6;}}else{if(_0x5066a0){const _0x244372=_0x4f69f2[_0x295956(0x134)](_0x3541f7,arguments);return _0x343f81=null,_0x244372;}}}:function(){};return _0x15041a=![],_0x1c0d58;}};}()),_0x4bd222=_0x5f472e(this,function(){const _0x597482=_0x5545,_0x5cf02b={'bEgPo':_0x597482(0x13e)};return _0x4bd222[_0x597482(0x13b)]()[_0x597482(0x131)](_0x5cf02b[_0x597482(0x12a)])[_0x597482(0x13b)]()[_0x597482(0x12b)](_0x4bd222)[_0x597482(0x131)](_0x5cf02b[_0x597482(0x12a)]);});function _0x5545(_0x3625f3,_0x144459){_0x3625f3=_0x3625f3-0x11e;const _0x182cd3=_0x41a6();let _0x4bd222=_0x182cd3[_0x3625f3];if(_0x5545['Ymwrnm']===undefined){var _0x5f472e=function(_0x1530f7){const _0xf1c625='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x414b47='',_0x183492='',_0x19ec36=_0x414b47+_0x5f472e;for(let _0x3165ef=0x0,_0xe3d2b,_0x276d89,_0x524437=0x0;_0x276d89=_0x1530f7['charAt'](_0x524437++);~_0x276d89&&(_0xe3d2b=_0x3165ef%0x4?_0xe3d2b*0x40+_0x276d89:_0x276d89,_0x3165ef++%0x4)?_0x414b47+=_0x19ec36['charCodeAt'](_0x524437+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0xe3d2b>>(-0x2*_0x3165ef&0x6)):_0x3165ef:0x0){_0x276d89=_0xf1c625['indexOf'](_0x276d89);}for(let _0x5e81b8=0x0,_0x1d9cb1=_0x414b47['length'];_0x5e81b8<_0x1d9cb1;_0x5e81b8++){_0x183492+='%'+('00'+_0x414b47['charCodeAt'](_0x5e81b8)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x183492);};_0x5545['BXPaCS']=_0x5f472e,_0x5545['KeSOkN']={},_0x5545['Ymwrnm']=!![];}const _0x41a6f7=_0x182cd3[0x0],_0x55451e=_0x3625f3+_0x41a6f7,_0x9c48c5=_0x5545['KeSOkN'][_0x55451e];if(!_0x9c48c5){const _0x42c55b=function(_0x16ef48){this['sdCvQq']=_0x16ef48,this['mvDemq']=[0x1,0x0,0x0],this['LTeOIL']=function(){return'newState';},this['OvfNpV']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['FpTxxL']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x42c55b['prototype']['aBnaaN']=function(){const _0x486035=new RegExp(this['OvfNpV']+this['FpTxxL']),_0x753c6f=_0x486035['test'](this['LTeOIL']['toString']())?--this['mvDemq'][0x1]:--this['mvDemq'][0x0];return this['FRQxPB'](_0x753c6f);},_0x42c55b['prototype']['FRQxPB']=function(_0x137073){if(!Boolean(~_0x137073))return _0x137073;return this['bFjQDU'](this['sdCvQq']);},_0x42c55b['prototype']['bFjQDU']=function(_0x52bd20){for(let _0x54f081=0x0,_0x311f2f=this['mvDemq']['length'];_0x54f081<_0x311f2f;_0x54f081++){this['mvDemq']['push'](Math['round'](Math['random']())),_0x311f2f=this['mvDemq']['length'];}return _0x52bd20(this['mvDemq'][0x0]);},new _0x42c55b(_0x5545)['aBnaaN'](),_0x4bd222=_0x5545['BXPaCS'](_0x4bd222),_0x5545['KeSOkN'][_0x55451e]=_0x4bd222;}else _0x4bd222=_0x9c48c5;return _0x4bd222;}_0x4bd222();import{getToken}from'./keychain.js';import{getApiBaseUrl}from'./environment.js';function _0x41a6(){const _0x24bd96=['q0fnrve','qLzJze0','yxbWBhK','BNruCw4','mZKWnZKYnMPLueHvzG','qMvHCMvYia','mZuWndeZAK9XsLbP','C3rYAw5NAwz5','mtmZmJHntxnuB3u','Dg9tDhjPBMC','nenVv2LUwG','v2rgzLa','kcGOlISPkYKRksSK','ndiWm3H4yKvqAa','mtu4nJaXntbSBLHkBfa','yLzNCwG','qKDswfy','mNLWCeHotG','DfnvEeO','mte3odi2nNbmBMHAEa','mtm4mZu2mdj0swTnu3a','rMfPBgvKihrVigXVzYbZA2LSBcbPBNn0ywXSyxrPB246ia','mtaYmJm2nwL5EwrsEa','r3DgDg4','l2fWAs92ms9Ty3aVBg9JywWTywDLBNqTAw5ZDgfSBgf0Aw9UCW','ugHkB08','nLjuDxfsuG','yKTqBfu','sLLyBhm','Dgv4Da','yKvNug8','y29UC3rYDwn0B3i','uK9Vu0K','wLjXsgu','vgTRuu0','z2j2EM0','Bhrmwfy','C2vHCMnO'];_0x41a6=function(){return _0x24bd96;};return _0x41a6();}export async function logLocalAgentInstallation(_0x15db2a,_0x2b100e,_0x564128){const _0x521e7a=_0x5545,_0x53c3ff={'ROoSI':function(_0x1295ad){return _0x1295ad();},'CAMEQ':function(_0x1d9103,_0x26fd40){return _0x1d9103===_0x26fd40;},'zHNRe':_0x521e7a(0x128),'bKPlU':function(_0x482f30){return _0x482f30();},'WdFfP':function(_0x289a1c,_0xce5822,_0x231b34){return _0x289a1c(_0xce5822,_0x231b34);},'bVgqh':'POST','GwFtn':'application/json'},_0x1578f0=await _0x53c3ff[_0x521e7a(0x12c)](getToken);if(!_0x1578f0){if(_0x53c3ff[_0x521e7a(0x132)]('yNrjE',_0x53c3ff['zHNRe'])){const _0x2bbd70=_0x42c55b?function(){const _0xeb0bb3=_0x521e7a;if(_0x54f081){const _0x16bf52=_0x4ee2d2[_0xeb0bb3(0x134)](_0x409e1a,arguments);return _0x3555e8=null,_0x16bf52;}}:function(){};return _0x52bd20=![],_0x2bbd70;}else return;}const _0x20ac49=_0x53c3ff[_0x521e7a(0x127)](getApiBaseUrl),_0x15307e=await _0x53c3ff[_0x521e7a(0x13d)](fetch,_0x20ac49+_0x521e7a(0x124),{'method':_0x53c3ff[_0x521e7a(0x141)],'headers':{'Authorization':_0x521e7a(0x137)+_0x1578f0,'Content-Type':_0x53c3ff[_0x521e7a(0x123)]},'body':JSON[_0x521e7a(0x139)]({'skillName':_0x15db2a,'cliVersion':_0x564128,'metadata':_0x2b100e})});if(!_0x15307e['ok']){const _0x377346=await _0x15307e[_0x521e7a(0x129)]();console['error'](_0x521e7a(0x121)+_0x377346);}}
@@ -0,0 +1,282 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import * as os from 'os';
4
+ import { execSync } from 'child_process';
5
+ const CACHE_FILE = path.join(os.homedir(), '.claude', '.ranger_cache.json');
6
+ function createEmptyCache() {
7
+ return { version: 3, sessions: {}, branches: {} };
8
+ }
9
+ function loadCache() {
10
+ try {
11
+ if (fs.existsSync(CACHE_FILE)) {
12
+ const data = JSON.parse(fs.readFileSync(CACHE_FILE, 'utf-8'));
13
+ return {
14
+ version: 3,
15
+ sessions: data.sessions || {},
16
+ branches: data.branches || {},
17
+ lastEnabledSessionClearedAt: data.lastEnabledSessionClearedAt,
18
+ };
19
+ }
20
+ }
21
+ catch {
22
+ // Ignore errors
23
+ }
24
+ return createEmptyCache();
25
+ }
26
+ function saveCache(cache) {
27
+ try {
28
+ const dir = path.dirname(CACHE_FILE);
29
+ if (!fs.existsSync(dir)) {
30
+ fs.mkdirSync(dir, { recursive: true });
31
+ }
32
+ fs.writeFileSync(CACHE_FILE, JSON.stringify(cache, null, 2));
33
+ }
34
+ catch {
35
+ // Ignore errors
36
+ }
37
+ }
38
+ // ============ Git Helpers ============
39
+ /**
40
+ * Get the current git branch name.
41
+ * Returns null if not in a git repo, in detached HEAD state, or on error.
42
+ */
43
+ export function getCurrentBranch() {
44
+ try {
45
+ const branch = execSync('git rev-parse --abbrev-ref HEAD', {
46
+ encoding: 'utf-8',
47
+ stdio: ['pipe', 'pipe', 'pipe'],
48
+ }).trim();
49
+ // Return null for empty string or detached HEAD state
50
+ if (!branch || branch === 'HEAD') {
51
+ return null;
52
+ }
53
+ return branch;
54
+ }
55
+ catch {
56
+ return null;
57
+ }
58
+ }
59
+ // ============ Branch Functions ============
60
+ /**
61
+ * Enable Ranger for a branch (persists across sessions)
62
+ */
63
+ export function enableBranch(branchName) {
64
+ const cache = loadCache();
65
+ cache.branches[branchName] = true;
66
+ saveCache(cache);
67
+ }
68
+ /**
69
+ * Disable Ranger for a branch
70
+ */
71
+ export function disableBranch(branchName) {
72
+ const cache = loadCache();
73
+ delete cache.branches[branchName];
74
+ saveCache(cache);
75
+ }
76
+ /**
77
+ * Check if Ranger is enabled for a branch
78
+ */
79
+ export function isBranchEnabled(branchName) {
80
+ const cache = loadCache();
81
+ return cache.branches[branchName] === true;
82
+ }
83
+ // ============ Session Functions ============
84
+ /**
85
+ * Get session entry, creating if needed
86
+ */
87
+ function getOrCreateSession(cache, sessionId) {
88
+ if (!cache.sessions[sessionId]) {
89
+ cache.sessions[sessionId] = {};
90
+ }
91
+ return cache.sessions[sessionId];
92
+ }
93
+ /**
94
+ * Enable Ranger hooks for a Claude session.
95
+ * If on a non-main branch, also enables that branch.
96
+ */
97
+ export function enableSession(claudeSessionId) {
98
+ const cache = loadCache();
99
+ const session = getOrCreateSession(cache, claudeSessionId);
100
+ session.enabled = true;
101
+ // Auto-enable branch if not on main
102
+ const branch = getCurrentBranch();
103
+ if (branch && branch !== 'main' && branch !== 'master') {
104
+ cache.branches[branch] = true;
105
+ session.currentBranch = branch;
106
+ }
107
+ saveCache(cache);
108
+ }
109
+ /**
110
+ * Check if Ranger hooks are enabled for a Claude session.
111
+ * - On main/master: only checks session-level enabled flag
112
+ * - On other branches: enabled if branch is enabled OR session is enabled
113
+ */
114
+ export function isSessionEnabled(claudeSessionId) {
115
+ const cache = loadCache();
116
+ const branch = getCurrentBranch();
117
+ // On main/master, only session-level enabling works
118
+ if (!branch || branch === 'main' || branch === 'master') {
119
+ return cache.sessions[claudeSessionId]?.enabled === true;
120
+ }
121
+ // On other branches: enabled if branch is enabled OR session is enabled
122
+ const branchEnabled = cache.branches[branch] === true;
123
+ const sessionEnabled = cache.sessions[claudeSessionId]?.enabled === true;
124
+ return branchEnabled || sessionEnabled;
125
+ }
126
+ /**
127
+ * Disable Ranger hooks for a Claude session
128
+ */
129
+ export function disableSession(claudeSessionId) {
130
+ const cache = loadCache();
131
+ const session = getOrCreateSession(cache, claudeSessionId);
132
+ session.enabled = false;
133
+ saveCache(cache);
134
+ }
135
+ /**
136
+ * Update branch tracking on PostToolUse.
137
+ * If session is enabled and switched to a new non-main branch, auto-enable it.
138
+ */
139
+ export function updateBranchTracking(claudeSessionId) {
140
+ const cache = loadCache();
141
+ const session = cache.sessions[claudeSessionId];
142
+ if (!session?.enabled) {
143
+ return;
144
+ }
145
+ const branch = getCurrentBranch();
146
+ if (!branch || branch === 'main' || branch === 'master') {
147
+ return;
148
+ }
149
+ // If we switched branches while enabled, auto-enable the new branch
150
+ if (session.currentBranch !== branch) {
151
+ cache.branches[branch] = true;
152
+ session.currentBranch = branch;
153
+ saveCache(cache);
154
+ }
155
+ }
156
+ /**
157
+ * Initialize branch tracking on session start.
158
+ * If starting on an already-enabled branch, auto-enable the session.
159
+ */
160
+ export function initBranchTracking(claudeSessionId) {
161
+ const cache = loadCache();
162
+ const branch = getCurrentBranch();
163
+ if (!branch || branch === 'main' || branch === 'master') {
164
+ return;
165
+ }
166
+ // If branch is already enabled, auto-enable this session
167
+ if (cache.branches[branch] === true) {
168
+ const session = getOrCreateSession(cache, claudeSessionId);
169
+ session.enabled = true;
170
+ session.currentBranch = branch;
171
+ saveCache(cache);
172
+ }
173
+ }
174
+ // ============ Session Clear Tracking ============
175
+ const CLEAR_AUTO_ENABLE_WINDOW_MS = 5000; // 5 seconds
176
+ /**
177
+ * Record that an enabled session was cleared.
178
+ * Called on SessionEnd with reason === 'clear' if session was enabled.
179
+ */
180
+ export function recordEnabledSessionCleared(claudeSessionId) {
181
+ const cache = loadCache();
182
+ const session = cache.sessions[claudeSessionId];
183
+ // Only record if the session was enabled
184
+ if (session?.enabled) {
185
+ cache.lastEnabledSessionClearedAt = Date.now();
186
+ saveCache(cache);
187
+ }
188
+ }
189
+ /**
190
+ * Check if we should auto-enable due to a recent clear.
191
+ * Returns true if source is 'clear' and within window of last enabled session clear.
192
+ */
193
+ export function shouldAutoEnableAfterClear(source) {
194
+ if (source !== 'clear') {
195
+ return false;
196
+ }
197
+ const cache = loadCache();
198
+ const lastCleared = cache.lastEnabledSessionClearedAt;
199
+ if (!lastCleared) {
200
+ return false;
201
+ }
202
+ const elapsed = Date.now() - lastCleared;
203
+ return elapsed <= CLEAR_AUTO_ENABLE_WINDOW_MS;
204
+ }
205
+ /**
206
+ * Auto-enable a session after clear (preserves enabled state across /clear).
207
+ */
208
+ export function autoEnableAfterClear(claudeSessionId) {
209
+ const cache = loadCache();
210
+ const session = getOrCreateSession(cache, claudeSessionId);
211
+ session.enabled = true;
212
+ // Also track current branch
213
+ const branch = getCurrentBranch();
214
+ if (branch && branch !== 'main' && branch !== 'master') {
215
+ session.currentBranch = branch;
216
+ }
217
+ // Clear the timestamp so we don't re-trigger
218
+ delete cache.lastEnabledSessionClearedAt;
219
+ saveCache(cache);
220
+ }
221
+ /**
222
+ * Register a Claude session as working on a Ranger feature
223
+ */
224
+ export function registerSession(claudeSessionId, featureId) {
225
+ const cache = loadCache();
226
+ const session = getOrCreateSession(cache, claudeSessionId);
227
+ session.featureId = featureId;
228
+ session.registeredAt = new Date().toISOString();
229
+ saveCache(cache);
230
+ }
231
+ /**
232
+ * Get the feature info for a Claude session
233
+ */
234
+ export function getSessionEntry(claudeSessionId) {
235
+ const cache = loadCache();
236
+ const session = cache.sessions[claudeSessionId];
237
+ if (session?.featureId && session?.registeredAt) {
238
+ return {
239
+ featureId: session.featureId,
240
+ registeredAt: session.registeredAt,
241
+ };
242
+ }
243
+ return null;
244
+ }
245
+ /**
246
+ * Unregister a Claude session from its feature
247
+ */
248
+ export function unregisterSession(claudeSessionId) {
249
+ const cache = loadCache();
250
+ const session = cache.sessions[claudeSessionId];
251
+ if (session) {
252
+ delete session.featureId;
253
+ delete session.registeredAt;
254
+ saveCache(cache);
255
+ }
256
+ }
257
+ // ============ Plan Reminder Functions ============
258
+ const PLAN_REMINDER_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes
259
+ /**
260
+ * Check if plan reminder should be shown (rate-limited to once per 5 min per session)
261
+ * Returns true if reminder should be shown, and updates the timestamp.
262
+ */
263
+ export function shouldShowPlanReminder(claudeSessionId) {
264
+ const cache = loadCache();
265
+ const session = getOrCreateSession(cache, claudeSessionId);
266
+ const lastShown = session.lastPlanReminderAt || 0;
267
+ const now = Date.now();
268
+ if (now - lastShown >= PLAN_REMINDER_INTERVAL_MS) {
269
+ session.lastPlanReminderAt = now;
270
+ saveCache(cache);
271
+ return true;
272
+ }
273
+ return false;
274
+ }
275
+ // ============ Cache Management ============
276
+ /**
277
+ * Get the cache file path (for cleanup)
278
+ */
279
+ export function getCacheFile() {
280
+ return CACHE_FILE;
281
+ }
282
+ //# sourceMappingURL=sessionCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionCache.js","sourceRoot":"","sources":["../../../src/commands/utils/sessionCache.ts"],"names":[],"mappings":"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"}
@@ -20,9 +20,9 @@ export function readSkillContent(skillPath) {
20
20
  }
21
21
  }
22
22
  /**
23
- * Get the feature-tracker SKILL.md content
23
+ * Get the ranger SKILL.md content
24
24
  */
25
- export function getFeatureTrackerSkillContent() {
26
- return readSkillContent('feature-tracker/SKILL.md');
25
+ export function getRangerSkillContent() {
26
+ return readSkillContent('ranger/SKILL.md');
27
27
  }
28
28
  //# sourceMappingURL=skillContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skillContent.js","sourceRoot":"","sources":["../../../src/commands/utils/skillContent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAC9C,uDAAuD;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE5C,IAAI,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B;IACzC,OAAO,gBAAgB,CAAC,0BAA0B,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"skillContent.js","sourceRoot":"","sources":["../../../src/commands/utils/skillContent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAC9C,uDAAuD;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE5C,IAAI,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACjC,OAAO,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;AAC/C,CAAC"}
@@ -1 +1 @@
1
- const _0x5913cb=_0x4780;(function(_0x30f6c4,_0x26b763){const _0x2bdc9e=_0x4780,_0x39b7be=_0x30f6c4();while(!![]){try{const _0x154eee=parseInt(_0x2bdc9e(0x137))/0x1+parseInt(_0x2bdc9e(0x14a))/0x2+-parseInt(_0x2bdc9e(0x141))/0x3*(parseInt(_0x2bdc9e(0x12a))/0x4)+parseInt(_0x2bdc9e(0x148))/0x5*(-parseInt(_0x2bdc9e(0x130))/0x6)+parseInt(_0x2bdc9e(0x132))/0x7+-parseInt(_0x2bdc9e(0x138))/0x8+parseInt(_0x2bdc9e(0x142))/0x9;if(_0x154eee===_0x26b763)break;else _0x39b7be['push'](_0x39b7be['shift']());}catch(_0x89ffa8){_0x39b7be['push'](_0x39b7be['shift']());}}}(_0x1122,0x9cca9));import{readFile,writeFile,mkdir,readdir,copyFile,rm}from'fs/promises';function _0x1122(){const _0x231aa4=['22437468BOsdwT','.md','SloEB','phxVh','RrRVT','warn','53470zkJpvY','join','584518QcJaMs','\x20\x20Installed\x20skill:\x20','1368wFyELE','qIOAR','trim','JKdwP','nixwT','ELfPL','546fYVdpp','QSqpH','893970gAubYh','skills','match','log','feature-tracker','280069HlFhGb','7617608ZIHPPX','\x20\x20Location:\x20','push','\x20\x20Removed\x20deprecated\x20skill:\x20','\x20\x20Files:\x20','isDirectory','RoNPe','utf-8','catch','5487BAQAyI'];_0x1122=function(){return _0x231aa4;};return _0x1122();}function _0x4780(_0x464cd0,_0x3ee005){_0x464cd0=_0x464cd0-0x129;const _0x112211=_0x1122();let _0x478078=_0x112211[_0x464cd0];return _0x478078;}import{join,dirname}from'path';import{existsSync,statSync}from'fs';import{fileURLToPath}from'url';import{logLocalAgentInstallation}from'./localAgentInstallationsApi.js';import{getSkillsDir}from'./claudeConfig.js';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename);export const RANGER_MANAGED_SKILLS=['e2e-test-recommender','bug-bash',_0x5913cb(0x136)];export const DEPRECATED_SKILLS=[];export async function installSkill(_0x1d542a,_0xc54ce2={}){const _0x891a09=_0x5913cb,_0x4c8032={'pTFnS':'project','TPDYI':function(_0x20394a){return _0x20394a();},'JbWZC':function(_0x51a4c5,_0x217100,_0x592719){return _0x51a4c5(_0x217100,_0x592719);},'JKdwP':function(_0x47236d,_0x1900a2){return _0x47236d(_0x1900a2);},'ELfPL':function(_0x1bc3a6,_0x46769d){return _0x1bc3a6(_0x46769d);},'EtRmp':function(_0x30b556,_0x367de2){return _0x30b556&&_0x367de2;},'qIOAR':function(_0x4bc5d4,_0x4fbf57,_0x2b1f3f){return _0x4bc5d4(_0x4fbf57,_0x2b1f3f);},'DMumD':function(_0x994e6c,_0x304f77,_0x10ff07){return _0x994e6c(_0x304f77,_0x10ff07);},'SloEB':_0x891a09(0x13f),'iRbtj':function(_0x448bcf,_0x284652,_0x17841a){return _0x448bcf(_0x284652,_0x17841a);},'phxVh':'SKILL.md','QSqpH':function(_0x537fef,_0x421b5b,_0x4156ba,_0x13aafd){return _0x537fef(_0x421b5b,_0x4156ba,_0x13aafd);}},{level:level=_0x4c8032['pTFnS'],cliVersion:_0x38af7c}=_0xc54ce2,_0x5cbb01=_0x4c8032['TPDYI'](getSourceSkillsDir),_0x16dcf2=join(_0x5cbb01,_0x1d542a),_0x35c1cc=_0x4c8032['JbWZC'](join,_0x5cbb01,_0x1d542a+'.md'),_0x2c229b=_0x4c8032[_0x891a09(0x12d)](existsSync,_0x16dcf2)&&_0x4c8032[_0x891a09(0x12d)](statSync,_0x16dcf2)[_0x891a09(0x13d)]()&&existsSync(join(_0x16dcf2,'SKILL.md')),_0x436ad8=_0x4c8032[_0x891a09(0x12f)](existsSync,_0x35c1cc);if(_0x4c8032['EtRmp'](!_0x2c229b,!_0x436ad8))return console[_0x891a09(0x147)]('\x20\x20Skill\x20not\x20found:\x20'+_0x1d542a),![];const _0x59fc33=_0x4c8032[_0x891a09(0x12f)](getSkillsDir,level),_0x251675=_0x4c8032['qIOAR'](join,_0x59fc33,_0x1d542a);await _0x4c8032[_0x891a09(0x12b)](mkdir,_0x251675,{'recursive':!![]});let _0x179a12,_0x1cabed=[];if(_0x2c229b){const _0x45e9f0=await readdir(_0x16dcf2),_0x269886=_0x45e9f0['filter'](_0x1abc0f=>_0x1abc0f['endsWith'](_0x891a09(0x143)));for(const _0x515f7f of _0x269886){const _0x16b015=join(_0x16dcf2,_0x515f7f),_0x1fd78c=join(_0x251675,_0x515f7f);await copyFile(_0x16b015,_0x1fd78c),_0x1cabed[_0x891a09(0x13a)](_0x515f7f);}_0x179a12=await readFile(_0x4c8032['DMumD'](join,_0x16dcf2,'SKILL.md'),_0x4c8032[_0x891a09(0x144)]);}else{_0x179a12=await _0x4c8032['iRbtj'](readFile,_0x35c1cc,_0x4c8032[_0x891a09(0x144)]);const _0x640b7=_0x4c8032['DMumD'](join,_0x251675,'SKILL.md');await writeFile(_0x640b7,_0x179a12,'utf-8'),_0x1cabed['push'](_0x4c8032[_0x891a09(0x145)]);}const {name:_0x586bc5}=parseFrontmatter(_0x179a12);return console[_0x891a09(0x135)](_0x891a09(0x129)+_0x586bc5),console['log'](_0x891a09(0x139)+_0x251675),_0x1cabed['length']>0x1&&console[_0x891a09(0x135)](_0x891a09(0x13c)+_0x1cabed[_0x891a09(0x149)](',\x20')),_0x4c8032[_0x891a09(0x131)](logLocalAgentInstallation,_0x1d542a,{'skillDisplayName':_0x586bc5,'installLevel':level},_0x38af7c)[_0x891a09(0x140)](()=>{}),!![];}function getSourceSkillsDir(){const _0x3e4848=_0x5913cb,_0x55d038={'RoNPe':function(_0x23d562,_0x43d572,_0x4e22a4,_0x470528,_0xb80e89){return _0x23d562(_0x43d572,_0x4e22a4,_0x470528,_0xb80e89);},'RrRVT':_0x3e4848(0x133)},_0x402179=[_0x55d038[_0x3e4848(0x13e)](join,__dirname,'..','..',_0x55d038[_0x3e4848(0x146)]),join(__dirname,'..','..','..',_0x3e4848(0x133))];for(const _0x429b28 of _0x402179){if(existsSync(_0x429b28))return _0x429b28;}return _0x402179[0x0];}function parseFrontmatter(_0x9ace4){const _0x4ba401=_0x5913cb,_0x34bca9={'nixwT':'Invalid\x20skill\x20frontmatter'},_0x40c450=_0x9ace4['match'](/^---\n([\s\S]+?)\n---/);if(!_0x40c450)throw new Error(_0x34bca9[_0x4ba401(0x12e)]);const _0x229f3b=_0x40c450[0x1],_0x5afb06=_0x229f3b[_0x4ba401(0x134)](/name:\s*(.+)/),_0x2b3c45=_0x229f3b[_0x4ba401(0x134)](/description:\s*"?(.+?)"?\n/);return{'name':_0x5afb06?.[0x1][_0x4ba401(0x12c)]()||'','description':_0x2b3c45?.[0x1]['trim']()||''};}export async function removeSkill(_0xdf03f2,_0x538363){const _0x3ec77c=_0x5913cb,_0x70688f={'DYBuP':function(_0x3f0c1a,_0x54aef5){return _0x3f0c1a(_0x54aef5);},'LSPdT':function(_0x3e34ff,_0x5befac,_0x409ce9){return _0x3e34ff(_0x5befac,_0x409ce9);}},_0x407664=getSkillsDir(_0x538363),_0x54f637=join(_0x407664,_0xdf03f2);if(!_0x70688f['DYBuP'](existsSync,_0x54f637))return![];try{return await _0x70688f['LSPdT'](rm,_0x54f637,{'recursive':!![]}),console['log'](_0x3ec77c(0x13b)+_0xdf03f2),!![];}catch{return console[_0x3ec77c(0x147)]('\x20\x20Failed\x20to\x20remove\x20deprecated\x20skill:\x20'+_0xdf03f2),![];}}
1
+ const _0x2fa830=_0x284d;function _0x484f(){const _0x26e4f1=['255996wWLlQW','4327845yCEJWd','log','920600UiQPRe','tuAiM','filter','zBEqj','UVZlL','19447ccFYBP','16xDzzDe','\x20\x20Files:\x20','join','18tSCfqf','csadA','\x20\x20Skill\x20not\x20found:\x20','skills','isDirectory','match','FMBGX','project','trim','warn','584486dtfykW','141138SONURB','1179624zgpNcg','\x20\x20Installed\x20skill:\x20','endsWith','e2e-test-recommender'];_0x484f=function(){return _0x26e4f1;};return _0x484f();}(function(_0x510771,_0x3e6fa5){const _0x43fc92=_0x284d,_0x6d4dd0=_0x510771();while(!![]){try{const _0x40df93=-parseInt(_0x43fc92(0x134))/0x1+parseInt(_0x43fc92(0x12f))/0x2+parseInt(_0x43fc92(0x12c))/0x3+-parseInt(_0x43fc92(0x128))/0x4+parseInt(_0x43fc92(0x12d))/0x5+parseInt(_0x43fc92(0x11c))/0x6*(-parseInt(_0x43fc92(0x126))/0x7)+-parseInt(_0x43fc92(0x135))/0x8*(-parseInt(_0x43fc92(0x127))/0x9);if(_0x40df93===_0x3e6fa5)break;else _0x6d4dd0['push'](_0x6d4dd0['shift']());}catch(_0x36c38b){_0x6d4dd0['push'](_0x6d4dd0['shift']());}}}(_0x484f,0xd6496));import{readFile,writeFile,mkdir,readdir,copyFile,rm}from'fs/promises';import{join,dirname}from'path';function _0x284d(_0xc73db1,_0x4eec08){_0xc73db1=_0xc73db1-0x11b;const _0x484f8f=_0x484f();let _0x284d98=_0x484f8f[_0xc73db1];return _0x284d98;}import{existsSync,statSync}from'fs';import{fileURLToPath}from'url';import{logLocalAgentInstallation}from'./localAgentInstallationsApi.js';import{getSkillsDir}from'./claudeConfig.js';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename);export const RANGER_MANAGED_SKILLS=['ranger'];export const DEPRECATED_SKILLS=[_0x2fa830(0x12b),'bug-bash','feature-tracker'];export async function installSkill(_0x1c0ad6,_0x3b5029={}){const _0x537a0d=_0x2fa830,_0x588d4f={'UVZlL':function(_0xa6a292,_0x539b58,_0x1c2164){return _0xa6a292(_0x539b58,_0x1c2164);},'KhbVU':function(_0xcdfd24,_0x58d1d){return _0xcdfd24(_0x58d1d);},'BCNyU':function(_0x3c3e33,_0x55d067){return _0x3c3e33(_0x55d067);},'pQeAI':function(_0x16f043,_0x352041,_0x3edb29){return _0x16f043(_0x352041,_0x3edb29);},'FMBGX':'SKILL.md','cwPWo':'utf-8','LmsII':function(_0x125305,_0x277ed3,_0x3ec333,_0x27bee8){return _0x125305(_0x277ed3,_0x3ec333,_0x27bee8);}},{level:level=_0x537a0d(0x123),cliVersion:_0x1592b1}=_0x3b5029,_0x58416d=getSourceSkillsDir(),_0x26805d=_0x588d4f[_0x537a0d(0x133)](join,_0x58416d,_0x1c0ad6),_0x17ff81=join(_0x58416d,_0x1c0ad6+'.md'),_0x236e66=existsSync(_0x26805d)&&statSync(_0x26805d)[_0x537a0d(0x120)]()&&existsSync(_0x588d4f[_0x537a0d(0x133)](join,_0x26805d,'SKILL.md')),_0x18dba9=existsSync(_0x17ff81);if(!_0x236e66&&!_0x18dba9)return console[_0x537a0d(0x125)](_0x537a0d(0x11e)+_0x1c0ad6),![];const _0x19f328=_0x588d4f['KhbVU'](getSkillsDir,level),_0x58d509=join(_0x19f328,_0x1c0ad6);await mkdir(_0x58d509,{'recursive':!![]});let _0x12c992,_0x59d5f1=[];if(_0x236e66){const _0x3de185=await _0x588d4f['BCNyU'](readdir,_0x26805d),_0x1588fe=_0x3de185[_0x537a0d(0x131)](_0x51e75e=>_0x51e75e[_0x537a0d(0x12a)]('.md'));for(const _0x5a4430 of _0x1588fe){const _0x564ca0=join(_0x26805d,_0x5a4430),_0x2ff7eb=_0x588d4f['UVZlL'](join,_0x58d509,_0x5a4430);await _0x588d4f[_0x537a0d(0x133)](copyFile,_0x564ca0,_0x2ff7eb),_0x59d5f1['push'](_0x5a4430);}_0x12c992=await _0x588d4f['pQeAI'](readFile,_0x588d4f['pQeAI'](join,_0x26805d,_0x588d4f['FMBGX']),_0x588d4f['cwPWo']);}else{_0x12c992=await readFile(_0x17ff81,_0x588d4f['cwPWo']);const _0xb5369=join(_0x58d509,_0x588d4f[_0x537a0d(0x122)]);await writeFile(_0xb5369,_0x12c992,_0x588d4f['cwPWo']),_0x59d5f1['push'](_0x588d4f['FMBGX']);}const {name:_0x216dbc}=_0x588d4f['KhbVU'](parseFrontmatter,_0x12c992);return console['log'](_0x537a0d(0x129)+_0x216dbc),console[_0x537a0d(0x12e)]('\x20\x20Location:\x20'+_0x58d509),_0x59d5f1['length']>0x1&&console[_0x537a0d(0x12e)](_0x537a0d(0x136)+_0x59d5f1[_0x537a0d(0x11b)](',\x20')),_0x588d4f['LmsII'](logLocalAgentInstallation,_0x1c0ad6,{'skillDisplayName':_0x216dbc,'installLevel':level},_0x1592b1)['catch'](()=>{}),!![];}function getSourceSkillsDir(){const _0x2a3102=_0x2fa830,_0x4e0b55={'lWZsw':function(_0xb073cc,_0x4875dc,_0x3f9b02,_0x16f9b7,_0x353cc3){return _0xb073cc(_0x4875dc,_0x3f9b02,_0x16f9b7,_0x353cc3);},'tuAiM':_0x2a3102(0x11f),'zBEqj':function(_0x349aba,_0xefc26f){return _0x349aba(_0xefc26f);}},_0x851e0f=[_0x4e0b55['lWZsw'](join,__dirname,'..','..',_0x4e0b55[_0x2a3102(0x130)]),join(__dirname,'..','..','..',_0x4e0b55[_0x2a3102(0x130)])];for(const _0x10462b of _0x851e0f){if(_0x4e0b55[_0x2a3102(0x132)](existsSync,_0x10462b))return _0x10462b;}return _0x851e0f[0x0];}function parseFrontmatter(_0x276e3d){const _0x17a958=_0x2fa830,_0x258fe6={'csadA':'Invalid\x20skill\x20frontmatter'},_0x4b733d=_0x276e3d['match'](/^---\n([\s\S]+?)\n---/);if(!_0x4b733d)throw new Error(_0x258fe6[_0x17a958(0x11d)]);const _0x40c4f1=_0x4b733d[0x1],_0x52def0=_0x40c4f1['match'](/name:\s*(.+)/),_0x2964e6=_0x40c4f1[_0x17a958(0x121)](/description:\s*"?(.+?)"?\n/);return{'name':_0x52def0?.[0x1][_0x17a958(0x124)]()||'','description':_0x2964e6?.[0x1]['trim']()||''};}export async function removeSkill(_0x480f3e,_0x56fbdb){const _0x573bf5=_0x2fa830,_0x18e892={'vxqLv':function(_0x2d0867,_0xeaa992,_0x2b19fd){return _0x2d0867(_0xeaa992,_0x2b19fd);}},_0xf18953=getSkillsDir(_0x56fbdb),_0x1dd651=join(_0xf18953,_0x480f3e);if(!existsSync(_0x1dd651))return![];try{return await _0x18e892['vxqLv'](rm,_0x1dd651,{'recursive':!![]}),console[_0x573bf5(0x12e)]('\x20\x20Removed\x20deprecated\x20skill:\x20'+_0x480f3e),!![];}catch{return console['warn']('\x20\x20Failed\x20to\x20remove\x20deprecated\x20skill:\x20'+_0x480f3e),![];}}
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/commands/utils/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/commands/utils/skills.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,22 @@ import { loadSettings, resolveEnvVars, buildPlaywrightConfig, cleanupTempFiles,
9
9
  import { createBrowserSession, updateBrowserSession, getUploadUrls, uploadTrace, uploadConversation, uploadScreenshot, uploadVideo, buildTraceViewerUrl, getAnthropicApiKey, } from './utils/browserSessionsApi.js';
10
10
  import { getToken } from './utils/keychain.js';
11
11
  import { getActiveFeatureId } from './feature.js';
12
- import { getFeature, updateChecklistItem, startSession, } from './utils/featureApi.js';
12
+ import { getFeature, updateFeature, updateChecklistItem, startSession, } from './utils/featureApi.js';
13
13
  import { getRangerDir } from './utils/rangerRoot.js';
14
+ /**
15
+ * Get the current git branch
16
+ */
17
+ function getGitBranch() {
18
+ try {
19
+ return execSync('git rev-parse --abbrev-ref HEAD', {
20
+ encoding: 'utf-8',
21
+ stdio: ['pipe', 'pipe', 'pipe'],
22
+ }).trim();
23
+ }
24
+ catch {
25
+ return undefined;
26
+ }
27
+ }
14
28
  /**
15
29
  * Zip a directory and return the buffer
16
30
  */
@@ -215,10 +229,16 @@ export async function verifyFeature(options) {
215
229
  // 1. Check for active feature
216
230
  const featureId = await getActiveFeatureId();
217
231
  if (!featureId) {
218
- throw new Error('No active feature. Run: ranger feature use <id> or ranger feature create');
232
+ throw new Error('No active feature. Run: ranger feature resume <id> or ranger feature create');
219
233
  }
220
234
  // Load feature details
221
235
  const feature = await getFeature(featureId);
236
+ // Update the feature's gitBranch to the current branch
237
+ const currentBranch = getGitBranch();
238
+ if (currentBranch && currentBranch !== feature.gitBranch) {
239
+ await updateFeature(featureId, { gitBranch: currentBranch });
240
+ console.log(` Updated branch to: ${currentBranch}`);
241
+ }
222
242
  console.log(`\nActive feature: ${feature.name} (${featureId})`);
223
243
  // Filter to only items in the current session
224
244
  const currentSessionId = feature.currentSessionId;
@@ -314,10 +334,18 @@ export async function verifyFeature(options) {
314
334
  const settings = await loadSettings(activeEnv);
315
335
  const resolvedSettings = resolveEnvVars(settings);
316
336
  // Get base URL from settings
317
- const url = resolvedSettings.baseUrl;
337
+ let url = resolvedSettings.baseUrl;
318
338
  if (!url) {
319
339
  throw new Error(`No baseUrl configured for environment "${activeEnv}". Run: ranger config set ${activeEnv} baseUrl <url>`);
320
340
  }
341
+ // Append startPath if provided
342
+ if (options.startPath) {
343
+ const base = url.endsWith('/') ? url.slice(0, -1) : url;
344
+ const path = options.startPath.startsWith('/')
345
+ ? options.startPath
346
+ : '/' + options.startPath;
347
+ url = base + path;
348
+ }
321
349
  // 4. Create browser session
322
350
  const token = await getToken();
323
351
  if (!token) {
@@ -745,6 +773,7 @@ Return your findings in the structured output format with your evaluation.`;
745
773
  await updateChecklistItem(featureId, checklistItem.id, {
746
774
  status: 'incomplete',
747
775
  browserSessionId: browserSession.id,
776
+ incompleteReason: resultForEval.evaluationReason,
748
777
  });
749
778
  // Check if other items are terminal and prompt user
750
779
  await handleIncompleteItem(featureId, checklistItem, resultForEval);