@ranger-testing/ranger-cli 1.0.9 → 1.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +111 -0
- package/build/cli.js +245 -8
- package/build/cli.js.map +1 -1
- package/build/commands/addEnv.js +1 -1
- package/build/commands/addEnv.js.map +1 -1
- package/build/commands/clean.js +1 -1
- package/build/commands/clean.js.map +1 -1
- package/build/commands/dataMcpServer.js +1 -1
- package/build/commands/dataMcpServer.js.map +1 -1
- package/build/commands/env.js +46 -0
- package/build/commands/env.js.map +1 -0
- package/build/commands/feature.js +494 -0
- package/build/commands/feature.js.map +1 -0
- package/build/commands/index.js +1 -0
- package/build/commands/index.js.map +1 -1
- package/build/commands/skillup.js +67 -16
- package/build/commands/skillup.js.map +1 -1
- package/build/commands/start.js +1 -1
- package/build/commands/start.js.map +1 -1
- package/build/commands/status.js +45 -51
- package/build/commands/status.js.map +1 -1
- package/build/commands/update.js +32 -52
- package/build/commands/update.js.map +1 -1
- package/build/commands/updateEnv.js +1 -1
- package/build/commands/updateEnv.js.map +1 -1
- package/build/commands/useEnv.js +1 -1
- package/build/commands/useEnv.js.map +1 -1
- package/build/commands/utils/browserSessionsApi.js +1 -1
- package/build/commands/utils/browserSessionsApi.js.map +1 -1
- package/build/commands/utils/claudeConfig.js +73 -0
- package/build/commands/utils/claudeConfig.js.map +1 -0
- package/build/commands/utils/cliSecret.js +1 -1
- package/build/commands/utils/environment.js +69 -0
- package/build/commands/utils/environment.js.map +1 -0
- package/build/commands/utils/featureApi.js +190 -0
- package/build/commands/utils/featureApi.js.map +1 -0
- package/build/commands/utils/featureReportGenerator.js +170 -0
- package/build/commands/utils/featureReportGenerator.js.map +1 -0
- package/build/commands/utils/keychain.js +1 -1
- package/build/commands/utils/localAgentInstallationsApi.js +1 -1
- package/build/commands/utils/localAgentInstallationsApi.js.map +1 -1
- package/build/commands/utils/mcpConfig.js +1 -1
- package/build/commands/utils/settings.js +2 -2
- package/build/commands/utils/settings.js.map +1 -1
- package/build/commands/utils/skills.js +1 -1
- package/build/commands/utils/skills.js.map +1 -1
- package/build/commands/verifyFeature.js +451 -0
- package/build/commands/verifyFeature.js.map +1 -0
- package/build/commands/verifyInBrowser.js +1 -1
- package/build/commands/verifyInBrowser.js.map +1 -1
- package/build/skills/bug-bash.md +4 -9
- package/build/skills/e2e-test-recommender.md +5 -10
- package/build/skills/feature-tracker/SKILL.md +185 -0
- package/build/skills/feature-tracker/create.md +105 -0
- package/build/skills/feature-tracker/manage.md +145 -0
- package/build/skills/feature-tracker/report.md +159 -0
- package/build/skills/feature-tracker/start.md +93 -0
- package/build/skills/feature-tracker/verify.md +143 -0
- package/package.json +23 -20
- package/build/agents/bug-basher.md +0 -259
- package/build/agents/e2e-test-recommender.md +0 -164
- package/build/agents/quality-advocate.md +0 -164
- package/build/agents/ui-verifier.md +0 -100
- package/build/commands/addApp.js +0 -21
- package/build/commands/initAgents.js +0 -84
- package/build/commands/utils/agents.js +0 -45
- package/build/index.js +0 -436
- package/build/test-auth.js +0 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { readFile, readdir } from 'fs/promises';
|
|
2
|
-
import { join } from 'path';
|
|
2
|
+
import { join, basename } from 'path';
|
|
3
3
|
import { existsSync } from 'fs';
|
|
4
|
+
import inquirer from 'inquirer';
|
|
4
5
|
import { getToken } from './utils/keychain.js';
|
|
5
6
|
import { installSkill } from './utils/skills.js';
|
|
6
7
|
import { loadMcpConfig, saveMcpConfig, hasRangerServer, setRangerServer, } from './utils/mcpConfig.js';
|
|
8
|
+
import { getCurrentVersion } from './utils/version.js';
|
|
9
|
+
import { getClaudeConfigDir, getProjectRoot, loadClaudeSettings, saveClaudeSettings, hasRangerServerInSettings, setRangerServerInSettings, } from './utils/claudeConfig.js';
|
|
7
10
|
/**
|
|
8
11
|
* Get list of available environment names from .ranger directory
|
|
9
12
|
*/
|
|
@@ -21,7 +24,6 @@ async function getAvailableEnvs(rangerDir) {
|
|
|
21
24
|
}
|
|
22
25
|
export async function skillup() {
|
|
23
26
|
console.log('\n🎯 Ranger Skill Setup\n');
|
|
24
|
-
// Check for API token in keychain
|
|
25
27
|
const token = await getToken();
|
|
26
28
|
if (!token) {
|
|
27
29
|
console.log('❌ No Ranger API token found in keychain.\n');
|
|
@@ -32,7 +34,6 @@ export async function skillup() {
|
|
|
32
34
|
return;
|
|
33
35
|
}
|
|
34
36
|
console.log('✓ Found API token in keychain');
|
|
35
|
-
// Check for active environment
|
|
36
37
|
const rangerDir = join(process.cwd(), '.ranger');
|
|
37
38
|
const activeEnvPath = join(rangerDir, 'active-env.txt');
|
|
38
39
|
const hasActiveEnv = existsSync(activeEnvPath);
|
|
@@ -42,34 +43,65 @@ export async function skillup() {
|
|
|
42
43
|
activeEnv = (await readFile(activeEnvPath, 'utf-8')).trim();
|
|
43
44
|
console.log(`✓ Found active environment: ${activeEnv}`);
|
|
44
45
|
}
|
|
45
|
-
catch
|
|
46
|
-
// File exists but couldn't read it
|
|
46
|
+
catch {
|
|
47
47
|
console.warn(' Could not read active environment');
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
+
const projectRoot = getProjectRoot();
|
|
51
|
+
const projectName = basename(projectRoot);
|
|
52
|
+
const { installLevel } = await inquirer.prompt([
|
|
53
|
+
{
|
|
54
|
+
type: 'list',
|
|
55
|
+
name: 'installLevel',
|
|
56
|
+
message: 'Where should skills be installed?',
|
|
57
|
+
choices: [
|
|
58
|
+
{
|
|
59
|
+
name: `All projects (${getClaudeConfigDir()}/skills/)`,
|
|
60
|
+
value: 'user',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: `This project only (${projectName}/.claude/skills/)`,
|
|
64
|
+
value: 'project',
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
]);
|
|
50
69
|
let installedCount = 0;
|
|
51
|
-
|
|
70
|
+
const cliVersion = getCurrentVersion();
|
|
52
71
|
console.log('\n📦 Installing skills...\n');
|
|
53
72
|
try {
|
|
54
|
-
const installed = await installSkill('e2e-test-recommender'
|
|
73
|
+
const installed = await installSkill('e2e-test-recommender', {
|
|
74
|
+
level: installLevel,
|
|
75
|
+
cliVersion,
|
|
76
|
+
});
|
|
55
77
|
if (installed) {
|
|
56
78
|
installedCount++;
|
|
57
|
-
|
|
58
|
-
const mcpConfig = await loadMcpConfig();
|
|
59
|
-
if (!hasRangerServer(mcpConfig)) {
|
|
60
|
-
setRangerServer(mcpConfig);
|
|
61
|
-
await saveMcpConfig(mcpConfig);
|
|
62
|
-
console.log(' ✓ Added ranger data-mcp-server to .mcp.json');
|
|
63
|
-
}
|
|
79
|
+
await configureMcpServer(installLevel);
|
|
64
80
|
}
|
|
65
81
|
}
|
|
66
82
|
catch (error) {
|
|
67
83
|
console.warn(' Failed to install e2e-test-recommender skill:', error instanceof Error ? error.message : error);
|
|
68
84
|
}
|
|
85
|
+
// Install feature-tracker (requires API token only)
|
|
86
|
+
try {
|
|
87
|
+
const featureTrackerInstalled = await installSkill('feature-tracker', {
|
|
88
|
+
cliVersion,
|
|
89
|
+
level: installLevel,
|
|
90
|
+
});
|
|
91
|
+
if (featureTrackerInstalled) {
|
|
92
|
+
installedCount++;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
console.warn(' Failed to install feature-tracker skill:', error instanceof Error ? error.message : error);
|
|
97
|
+
}
|
|
69
98
|
// Install bug-bash (requires API token AND active environment)
|
|
70
99
|
if (activeEnv) {
|
|
71
100
|
try {
|
|
72
|
-
const installed = await installSkill('bug-bash'
|
|
101
|
+
const installed = await installSkill('bug-bash', {
|
|
102
|
+
level: installLevel,
|
|
103
|
+
cliVersion,
|
|
104
|
+
});
|
|
73
105
|
if (installed) {
|
|
74
106
|
installedCount++;
|
|
75
107
|
}
|
|
@@ -100,7 +132,8 @@ export async function skillup() {
|
|
|
100
132
|
console.log(' 2. Run: ranger skillup\n');
|
|
101
133
|
}
|
|
102
134
|
if (installedCount > 0) {
|
|
103
|
-
|
|
135
|
+
const levelDesc = installLevel === 'user' ? 'user-level' : 'project-level';
|
|
136
|
+
console.log(`\n✅ Installed ${installedCount} ${levelDesc} skill${installedCount > 1 ? 's' : ''} successfully!\n`);
|
|
104
137
|
console.log('To use skills in Claude Code:');
|
|
105
138
|
console.log(' - Type / and select a skill from the menu');
|
|
106
139
|
console.log(' - Or ask Claude to help with testing or bug hunting\n');
|
|
@@ -109,4 +142,22 @@ export async function skillup() {
|
|
|
109
142
|
console.log('\n⚠️ No skills were installed.\n');
|
|
110
143
|
}
|
|
111
144
|
}
|
|
145
|
+
async function configureMcpServer(level) {
|
|
146
|
+
if (level === 'user') {
|
|
147
|
+
const settings = await loadClaudeSettings();
|
|
148
|
+
if (!hasRangerServerInSettings(settings)) {
|
|
149
|
+
setRangerServerInSettings(settings);
|
|
150
|
+
await saveClaudeSettings(settings);
|
|
151
|
+
console.log(` ✓ Added ranger data-mcp-server to ${getClaudeConfigDir()}/settings.json`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
const mcpConfig = await loadMcpConfig();
|
|
156
|
+
if (!hasRangerServer(mcpConfig)) {
|
|
157
|
+
setRangerServer(mcpConfig);
|
|
158
|
+
await saveMcpConfig(mcpConfig);
|
|
159
|
+
console.log(' ✓ Added ranger data-mcp-server to .mcp.json');
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
112
163
|
//# sourceMappingURL=skillup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillup.js","sourceRoot":"","sources":["../../src/commands/skillup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"skillup.js","sourceRoot":"","sources":["../../src/commands/skillup.ts"],"names":[],"mappings":"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"}
|
package/build/commands/start.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x1a37c1,_0x11de78){const _0x3c8194=_0x7622,_0x138de9=_0x1a37c1();while(!![]){try{const _0x816213=parseInt(_0x3c8194(0x108))/0x1*(-parseInt(_0x3c8194(0xcd))/0x2)+parseInt(_0x3c8194(0x100))/0x3*(parseInt(_0x3c8194(0xd4))/0x4)+-parseInt(_0x3c8194(0xf3))/0x5*(parseInt(_0x3c8194(0xf6))/0x6)+parseInt(_0x3c8194(0xe7))/0x7*(-parseInt(_0x3c8194(0xe6))/0x8)+-parseInt(_0x3c8194(0xfd))/0x9+-parseInt(_0x3c8194(0xf5))/0xa*(-parseInt(_0x3c8194(0xcf))/0xb)+parseInt(_0x3c8194(0xdb))/0xc;if(_0x816213===_0x11de78)break;else _0x138de9['push'](_0x138de9['shift']());}catch(_0x45d546){_0x138de9['push'](_0x138de9['shift']());}}}(_0x2ba5,0x46e60));import{mkdir,writeFile}from'fs/promises';import{join}from'path';import{existsSync}from'fs';import{createRequire}from'module';import{spawn}from'child_process';import _0x58a208 from'inquirer';import{loadMcpConfig,saveMcpConfig,setRangerServer}from'./utils/mcpConfig.js';import{storeToken,storeServerUrl}from'./utils/keychain.js';import{getMcpServerUrl}from'./utils/environment.js';function _0x2ba5(){const _0x4e78e6=['inherit','rgLfH','error','rUAkB','✓\x20Stored\x20credentials\x20in\x20OS\x20Keychain','log','.gitignore','\x20\x202.\x20Install\x20skills\x20for\x20Claude\x20Code:','vptyK','120584Qhcmbd','175nfwDvm','install','status','✓\x20Created/updated\x20.mcp.json\x20with\x20Ranger\x20MCP\x20proxy','\x20\x201.\x20Add\x20an\x20environment:','KdnWF','playwright/package.json','rWycA','✓\x20Playwright\x20Chromium\x20browser\x20found','Required\x20Playwright\x20Chromium\x20browser\x20is\x20missing.\x20Install\x20it\x20now?','ruoCs','/me','830gXhAni','prompt','10GgKDGw','2532EQOGmI','\x0a🚀\x20Ranger\x20Setup\x0a','Validating\x20API\x20token...','\x0aInstalling\x20Chromium\x20browser...\x0a','.ranger','✓\x20Created\x20.ranger/\x20directory','You\x20can\x20install\x20it\x20manually\x20by\x20running:','2782728eXvIwP','\x20install\x20chromium','XVUto','516741Sbtkgh','MgcNX','GCNfw','CGEQg','NuoFh','xMqKm','version','ZoyZv','226sgFqri','\x0a✓\x20Playwright\x20Chromium\x20installed\x20successfully','qkKTB','enURm','1946GWqiJz','message','2532431YMTMgc','executablePath','\x0a❌\x20Failed\x20to\x20connect\x20to\x20MCP\x20server:','cwd','EAXKi','12pknmDy','eGqjq','✓\x20API\x20token\x20validated\x20successfully','You\x20will\x20need\x20to\x20install\x20it\x20before\x20using\x20Ranger:','exit','YcBAX','Please\x20check\x20your\x20API\x20token\x20and\x20try\x20again.','6232860qPZvxG','UhonH'];_0x2ba5=function(){return _0x4e78e6;};return _0x2ba5();}function _0x7622(_0x4e92eb,_0x781d99){_0x4e92eb=_0x4e92eb-0xcc;const _0x2ba576=_0x2ba5();let _0x7622bc=_0x2ba576[_0x4e92eb];return _0x7622bc;}import{chromium}from'playwright';const require=createRequire(import.meta.url);function getPlaywrightVersion(){const _0x1f439=_0x7622,_0x56581d={'ruoCs':_0x1f439(0xed),'enURm':function(_0x3c6475,_0x10c991){return _0x3c6475(_0x10c991);}};try{const _0x584705=require['resolve'](_0x56581d[_0x1f439(0xf1)]),_0x4e31ef=_0x56581d[_0x1f439(0xcc)](require,_0x584705);return _0x4e31ef[_0x1f439(0x106)];}catch{return null;}}function installChromium(_0x2ecf60){const _0xecf43c={'rgLfH':function(_0x3aaecd,_0x10b3c9){return _0x3aaecd===_0x10b3c9;},'IAsTH':function(_0x1118fc){return _0x1118fc();},'XWeIJ':function(_0x209bd9,_0x3fad40){return _0x209bd9(_0x3fad40);},'UhonH':'chromium','WAkJC':function(_0x2923c0,_0x4ff3ac,_0x886a39,_0x17a198){return _0x2923c0(_0x4ff3ac,_0x886a39,_0x17a198);}};return new Promise((_0x35a538,_0x2d9330)=>{const _0x314c7f=_0x7622,_0x614bdb=_0x2ecf60?['playwright@'+_0x2ecf60,_0x314c7f(0xe8),_0xecf43c['UhonH']]:['playwright','install',_0xecf43c[_0x314c7f(0xdc)]],_0x5c65d7=_0xecf43c['WAkJC'](spawn,'npx',_0x614bdb,{'stdio':_0x314c7f(0xdd),'shell':!![]});_0x5c65d7['on']('close',_0x2f354c=>{const _0x416b55=_0x314c7f;_0xecf43c[_0x416b55(0xde)](_0x2f354c,0x0)?_0xecf43c['IAsTH'](_0x35a538):_0x2d9330(new Error('Installation\x20failed\x20with\x20exit\x20code\x20'+_0x2f354c));}),_0x5c65d7['on'](_0x314c7f(0xdf),_0x4485c4=>{_0xecf43c['XWeIJ'](_0x2d9330,_0x4485c4);});});}export async function start(_0x2a4d57){const _0x2c0744=_0x7622,_0x19422a={'YcBAX':_0x2c0744(0xf7),'CGEQg':function(_0x87cbee,_0x581b91,_0x44e542){return _0x87cbee(_0x581b91,_0x44e542);},'huuEY':_0x2c0744(0xd6),'EAXKi':_0x2c0744(0xd1),'guPmi':function(_0x4dc187,_0x2d024e){return _0x4dc187 instanceof _0x2d024e;},'SAHRV':'Please\x20check\x20your\x20network\x20connection\x20and\x20server\x20URL.','rWycA':function(_0x32563c,_0x297f1b){return _0x32563c(_0x297f1b);},'IgkDN':_0x2c0744(0xe1),'xMqKm':function(_0x231771,_0x382c60,_0x12b174){return _0x231771(_0x382c60,_0x12b174);},'jspwe':function(_0x400288,_0x531da0,_0x3d3e83){return _0x400288(_0x531da0,_0x3d3e83);},'ZoyZv':_0x2c0744(0xfb),'XzLMI':_0x2c0744(0xef),'rUAkB':function(_0x1bc348){return _0x1bc348();},'MgcNX':'install','eGqjq':function(_0x42479a,_0x4d494c){return _0x42479a(_0x4d494c);},'egiDo':'\x0a❌\x20Failed\x20to\x20install\x20Chromium:','HRqJR':'\x20\x20npx\x20playwright\x20install\x20chromium','bPYUa':'\x0a⚠\x20Skipping\x20Chromium\x20installation.','NuoFh':_0x2c0744(0xd7),'BxShj':function(_0x357434,_0xe682c4,_0x4cff1c){return _0x357434(_0xe682c4,_0x4cff1c);},'lTmmR':_0x2c0744(0xe3),'vptyK':function(_0x3fee86,_0x46f525,_0x5f333e){return _0x3fee86(_0x46f525,_0x5f333e);},'wUerY':'✓\x20Created\x20.ranger/.gitignore','GCNfw':'\x0a✅\x20Ranger\x20setup\x20complete!\x0a','KdnWF':_0x2c0744(0xeb),'qkKTB':_0x2c0744(0xe4),'XVUto':'\x20\x20\x20\x20\x20ranger\x20skillup\x0a'};console['log'](_0x19422a[_0x2c0744(0xd9)]);const _0x11d54e=getMcpServerUrl();console['log'](_0x2c0744(0xf8));try{const _0x285510=await _0x19422a[_0x2c0744(0x103)](fetch,_0x11d54e+_0x2c0744(0xf2),{'method':'GET','headers':{'Authorization':'Bearer\x20'+_0x2a4d57}});!_0x285510['ok']&&(console[_0x2c0744(0xdf)]('\x0a❌\x20Authentication\x20failed:\x20'+_0x285510[_0x2c0744(0xe9)]+'\x20'+_0x285510['statusText']),console['error'](_0x2c0744(0xda)),process[_0x2c0744(0xd8)](0x1)),console['log'](_0x19422a['huuEY']);}catch(_0x361c85){console['error'](_0x19422a[_0x2c0744(0xd3)],_0x19422a['guPmi'](_0x361c85,Error)?_0x361c85[_0x2c0744(0xce)]:_0x361c85),console['error'](_0x19422a['SAHRV']),process[_0x2c0744(0xd8)](0x1);}await storeToken(_0x2a4d57),await _0x19422a[_0x2c0744(0xee)](storeServerUrl,_0x11d54e),console['log'](_0x19422a['IgkDN']);const _0x4b86ac=await loadMcpConfig();_0x19422a[_0x2c0744(0xee)](setRangerServer,_0x4b86ac),await saveMcpConfig(_0x4b86ac),console['log'](_0x2c0744(0xea));const _0x2b6eec=_0x19422a[_0x2c0744(0x105)](join,process[_0x2c0744(0xd2)](),_0x2c0744(0xfa));!_0x19422a['rWycA'](existsSync,_0x2b6eec)?(await _0x19422a['jspwe'](mkdir,_0x2b6eec,{'recursive':!![]}),console['log'](_0x19422a[_0x2c0744(0x107)])):console['log']('✓\x20.ranger/\x20directory\x20already\x20exists');let _0x3d923=![];try{const _0x514122=chromium[_0x2c0744(0xd0)]();_0x3d923=existsSync(_0x514122);}catch{_0x3d923=![];}if(_0x3d923)console['log'](_0x19422a['XzLMI']);else{const _0xf41fcc=_0x19422a[_0x2c0744(0xe0)](getPlaywrightVersion),{install:_0x1411df}=await _0x58a208[_0x2c0744(0xf4)]([{'type':'confirm','name':_0x19422a[_0x2c0744(0x101)],'message':_0x2c0744(0xf0),'default':!![]}]);if(_0x1411df){console[_0x2c0744(0xe2)](_0x2c0744(0xf9));try{await _0x19422a[_0x2c0744(0xd5)](installChromium,_0xf41fcc),console['log'](_0x2c0744(0x109));}catch(_0x5824b8){console['error'](_0x19422a['egiDo'],_0x5824b8 instanceof Error?_0x5824b8['message']:_0x5824b8),console[_0x2c0744(0xe2)](_0x2c0744(0xfc)),_0xf41fcc?console['log']('\x20\x20npx\x20playwright@'+_0xf41fcc+_0x2c0744(0xfe)):console[_0x2c0744(0xe2)](_0x19422a['HRqJR']);}}else console['log'](_0x19422a['bPYUa']),console['log'](_0x19422a[_0x2c0744(0x104)]),_0xf41fcc?console[_0x2c0744(0xe2)]('\x20\x20npx\x20playwright@'+_0xf41fcc+'\x20install\x20chromium'):console['log']('\x20\x20npx\x20playwright\x20install\x20chromium');}console[_0x2c0744(0xe2)]('\x0a💡\x20Tip:\x20Run\x20\x22ranger\x20skillup\x22\x20after\x20setup\x20to\x20install\x20the\x20e2e-test-recommender\x20skill');const _0x3b021f=_0x19422a['BxShj'](join,_0x2b6eec,_0x19422a['lTmmR']),_0x46537='\x0a\x0a#\x20Ignore\x20local-only\x20directories\x0alocal/\x0asessions/\x0abug-bashes/\x0a\x0aactive-env.txt\x0aactive-feature.txt\x0a.gitignore\x0a\x0a#\x20Ignore\x20plaintext\x20auth\x20files\x20(encrypted\x20.enc\x20files\x20are\x20safe\x20to\x20commit)\x0a**/auth.json\x0a';await _0x19422a[_0x2c0744(0xe5)](writeFile,_0x3b021f,_0x46537),console['log'](_0x19422a['wUerY']),console[_0x2c0744(0xe2)](_0x19422a[_0x2c0744(0x102)]),console[_0x2c0744(0xe2)]('Next\x20steps:'),console['log'](_0x19422a[_0x2c0744(0xec)]),console[_0x2c0744(0xe2)]('\x20\x20\x20\x20\x20ranger\x20add\x20env\x20local'),console['log'](_0x19422a[_0x2c0744(0x10a)]),console[_0x2c0744(0xe2)](_0x19422a[_0x2c0744(0xff)]);}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EACH,aAAa,EACb,aAAa,EACb,eAAe,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
package/build/commands/status.js
CHANGED
|
@@ -1,54 +1,15 @@
|
|
|
1
1
|
import { readFile, readdir } from 'fs/promises';
|
|
2
|
-
import { join,
|
|
2
|
+
import { join, basename } from 'path';
|
|
3
3
|
import { existsSync } from 'fs';
|
|
4
|
-
import { fileURLToPath } from 'url';
|
|
5
|
-
import { execSync } from 'child_process';
|
|
6
4
|
import { getToken } from './utils/keychain.js';
|
|
7
5
|
import { loadMcpConfig, hasRangerServer } from './utils/mcpConfig.js';
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
import { getCurrentVersion, getLatestVersion } from './utils/version.js';
|
|
7
|
+
import { getApiBaseUrl, getMcpServerUrl, getCurrentEnvironment, } from './utils/environment.js';
|
|
8
|
+
import { getProjectSkillsDir, getUserSkillsDir, loadClaudeSettings, hasRangerServerInSettings, getSettingsPath, } from './utils/claudeConfig.js';
|
|
10
9
|
// ANSI formatting helpers
|
|
11
10
|
const bold = (text) => `\x1b[1m${text}\x1b[0m`;
|
|
12
11
|
const link = (path, text) => `\x1b]8;;file://${path}\x07${text || path}\x1b]8;;\x07`;
|
|
13
|
-
|
|
14
|
-
* Get the package version from package.json
|
|
15
|
-
*/
|
|
16
|
-
async function getVersion() {
|
|
17
|
-
const possiblePaths = [
|
|
18
|
-
join(__dirname, '..', '..', 'package.json'),
|
|
19
|
-
join(__dirname, '..', '..', '..', 'package.json'),
|
|
20
|
-
];
|
|
21
|
-
for (const p of possiblePaths) {
|
|
22
|
-
if (existsSync(p)) {
|
|
23
|
-
try {
|
|
24
|
-
const content = await readFile(p, 'utf-8');
|
|
25
|
-
const pkg = JSON.parse(content);
|
|
26
|
-
return pkg.version || 'unknown';
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return 'unknown';
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Get the latest version from npm registry
|
|
37
|
-
*/
|
|
38
|
-
function getLatestVersion() {
|
|
39
|
-
try {
|
|
40
|
-
const result = execSync('npm view @ranger-testing/ranger-cli version 2>/dev/null', { encoding: 'utf-8', timeout: 5000 });
|
|
41
|
-
return result.trim();
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Get installed skills from .claude/skills directory
|
|
49
|
-
*/
|
|
50
|
-
async function getInstalledSkills() {
|
|
51
|
-
const skillsDir = join(process.cwd(), '.claude', 'skills');
|
|
12
|
+
async function getSkillsFromDir(skillsDir, level) {
|
|
52
13
|
if (!existsSync(skillsDir)) {
|
|
53
14
|
return [];
|
|
54
15
|
}
|
|
@@ -74,6 +35,7 @@ async function getInstalledSkills() {
|
|
|
74
35
|
name: entry.name,
|
|
75
36
|
displayName,
|
|
76
37
|
path: skillPath,
|
|
38
|
+
level,
|
|
77
39
|
});
|
|
78
40
|
}
|
|
79
41
|
}
|
|
@@ -84,6 +46,13 @@ async function getInstalledSkills() {
|
|
|
84
46
|
}
|
|
85
47
|
return skills;
|
|
86
48
|
}
|
|
49
|
+
async function getInstalledSkills() {
|
|
50
|
+
const [projectSkills, userSkills] = await Promise.all([
|
|
51
|
+
getSkillsFromDir(getProjectSkillsDir(), 'project'),
|
|
52
|
+
getSkillsFromDir(getUserSkillsDir(), 'user'),
|
|
53
|
+
]);
|
|
54
|
+
return { project: projectSkills, user: userSkills };
|
|
55
|
+
}
|
|
87
56
|
/**
|
|
88
57
|
* Get environment information from .ranger directory
|
|
89
58
|
*/
|
|
@@ -145,7 +114,7 @@ export async function status() {
|
|
|
145
114
|
}
|
|
146
115
|
console.log(`Root: ${link(cwd, bold(basename(cwd)))}`);
|
|
147
116
|
// Version
|
|
148
|
-
const version =
|
|
117
|
+
const version = getCurrentVersion();
|
|
149
118
|
const latestVersion = getLatestVersion();
|
|
150
119
|
if (latestVersion && latestVersion !== version) {
|
|
151
120
|
console.log(`Version: ${version} (latest: ${latestVersion})`);
|
|
@@ -169,25 +138,50 @@ export async function status() {
|
|
|
169
138
|
console.log(`API Token: ✗ Not found`);
|
|
170
139
|
console.log(` Run: ranger start <token>`);
|
|
171
140
|
}
|
|
172
|
-
//
|
|
141
|
+
// Debug info (only shown if DEBUG env var is set)
|
|
142
|
+
if (process.env.DEBUG) {
|
|
143
|
+
console.log(`Environment: ${getCurrentEnvironment()}`);
|
|
144
|
+
console.log(`API URL: ${getApiBaseUrl()}`);
|
|
145
|
+
console.log(`MCP Server URL: ${getMcpServerUrl()}`);
|
|
146
|
+
}
|
|
147
|
+
// MCP Server Config
|
|
173
148
|
const mcpConfig = await loadMcpConfig();
|
|
174
|
-
|
|
149
|
+
const claudeSettings = await loadClaudeSettings();
|
|
150
|
+
const hasProjectMcp = hasRangerServer(mcpConfig);
|
|
151
|
+
const hasUserMcp = hasRangerServerInSettings(claudeSettings);
|
|
152
|
+
if (hasProjectMcp && hasUserMcp) {
|
|
153
|
+
console.log(`MCP Server: ✓ Configured (project + user)`);
|
|
154
|
+
}
|
|
155
|
+
else if (hasProjectMcp) {
|
|
175
156
|
console.log(`MCP Server: ✓ Configured in .mcp.json`);
|
|
176
157
|
}
|
|
158
|
+
else if (hasUserMcp) {
|
|
159
|
+
console.log(`MCP Server: ✓ Configured in ${getSettingsPath()}`);
|
|
160
|
+
}
|
|
177
161
|
else {
|
|
178
162
|
console.log(`MCP Server: ✗ Not configured`);
|
|
179
163
|
console.log(` Run: ranger start <token> or ranger skillup`);
|
|
180
164
|
}
|
|
181
165
|
// Skills
|
|
182
166
|
console.log('\n--- Skills ---');
|
|
183
|
-
const
|
|
184
|
-
|
|
167
|
+
const { project: projectSkills, user: userSkills } = await getInstalledSkills();
|
|
168
|
+
const totalSkills = projectSkills.length + userSkills.length;
|
|
169
|
+
if (totalSkills === 0) {
|
|
185
170
|
console.log('No skills installed');
|
|
186
171
|
console.log(` Run: ranger skillup`);
|
|
187
172
|
}
|
|
188
173
|
else {
|
|
189
|
-
|
|
190
|
-
console.log(
|
|
174
|
+
if (projectSkills.length > 0) {
|
|
175
|
+
console.log(' Project-level:');
|
|
176
|
+
for (const skill of projectSkills) {
|
|
177
|
+
console.log(` ${bold(skill.displayName)}: ${link(skill.path, basename(skill.path))}`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (userSkills.length > 0) {
|
|
181
|
+
console.log(' User-level:');
|
|
182
|
+
for (const skill of userSkills) {
|
|
183
|
+
console.log(` ${bold(skill.displayName)}: ${link(skill.path, basename(skill.path))}`);
|
|
184
|
+
}
|
|
191
185
|
}
|
|
192
186
|
}
|
|
193
187
|
// Environments
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
package/build/commands/update.js
CHANGED
|
@@ -1,41 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
|
-
import { dirname, join } from 'path';
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import { readdirSync, existsSync } from 'fs';
|
|
5
3
|
import { installSkill } from './utils/skills.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
-
const __dirname = dirname(__filename);
|
|
10
|
-
const packageJsonPath = join(__dirname, '..', '..', 'package.json');
|
|
11
|
-
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
12
|
-
return packageJson.version;
|
|
13
|
-
}
|
|
14
|
-
function getLatestVersion() {
|
|
15
|
-
try {
|
|
16
|
-
const result = execSync(`npm view ${PACKAGE_NAME} version`, {
|
|
17
|
-
encoding: 'utf-8',
|
|
18
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
19
|
-
});
|
|
20
|
-
return result.trim();
|
|
21
|
-
}
|
|
22
|
-
catch {
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
function compareVersions(current, latest) {
|
|
27
|
-
const currentParts = current.split('.').map(Number);
|
|
28
|
-
const latestParts = latest.split('.').map(Number);
|
|
29
|
-
for (let i = 0; i < 3; i++) {
|
|
30
|
-
const c = currentParts[i] || 0;
|
|
31
|
-
const l = latestParts[i] || 0;
|
|
32
|
-
if (l > c)
|
|
33
|
-
return 1;
|
|
34
|
-
if (l < c)
|
|
35
|
-
return -1;
|
|
36
|
-
}
|
|
37
|
-
return 0;
|
|
38
|
-
}
|
|
4
|
+
import { PACKAGE_NAME, getCurrentVersion, getLatestVersion, compareVersions, } from './utils/version.js';
|
|
5
|
+
import { getProjectSkillsDir, getUserSkillsDir, } from './utils/claudeConfig.js';
|
|
39
6
|
async function runInstall() {
|
|
40
7
|
return new Promise((resolve) => {
|
|
41
8
|
console.log(`\nInstalling ${PACKAGE_NAME}@latest...\n`);
|
|
@@ -51,11 +18,7 @@ async function runInstall() {
|
|
|
51
18
|
});
|
|
52
19
|
});
|
|
53
20
|
}
|
|
54
|
-
|
|
55
|
-
* Get list of installed skills in .claude/skills directory
|
|
56
|
-
*/
|
|
57
|
-
function getInstalledSkills() {
|
|
58
|
-
const skillsDir = join(process.cwd(), '.claude', 'skills');
|
|
21
|
+
function getSkillsFromDir(skillsDir) {
|
|
59
22
|
if (!existsSync(skillsDir)) {
|
|
60
23
|
return [];
|
|
61
24
|
}
|
|
@@ -65,28 +28,45 @@ function getInstalledSkills() {
|
|
|
65
28
|
.filter((entry) => entry.isDirectory())
|
|
66
29
|
.map((entry) => entry.name);
|
|
67
30
|
}
|
|
68
|
-
catch
|
|
69
|
-
console.warn('Failed to read .claude/skills directory:', error);
|
|
31
|
+
catch {
|
|
70
32
|
return [];
|
|
71
33
|
}
|
|
72
34
|
}
|
|
73
35
|
/**
|
|
74
|
-
*
|
|
75
|
-
|
|
36
|
+
* Get list of installed skills from both project and user directories
|
|
37
|
+
*/
|
|
38
|
+
function getInstalledSkills() {
|
|
39
|
+
return {
|
|
40
|
+
project: getSkillsFromDir(getProjectSkillsDir()),
|
|
41
|
+
user: getSkillsFromDir(getUserSkillsDir()),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Reinstall all skills found in project and user skill directories.
|
|
46
|
+
* This ensures skill content is always up to date, even if CLI version hasn't changed.
|
|
76
47
|
*/
|
|
77
48
|
async function reinstallSkills(cliVersion) {
|
|
78
|
-
const
|
|
79
|
-
|
|
49
|
+
const { project: projectSkills, user: userSkills } = getInstalledSkills();
|
|
50
|
+
const totalCount = projectSkills.length + userSkills.length;
|
|
51
|
+
if (totalCount === 0) {
|
|
80
52
|
console.log('\nNo skills found to reinstall.');
|
|
81
53
|
return;
|
|
82
54
|
}
|
|
83
|
-
console.log(`\nReinstalling ${
|
|
84
|
-
for (const skillName of
|
|
55
|
+
console.log(`\nReinstalling ${totalCount} skill(s) to ensure content is up to date...`);
|
|
56
|
+
for (const skillName of projectSkills) {
|
|
57
|
+
try {
|
|
58
|
+
await installSkill(skillName, { level: 'project', cliVersion });
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
console.warn(` Failed to reinstall project skill ${skillName}:`, error);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
for (const skillName of userSkills) {
|
|
85
65
|
try {
|
|
86
|
-
await installSkill(skillName, cliVersion);
|
|
66
|
+
await installSkill(skillName, { level: 'user', cliVersion });
|
|
87
67
|
}
|
|
88
68
|
catch (error) {
|
|
89
|
-
console.warn(` Failed to reinstall ${skillName}:`, error);
|
|
69
|
+
console.warn(` Failed to reinstall user skill ${skillName}:`, error);
|
|
90
70
|
}
|
|
91
71
|
}
|
|
92
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x1e29c0,_0x59ff8f){const _0x4dc0b2=_0x8e08,_0x131bcc=_0x1e29c0();while(!![]){try{const _0x38d1a2=-parseInt(_0x4dc0b2(0x1de))/0x1*(-parseInt(_0x4dc0b2(0x200))/0x2)+-parseInt(_0x4dc0b2(0x1d8))/0x3*(-parseInt(_0x4dc0b2(0x1ec))/0x4)+parseInt(_0x4dc0b2(0x1ea))/0x5+parseInt(_0x4dc0b2(0x1f1))/0x6+-parseInt(_0x4dc0b2(0x1f9))/0x7+parseInt(_0x4dc0b2(0x1ef))/0x8+-parseInt(_0x4dc0b2(0x1fc))/0x9;if(_0x38d1a2===_0x59ff8f)break;else _0x131bcc['push'](_0x131bcc['shift']());}catch(_0x3c4c47){_0x131bcc['push'](_0x131bcc['shift']());}}}(_0x1456,0x283d9));function _0x1456(){const _0x15a705=['Update\x20encrypted\x20auth\x20state?\x20(auth.json.enc\x20exists)','GLIyi','✓\x20Encrypted\x20auth\x20saved\x20to:\x20','launch','shouldEncrypt','newPage','goto','vcQIs','settings.json','\x0a✅\x20Environment\x20\x22','1106840hyZIbK','contextOptions','32OWudLZ','confirm','✓\x20Updated\x20config:\x20','1591808EEDxUP','\x20\x20\x20Update\x20your\x20authentication\x20as\x20needed.','1403340Xalifx','cwd','storageState','error','\x20\x20Could\x20not\x20encrypt:\x20No\x20API\x20token\x20found\x20in\x20keychain\x20or\x20RANGER_API_TOKEN\x20env\x20var','utf-8','\x20\x20\x20Run\x20first:\x20ranger\x20add\x20env\x20','✓\x20Auth\x20state\x20saved\x20to:\x20','1965894uexKeM','\x0aConfig\x20not\x20found\x20at\x20','exit','4587660PzbucB','\x0a📋\x20Authentication\x20Update','\x20\x20\x20A\x20browser\x20will\x20open\x20with\x20your\x20existing\x20session\x20(if\x20any).','newContext','118tmyLsF','log','yRsai','17736rgrvvG','wwzfy','\x22\x20not\x20found.','aEvzl','\x22\x20authentication\x20updated','mmTeO','4303xJvLdD','qspKL'];_0x1456=function(){return _0x15a705;};return _0x1456();}import{writeFile,readFile,unlink}from'fs/promises';import{join}from'path';import{existsSync}from'fs';import{chromium}from'playwright';import _0x313e73 from'inquirer';import{encrypt}from'./utils/crypto.js';function _0x8e08(_0x5cad86,_0x4683d2){_0x5cad86=_0x5cad86-0x1d8;const _0x145689=_0x1456();let _0x8e08b=_0x145689[_0x5cad86];return _0x8e08b;}import{getToken}from'./utils/keychain.js';export async function updateEnv(_0x454a71){const _0x126061=_0x8e08,_0x408f94={'voUGc':function(_0x3036e6){return _0x3036e6();},'Tcpmt':'close','oyYXs':'.ranger','GLIyi':function(_0x412a86,_0x48de5b,_0x22d1ff){return _0x412a86(_0x48de5b,_0x22d1ff);},'wwzfy':'.enc','aEvzl':_0x126061(0x1ed),'vcQIs':_0x126061(0x1e4),'udwLd':_0x126061(0x1e0),'VIcMW':'Encrypt\x20auth\x20state?\x20(Recommended\x20for\x20CI\x20-\x20allows\x20committing\x20to\x20git)','mmTeO':_0x126061(0x1fe),'RsEND':'\x20\x20\x20When\x20you\x20are\x20done,\x20close\x20the\x20browser.\x0a','qspKL':'about:blank','dynWV':function(_0x5bb070,_0x5b95a1,_0x153c45){return _0x5bb070(_0x5b95a1,_0x153c45);},'yRsai':function(_0x275925){return _0x275925();}},_0x55140d=join(process[_0x126061(0x1f2)](),_0x408f94['oyYXs'],_0x454a71),_0x588bcc=_0x408f94['GLIyi'](join,_0x55140d,_0x126061(0x1e8)),_0x189613=_0x408f94[_0x126061(0x1e1)](join,_0x55140d,'auth.json'),_0x187c35=_0x189613+_0x408f94[_0x126061(0x1d9)];!existsSync(_0x55140d)&&(console[_0x126061(0x1f4)]('\x0aEnvironment\x20\x22'+_0x454a71+_0x126061(0x1da)),console['error'](_0x126061(0x1f7)+_0x454a71),process[_0x126061(0x1fb)](0x1));!existsSync(_0x588bcc)&&(console[_0x126061(0x1f4)](_0x126061(0x1fa)+_0x588bcc),console['error']('\x20\x20\x20Run\x20first:\x20ranger\x20add\x20env\x20'+_0x454a71),process['exit'](0x1));const _0x57b7f3=await readFile(_0x588bcc,_0x126061(0x1f6)),_0x32bcba=JSON['parse'](_0x57b7f3),_0x572695=existsSync(_0x189613),_0xfa4220=existsSync(_0x187c35),{shouldEncrypt:_0x373d7d}=await _0x313e73['prompt']([{'type':_0x408f94[_0x126061(0x1db)],'name':_0x408f94[_0x126061(0x1e7)],'message':_0xfa4220?_0x408f94['udwLd']:_0x408f94['VIcMW'],'default':_0xfa4220}]);console[_0x126061(0x201)](_0x126061(0x1fd)),console['log'](_0x408f94[_0x126061(0x1dd)]),console[_0x126061(0x201)](_0x126061(0x1f0)),console[_0x126061(0x201)](_0x408f94['RsEND']);const _0x360fca=await chromium[_0x126061(0x1e3)]({'headless':![]}),_0xd0725f=_0x572695?{'storageState':_0x189613}:{},_0x5cc39e=await _0x360fca[_0x126061(0x1ff)](_0xd0725f),_0x46307a=await _0x5cc39e[_0x126061(0x1e5)]();await _0x46307a[_0x126061(0x1e6)](_0x408f94[_0x126061(0x1df)]),await new Promise(_0x3dbe94=>{_0x46307a['on'](_0x408f94['Tcpmt'],async()=>{const _0x3380be=_0x8e08;try{console['log']('Saving\x20authentication\x20state...'),await _0x5cc39e[_0x3380be(0x1f3)]({'path':_0x189613}),_0x3dbe94();}catch{_0x408f94['voUGc'](_0x3dbe94);}});}),await _0x360fca['close']();if(_0x373d7d){const _0x220b20=await _0x408f94['dynWV'](readFile,_0x189613,'utf-8'),_0x11781e=process['env']['RANGER_API_TOKEN']||await _0x408f94[_0x126061(0x202)](getToken);if(!_0x11781e)console['error'](_0x126061(0x1f5)),console['log'](_0x126061(0x1f8)+_0x189613);else{const _0x5be054=encrypt(_0x220b20,_0x11781e);await writeFile(_0x187c35,_0x5be054),await unlink(_0x189613),console[_0x126061(0x201)](_0x126061(0x1e2)+_0x187c35),console[_0x126061(0x201)]('\x20\x20You\x20can\x20safely\x20commit\x20this\x20file\x20to\x20git.'),console['log']('\x20\x20Set\x20RANGER_API_TOKEN\x20in\x20CI\x20to\x20decrypt\x20at\x20runtime.');}}else console['log'](_0x126061(0x1f8)+_0x189613);_0x32bcba['browser']=_0x32bcba['browser']||{},_0x32bcba['browser']['contextOptions']=_0x32bcba['browser']['contextOptions']||{},_0x32bcba['browser'][_0x126061(0x1eb)]['storageState']=_0x189613,await _0x408f94['dynWV'](writeFile,_0x588bcc,JSON['stringify'](_0x32bcba,null,0x2)),console[_0x126061(0x201)](_0x126061(0x1ee)+_0x588bcc),console['log'](_0x126061(0x1e9)+_0x454a71+_0x126061(0x1dc));}
|