@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.
Files changed (68) hide show
  1. package/README.md +111 -0
  2. package/build/cli.js +245 -8
  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/dataMcpServer.js.map +1 -1
  10. package/build/commands/env.js +46 -0
  11. package/build/commands/env.js.map +1 -0
  12. package/build/commands/feature.js +494 -0
  13. package/build/commands/feature.js.map +1 -0
  14. package/build/commands/index.js +1 -0
  15. package/build/commands/index.js.map +1 -1
  16. package/build/commands/skillup.js +67 -16
  17. package/build/commands/skillup.js.map +1 -1
  18. package/build/commands/start.js +1 -1
  19. package/build/commands/start.js.map +1 -1
  20. package/build/commands/status.js +45 -51
  21. package/build/commands/status.js.map +1 -1
  22. package/build/commands/update.js +32 -52
  23. package/build/commands/update.js.map +1 -1
  24. package/build/commands/updateEnv.js +1 -1
  25. package/build/commands/updateEnv.js.map +1 -1
  26. package/build/commands/useEnv.js +1 -1
  27. package/build/commands/useEnv.js.map +1 -1
  28. package/build/commands/utils/browserSessionsApi.js +1 -1
  29. package/build/commands/utils/browserSessionsApi.js.map +1 -1
  30. package/build/commands/utils/claudeConfig.js +73 -0
  31. package/build/commands/utils/claudeConfig.js.map +1 -0
  32. package/build/commands/utils/cliSecret.js +1 -1
  33. package/build/commands/utils/environment.js +69 -0
  34. package/build/commands/utils/environment.js.map +1 -0
  35. package/build/commands/utils/featureApi.js +190 -0
  36. package/build/commands/utils/featureApi.js.map +1 -0
  37. package/build/commands/utils/featureReportGenerator.js +170 -0
  38. package/build/commands/utils/featureReportGenerator.js.map +1 -0
  39. package/build/commands/utils/keychain.js +1 -1
  40. package/build/commands/utils/localAgentInstallationsApi.js +1 -1
  41. package/build/commands/utils/localAgentInstallationsApi.js.map +1 -1
  42. package/build/commands/utils/mcpConfig.js +1 -1
  43. package/build/commands/utils/settings.js +2 -2
  44. package/build/commands/utils/settings.js.map +1 -1
  45. package/build/commands/utils/skills.js +1 -1
  46. package/build/commands/utils/skills.js.map +1 -1
  47. package/build/commands/verifyFeature.js +451 -0
  48. package/build/commands/verifyFeature.js.map +1 -0
  49. package/build/commands/verifyInBrowser.js +1 -1
  50. package/build/commands/verifyInBrowser.js.map +1 -1
  51. package/build/skills/bug-bash.md +4 -9
  52. package/build/skills/e2e-test-recommender.md +5 -10
  53. package/build/skills/feature-tracker/SKILL.md +185 -0
  54. package/build/skills/feature-tracker/create.md +105 -0
  55. package/build/skills/feature-tracker/manage.md +145 -0
  56. package/build/skills/feature-tracker/report.md +159 -0
  57. package/build/skills/feature-tracker/start.md +93 -0
  58. package/build/skills/feature-tracker/verify.md +143 -0
  59. package/package.json +23 -20
  60. package/build/agents/bug-basher.md +0 -259
  61. package/build/agents/e2e-test-recommender.md +0 -164
  62. package/build/agents/quality-advocate.md +0 -164
  63. package/build/agents/ui-verifier.md +0 -100
  64. package/build/commands/addApp.js +0 -21
  65. package/build/commands/initAgents.js +0 -84
  66. package/build/commands/utils/agents.js +0 -45
  67. package/build/index.js +0 -436
  68. 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 (error) {
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
- // Install e2e-test-recommender (requires API token only)
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
- // Also install ranger data-mcp-server for e2e-test-recommender
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
- console.log(`\n✅ Installed ${installedCount} skill${installedCount > 1 ? 's' : ''} successfully!\n`);
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":"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"}
1
+ {"version":3,"file":"skillup.js","sourceRoot":"","sources":["../../src/commands/skillup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- (function(_0x27a97d,_0x44ccee){const _0x10e3cb=_0x19a9,_0x443c12=_0x27a97d();while(!![]){try{const _0x44bc0c=-parseInt(_0x10e3cb(0x67))/0x1*(parseInt(_0x10e3cb(0x6e))/0x2)+-parseInt(_0x10e3cb(0x70))/0x3+-parseInt(_0x10e3cb(0x71))/0x4+parseInt(_0x10e3cb(0x83))/0x5+parseInt(_0x10e3cb(0x82))/0x6*(-parseInt(_0x10e3cb(0x84))/0x7)+-parseInt(_0x10e3cb(0x74))/0x8+parseInt(_0x10e3cb(0x6b))/0x9*(parseInt(_0x10e3cb(0x7d))/0xa);if(_0x44bc0c===_0x44ccee)break;else _0x443c12['push'](_0x443c12['shift']());}catch(_0x1dfbb1){_0x443c12['push'](_0x443c12['shift']());}}}(_0x457c,0xdd121));function _0x457c(){const _0x440c5c=['\x0a🚀\x20Ranger\x20Setup\x0a','MCP_SERVER_URL','9qmsmxb','error','✓\x20API\x20token\x20validated\x20successfully','286614LewpPO','Next\x20steps:','1169064vAtwfI','3353480vktVNd','\x20\x20\x20\x20\x20ranger\x20skillup\x0a','PayHU','1997376UitMqT','GET','GHFzo','MiIub','zmYaP','https://mcp-server-301751771437.us-central1.run.app','RkHGy','jhuJO','\x0a✅\x20Ranger\x20setup\x20complete!\x0a','38850540EfBDrq','log','.gitignore','cwd','PnsNI','780738ckpoum','4012800KIpKPM','70jgJCYF','Please\x20check\x20your\x20API\x20token\x20and\x20try\x20again.','.ranger','7NvdDHH','statusText'];_0x457c=function(){return _0x440c5c;};return _0x457c();}import{mkdir,writeFile}from'fs/promises';import{join}from'path';import{existsSync}from'fs';function _0x19a9(_0x1f2ff8,_0x5ed2e7){_0x1f2ff8=_0x1f2ff8-0x65;const _0x457cb4=_0x457c();let _0x19a9e6=_0x457cb4[_0x1f2ff8];return _0x19a9e6;}import{loadMcpConfig,saveMcpConfig,setRangerServer}from'./utils/mcpConfig.js';import{storeToken,storeServerUrl}from'./utils/keychain.js';export async function start(_0x41ce70){const _0x5ac087=_0x19a9,_0x235766={'RkHGy':_0x5ac087(0x79),'MiIub':function(_0x8b4157,_0x508bf3,_0x597ee2){return _0x8b4157(_0x508bf3,_0x597ee2);},'TlRfc':_0x5ac087(0x6d),'jhuJO':function(_0x32f0b8,_0x2b30bc){return _0x32f0b8 instanceof _0x2b30bc;},'PnsNI':function(_0x2a7d47,_0x1d3a97){return _0x2a7d47(_0x1d3a97);},'mPHCT':'✓\x20Stored\x20credentials\x20in\x20OS\x20Keychain','ZmMcX':function(_0x14835f,_0x32f2df){return _0x14835f(_0x32f2df);},'cWnNw':function(_0xc3cd16,_0x31b0f3){return _0xc3cd16(_0x31b0f3);},'GHFzo':'✓\x20Created/updated\x20.mcp.json\x20with\x20Ranger\x20MCP\x20proxy','zmYaP':_0x5ac087(0x66),'PayHU':_0x5ac087(0x7f),'tbKBv':'✓\x20Created\x20.ranger/.gitignore','YRMoJ':'\x20\x20\x20\x20\x20ranger\x20add\x20env\x20local','NoOho':'\x20\x202.\x20Install\x20skills\x20for\x20Claude\x20Code:'};console['log'](_0x5ac087(0x69));const _0x4b78fd=process['env'][_0x5ac087(0x6a)]||_0x235766[_0x5ac087(0x7a)];console['log']('Validating\x20API\x20token...');try{const _0x2d263b=await _0x235766[_0x5ac087(0x77)](fetch,_0x4b78fd+'/me',{'method':_0x5ac087(0x75),'headers':{'Authorization':'Bearer\x20'+_0x41ce70}});!_0x2d263b['ok']&&(console['error']('\x0a❌\x20Authentication\x20failed:\x20'+_0x2d263b['status']+'\x20'+_0x2d263b[_0x5ac087(0x68)]),console[_0x5ac087(0x6c)](_0x5ac087(0x65)),process['exit'](0x1)),console['log'](_0x235766['TlRfc']);}catch(_0x15e404){console['error']('\x0a❌\x20Failed\x20to\x20connect\x20to\x20MCP\x20server:',_0x235766[_0x5ac087(0x7b)](_0x15e404,Error)?_0x15e404['message']:_0x15e404),console['error']('Please\x20check\x20your\x20network\x20connection\x20and\x20server\x20URL.'),process['exit'](0x1);}await _0x235766['PnsNI'](storeToken,_0x41ce70),await _0x235766[_0x5ac087(0x81)](storeServerUrl,_0x4b78fd),console['log'](_0x235766['mPHCT']);const _0x334480=await loadMcpConfig();_0x235766['ZmMcX'](setRangerServer,_0x334480),await _0x235766['cWnNw'](saveMcpConfig,_0x334480),console[_0x5ac087(0x7e)](_0x235766[_0x5ac087(0x76)]);const _0x46df73=join(process[_0x5ac087(0x80)](),_0x235766[_0x5ac087(0x78)]);!existsSync(_0x46df73)?(await mkdir(_0x46df73,{'recursive':!![]}),console['log']('✓\x20Created\x20.ranger/\x20directory')):console['log']('✓\x20.ranger/\x20directory\x20already\x20exists');console['log']('\x0a💡\x20Tip:\x20Run\x20\x22ranger\x20skillup\x22\x20after\x20setup\x20to\x20install\x20the\x20e2e-test-recommender\x20skill');const _0x465633=_0x235766[_0x5ac087(0x77)](join,_0x46df73,_0x235766[_0x5ac087(0x73)]),_0x3ded8b='#\x20Ignore\x20plaintext\x20auth\x20files\x20(encrypted\x20.enc\x20files\x20are\x20safe\x20to\x20commit)\x0a**/auth.json\x0a\x0a#\x20Ignore\x20local\x20environment\x0a/local\x0a\x0a#\x20Ignore\x20session\x20artifacts\x0a/sessions\x0a\x0a#\x20Ignore\x20active\x20environment\x20tracker\x0aactive-env.txt\x0a\x0a#\x20Ignore\x20bug\x20bash\x20reports\x0a/bug-bashes\x0a';await _0x235766['MiIub'](writeFile,_0x465633,_0x3ded8b),console['log'](_0x235766['tbKBv']),console[_0x5ac087(0x7e)](_0x5ac087(0x7c)),console[_0x5ac087(0x7e)](_0x5ac087(0x6f)),console[_0x5ac087(0x7e)]('\x20\x201.\x20Add\x20an\x20environment:'),console[_0x5ac087(0x7e)](_0x235766['YRMoJ']),console['log'](_0x235766['NoOho']),console['log'](_0x5ac087(0x72));}
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":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
@@ -1,54 +1,15 @@
1
1
  import { readFile, readdir } from 'fs/promises';
2
- import { join, dirname, basename } from 'path';
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
- const __filename = fileURLToPath(import.meta.url);
9
- const __dirname = dirname(__filename);
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 = await getVersion();
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
- // MCP Server
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
- if (hasRangerServer(mcpConfig)) {
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 skills = await getInstalledSkills();
184
- if (skills.length === 0) {
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
- for (const skill of skills) {
190
- console.log(` ${bold(skill.displayName)}: ${link(skill.path, basename(skill.path))}`);
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":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -1,41 +1,8 @@
1
- import { execSync, spawn } from 'child_process';
2
- import { readFileSync, readdirSync, existsSync } from 'fs';
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
- const PACKAGE_NAME = '@ranger-testing/ranger-cli';
7
- function getCurrentVersion() {
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 (error) {
69
- console.warn('Failed to read .claude/skills directory:', error);
31
+ catch {
70
32
  return [];
71
33
  }
72
34
  }
73
35
  /**
74
- * Reinstall all skills found in .claude/skills directory
75
- * This ensures skill content is always up to date, even if CLI version hasn't changed
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 installedSkills = getInstalledSkills();
79
- if (installedSkills.length === 0) {
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 ${installedSkills.length} skill(s) to ensure content is up to date...`);
84
- for (const skillName of installedSkills) {
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":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- (function(_0x51220f,_0x4a12dc){const _0x5ed4d6=_0x580f,_0x2edeef=_0x51220f();while(!![]){try{const _0x29542e=parseInt(_0x5ed4d6(0x7b))/0x1+parseInt(_0x5ed4d6(0x84))/0x2+-parseInt(_0x5ed4d6(0x96))/0x3+parseInt(_0x5ed4d6(0xa9))/0x4*(parseInt(_0x5ed4d6(0x7a))/0x5)+-parseInt(_0x5ed4d6(0xa2))/0x6*(parseInt(_0x5ed4d6(0x9f))/0x7)+parseInt(_0x5ed4d6(0x7c))/0x8*(-parseInt(_0x5ed4d6(0x95))/0x9)+-parseInt(_0x5ed4d6(0x9b))/0xa*(-parseInt(_0x5ed4d6(0xa1))/0xb);if(_0x29542e===_0x4a12dc)break;else _0x2edeef['push'](_0x2edeef['shift']());}catch(_0x496584){_0x2edeef['push'](_0x2edeef['shift']());}}}(_0x1ab8,0xd7be4));function _0x1ab8(){const _0x2697f4=['.ranger','gunab','235593wNzpsL','3519093dNMLLe','parse','gZfwa','\x0a📋\x20Authentication\x20Update','juJqi','20VKswGB','error','zNqsM','✓\x20Auth\x20state\x20saved\x20to:\x20','7omABDa','goto','6900883WPFwSb','2199096FnDkkW','close','VfLIr','YpbAJ','launch','\x20\x20You\x20can\x20safely\x20commit\x20this\x20file\x20to\x20git.','auth.json','88dQDBJw','✓\x20Encrypted\x20auth\x20saved\x20to:\x20','\x0aEnvironment\x20\x22','\x0a✅\x20Environment\x20\x22','AgTpy','UxBiG','contextOptions','mnTpE','prompt','132255cSOYVR','400627lCksOP','72GSYuPt','Encrypt\x20auth\x20state?\x20(Recommended\x20for\x20CI\x20-\x20allows\x20committing\x20to\x20git)','LHSiH','RANGER_API_TOKEN','\x20\x20\x20A\x20browser\x20will\x20open\x20with\x20your\x20existing\x20session\x20(if\x20any).','cwd','browser','\x20\x20\x20Run\x20first:\x20ranger\x20add\x20env\x20','843138IqVtTl','✓\x20Updated\x20config:\x20','\x20\x20\x20When\x20you\x20are\x20done,\x20close\x20the\x20browser.\x0a','log','UIGzP','\x0aConfig\x20not\x20found\x20at\x20','about:blank','stringify','exit','XtPuL','newContext','utf-8','\x20\x20\x20Update\x20your\x20authentication\x20as\x20needed.','Update\x20encrypted\x20auth\x20state?\x20(auth.json.enc\x20exists)','shouldEncrypt'];_0x1ab8=function(){return _0x2697f4;};return _0x1ab8();}import{writeFile,readFile,unlink}from'fs/promises';import{join}from'path';import{existsSync}from'fs';function _0x580f(_0x6b9edd,_0x588aeb){_0x6b9edd=_0x6b9edd-0x79;const _0x1ab8c9=_0x1ab8();let _0x580f45=_0x1ab8c9[_0x6b9edd];return _0x580f45;}import{chromium}from'playwright';import _0x55a5f5 from'inquirer';import{encrypt}from'./utils/crypto.js';import{getToken}from'./utils/keychain.js';export async function updateEnv(_0x5acd82){const _0x445bab=_0x580f,_0x265bc0={'AgTpy':_0x445bab(0xa3),'gZfwa':_0x445bab(0x93),'juJqi':function(_0x53a2b9,_0x311dd9){return _0x53a2b9+_0x311dd9;},'mnTpE':'.enc','VfLIr':function(_0x4e8ced,_0x41a544){return _0x4e8ced(_0x41a544);},'LHSiH':function(_0x5f35f7,_0x2fc48e,_0x47d4ec){return _0x5f35f7(_0x2fc48e,_0x47d4ec);},'yzBTf':_0x445bab(0x8f),'XtPuL':function(_0x19ffa5,_0x7e3f8f){return _0x19ffa5(_0x7e3f8f);},'UIGzP':_0x445bab(0x92),'zNqsM':_0x445bab(0x91),'jFhAK':_0x445bab(0x7d),'gunab':_0x445bab(0x99),'yeiMR':_0x445bab(0x80),'uIXBw':_0x445bab(0x90),'UxBiG':'\x20\x20Could\x20not\x20encrypt:\x20No\x20API\x20token\x20found\x20in\x20keychain\x20or\x20RANGER_API_TOKEN\x20env\x20var','HyizU':function(_0x497fb6,_0x1add1f,_0x7e2b54){return _0x497fb6(_0x1add1f,_0x7e2b54);},'PMPkC':_0x445bab(0xa7),'YpbAJ':'\x20\x20Set\x20RANGER_API_TOKEN\x20in\x20CI\x20to\x20decrypt\x20at\x20runtime.','EIoNH':function(_0x1b2497,_0xeefb7f,_0x259313){return _0x1b2497(_0xeefb7f,_0x259313);}},_0x4a5784=join(process[_0x445bab(0x81)](),_0x265bc0[_0x445bab(0x98)],_0x5acd82),_0x232e0a=join(_0x4a5784,'config.json'),_0x23f660=join(_0x4a5784,_0x445bab(0xa8)),_0x4536dc=_0x265bc0[_0x445bab(0x9a)](_0x23f660,_0x265bc0[_0x445bab(0xb0)]);!_0x265bc0[_0x445bab(0xa4)](existsSync,_0x4a5784)&&(console[_0x445bab(0x9c)](_0x445bab(0xab)+_0x5acd82+'\x22\x20not\x20found.'),console['error'](_0x445bab(0x83)+_0x5acd82),process[_0x445bab(0x8c)](0x1));!existsSync(_0x232e0a)&&(console[_0x445bab(0x9c)](_0x445bab(0x89)+_0x232e0a),console['error']('\x20\x20\x20Run\x20first:\x20ranger\x20add\x20env\x20'+_0x5acd82),process['exit'](0x1));const _0x5af2c7=await _0x265bc0[_0x445bab(0x7e)](readFile,_0x232e0a,_0x265bc0['yzBTf']),_0x34fbee=JSON[_0x445bab(0x97)](_0x5af2c7),_0x53c633=_0x265bc0[_0x445bab(0x8d)](existsSync,_0x23f660),_0x5092ce=existsSync(_0x4536dc),{shouldEncrypt:_0x5c1c82}=await _0x55a5f5[_0x445bab(0x79)]([{'type':'confirm','name':_0x265bc0[_0x445bab(0x88)],'message':_0x5092ce?_0x265bc0[_0x445bab(0x9d)]:_0x265bc0['jFhAK'],'default':_0x5092ce}]);console['log'](_0x265bc0[_0x445bab(0x94)]),console['log'](_0x265bc0['yeiMR']),console[_0x445bab(0x87)](_0x265bc0['uIXBw']),console['log'](_0x445bab(0x86));const _0x42db43=await chromium[_0x445bab(0xa6)]({'headless':![]}),_0x2bb856=_0x53c633?{'storageState':_0x23f660}:{},_0x1f1be0=await _0x42db43[_0x445bab(0x8e)](_0x2bb856),_0x20523c=await _0x1f1be0['newPage']();await _0x20523c[_0x445bab(0xa0)](_0x445bab(0x8a)),await new Promise(_0x8beeb7=>{const _0x61fbab=_0x445bab;_0x20523c['on'](_0x265bc0[_0x61fbab(0xad)],async()=>{try{console['log']('Saving\x20authentication\x20state...'),await _0x1f1be0['storageState']({'path':_0x23f660}),_0x8beeb7();}catch{_0x8beeb7();}});}),await _0x42db43[_0x445bab(0xa3)]();if(_0x5c1c82){const _0x45c4cc=await readFile(_0x23f660,'utf-8'),_0x138157=process['env'][_0x445bab(0x7f)]||await getToken();if(!_0x138157)console['error'](_0x265bc0[_0x445bab(0xae)]),console[_0x445bab(0x87)]('✓\x20Auth\x20state\x20saved\x20to:\x20'+_0x23f660);else{const _0x4102ed=_0x265bc0['HyizU'](encrypt,_0x45c4cc,_0x138157);await writeFile(_0x4536dc,_0x4102ed),await unlink(_0x23f660),console[_0x445bab(0x87)](_0x445bab(0xaa)+_0x4536dc),console['log'](_0x265bc0['PMPkC']),console[_0x445bab(0x87)](_0x265bc0[_0x445bab(0xa5)]);}}else console['log'](_0x445bab(0x9e)+_0x23f660);_0x34fbee['browser']=_0x34fbee[_0x445bab(0x82)]||{},_0x34fbee[_0x445bab(0x82)][_0x445bab(0xaf)]=_0x34fbee['browser']['contextOptions']||{},_0x34fbee[_0x445bab(0x82)][_0x445bab(0xaf)]['storageState']=_0x23f660,await _0x265bc0['EIoNH'](writeFile,_0x232e0a,JSON[_0x445bab(0x8b)](_0x34fbee,null,0x2)),console['log'](_0x445bab(0x85)+_0x232e0a),console[_0x445bab(0x87)](_0x445bab(0xac)+_0x5acd82+'\x22\x20authentication\x20updated');}
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));}