@ranger-testing/ranger-cli 1.0.10 → 1.0.13
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 +290 -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 +68 -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
|
-
{"version":3,"file":"useEnv.js","sourceRoot":"","sources":["../../src/commands/useEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAe;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"useEnv.js","sourceRoot":"","sources":["../../src/commands/useEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAe;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAEjD,mBAAmB;IACnB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,cAAc,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,iDAAiD;IACjD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACvE,MAAM,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAExC,OAAO,CAAC,GAAG,CAAC,8BAA8B,OAAO,GAAG,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(_0xe5b1c4,_0x870eb5){const _0x119ce8=_0x495d,_0x3a195e=_0xe5b1c4();while(!![]){try{const _0x20b92e=parseInt(_0x119ce8(0x1ec))/0x1*(parseInt(_0x119ce8(0x1ed))/0x2)+-parseInt(_0x119ce8(0x1da))/0x3*(-parseInt(_0x119ce8(0x1d7))/0x4)+-parseInt(_0x119ce8(0x1f6))/0x5*(-parseInt(_0x119ce8(0x1ea))/0x6)+-parseInt(_0x119ce8(0x1cc))/0x7+parseInt(_0x119ce8(0x1dd))/0x8*(-parseInt(_0x119ce8(0x1c9))/0x9)+-parseInt(_0x119ce8(0x1c4))/0xa*(parseInt(_0x119ce8(0x1d3))/0xb)+-parseInt(_0x119ce8(0x1c0))/0xc*(-parseInt(_0x119ce8(0x1f3))/0xd);if(_0x20b92e===_0x870eb5)break;else _0x3a195e['push'](_0x3a195e['shift']());}catch(_0x40b08f){_0x3a195e['push'](_0x3a195e['shift']());}}}(_0x1880,0x7a248));const _0x4d4a9b=(function(){let _0x3f7dbf=!![];return function(_0x3878de,_0x1ae485){const _0x2ad11e=_0x3f7dbf?function(){if(_0x1ae485){const _0x86f80d=_0x1ae485['apply'](_0x3878de,arguments);return _0x1ae485=null,_0x86f80d;}}:function(){};return _0x3f7dbf=![],_0x2ad11e;};}()),_0x499ffa=_0x4d4a9b(this,function(){const _0x406df2=_0x495d;return _0x499ffa[_0x406df2(0x1e4)]()[_0x406df2(0x1c3)]('(((.+)+)+)+$')[_0x406df2(0x1e4)]()[_0x406df2(0x1f0)](_0x499ffa)['search'](_0x406df2(0x1d0));});_0x499ffa();import{getToken}from'./keychain.js';import{getSignedHeaders}from'./cliSecret.js';function getApiBaseUrl(){const _0x15e7d5=_0x495d,_0x312fa6={'CqwsU':_0x15e7d5(0x1eb)};return process[_0x15e7d5(0x1c7)]['RANGER_API_URL']||_0x312fa6[_0x15e7d5(0x1de)];}export async function createBrowserSession(_0x12b88d){const _0x42c0d9=_0x495d,_0x3fa858={'tRgvI':function(_0x23c800){return _0x23c800();},'Botmf':_0x42c0d9(0x1dc),'YJosP':function(_0xf210b2){return _0xf210b2();},'QILBs':'application/json'},_0x554b58=await _0x3fa858[_0x42c0d9(0x1c2)](getToken);if(!_0x554b58)throw new Error(_0x3fa858[_0x42c0d9(0x1e7)]);const _0x2aa5ce=_0x3fa858[_0x42c0d9(0x1ee)](getApiBaseUrl),_0x350199=await fetch(_0x2aa5ce+'/api/v1/mcp/browser-sessions',{'method':'POST','headers':{'Authorization':_0x42c0d9(0x1e2)+_0x554b58,'Content-Type':_0x3fa858[_0x42c0d9(0x1d1)]},'body':JSON[_0x42c0d9(0x1e9)]({'environmentName':_0x12b88d?.['environmentName'],'settings':_0x12b88d?.[_0x42c0d9(0x1ce)],'task':_0x12b88d?.[_0x42c0d9(0x1d8)],'url':_0x12b88d?.['url']})});if(!_0x350199['ok']){const _0x20a1e1=await _0x350199[_0x42c0d9(0x1e3)]();throw new Error(_0x42c0d9(0x1c1)+_0x20a1e1);}return _0x350199['json']();}export async function updateBrowserSession(_0x19743c,_0x36da24){const _0x1da421=_0x495d,_0x1483f0={'QkrqA':function(_0x5e4740){return _0x5e4740();},'Dmlmp':function(_0x45f3de,_0x540040){return _0x45f3de===_0x540040;},'oBWQu':'qWZvL','OTTta':_0x1da421(0x1dc),'VuMlh':function(_0x2c4ef7,_0x10bccf,_0x52acdc){return _0x2c4ef7(_0x10bccf,_0x52acdc);},'ulRez':'PATCH','xZPTP':'application/json'},_0x5aae09=await _0x1483f0[_0x1da421(0x1ca)](getToken);if(!_0x5aae09){if(_0x1483f0[_0x1da421(0x1c8)](_0x1483f0['oBWQu'],_0x1483f0['oBWQu']))throw new Error(_0x1483f0[_0x1da421(0x1e1)]);else{const _0x593e2f=_0x389138?function(){if(_0x3b1f8f){const _0xb18fb0=_0x5c1590['apply'](_0x5c99cf,arguments);return _0x2b318d=null,_0xb18fb0;}}:function(){};return _0x5b6792=![],_0x593e2f;}}const _0xe36362=_0x1483f0[_0x1da421(0x1ca)](getApiBaseUrl),_0x171e14=await _0x1483f0['VuMlh'](fetch,_0xe36362+_0x1da421(0x1d4)+_0x19743c,{'method':_0x1483f0[_0x1da421(0x1ef)],'headers':{'Authorization':_0x1da421(0x1e2)+_0x5aae09,'Content-Type':_0x1483f0[_0x1da421(0x1f4)]},'body':JSON[_0x1da421(0x1e9)](_0x36da24)});if(!_0x171e14['ok']){const _0x55cdca=await _0x171e14[_0x1da421(0x1e3)]();throw new Error(_0x1da421(0x1db)+_0x55cdca);}return _0x171e14[_0x1da421(0x1cd)]();}function _0x495d(_0x2554c9,_0x400607){_0x2554c9=_0x2554c9-0x1c0;const _0x53ecf5=_0x1880();let _0x499ffa=_0x53ecf5[_0x2554c9];if(_0x495d['CUMQUf']===undefined){var _0x4d4a9b=function(_0x1b8b15){const _0x940467='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1ee518='',_0x2efaf4='',_0x356e11=_0x1ee518+_0x4d4a9b;for(let _0x2ee4e3=0x0,_0x1a77d0,_0x35c877,_0x3ca75e=0x0;_0x35c877=_0x1b8b15['charAt'](_0x3ca75e++);~_0x35c877&&(_0x1a77d0=_0x2ee4e3%0x4?_0x1a77d0*0x40+_0x35c877:_0x35c877,_0x2ee4e3++%0x4)?_0x1ee518+=_0x356e11['charCodeAt'](_0x3ca75e+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x1a77d0>>(-0x2*_0x2ee4e3&0x6)):_0x2ee4e3:0x0){_0x35c877=_0x940467['indexOf'](_0x35c877);}for(let _0x599ae7=0x0,_0x54a955=_0x1ee518['length'];_0x599ae7<_0x54a955;_0x599ae7++){_0x2efaf4+='%'+('00'+_0x1ee518['charCodeAt'](_0x599ae7)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2efaf4);};_0x495d['dDFfbi']=_0x4d4a9b,_0x495d['kuJtFc']={},_0x495d['CUMQUf']=!![];}const _0x188040=_0x53ecf5[0x0],_0x495d9d=_0x2554c9+_0x188040,_0x50ea16=_0x495d['kuJtFc'][_0x495d9d];if(!_0x50ea16){const _0x389138=function(_0x8ebe9f){this['WYCfVi']=_0x8ebe9f,this['OIgjzJ']=[0x1,0x0,0x0],this['caipmM']=function(){return'newState';},this['JNgueB']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['MEXrKv']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x389138['prototype']['aFYDkj']=function(){const _0xba0570=new RegExp(this['JNgueB']+this['MEXrKv']),_0x263013=_0xba0570['test'](this['caipmM']['toString']())?--this['OIgjzJ'][0x1]:--this['OIgjzJ'][0x0];return this['uyIoBO'](_0x263013);},_0x389138['prototype']['uyIoBO']=function(_0x440efe){if(!Boolean(~_0x440efe))return _0x440efe;return this['haaYJz'](this['WYCfVi']);},_0x389138['prototype']['haaYJz']=function(_0x5b6792){for(let _0x3b1f8f=0x0,_0xb0132b=this['OIgjzJ']['length'];_0x3b1f8f<_0xb0132b;_0x3b1f8f++){this['OIgjzJ']['push'](Math['round'](Math['random']())),_0xb0132b=this['OIgjzJ']['length'];}return _0x5b6792(this['OIgjzJ'][0x0]);},new _0x389138(_0x495d)['aFYDkj'](),_0x499ffa=_0x495d['dDFfbi'](_0x499ffa),_0x495d['kuJtFc'][_0x495d9d]=_0x499ffa;}else _0x499ffa=_0x50ea16;return _0x499ffa;}export async function getBrowserSession(_0x1f47ba){const _0xd16379=_0x495d,_0x3ddc78={'MLJmw':function(_0x1b9a3c){return _0x1b9a3c();},'JpgLF':_0xd16379(0x1cf)},_0x3f9be6=await getToken();if(!_0x3f9be6)throw new Error(_0xd16379(0x1dc));const _0x24a84f=_0x3ddc78['MLJmw'](getApiBaseUrl),_0x53322f=await fetch(_0x24a84f+'/api/v1/mcp/browser-sessions/'+_0x1f47ba,{'method':_0x3ddc78[_0xd16379(0x1d9)],'headers':{'Authorization':'Bearer\x20'+_0x3f9be6}});if(!_0x53322f['ok']){const _0x40b9ba=await _0x53322f['text']();throw new Error(_0xd16379(0x1e0)+_0x40b9ba);}return _0x53322f[_0xd16379(0x1cd)]();}export async function uploadTrace(_0x34d2ac,_0x166f09){const _0xa576bd=_0x495d,_0x7e4cc5={'tHSCu':function(_0x1da804,_0x59912c,_0x50a560){return _0x1da804(_0x59912c,_0x50a560);},'nCQSr':'PUT'},_0x46a24b=await _0x7e4cc5['tHSCu'](fetch,_0x34d2ac,{'method':_0x7e4cc5[_0xa576bd(0x1d5)],'headers':{'Content-Type':'application/zip','Content-Length':_0x166f09['length'][_0xa576bd(0x1e4)]()},'body':_0x166f09});if(!_0x46a24b['ok']){const _0x51fdd1=await _0x46a24b[_0xa576bd(0x1e3)]();throw new Error('Failed\x20to\x20upload\x20trace:\x20'+_0x51fdd1);}}function _0x1880(){const _0x202017=['nerfrNf0ra','mZi3mJi0sgXIB0DU','wuPVC1a','DwXszxO','y29UC3rYDwn0B3i','Ahr0Chm6lY90CMfJzs5WBgf5D3jPz2H0lMrLDI8/DhjHy2u9','vvPKEe0','mZi5ntm3AhfSwvHM','EfPqvfa','Awfdufa','nvnvBwLHtq','BMfHyK0','nJbdCgvnD2y','rMfPBgvKihrVignYzwf0zsbICM93C2vYihnLC3nPB246ia','DfjNDKK','C2vHCMnO','ndy1ndeXmgjSwNbxzG','rMLszgy','tMPtrLa','zw52','rg1SBxa','mtqXnJz3Ee1dyNy','uwTYCue','Au5hBLu','nde2odu1nKLmtKT2wq','ANnVBG','C2v0DgLUz3m','r0vu','kcGOlISPkYKRksSK','uuLmqNm','rLnHveS','mJjrBw9NwfO','l2fWAs92ms9Ty3aVyNjVD3nLCI1ZzxnZAw9UCY8','BKnru3i','Dvbtwva','ndb6AvHytfO','DgfZAW','sNbNtey','mtC4nJy4AffMEvv2','rMfPBgvKihrVihvWzgf0zsbICM93C2vYihnLC3nPB246ia','tM8GqvbjihrVA2vUignVBMzPz3vYzwqUifj1BJOGCMfUz2vYihn0yxj0idX0B2TLBJ4','mty3mKP1Dhfhuq','q3f3C1u','rMfPBgvKihrVigDLDcbbBNrOCM9WAwmGqvbjigTLEtOG','rMfPBgvKihrVigDLDcbICM93C2vYihnLC3nPB246ia','t1ruDge','qMvHCMvYia','Dgv4Da','Dg9tDhjPBMC','Aerbshm','B3DnC3C','qM90Bwy','BgvUz3rO','C3rYAw5NAwz5','ntG3mZaZngjKsxjiqG','Ahr0Chm6lY9HCgKUCMfUz2vYlM5LDa'];_0x1880=function(){return _0x202017;};return _0x1880();}export async function uploadConversation(_0x20431a,_0x3221cb){const _0x11b8cf=_0x495d,_0x54e34a={'hDAHs':function(_0x2fa9b5,_0x587334,_0xa1cb10){return _0x2fa9b5(_0x587334,_0xa1cb10);},'iaCPP':'PUT','uPSYP':'application/jsonl'},_0x13fa0c=await _0x54e34a[_0x11b8cf(0x1e5)](fetch,_0x20431a,{'method':_0x54e34a[_0x11b8cf(0x1f5)],'headers':{'Content-Type':_0x54e34a[_0x11b8cf(0x1d6)],'Content-Length':_0x3221cb[_0x11b8cf(0x1e8)][_0x11b8cf(0x1e4)]()},'body':_0x3221cb});if(!_0x13fa0c['ok']){const _0x5a28f9=await _0x13fa0c[_0x11b8cf(0x1e3)]();throw new Error('Failed\x20to\x20upload\x20conversation:\x20'+_0x5a28f9);}}export function buildTraceViewerUrl(_0x30ec3e){const _0x977d1d=_0x495d,_0x850f4e={'PtLhN':function(_0x5db5de,_0x512d54){return _0x5db5de(_0x512d54);}},_0x3be293=_0x850f4e['PtLhN'](encodeURIComponent,_0x30ec3e);return _0x977d1d(0x1f1)+_0x3be293;}export async function getAnthropicApiKey(){const _0x54898c=_0x495d,_0x4272e1={'owMsw':function(_0x350a07){return _0x350a07();},'naabM':'No\x20API\x20token\x20configured.\x20Run:\x20ranger\x20start\x20<token>','FiRdf':function(_0x49605d){return _0x49605d();},'iNGnU':function(_0x75f584,_0x598142){return _0x75f584(_0x598142);},'UZdxM':'anthropic-api-key','FSaTK':function(_0x355516,_0x147581,_0x2c68cd){return _0x355516(_0x147581,_0x2c68cd);},'NjSFP':'GET'},_0xefb2ec=await _0x4272e1[_0x54898c(0x1e6)](getToken);if(!_0xefb2ec)throw new Error(_0x4272e1[_0x54898c(0x1f7)]);const _0x3c868f=_0x4272e1[_0x54898c(0x1c5)](getApiBaseUrl),_0x155246=_0x4272e1[_0x54898c(0x1cb)](getSignedHeaders,_0x4272e1[_0x54898c(0x1f2)]),_0x37010a=await _0x4272e1[_0x54898c(0x1d2)](fetch,_0x3c868f+'/api/v1/mcp/anthropic-api-key',{'method':_0x4272e1[_0x54898c(0x1c6)],'headers':{'Authorization':_0x54898c(0x1e2)+_0xefb2ec,..._0x155246}});if(!_0x37010a['ok']){const _0x48b900=await _0x37010a[_0x54898c(0x1e3)]();throw new Error(_0x54898c(0x1df)+_0x48b900);}const _0x230d72=await _0x37010a[_0x54898c(0x1cd)]();return _0x230d72['apiKey'];}
|
|
1
|
+
(function(_0x56c938,_0x592d63){const _0x27e085=_0x82f3,_0x32bb34=_0x56c938();while(!![]){try{const _0x4ea7db=parseInt(_0x27e085(0x119))/0x1*(-parseInt(_0x27e085(0x115))/0x2)+-parseInt(_0x27e085(0xf0))/0x3+parseInt(_0x27e085(0xe7))/0x4*(parseInt(_0x27e085(0xd1))/0x5)+-parseInt(_0x27e085(0xd4))/0x6+parseInt(_0x27e085(0xda))/0x7+parseInt(_0x27e085(0xed))/0x8*(parseInt(_0x27e085(0xd7))/0x9)+parseInt(_0x27e085(0x10a))/0xa*(parseInt(_0x27e085(0x106))/0xb);if(_0x4ea7db===_0x592d63)break;else _0x32bb34['push'](_0x32bb34['shift']());}catch(_0x3a8b5e){_0x32bb34['push'](_0x32bb34['shift']());}}}(_0x8cf2,0x6a654));const _0x452061=(function(){const _0x41f56e=_0x82f3,_0x377a45={'afAlZ':_0x41f56e(0xff),'OTbvZ':function(_0x2f36ad,_0xd2381a){return _0x2f36ad===_0xd2381a;},'hcamW':'fmOqK','Loflo':function(_0xb30387,_0xcc886a){return _0xb30387!==_0xcc886a;},'XJEZB':_0x41f56e(0xc8)};let _0x231728=!![];return function(_0x1cc980,_0x223beb){const _0x5a9ece=_0x41f56e;if(_0x377a45['Loflo'](_0x377a45[_0x5a9ece(0xc9)],_0x377a45[_0x5a9ece(0xc9)]))return _0x218cb9['toString']()[_0x5a9ece(0xd8)](_0x377a45['afAlZ'])['toString']()[_0x5a9ece(0x100)](_0x9cba0a)[_0x5a9ece(0xd8)](_0x5a9ece(0xff));else{const _0x2e9b7e=_0x231728?function(){const _0x42ec98=_0x5a9ece,_0x18807a={'UojCU':_0x42ec98(0x10e)};if(_0x223beb){if(_0x377a45['OTbvZ'](_0x377a45[_0x42ec98(0xcf)],_0x377a45[_0x42ec98(0xcf)])){const _0xd58413=_0x223beb['apply'](_0x1cc980,arguments);return _0x223beb=null,_0xd58413;}else throw new _0xea3059(_0x18807a[_0x42ec98(0xd6)]);}}:function(){};return _0x231728=![],_0x2e9b7e;}};}()),_0x42fb52=_0x452061(this,function(){const _0x540853=_0x82f3,_0x4193fe={'JoNwK':'(((.+)+)+)+$'};return _0x42fb52[_0x540853(0xf3)]()[_0x540853(0xd8)](_0x4193fe[_0x540853(0xd2)])[_0x540853(0xf3)]()['constructor'](_0x42fb52)['search'](_0x4193fe[_0x540853(0xd2)]);});function _0x82f3(_0x54b5c5,_0x1bb069){_0x54b5c5=_0x54b5c5-0xc7;const _0x4ee48c=_0x8cf2();let _0x42fb52=_0x4ee48c[_0x54b5c5];if(_0x82f3['ecxyya']===undefined){var _0x452061=function(_0x198d80){const _0x4c321e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x13802c='',_0x30fa6d='',_0x421f4f=_0x13802c+_0x452061;for(let _0x30de29=0x0,_0x3a0fe0,_0x2b056f,_0xf2a592=0x0;_0x2b056f=_0x198d80['charAt'](_0xf2a592++);~_0x2b056f&&(_0x3a0fe0=_0x30de29%0x4?_0x3a0fe0*0x40+_0x2b056f:_0x2b056f,_0x30de29++%0x4)?_0x13802c+=_0x421f4f['charCodeAt'](_0xf2a592+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x3a0fe0>>(-0x2*_0x30de29&0x6)):_0x30de29:0x0){_0x2b056f=_0x4c321e['indexOf'](_0x2b056f);}for(let _0x50cdbc=0x0,_0x18c55e=_0x13802c['length'];_0x50cdbc<_0x18c55e;_0x50cdbc++){_0x30fa6d+='%'+('00'+_0x13802c['charCodeAt'](_0x50cdbc)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x30fa6d);};_0x82f3['amBBmX']=_0x452061,_0x82f3['aGwfaf']={},_0x82f3['ecxyya']=!![];}const _0x8cf253=_0x4ee48c[0x0],_0x82f350=_0x54b5c5+_0x8cf253,_0x273262=_0x82f3['aGwfaf'][_0x82f350];if(!_0x273262){const _0x31f093=function(_0x538814){this['vBOHpt']=_0x538814,this['ShMuLQ']=[0x1,0x0,0x0],this['BlCrXS']=function(){return'newState';},this['gnOeyY']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['cQtGxV']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x31f093['prototype']['TqiLuK']=function(){const _0x481a06=new RegExp(this['gnOeyY']+this['cQtGxV']),_0x223181=_0x481a06['test'](this['BlCrXS']['toString']())?--this['ShMuLQ'][0x1]:--this['ShMuLQ'][0x0];return this['aEvTaa'](_0x223181);},_0x31f093['prototype']['aEvTaa']=function(_0x509530){if(!Boolean(~_0x509530))return _0x509530;return this['rbtdwD'](this['vBOHpt']);},_0x31f093['prototype']['rbtdwD']=function(_0x2c0e76){for(let _0x5257c7=0x0,_0x141436=this['ShMuLQ']['length'];_0x5257c7<_0x141436;_0x5257c7++){this['ShMuLQ']['push'](Math['round'](Math['random']())),_0x141436=this['ShMuLQ']['length'];}return _0x2c0e76(this['ShMuLQ'][0x0]);},new _0x31f093(_0x82f3)['TqiLuK'](),_0x42fb52=_0x82f3['amBBmX'](_0x42fb52),_0x82f3['aGwfaf'][_0x82f350]=_0x42fb52;}else _0x42fb52=_0x273262;return _0x42fb52;}_0x42fb52();import{getToken}from'./keychain.js';import{getSignedHeaders}from'./cliSecret.js';import{getApiBaseUrl}from'./environment.js';export async function createBrowserSession(_0x239e61){const _0x5777a0=_0x82f3,_0x3c5798={'CgHXS':function(_0x2b5233){return _0x2b5233();},'vUFeg':_0x5777a0(0x10e),'eKMex':function(_0x275c04,_0x488814,_0x56173d){return _0x275c04(_0x488814,_0x56173d);},'hcfgN':_0x5777a0(0xfe),'Nzcmo':_0x5777a0(0x11a)},_0x1d1502=await _0x3c5798[_0x5777a0(0xca)](getToken);if(!_0x1d1502)throw new Error(_0x3c5798[_0x5777a0(0x10c)]);const _0x45d805=_0x3c5798[_0x5777a0(0xca)](getApiBaseUrl),_0x2df36a=await _0x3c5798[_0x5777a0(0xde)](fetch,_0x45d805+_0x5777a0(0x103),{'method':_0x3c5798[_0x5777a0(0xd3)],'headers':{'Authorization':_0x5777a0(0x109)+_0x1d1502,'Content-Type':_0x3c5798[_0x5777a0(0xea)]},'body':JSON[_0x5777a0(0x112)]({'environmentName':_0x239e61?.['environmentName'],'settings':_0x239e61?.[_0x5777a0(0x118)],'task':_0x239e61?.[_0x5777a0(0xf1)],'url':_0x239e61?.[_0x5777a0(0xfc)]})});if(!_0x2df36a['ok']){const _0x13e9cb=await _0x2df36a['text']();throw new Error(_0x5777a0(0xf4)+_0x13e9cb);}return _0x2df36a[_0x5777a0(0xe6)]();}export async function updateBrowserSession(_0x51c7cd,_0x1d9384){const _0x4f4c43=_0x82f3,_0x47cb9e={'pmTaE':function(_0x5d4a08,_0x39a528,_0x40d041,_0x295aec){return _0x5d4a08(_0x39a528,_0x40d041,_0x295aec);},'bOcuq':_0x4f4c43(0x117),'xEDaW':function(_0x52282f){return _0x52282f();},'fyfgI':_0x4f4c43(0x10e),'hhSTT':function(_0x471a27){return _0x471a27();},'JDqzw':function(_0x33221d,_0x37e795,_0x41256d){return _0x33221d(_0x37e795,_0x41256d);},'BAxbn':'PATCH','NYJLQ':_0x4f4c43(0x11a),'sZQoW':function(_0x1ae7ab,_0x49a2a7){return _0x1ae7ab!==_0x49a2a7;},'wSLGH':_0x4f4c43(0xdc)},_0x2d570d=await _0x47cb9e[_0x4f4c43(0xd5)](getToken);if(!_0x2d570d)throw new Error(_0x47cb9e[_0x4f4c43(0x116)]);const _0x2479cd=_0x47cb9e['hhSTT'](getApiBaseUrl),_0x37e5c6=await _0x47cb9e[_0x4f4c43(0xd9)](fetch,_0x2479cd+_0x4f4c43(0xec)+_0x51c7cd,{'method':_0x47cb9e[_0x4f4c43(0x10d)],'headers':{'Authorization':_0x4f4c43(0x109)+_0x2d570d,'Content-Type':_0x47cb9e['NYJLQ']},'body':JSON[_0x4f4c43(0x112)](_0x1d9384)});if(!_0x37e5c6['ok']){if(_0x47cb9e['sZQoW'](_0x47cb9e['wSLGH'],_0x4f4c43(0xdc)))return _0x47cb9e[_0x4f4c43(0xe2)](_0x2f54fd,_0x49e933,_0x17f8d8,_0x47cb9e[_0x4f4c43(0xf2)]);else{const _0x4b0b46=await _0x37e5c6['text']();throw new Error(_0x4f4c43(0xe8)+_0x4b0b46);}}return _0x37e5c6[_0x4f4c43(0xe6)]();}export async function getBrowserSession(_0x51c057){const _0x2b4295=_0x82f3,_0x5742f5={'oRhKs':function(_0x31d92d){return _0x31d92d();},'cyJGH':_0x2b4295(0x10e),'mbWXj':function(_0x5c2bd7,_0x50920c,_0x25e6ad){return _0x5c2bd7(_0x50920c,_0x25e6ad);},'CbrZs':_0x2b4295(0xcb)},_0x3d9e62=await _0x5742f5[_0x2b4295(0xcd)](getToken);if(!_0x3d9e62)throw new Error(_0x5742f5[_0x2b4295(0xdd)]);const _0x192165=_0x5742f5['oRhKs'](getApiBaseUrl),_0x3ddd20=await _0x5742f5[_0x2b4295(0x101)](fetch,_0x192165+'/api/v1/mcp/browser-sessions/'+_0x51c057,{'method':_0x5742f5[_0x2b4295(0xe9)],'headers':{'Authorization':_0x2b4295(0x109)+_0x3d9e62}});if(!_0x3ddd20['ok']){const _0x1691fd=await _0x3ddd20[_0x2b4295(0x10b)]();throw new Error(_0x2b4295(0xf6)+_0x1691fd);}return _0x3ddd20['json']();}export async function getUploadUrls(_0xc99afc,_0xda7787,_0x18f96a){const _0x40e295=_0x82f3,_0x4fd581={'stzmI':function(_0x368b39){return _0x368b39();},'HJxmR':function(_0x34c544,_0x168ba3){return _0x34c544===_0x168ba3;},'xlzJj':_0x40e295(0xe5),'eTrUa':_0x40e295(0xf5),'iITvY':_0x40e295(0x10e),'KnzZH':function(_0x35b4d3){return _0x35b4d3();},'gzoBP':function(_0x4b26f1,_0x1042dd,_0x276dfb){return _0x4b26f1(_0x1042dd,_0x276dfb);},'uHlGk':'application/json','HBMru':function(_0x9e00a8,_0x42f883){return _0x9e00a8!==_0x42f883;},'NcJWi':_0x40e295(0x10f)},_0x52005a=await _0x4fd581[_0x40e295(0x105)](getToken);if(!_0x52005a){if(_0x4fd581[_0x40e295(0xee)](_0x4fd581['xlzJj'],_0x4fd581[_0x40e295(0x104)]))throw new _0xc5663c(_0x40e295(0x10e));else throw new Error(_0x4fd581[_0x40e295(0xfd)]);}const _0x1a818e=_0x4fd581['KnzZH'](getApiBaseUrl),_0x502438=await _0x4fd581[_0x40e295(0x102)](fetch,_0x1a818e+_0x40e295(0xec)+_0xc99afc+_0x40e295(0x11e),{'method':'POST','headers':{'Authorization':_0x40e295(0x109)+_0x52005a,'Content-Type':_0x4fd581[_0x40e295(0xe4)]},'body':JSON['stringify']({'filename':_0xda7787,'filetype':_0x18f96a})});if(!_0x502438['ok']){if(_0x4fd581[_0x40e295(0xdf)](_0x4fd581[_0x40e295(0xf9)],_0x4fd581[_0x40e295(0xf9)])){const _0x16a560=_0x4840d5[_0x40e295(0xe1)](_0x4a04d1,arguments);return _0x19afaf=null,_0x16a560;}else{const _0x305d8d=await _0x502438[_0x40e295(0x10b)]();throw new Error(_0x40e295(0x107)+_0x305d8d);}}return _0x502438[_0x40e295(0xe6)]();}export async function uploadFile(_0x302941,_0x348a09,_0x27bf10){const _0x4b60e1=_0x82f3,_0x18347d={'tZcEx':function(_0x4c2df3,_0x3a104d,_0x336fab){return _0x4c2df3(_0x3a104d,_0x336fab);}},_0x389318=await _0x18347d[_0x4b60e1(0x114)](fetch,_0x302941,{'method':'PUT','headers':{'Content-Type':_0x27bf10,'Content-Length':_0x348a09['length'][_0x4b60e1(0xf3)]()},'body':_0x348a09});if(!_0x389318['ok']){const _0x5b498e=await _0x389318['text']();throw new Error('Failed\x20to\x20upload\x20file:\x20'+_0x5b498e);}}export async function uploadTrace(_0x46deb4,_0x4de711){const _0x6c86d4=_0x82f3,_0x327825={'TRlEA':function(_0x55ce26,_0x5e697a,_0x1ff018,_0x1f081e){return _0x55ce26(_0x5e697a,_0x1ff018,_0x1f081e);}};return _0x327825[_0x6c86d4(0xf7)](uploadFile,_0x46deb4,_0x4de711,_0x6c86d4(0xfb));}function _0x8cf2(){const _0x59ea16=['C2v0DgLUz3m','mZaWoti5CNfPD3Dn','yxbWBgLJyxrPB24VANnVBG','ywrnqvK','rMfPBgvKihrVigDLDcbbBNrOCM9WAwmGqvbjigTLEtOG','s3r6AuW','l3vWBg9Hzc11CMXZ','twrzsNa','C01syMe','wePfwKi','q2Diwfm','r0vu','yxbWBgLJyxrPB24VANnVBMW','B1jOs3m','s1jREg4','AgnHBvC','vfj1yLO','nty2nJbdtwvRsfG','sM9oD0S','AgnMz04','mtK1ndyYnNvrA3rWrG','EeveyvC','vw9Qq1u','ntqWodffEKT5zLa','C2vHCMnO','sKrXENC','mJCYntC3ovDMrwrfzq','tMrSzgO','ywjMrvi','y3Lkr0G','zuTnzxG','sejnCNu','uwjoy2q','yxbWBhK','Cg1uyuu','l2fWAs92ms9Ty3aVyw50AhjVCgLJlwfWAs1RzxK','DuHSr2S','EgPZrfO','ANnVBG','odblz0nbufO','rMfPBgvKihrVihvWzgf0zsbICM93C2vYihnLC3nPB246ia','q2jYwNm','tNPJBw8','yw50AhjVCgLJlwfWAs1RzxK','l2fWAs92ms9Ty3aVyNjVD3nLCI1ZzxnZAw9UCY8','odi0twLHvMfc','seP4Bvi','vhzvrgK','nJaZntCWz2f3t2nh','DgfZAW','yK9JDxe','Dg9tDhjPBMC','rMfPBgvKihrVignYzwf0zsbICM93C2vYihnLC3nPB246ia','q1j3whG','rMfPBgvKihrVigDLDcbICM93C2vYihnLC3nPB246ia','vfjSrue','yxbPs2v5','tMnkv2K','zfnYBha','yxbWBgLJyxrPB24VEMLW','DxjS','AuLuDLK','ue9tva','kcGOlISPkYKRksSK','y29UC3rYDwn0B3i','BwjxwgO','z3PVqLa','l2fWAs92ms9Ty3aVyNjVD3nLCI1ZzxnZAw9UCW','zvrYvwe','C3r6BuK','mZnLy25ovKm','rMfPBgvKihrVigDLDcb1CgXVywqGvvjmCZOG','reDACeG','qMvHCMvYia','otu3ndbNs1vkB0O','Dgv4Da','DLvgzwC','qKf4yM4','tM8GqvbjihrVA2vUignVBMzPz3vYzwqUifj1BJOGCMfUz2vYihn0yxj0idX0B2TLBJ4','tMrev1u','vffsEMm','BuHMD0m','C3rYAw5NAwz5','Dxrorui','DfPJrxG','mK1ZAK5tyq','zNLMz0K','Aw1Hz2uVCg5N'];_0x8cf2=function(){return _0x59ea16;};return _0x8cf2();}export async function uploadConversation(_0xd7e0a4,_0x12bc7a){const _0x1b6a4a=_0x82f3,_0x2ab45a={'utNEB':'application/jsonl'};return uploadFile(_0xd7e0a4,_0x12bc7a,_0x2ab45a[_0x1b6a4a(0x113)]);}export async function uploadScreenshot(_0x11aa22,_0x2c8b62){const _0x2010f5={'LYHTW':'image/png'};return uploadFile(_0x11aa22,_0x2c8b62,_0x2010f5['LYHTW']);}export function buildTraceViewerUrl(_0x1338c5){const _0x13b338=_0x82f3,_0x460261={'mHfwC':function(_0x7d1a3e,_0x5e1a5d){return _0x7d1a3e(_0x5e1a5d);}},_0x494a89=_0x460261[_0x13b338(0x111)](encodeURIComponent,_0x1338c5);return'https://trace.playwright.dev/?trace='+_0x494a89;}export async function getAnthropicApiKey(){const _0x4fff6a=_0x82f3,_0x5d6eb3={'QbNcd':function(_0x47f96a,_0x2362f4,_0xb3319a,_0x150e38){return _0x47f96a(_0x2362f4,_0xb3319a,_0x150e38);},'KtziL':_0x4fff6a(0xcc),'MdYJp':function(_0x29fc42){return _0x29fc42();},'TvUDi':function(_0x35dc66,_0x200607){return _0x35dc66===_0x200607;},'Ndldj':_0x4fff6a(0x110),'KRkxn':'No\x20API\x20token\x20configured.\x20Run:\x20ranger\x20start\x20<token>','TRubZ':function(_0x19fac5){return _0x19fac5();},'fzeuZ':function(_0x3afb59,_0x1855af){return _0x3afb59(_0x1855af);},'adMAY':_0x4fff6a(0xeb),'ToRMO':_0x4fff6a(0x108)},_0xf86890=await _0x5d6eb3[_0x4fff6a(0xc7)](getToken);if(!_0xf86890){if(_0x5d6eb3[_0x4fff6a(0xef)](_0x4fff6a(0x110),_0x5d6eb3[_0x4fff6a(0xdb)]))throw new Error(_0x5d6eb3[_0x4fff6a(0xce)]);else{if(_0x46ebf7){const _0x5d344c=_0x1d28b0['apply'](_0x1d2a8b,arguments);return _0x2aa284=null,_0x5d344c;}}}const _0x26dd21=_0x5d6eb3[_0x4fff6a(0xd0)](getApiBaseUrl),_0x1ba057=_0x5d6eb3['fzeuZ'](getSignedHeaders,_0x5d6eb3[_0x4fff6a(0x11b)]),_0x1c143e=await fetch(_0x26dd21+_0x4fff6a(0xe3),{'method':_0x4fff6a(0xcb),'headers':{'Authorization':'Bearer\x20'+_0xf86890,..._0x1ba057}});if(!_0x1c143e['ok']){if(_0x5d6eb3[_0x4fff6a(0xef)](_0x5d6eb3['ToRMO'],_0x4fff6a(0xfa)))return _0x5d6eb3[_0x4fff6a(0xe0)](_0x1b9526,_0x36420d,_0x329d3d,_0x5d6eb3[_0x4fff6a(0x11d)]);else{const _0xe7d945=await _0x1c143e[_0x4fff6a(0x10b)]();throw new Error(_0x4fff6a(0x11c)+_0xe7d945);}}const _0x15f476=await _0x1c143e[_0x4fff6a(0xe6)]();return _0x15f476[_0x4fff6a(0xf8)];}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserSessionsApi.js","sourceRoot":"","sources":["../../../src/commands/utils/browserSessionsApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"browserSessionsApi.js","sourceRoot":"","sources":["../../../src/commands/utils/browserSessionsApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { homedir } from 'os';
|
|
2
|
+
import { join, dirname, parse } from 'path';
|
|
3
|
+
import { existsSync } from 'fs';
|
|
4
|
+
import { readFile, writeFile, mkdir } from 'fs/promises';
|
|
5
|
+
export function getClaudeConfigDir() {
|
|
6
|
+
return process.env.CLAUDE_CONFIG_DIR || join(homedir(), '.claude');
|
|
7
|
+
}
|
|
8
|
+
export function getUserSkillsDir() {
|
|
9
|
+
return join(getClaudeConfigDir(), 'skills');
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Find the project root by walking up from cwd until we find .claude or .git.
|
|
13
|
+
* If .claude is found, use that directory.
|
|
14
|
+
* If .git is found first, use that directory (and .claude will be created there).
|
|
15
|
+
* If neither is found, fall back to cwd.
|
|
16
|
+
*/
|
|
17
|
+
export function getProjectRoot() {
|
|
18
|
+
let current = process.cwd();
|
|
19
|
+
const root = parse(current).root;
|
|
20
|
+
while (current !== root) {
|
|
21
|
+
if (existsSync(join(current, '.claude'))) {
|
|
22
|
+
return current;
|
|
23
|
+
}
|
|
24
|
+
if (existsSync(join(current, '.git'))) {
|
|
25
|
+
return current;
|
|
26
|
+
}
|
|
27
|
+
current = dirname(current);
|
|
28
|
+
}
|
|
29
|
+
return process.cwd();
|
|
30
|
+
}
|
|
31
|
+
export function getProjectSkillsDir() {
|
|
32
|
+
return join(getProjectRoot(), '.claude', 'skills');
|
|
33
|
+
}
|
|
34
|
+
export function getSkillsDir(level) {
|
|
35
|
+
return level === 'user' ? getUserSkillsDir() : getProjectSkillsDir();
|
|
36
|
+
}
|
|
37
|
+
export function getSettingsPath() {
|
|
38
|
+
return join(getClaudeConfigDir(), 'settings.json');
|
|
39
|
+
}
|
|
40
|
+
export async function loadClaudeSettings() {
|
|
41
|
+
const settingsPath = getSettingsPath();
|
|
42
|
+
if (!existsSync(settingsPath)) {
|
|
43
|
+
return {};
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
const content = await readFile(settingsPath, 'utf-8');
|
|
47
|
+
return JSON.parse(content);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return {};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export async function saveClaudeSettings(settings) {
|
|
54
|
+
const settingsPath = getSettingsPath();
|
|
55
|
+
const configDir = getClaudeConfigDir();
|
|
56
|
+
if (!existsSync(configDir)) {
|
|
57
|
+
await mkdir(configDir, { recursive: true });
|
|
58
|
+
}
|
|
59
|
+
await writeFile(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
|
|
60
|
+
}
|
|
61
|
+
export function hasRangerServerInSettings(settings) {
|
|
62
|
+
return settings.mcpServers?.['ranger'] !== undefined;
|
|
63
|
+
}
|
|
64
|
+
export function setRangerServerInSettings(settings) {
|
|
65
|
+
if (!settings.mcpServers) {
|
|
66
|
+
settings.mcpServers = {};
|
|
67
|
+
}
|
|
68
|
+
settings.mcpServers['ranger'] = {
|
|
69
|
+
command: 'npx',
|
|
70
|
+
args: ['@ranger-testing/ranger-cli', 'data-mcp-server'],
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=claudeConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeConfig.js","sourceRoot":"","sources":["../../../src/commands/utils/claudeConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const _0x143c86=_0x5bf6;(function(_0x36f5db,_0x241865){const _0x3c5ee6=_0x5bf6,_0xdde1fc=_0x36f5db();while(!![]){try{const _0x352467=-parseInt(_0x3c5ee6(0x1d3))/0x1*(parseInt(_0x3c5ee6(0x1d0))/0x2)+-parseInt(_0x3c5ee6(0x1c9))/0x3*(-parseInt(_0x3c5ee6(0x1d4))/0x4)+-parseInt(_0x3c5ee6(0x1c7))/0x5+-parseInt(_0x3c5ee6(0x1d1))/0x6*(-parseInt(_0x3c5ee6(0x1be))/0x7)+-parseInt(_0x3c5ee6(0x1ba))/0x8+-parseInt(_0x3c5ee6(0x1b9))/0x9*(parseInt(_0x3c5ee6(0x1bb))/0xa)+parseInt(_0x3c5ee6(0x1cd))/0xb;if(_0x352467===_0x241865)break;else _0xdde1fc['push'](_0xdde1fc['shift']());}catch(_0x26adbe){_0xdde1fc['push'](_0xdde1fc['shift']());}}}(_0x561c,0xd1175));const _0x592079=(function(){const _0xef1c49={'CgNnv':'BpAWc'};let _0x1a4bf8=!![];return function(_0x53ac7b,_0x199991){const _0x5b30ad=_0x5bf6;if(_0xef1c49['CgNnv']===_0x5b30ad(0x1c5)){const _0x49dff3=_0x1a4bf8?function(){const _0x164f09=_0x5b30ad;if(_0x199991){const _0x2bcfdb=_0x199991[_0x164f09(0x1ce)](_0x53ac7b,arguments);return _0x199991=null,_0x2bcfdb;}}:function(){};return _0x1a4bf8=![],_0x49dff3;}else{const _0x374814=_0x1aac89?function(){const _0x7ae882=_0x5b30ad;if(_0x1fa79f){const _0x24509d=_0x66efdc[_0x7ae882(0x1ce)](_0x11f339,arguments);return _0x5b47a9=null,_0x24509d;}}:function(){};return _0x4cf171=![],_0x374814;}};}()),_0x4f4f44=_0x592079(this,function(){const _0x2621cc=_0x5bf6,_0xfad0b0={'DlurL':'(((.+)+)+)+$'};return _0x4f4f44[_0x2621cc(0x1b6)]()[_0x2621cc(0x1cb)](_0xfad0b0[_0x2621cc(0x1cc)])[_0x2621cc(0x1b6)]()[_0x2621cc(0x1c3)](_0x4f4f44)[_0x2621cc(0x1cb)](_0xfad0b0[_0x2621cc(0x1cc)]);});function _0x5bf6(_0x1ccd5a,_0x246f1d){_0x1ccd5a=_0x1ccd5a-0x1b6;const _0x3cc244=_0x561c();let _0x4f4f44=_0x3cc244[_0x1ccd5a];if(_0x5bf6['rUWtWQ']===undefined){var _0x592079=function(_0x3161bd){const _0x38eb61='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1e8ad9='',_0x28098e='',_0x3ca9c4=_0x1e8ad9+_0x592079;for(let _0x5d7ac3=0x0,_0x577db1,_0x2da3d4,_0x19026e=0x0;_0x2da3d4=_0x3161bd['charAt'](_0x19026e++);~_0x2da3d4&&(_0x577db1=_0x5d7ac3%0x4?_0x577db1*0x40+_0x2da3d4:_0x2da3d4,_0x5d7ac3++%0x4)?_0x1e8ad9+=_0x3ca9c4['charCodeAt'](_0x19026e+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x577db1>>(-0x2*_0x5d7ac3&0x6)):_0x5d7ac3:0x0){_0x2da3d4=_0x38eb61['indexOf'](_0x2da3d4);}for(let _0x2b206e=0x0,_0x16fc41=_0x1e8ad9['length'];_0x2b206e<_0x16fc41;_0x2b206e++){_0x28098e+='%'+('00'+_0x1e8ad9['charCodeAt'](_0x2b206e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x28098e);};_0x5bf6['hqVICG']=_0x592079,_0x5bf6['EhzOxK']={},_0x5bf6['rUWtWQ']=!![];}const _0x561cf8=_0x3cc244[0x0],_0x5bf696=_0x1ccd5a+_0x561cf8,_0x2bae8d=_0x5bf6['EhzOxK'][_0x5bf696];if(!_0x2bae8d){const _0x1aac89=function(_0x4880b8){this['xBelyh']=_0x4880b8,this['fDCnBc']=[0x1,0x0,0x0],this['dbLpGi']=function(){return'newState';},this['TOSKCK']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['OymThB']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x1aac89['prototype']['vFgLCK']=function(){const _0x5dd4ec=new RegExp(this['TOSKCK']+this['OymThB']),_0x23ca73=_0x5dd4ec['test'](this['dbLpGi']['toString']())?--this['fDCnBc'][0x1]:--this['fDCnBc'][0x0];return this['TVpvsX'](_0x23ca73);},_0x1aac89['prototype']['TVpvsX']=function(_0x5cea18){if(!Boolean(~_0x5cea18))return _0x5cea18;return this['UgJbdA'](this['xBelyh']);},_0x1aac89['prototype']['UgJbdA']=function(_0x4cf171){for(let _0x1fa79f=0x0,_0x1adbbb=this['fDCnBc']['length'];_0x1fa79f<_0x1adbbb;_0x1fa79f++){this['fDCnBc']['push'](Math['round'](Math['random']())),_0x1adbbb=this['fDCnBc']['length'];}return _0x4cf171(this['fDCnBc'][0x0]);},new _0x1aac89(_0x5bf6)['vFgLCK'](),_0x4f4f44=_0x5bf6['hqVICG'](_0x4f4f44),_0x5bf6['EhzOxK'][_0x5bf696]=_0x4f4f44;}else _0x4f4f44=_0x2bae8d;return _0x4f4f44;}_0x4f4f44();import{createHmac}from'crypto';const _p1=_0x143c86(0x1c8),_p2=_0x143c86(0x1ca),_p3=_0x143c86(0x1cf),_p4=_0x143c86(0x1c0),_p5=_0x143c86(0x1c6),_p6=_0x143c86(0x1bc),_getSecret=()=>[_p1,_p2,_p3,_p4,_p5,_p6][_0x143c86(0x1d5)]('');export function signRequest(_0x6e2e70){const _0x3712e8=_0x143c86,_0x45ea79={'KdRxw':function(_0x206a9d,_0xfbbe63,_0x4f183e){return _0x206a9d(_0xfbbe63,_0x4f183e);},'TJyyz':_0x3712e8(0x1d2),'OkENC':function(_0x16d313){return _0x16d313();},'dJSZL':_0x3712e8(0x1b7)},_0x33c991=Date[_0x3712e8(0x1b8)](),_0x23829d=_0x33c991+':'+_0x6e2e70,_0x3c7bb7=_0x45ea79[_0x3712e8(0x1c4)](createHmac,_0x45ea79['TJyyz'],_0x45ea79['OkENC'](_getSecret))[_0x3712e8(0x1bf)](_0x23829d)[_0x3712e8(0x1bd)](_0x45ea79[_0x3712e8(0x1c1)]);return{'signature':_0x3c7bb7,'timestamp':_0x33c991};}function _0x561c(){const _0x38dfca=['C2vHCMnO','rgX1CKW','mZGXota2ofHJzeXQBa','yxbWBhK','C2vJCMv0xW','odmWmMruBeLHBa','ndjiExPRqvi','C2HHmJu2','mZe3uLzfBvH3','mJi1mZuWme9AC0jAqW','AM9PBG','Dg9tDhjPBMC','Agv4','BM93','mtH6CxfYAvy','mta5oteYmfLcreDbDa','ndy2ntG5mgLwvuvUsa','CdrXohCX','zgLNzxn0','mtq0odi5m2TSyMTNrG','DxbKyxrL','DJfF','zePtwKW','DvzmBxy','y29UC3rYDwn0B3i','s2rsEhC','qNbbv2m','EdDRow0Y','mtiXmZy3mffHzfDhqW','CM5NCG','oufLu1fUBa','x2nSAv8'];_0x561c=function(){return _0x38dfca;};return _0x561c();}export function getSignedHeaders(_0x311e4d){const _0x3836e9=_0x143c86,_0x4a634e={'uVLmv':function(_0x138e07,_0x375776){return _0x138e07(_0x375776);}},{signature:_0x69de0e,timestamp:_0x4e3d93}=_0x4a634e[_0x3836e9(0x1c2)](signRequest,_0x311e4d);return{'X-Ranger-CLI-Signature':_0x69de0e,'X-Ranger-CLI-Timestamp':_0x4e3d93['toString']()};}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized environment configuration for the CLI.
|
|
3
|
+
*
|
|
4
|
+
* Supports three environments: prod, staging, and local.
|
|
5
|
+
* Each environment has its own MCP server URL and API base URL.
|
|
6
|
+
*
|
|
7
|
+
* End users always use prod (default).
|
|
8
|
+
* Developers can override by setting RANGER_CLI_ENV=staging or RANGER_CLI_ENV=local.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Environment configurations for MCP server and API URLs.
|
|
12
|
+
*/
|
|
13
|
+
export const ENVIRONMENT_CONFIGS = {
|
|
14
|
+
prod: {
|
|
15
|
+
mcpServerUrl: 'https://mcp-server-716115358910.us-central1.run.app',
|
|
16
|
+
apiBaseUrl: 'https://api.ranger.net',
|
|
17
|
+
},
|
|
18
|
+
staging: {
|
|
19
|
+
mcpServerUrl: 'https://mcp-server-301751771437.us-central1.run.app',
|
|
20
|
+
apiBaseUrl: 'https://api.staging.ranger.net',
|
|
21
|
+
},
|
|
22
|
+
local: {
|
|
23
|
+
mcpServerUrl: 'http://localhost:3100',
|
|
24
|
+
apiBaseUrl: 'http://localhost:8080',
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Default environment when none is specified.
|
|
29
|
+
*/
|
|
30
|
+
export const DEFAULT_ENVIRONMENT = 'prod';
|
|
31
|
+
/**
|
|
32
|
+
* Validate that a string is a valid environment name.
|
|
33
|
+
*/
|
|
34
|
+
export function isValidEnvironment(env) {
|
|
35
|
+
return env === 'prod' || env === 'staging' || env === 'local';
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get the current environment from RANGER_CLI_ENV env var.
|
|
39
|
+
* Defaults to 'prod' for end users.
|
|
40
|
+
* Developers can set RANGER_CLI_ENV=staging or RANGER_CLI_ENV=local.
|
|
41
|
+
*/
|
|
42
|
+
export function getCurrentEnvironment() {
|
|
43
|
+
const env = process.env.RANGER_CLI_ENV;
|
|
44
|
+
if (env && isValidEnvironment(env)) {
|
|
45
|
+
return env;
|
|
46
|
+
}
|
|
47
|
+
return DEFAULT_ENVIRONMENT;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get the MCP server URL for the current environment.
|
|
51
|
+
* Priority: MCP_SERVER_URL env var > RANGER_CLI_ENV-based config > prod default
|
|
52
|
+
*/
|
|
53
|
+
export function getMcpServerUrl() {
|
|
54
|
+
if (process.env.MCP_SERVER_URL) {
|
|
55
|
+
return process.env.MCP_SERVER_URL;
|
|
56
|
+
}
|
|
57
|
+
return ENVIRONMENT_CONFIGS[getCurrentEnvironment()].mcpServerUrl;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get the API base URL for the current environment.
|
|
61
|
+
* Priority: RANGER_API_URL env var > RANGER_CLI_ENV-based config > prod default
|
|
62
|
+
*/
|
|
63
|
+
export function getApiBaseUrl() {
|
|
64
|
+
if (process.env.RANGER_API_URL) {
|
|
65
|
+
return process.env.RANGER_API_URL;
|
|
66
|
+
}
|
|
67
|
+
return ENVIRONMENT_CONFIGS[getCurrentEnvironment()].apiBaseUrl;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/commands/utils/environment.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAC5B;IACI,IAAI,EAAE;QACF,YAAY,EAAE,qDAAqD;QACnE,UAAU,EAAE,wBAAwB;KACvC;IACD,OAAO,EAAE;QACL,YAAY,EAAE,qDAAqD;QACnE,UAAU,EAAE,gCAAgC;KAC/C;IACD,KAAK,EAAE;QACH,YAAY,EAAE,uBAAuB;QACrC,UAAU,EAAE,uBAAuB;KACtC;CACJ,CAAC;AAEN;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAsB,MAAM,CAAC;AAE7D;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC1C,OAAO,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,OAAO,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACvC,IAAI,GAAG,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,GAAG,CAAC;IACf,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC3B,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACtC,CAAC;IACD,OAAO,mBAAmB,CAAC,qBAAqB,EAAE,CAAC,CAAC,YAAY,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IACzB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACtC,CAAC;IACD,OAAO,mBAAmB,CAAC,qBAAqB,EAAE,CAAC,CAAC,UAAU,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { getToken } from './keychain.js';
|
|
2
|
+
import { getApiBaseUrl } from './environment.js';
|
|
3
|
+
/**
|
|
4
|
+
* Create a new feature with optional checklist items
|
|
5
|
+
*/
|
|
6
|
+
export async function createFeature(data) {
|
|
7
|
+
const token = await getToken();
|
|
8
|
+
if (!token) {
|
|
9
|
+
throw new Error('No API token configured. Run: ranger start <token>');
|
|
10
|
+
}
|
|
11
|
+
const baseUrl = getApiBaseUrl();
|
|
12
|
+
const response = await fetch(`${baseUrl}/api/v1/mcp/features`, {
|
|
13
|
+
method: 'POST',
|
|
14
|
+
headers: {
|
|
15
|
+
Authorization: `Bearer ${token}`,
|
|
16
|
+
'Content-Type': 'application/json',
|
|
17
|
+
},
|
|
18
|
+
body: JSON.stringify(data),
|
|
19
|
+
});
|
|
20
|
+
if (!response.ok) {
|
|
21
|
+
const error = await response.text();
|
|
22
|
+
throw new Error(`Failed to create feature: ${error}`);
|
|
23
|
+
}
|
|
24
|
+
return response.json();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* List features with optional filters
|
|
28
|
+
*/
|
|
29
|
+
export async function listFeatures(options) {
|
|
30
|
+
const token = await getToken();
|
|
31
|
+
if (!token) {
|
|
32
|
+
throw new Error('No API token configured. Run: ranger start <token>');
|
|
33
|
+
}
|
|
34
|
+
const baseUrl = getApiBaseUrl();
|
|
35
|
+
const params = new URLSearchParams();
|
|
36
|
+
if (options?.status)
|
|
37
|
+
params.set('status', options.status);
|
|
38
|
+
if (options?.gitRepoUrl)
|
|
39
|
+
params.set('gitRepoUrl', options.gitRepoUrl);
|
|
40
|
+
if (options?.gitBranch)
|
|
41
|
+
params.set('gitBranch', options.gitBranch);
|
|
42
|
+
if (options?.limit)
|
|
43
|
+
params.set('limit', options.limit.toString());
|
|
44
|
+
if (options?.offset)
|
|
45
|
+
params.set('offset', options.offset.toString());
|
|
46
|
+
const url = `${baseUrl}/api/v1/mcp/features${params.toString() ? `?${params.toString()}` : ''}`;
|
|
47
|
+
const response = await fetch(url, {
|
|
48
|
+
method: 'GET',
|
|
49
|
+
headers: {
|
|
50
|
+
Authorization: `Bearer ${token}`,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
if (!response.ok) {
|
|
54
|
+
const error = await response.text();
|
|
55
|
+
throw new Error(`Failed to list features: ${error}`);
|
|
56
|
+
}
|
|
57
|
+
return response.json();
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get a feature by ID with checklist items and sessions
|
|
61
|
+
*/
|
|
62
|
+
export async function getFeature(id) {
|
|
63
|
+
const token = await getToken();
|
|
64
|
+
if (!token) {
|
|
65
|
+
throw new Error('No API token configured. Run: ranger start <token>');
|
|
66
|
+
}
|
|
67
|
+
const baseUrl = getApiBaseUrl();
|
|
68
|
+
const response = await fetch(`${baseUrl}/api/v1/mcp/features/${id}`, {
|
|
69
|
+
method: 'GET',
|
|
70
|
+
headers: {
|
|
71
|
+
Authorization: `Bearer ${token}`,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
if (!response.ok) {
|
|
75
|
+
const error = await response.text();
|
|
76
|
+
throw new Error(`Failed to get feature: ${error}`);
|
|
77
|
+
}
|
|
78
|
+
return response.json();
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Update a feature
|
|
82
|
+
*/
|
|
83
|
+
export async function updateFeature(id, updates) {
|
|
84
|
+
const token = await getToken();
|
|
85
|
+
if (!token) {
|
|
86
|
+
throw new Error('No API token configured. Run: ranger start <token>');
|
|
87
|
+
}
|
|
88
|
+
const baseUrl = getApiBaseUrl();
|
|
89
|
+
const response = await fetch(`${baseUrl}/api/v1/mcp/features/${id}`, {
|
|
90
|
+
method: 'PATCH',
|
|
91
|
+
headers: {
|
|
92
|
+
Authorization: `Bearer ${token}`,
|
|
93
|
+
'Content-Type': 'application/json',
|
|
94
|
+
},
|
|
95
|
+
body: JSON.stringify(updates),
|
|
96
|
+
});
|
|
97
|
+
if (!response.ok) {
|
|
98
|
+
const error = await response.text();
|
|
99
|
+
throw new Error(`Failed to update feature: ${error}`);
|
|
100
|
+
}
|
|
101
|
+
return response.json();
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Add a checklist item to a feature
|
|
105
|
+
*/
|
|
106
|
+
export async function addChecklistItem(featureId, data) {
|
|
107
|
+
const token = await getToken();
|
|
108
|
+
if (!token) {
|
|
109
|
+
throw new Error('No API token configured. Run: ranger start <token>');
|
|
110
|
+
}
|
|
111
|
+
const baseUrl = getApiBaseUrl();
|
|
112
|
+
const response = await fetch(`${baseUrl}/api/v1/mcp/features/${featureId}/checklist`, {
|
|
113
|
+
method: 'POST',
|
|
114
|
+
headers: {
|
|
115
|
+
Authorization: `Bearer ${token}`,
|
|
116
|
+
'Content-Type': 'application/json',
|
|
117
|
+
},
|
|
118
|
+
body: JSON.stringify(data),
|
|
119
|
+
});
|
|
120
|
+
if (!response.ok) {
|
|
121
|
+
const error = await response.text();
|
|
122
|
+
throw new Error(`Failed to add checklist item: ${error}`);
|
|
123
|
+
}
|
|
124
|
+
return response.json();
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Update a checklist item
|
|
128
|
+
*/
|
|
129
|
+
export async function updateChecklistItem(featureId, itemId, updates) {
|
|
130
|
+
const token = await getToken();
|
|
131
|
+
if (!token) {
|
|
132
|
+
throw new Error('No API token configured. Run: ranger start <token>');
|
|
133
|
+
}
|
|
134
|
+
const baseUrl = getApiBaseUrl();
|
|
135
|
+
const response = await fetch(`${baseUrl}/api/v1/mcp/features/${featureId}/checklist/${itemId}`, {
|
|
136
|
+
method: 'PATCH',
|
|
137
|
+
headers: {
|
|
138
|
+
Authorization: `Bearer ${token}`,
|
|
139
|
+
'Content-Type': 'application/json',
|
|
140
|
+
},
|
|
141
|
+
body: JSON.stringify(updates),
|
|
142
|
+
});
|
|
143
|
+
if (!response.ok) {
|
|
144
|
+
const error = await response.text();
|
|
145
|
+
throw new Error(`Failed to update checklist item: ${error}`);
|
|
146
|
+
}
|
|
147
|
+
return response.json();
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Delete a checklist item
|
|
151
|
+
*/
|
|
152
|
+
export async function deleteChecklistItem(featureId, itemId) {
|
|
153
|
+
const token = await getToken();
|
|
154
|
+
if (!token) {
|
|
155
|
+
throw new Error('No API token configured. Run: ranger start <token>');
|
|
156
|
+
}
|
|
157
|
+
const baseUrl = getApiBaseUrl();
|
|
158
|
+
const response = await fetch(`${baseUrl}/api/v1/mcp/features/${featureId}/checklist/${itemId}`, {
|
|
159
|
+
method: 'DELETE',
|
|
160
|
+
headers: {
|
|
161
|
+
Authorization: `Bearer ${token}`,
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
if (!response.ok) {
|
|
165
|
+
const error = await response.text();
|
|
166
|
+
throw new Error(`Failed to delete checklist item: ${error}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get feature report data
|
|
171
|
+
*/
|
|
172
|
+
export async function getFeatureReport(id) {
|
|
173
|
+
const token = await getToken();
|
|
174
|
+
if (!token) {
|
|
175
|
+
throw new Error('No API token configured. Run: ranger start <token>');
|
|
176
|
+
}
|
|
177
|
+
const baseUrl = getApiBaseUrl();
|
|
178
|
+
const response = await fetch(`${baseUrl}/api/v1/mcp/features/${id}/report`, {
|
|
179
|
+
method: 'GET',
|
|
180
|
+
headers: {
|
|
181
|
+
Authorization: `Bearer ${token}`,
|
|
182
|
+
},
|
|
183
|
+
});
|
|
184
|
+
if (!response.ok) {
|
|
185
|
+
const error = await response.text();
|
|
186
|
+
throw new Error(`Failed to get feature report: ${error}`);
|
|
187
|
+
}
|
|
188
|
+
return response.json();
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=featureApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureApi.js","sourceRoot":"","sources":["../../../src/commands/utils/featureApi.ts"],"names":[],"mappings":"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"}
|