@ranger-testing/ranger-cli 1.0.13 → 1.1.0
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 +72 -183
- package/build/cli.js +219 -278
- 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/authEncrypt.js +7 -6
- package/build/commands/authEncrypt.js.map +1 -1
- package/build/commands/clean.js +1 -1
- package/build/commands/clean.js.map +1 -1
- package/build/commands/config.js +5 -4
- package/build/commands/config.js.map +1 -1
- package/build/commands/dataMcpServer.js +1 -1
- package/build/commands/dataMcpServer.js.map +1 -1
- package/build/commands/env.js +17 -10
- package/build/commands/env.js.map +1 -1
- package/build/commands/feature.js +277 -285
- package/build/commands/feature.js.map +1 -1
- package/build/commands/hook.js +27 -0
- package/build/commands/hook.js.map +1 -0
- package/build/commands/hooks/disable.js +25 -0
- package/build/commands/hooks/disable.js.map +1 -0
- package/build/commands/hooks/enable.js +44 -0
- package/build/commands/hooks/enable.js.map +1 -0
- package/build/commands/hooks/exitPlanMode.js +35 -0
- package/build/commands/hooks/exitPlanMode.js.map +1 -0
- package/build/commands/hooks/index.js +10 -0
- package/build/commands/hooks/index.js.map +1 -0
- package/build/commands/hooks/output.js +53 -0
- package/build/commands/hooks/output.js.map +1 -0
- package/build/commands/hooks/planReminder.js +46 -0
- package/build/commands/hooks/planReminder.js.map +1 -0
- package/build/commands/hooks/planStart.js +30 -0
- package/build/commands/hooks/planStart.js.map +1 -0
- package/build/commands/hooks/postEdit.js +41 -0
- package/build/commands/hooks/postEdit.js.map +1 -0
- package/build/commands/hooks/preCompact.js +30 -0
- package/build/commands/hooks/preCompact.js.map +1 -0
- package/build/commands/hooks/sessionStart.js +35 -0
- package/build/commands/hooks/sessionStart.js.map +1 -0
- package/build/commands/hooks/stopHook.js +54 -0
- package/build/commands/hooks/stopHook.js.map +1 -0
- package/build/commands/index.js +1 -0
- package/build/commands/index.js.map +1 -1
- package/build/commands/skillup.js +41 -77
- 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 +47 -65
- package/build/commands/status.js.map +1 -1
- package/build/commands/update.js +32 -40
- 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/claudePlugin.js +85 -0
- package/build/commands/utils/claudePlugin.js.map +1 -0
- package/build/commands/utils/cliSecret.js +1 -1
- package/build/commands/utils/environment.js +0 -6
- package/build/commands/utils/environment.js.map +1 -1
- package/build/commands/utils/featureApi.js +82 -15
- package/build/commands/utils/featureApi.js.map +1 -1
- package/build/commands/utils/featureReportGenerator.js +37 -3
- package/build/commands/utils/featureReportGenerator.js.map +1 -1
- package/build/commands/utils/git.js +44 -0
- package/build/commands/utils/git.js.map +1 -0
- package/build/commands/utils/keychain.js +1 -1
- package/build/commands/utils/keychain.js.map +1 -1
- package/build/commands/utils/localAgentInstallationsApi.js +1 -1
- package/build/commands/utils/rangerRoot.js +30 -0
- package/build/commands/utils/rangerRoot.js.map +1 -0
- package/build/commands/utils/sessionCache.js +133 -0
- package/build/commands/utils/sessionCache.js.map +1 -0
- package/build/commands/utils/settings.js +7 -5
- package/build/commands/utils/settings.js.map +1 -1
- package/build/commands/utils/skillContent.js +28 -0
- package/build/commands/utils/skillContent.js.map +1 -0
- package/build/commands/utils/skills.js +1 -1
- package/build/commands/utils/skills.js.map +1 -1
- package/build/commands/utils/userApi.js +32 -0
- package/build/commands/utils/userApi.js.map +1 -0
- package/build/commands/verifyFeature.js +450 -105
- package/build/commands/verifyFeature.js.map +1 -1
- package/build/commands/verifyInBrowser.js +1 -1
- package/build/commands/verifyInBrowser.js.map +1 -1
- package/build/skills/bug-bash.md +31 -10
- package/build/skills/ranger/SKILL.md +164 -0
- package/build/skills/ranger/create.md +151 -0
- package/build/skills/ranger/start.md +122 -0
- package/build/skills/{feature-tracker → ranger}/verify.md +43 -17
- package/package.json +5 -3
- package/scripts/postinstall.js +18 -0
- package/build/commands/utils/mcpConfig.js +0 -1
- package/build/commands/utils/mcpConfig.js.map +0 -1
- package/build/skills/feature-tracker/SKILL.md +0 -185
- package/build/skills/feature-tracker/create.md +0 -105
- package/build/skills/feature-tracker/manage.md +0 -145
- package/build/skills/feature-tracker/report.md +0 -159
- package/build/skills/feature-tracker/start.md +0 -93
|
@@ -4,10 +4,9 @@ import { existsSync } from 'fs';
|
|
|
4
4
|
import inquirer from 'inquirer';
|
|
5
5
|
import { getToken } from './utils/keychain.js';
|
|
6
6
|
import { installSkill } from './utils/skills.js';
|
|
7
|
-
import { loadMcpConfig, saveMcpConfig, hasRangerServer, setRangerServer, } from './utils/mcpConfig.js';
|
|
8
7
|
import { getCurrentVersion } from './utils/version.js';
|
|
9
|
-
import { getClaudeConfigDir, getProjectRoot,
|
|
10
|
-
import {
|
|
8
|
+
import { getClaudeConfigDir, getProjectRoot, } from './utils/claudeConfig.js';
|
|
9
|
+
import { getRangerDir } from './utils/rangerRoot.js';
|
|
11
10
|
/**
|
|
12
11
|
* Get list of available environment names from .ranger directory
|
|
13
12
|
*/
|
|
@@ -29,13 +28,13 @@ export async function skillup() {
|
|
|
29
28
|
if (!token) {
|
|
30
29
|
console.log('❌ No Ranger API token found in keychain.\n');
|
|
31
30
|
console.log('To get started:');
|
|
32
|
-
console.log(' 1. Get your API token from https://dashboard.ranger.net/
|
|
31
|
+
console.log(' 1. Get your API token from https://dashboard.ranger.net/cli');
|
|
33
32
|
console.log(' 2. Run: ranger start <your-api-token>');
|
|
34
33
|
console.log(' 3. Run: ranger skillup\n');
|
|
35
34
|
return;
|
|
36
35
|
}
|
|
37
36
|
console.log('✓ Found API token in keychain');
|
|
38
|
-
const rangerDir =
|
|
37
|
+
const rangerDir = getRangerDir();
|
|
39
38
|
const activeEnvPath = join(rangerDir, 'active-env.txt');
|
|
40
39
|
const hasActiveEnv = existsSync(activeEnvPath);
|
|
41
40
|
let activeEnv = null;
|
|
@@ -50,43 +49,41 @@ export async function skillup() {
|
|
|
50
49
|
}
|
|
51
50
|
const projectRoot = getProjectRoot();
|
|
52
51
|
const projectName = basename(projectRoot);
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
52
|
+
// Determine install level - use 'user' as default for non-TTY mode
|
|
53
|
+
const isInteractive = process.stdin.isTTY && process.stdout.isTTY;
|
|
54
|
+
let installLevel;
|
|
55
|
+
if (isInteractive) {
|
|
56
|
+
const response = await inquirer.prompt([
|
|
57
|
+
{
|
|
58
|
+
type: 'list',
|
|
59
|
+
name: 'installLevel',
|
|
60
|
+
message: 'Where should skills be installed?',
|
|
61
|
+
choices: [
|
|
62
|
+
{
|
|
63
|
+
name: `All projects (${getClaudeConfigDir()}/skills/)`,
|
|
64
|
+
value: 'user',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: `This project only (${projectName}/.claude/skills/)`,
|
|
68
|
+
value: 'project',
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
]);
|
|
73
|
+
installLevel = response.installLevel;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// Non-interactive mode: default to project-level installation
|
|
77
|
+
installLevel = 'project';
|
|
78
|
+
console.log(`Non-interactive mode: Installing skills at project level (${projectName}/.claude/skills/)`);
|
|
79
|
+
}
|
|
70
80
|
let installedCount = 0;
|
|
71
81
|
const cliVersion = getCurrentVersion();
|
|
72
82
|
console.log('\n📦 Installing skills...\n');
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
level: installLevel,
|
|
76
|
-
cliVersion,
|
|
77
|
-
});
|
|
78
|
-
if (installed) {
|
|
79
|
-
installedCount++;
|
|
80
|
-
await configureMcpServer(installLevel);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
catch (error) {
|
|
84
|
-
console.warn(' Failed to install e2e-test-recommender skill:', error instanceof Error ? error.message : error);
|
|
85
|
-
}
|
|
86
|
-
// Install feature-tracker ONLY for non-prod environments
|
|
87
|
-
if (getCurrentEnvironment() !== 'prod') {
|
|
83
|
+
// Install ranger (requires API token AND active environment)
|
|
84
|
+
if (activeEnv) {
|
|
88
85
|
try {
|
|
89
|
-
const featureTrackerInstalled = await installSkill('
|
|
86
|
+
const featureTrackerInstalled = await installSkill('ranger', {
|
|
90
87
|
cliVersion,
|
|
91
88
|
level: installLevel,
|
|
92
89
|
});
|
|
@@ -95,27 +92,12 @@ export async function skillup() {
|
|
|
95
92
|
}
|
|
96
93
|
}
|
|
97
94
|
catch (error) {
|
|
98
|
-
console.warn(' Failed to install
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
// Install bug-bash (requires API token AND active environment)
|
|
102
|
-
if (activeEnv) {
|
|
103
|
-
try {
|
|
104
|
-
const installed = await installSkill('bug-bash', {
|
|
105
|
-
level: installLevel,
|
|
106
|
-
cliVersion,
|
|
107
|
-
});
|
|
108
|
-
if (installed) {
|
|
109
|
-
installedCount++;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
console.warn(' Failed to install bug-bash skill:', error instanceof Error ? error.message : error);
|
|
95
|
+
console.warn(' Failed to install ranger skill:', error instanceof Error ? error.message : error);
|
|
114
96
|
}
|
|
115
97
|
}
|
|
116
98
|
else {
|
|
117
|
-
console.log('\n⚠️
|
|
118
|
-
console.log('To install
|
|
99
|
+
console.log('\n⚠️ Ranger skill not installed (requires active environment)\n');
|
|
100
|
+
console.log('To install Ranger skill:');
|
|
119
101
|
// Provide context-aware guidance based on whether .ranger directory exists
|
|
120
102
|
const hasRangerDir = existsSync(rangerDir);
|
|
121
103
|
if (!hasRangerDir) {
|
|
@@ -137,30 +119,12 @@ export async function skillup() {
|
|
|
137
119
|
if (installedCount > 0) {
|
|
138
120
|
const levelDesc = installLevel === 'user' ? 'user-level' : 'project-level';
|
|
139
121
|
console.log(`\n✅ Installed ${installedCount} ${levelDesc} skill${installedCount > 1 ? 's' : ''} successfully!\n`);
|
|
140
|
-
console.log('To use skills
|
|
141
|
-
console.log(
|
|
142
|
-
console.log(' - Or ask
|
|
122
|
+
console.log('To use skills:');
|
|
123
|
+
console.log(` - Use '/ranger' to track and verify feature implementations`);
|
|
124
|
+
console.log(' - Or ask your agent to use Ranger to verify features in the browser\n');
|
|
143
125
|
}
|
|
144
126
|
else {
|
|
145
127
|
console.log('\n⚠️ No skills were installed.\n');
|
|
146
128
|
}
|
|
147
129
|
}
|
|
148
|
-
async function configureMcpServer(level) {
|
|
149
|
-
if (level === 'user') {
|
|
150
|
-
const settings = await loadClaudeSettings();
|
|
151
|
-
if (!hasRangerServerInSettings(settings)) {
|
|
152
|
-
setRangerServerInSettings(settings);
|
|
153
|
-
await saveClaudeSettings(settings);
|
|
154
|
-
console.log(` ✓ Added ranger data-mcp-server to ${getClaudeConfigDir()}/settings.json`);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
const mcpConfig = await loadMcpConfig();
|
|
159
|
-
if (!hasRangerServer(mcpConfig)) {
|
|
160
|
-
setRangerServer(mcpConfig);
|
|
161
|
-
await saveMcpConfig(mcpConfig);
|
|
162
|
-
console.log(' ✓ Added ranger data-mcp-server to .mcp.json');
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
130
|
//# 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,QAAQ,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,
|
|
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 _0x20bc(){const _0x49c4d1=['\x0a✅\x20Ranger\x20setup\x20complete!\x0a','1330ZhvAzL','cwd','version','Next\x20steps:','56KiLBTn','8aEJTBg','\x20\x20npx\x20playwright\x20install\x20chromium','PiEmu','\x20install\x20chromium','close','error','exit','✓\x20Stored\x20credentials\x20in\x20OS\x20Keychain','\x20\x202.\x20Install\x20skills\x20for\x20Claude\x20Code:','\x20\x20\x20\x20\x20ranger\x20add\x20env\x20local','Onwkp','Please\x20check\x20your\x20network\x20connection\x20and\x20server\x20URL.','You\x20will\x20need\x20to\x20install\x20it\x20before\x20using\x20Ranger:','\x20\x20npx\x20playwright@','216621sNRjCF','\x0a❌\x20Failed\x20to\x20install\x20Chromium:','log','Installation\x20failed\x20with\x20exit\x20code\x20','hliTe','NrqcQ','PKSnu','\x0a✓\x20Playwright\x20Chromium\x20installed\x20successfully','\x0a💡\x20Tip:\x20Run\x20\x22ranger\x20skillup\x22\x20after\x20setup\x20to\x20install\x20the\x20e2e-test-recommender\x20skill','Cyyqk','358620eWpTIG','FrfHp','\x20\x20\x20\x20\x20ranger\x20skillup\x0a','Required\x20Playwright\x20Chromium\x20browser\x20is\x20missing.\x20Install\x20it\x20now?','✓\x20Created/updated\x20.mcp.json\x20with\x20Ranger\x20MCP\x20proxy','✓\x20Created\x20.ranger/\x20directory','Bearer\x20','\x0a❌\x20Authentication\x20failed:\x20','\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','xBSUQ','✓\x20Created\x20.ranger/.gitignore','confirm','77dBOesf','pUKNa','\x20\x201.\x20Add\x20an\x20environment:','chromium','SDODC','install','yRsmV','2208966uzUUyG','CMFSC','pkXZA','✓\x20API\x20token\x20validated\x20successfully','message','8544sHmPSt','✓\x20.ranger/\x20directory\x20already\x20exists','statusText','Validating\x20API\x20token...','4fGtqTO','vvtwR','inherit','\x0a🚀\x20Ranger\x20Setup\x0a','1703919EMUpRo','518930oNtcZX','yZTcq','aNTmn','6039wdbAPv','KeOtC'];_0x20bc=function(){return _0x49c4d1;};return _0x20bc();}function _0x461c(_0x2b3b6a,_0xc277e5){_0x2b3b6a=_0x2b3b6a-0xc9;const _0x20bce4=_0x20bc();let _0x461cd3=_0x20bce4[_0x2b3b6a];return _0x461cd3;}(function(_0x272ff,_0x295230){const _0x5adbf2=_0x461c,_0x12c709=_0x272ff();while(!![]){try{const _0x33242b=parseInt(_0x5adbf2(0xd8))/0x1+parseInt(_0x5adbf2(0xc9))/0x2*(parseInt(_0x5adbf2(0xfa))/0x3)+parseInt(_0x5adbf2(0xfe))/0x4*(-parseInt(_0x5adbf2(0x103))/0x5)+-parseInt(_0x5adbf2(0xf5))/0x6+-parseInt(_0x5adbf2(0x102))/0x7*(-parseInt(_0x5adbf2(0xca))/0x8)+parseInt(_0x5adbf2(0x106))/0x9*(-parseInt(_0x5adbf2(0x109))/0xa)+-parseInt(_0x5adbf2(0xee))/0xb*(-parseInt(_0x5adbf2(0xe2))/0xc);if(_0x33242b===_0x295230)break;else _0x12c709['push'](_0x12c709['shift']());}catch(_0x181021){_0x12c709['push'](_0x12c709['shift']());}}}(_0x20bc,0x2dd8b));import{mkdir,writeFile}from'fs/promises';import{join}from'path';import{existsSync}from'fs';import{createRequire}from'module';import{spawn}from'child_process';import _0x340b36 from'inquirer';import{loadMcpConfig,saveMcpConfig,setRangerServer}from'./utils/mcpConfig.js';import{storeToken,storeServerUrl}from'./utils/keychain.js';import{getMcpServerUrl}from'./utils/environment.js';import{chromium}from'playwright';const require=createRequire(import.meta.url);function getPlaywrightVersion(){const _0x15f2c4=_0x461c,_0x1f8d91={'pUKNa':'playwright/package.json'};try{const _0x282c32=require['resolve'](_0x1f8d91[_0x15f2c4(0xef)]),_0x18c072=require(_0x282c32);return _0x18c072[_0x15f2c4(0x10b)];}catch{return null;}}function installChromium(_0x401f09){const _0x12f340=_0x461c,_0x4de32c={'qIIcQ':function(_0x3090ca,_0x2b5268){return _0x3090ca(_0x2b5268);},'Onwkp':function(_0x5a250f){return _0x5a250f();},'xinwx':'chromium','BIsOh':_0x12f340(0x100),'NrqcQ':_0x12f340(0xce),'rRcTI':_0x12f340(0xcf)};return new Promise((_0x763a19,_0x36df2f)=>{const _0x329c31=_0x12f340,_0x157696={'bEpBa':function(_0x8e8cfe){const _0x36e0bc=_0x461c;return _0x4de32c[_0x36e0bc(0xd4)](_0x8e8cfe);}},_0x2ca154=_0x401f09?['playwright@'+_0x401f09,'install',_0x329c31(0xf1)]:['playwright',_0x329c31(0xf3),_0x4de32c['xinwx']],_0x475d88=spawn('npx',_0x2ca154,{'stdio':_0x4de32c['BIsOh'],'shell':!![]});_0x475d88['on'](_0x4de32c[_0x329c31(0xdd)],_0x83eac2=>{const _0x1ebf54=_0x329c31;_0x83eac2===0x0?_0x157696['bEpBa'](_0x763a19):_0x36df2f(new Error(_0x1ebf54(0xdb)+_0x83eac2));}),_0x475d88['on'](_0x4de32c['rRcTI'],_0x5e5086=>{_0x4de32c['qIIcQ'](_0x36df2f,_0x5e5086);});});}export async function start(_0x474108){const _0x36828c=_0x461c,_0x226b31={'vvtwR':_0x36828c(0x101),'iafLF':'GET','PiEmu':'\x0a❌\x20Failed\x20to\x20connect\x20to\x20MCP\x20server:','yZTcq':_0x36828c(0xd5),'xBSUQ':function(_0x153157){return _0x153157();},'SDODC':function(_0x58fdd7,_0x12acbd){return _0x58fdd7(_0x12acbd);},'sFYsk':_0x36828c(0xfb),'QvKQb':'✓\x20Playwright\x20Chromium\x20browser\x20found','aNTmn':function(_0x55e2ac){return _0x55e2ac();},'PKSnu':_0x36828c(0xed),'FrfHp':_0x36828c(0xe5),'Cyyqk':_0x36828c(0xdf),'hliTe':_0x36828c(0xd9),'yRsmV':'You\x20can\x20install\x20it\x20manually\x20by\x20running:','icXQG':_0x36828c(0xcb),'KeOtC':_0x36828c(0xd6),'CMFSC':_0x36828c(0xe0),'TwABr':'.gitignore','RHCGv':_0x36828c(0xf0),'pkXZA':_0x36828c(0xe4)};console[_0x36828c(0xda)](_0x226b31[_0x36828c(0xff)]);const _0x2e83e0=getMcpServerUrl();console['log'](_0x36828c(0xfd));try{const _0x1442be=await fetch(_0x2e83e0+'/me',{'method':_0x226b31['iafLF'],'headers':{'Authorization':_0x36828c(0xe8)+_0x474108}});!_0x1442be['ok']&&(console[_0x36828c(0xcf)](_0x36828c(0xe9)+_0x1442be['status']+'\x20'+_0x1442be[_0x36828c(0xfc)]),console[_0x36828c(0xcf)]('Please\x20check\x20your\x20API\x20token\x20and\x20try\x20again.'),process[_0x36828c(0xd0)](0x1)),console['log'](_0x36828c(0xf8));}catch(_0x3e5133){console['error'](_0x226b31[_0x36828c(0xcc)],_0x3e5133 instanceof Error?_0x3e5133[_0x36828c(0xf9)]:_0x3e5133),console[_0x36828c(0xcf)](_0x226b31[_0x36828c(0x104)]),process[_0x36828c(0xd0)](0x1);}await storeToken(_0x474108),await storeServerUrl(_0x2e83e0),console[_0x36828c(0xda)](_0x36828c(0xd1));const _0x4c0f9c=await _0x226b31[_0x36828c(0xeb)](loadMcpConfig);setRangerServer(_0x4c0f9c),await saveMcpConfig(_0x4c0f9c),console['log'](_0x36828c(0xe6));const _0x4c6cb3=join(process[_0x36828c(0x10a)](),'.ranger');!_0x226b31['SDODC'](existsSync,_0x4c6cb3)?(await mkdir(_0x4c6cb3,{'recursive':!![]}),console[_0x36828c(0xda)](_0x36828c(0xe7))):console[_0x36828c(0xda)](_0x226b31['sFYsk']);let _0x353832=![];try{const _0x52af5b=chromium['executablePath']();_0x353832=_0x226b31[_0x36828c(0xf2)](existsSync,_0x52af5b);}catch{_0x353832=![];}if(_0x353832)console['log'](_0x226b31['QvKQb']);else{const _0x5de857=_0x226b31[_0x36828c(0x105)](getPlaywrightVersion),{install:_0x2bfc9a}=await _0x340b36['prompt']([{'type':_0x226b31[_0x36828c(0xde)],'name':_0x36828c(0xf3),'message':_0x226b31[_0x36828c(0xe3)],'default':!![]}]);if(_0x2bfc9a){console[_0x36828c(0xda)]('\x0aInstalling\x20Chromium\x20browser...\x0a');try{await installChromium(_0x5de857),console[_0x36828c(0xda)](_0x226b31[_0x36828c(0xe1)]);}catch(_0x36e5fb){console['error'](_0x226b31[_0x36828c(0xdc)],_0x36e5fb instanceof Error?_0x36e5fb['message']:_0x36e5fb),console['log'](_0x226b31[_0x36828c(0xf4)]),_0x5de857?console['log'](_0x36828c(0xd7)+_0x5de857+_0x36828c(0xcd)):console['log'](_0x226b31['icXQG']);}}else console['log']('\x0a⚠\x20Skipping\x20Chromium\x20installation.'),console[_0x36828c(0xda)](_0x226b31[_0x36828c(0x107)]),_0x5de857?console['log']('\x20\x20npx\x20playwright@'+_0x5de857+'\x20install\x20chromium'):console['log'](_0x36828c(0xcb));}console['log'](_0x226b31[_0x36828c(0xf6)]);const _0x405ed1=join(_0x4c6cb3,_0x226b31['TwABr']),_0x21398e=_0x36828c(0xea);await writeFile(_0x405ed1,_0x21398e),console[_0x36828c(0xda)](_0x36828c(0xec)),console['log'](_0x36828c(0x108)),console['log'](_0x36828c(0x10c)),console['log'](_0x226b31['RHCGv']),console['log'](_0x36828c(0xd3)),console[_0x36828c(0xda)](_0x36828c(0xd2)),console[_0x36828c(0xda)](_0x226b31[_0x36828c(0xf7)]);}
|
|
1
|
+
(function(_0x5e7639,_0x343e5c){const _0x336192=_0x3807,_0x21d7d2=_0x5e7639();while(!![]){try{const _0x3ccf67=parseInt(_0x336192(0x13f))/0x1+parseInt(_0x336192(0x13c))/0x2*(parseInt(_0x336192(0x136))/0x3)+parseInt(_0x336192(0x121))/0x4+parseInt(_0x336192(0xf3))/0x5*(parseInt(_0x336192(0xf0))/0x6)+-parseInt(_0x336192(0x12c))/0x7+parseInt(_0x336192(0xfd))/0x8+-parseInt(_0x336192(0x11b))/0x9;if(_0x3ccf67===_0x343e5c)break;else _0x21d7d2['push'](_0x21d7d2['shift']());}catch(_0x276c30){_0x21d7d2['push'](_0x21d7d2['shift']());}}}(_0x8cf4,0xefebf));import{mkdir,writeFile}from'fs/promises';import{join}from'path';import{existsSync}from'fs';import{createRequire}from'module';import{spawn}from'child_process';import _0x22cc75 from'inquirer';import{storeToken}from'./utils/keychain.js';import{getCurrentUser}from'./utils/userApi.js';import{chromium}from'playwright';import{addEnv}from'./addEnv.js';import{skillup}from'./skillup.js';import{getRangerDir}from'./utils/rangerRoot.js';import{runClaudeCommand,isMarketplaceAdded,isPluginInstalled}from'./utils/claudePlugin.js';function _0x3807(_0x16aeb0,_0x1b6a2a){_0x16aeb0=_0x16aeb0-0xf0;const _0x8cf49a=_0x8cf4();let _0x3807e4=_0x8cf49a[_0x16aeb0];return _0x3807e4;}const require=createRequire(import.meta.url);function _0x8cf4(){const _0x43f117=['Do\x20you\x20want\x20to\x20add\x20an\x20environment\x20now?','wantsSkillup','1093905tPfyuD','cWAsW','✓\x20.ranger/\x20directory\x20already\x20exists','OcPZD','success','✓\x20Created\x20.ranger/\x20directory','KUNrI','\x0aInstalling\x20Chromium\x20browser...\x0a','6QlEHuX','sOrhf','ASxCi','2966325OKFQms','JgkGo','confirm','log','ranger-testing/trailhead','prompt','Installation\x20failed\x20with\x20exit\x20code\x20','\x0a❌\x20Failed\x20to\x20connect\x20to\x20MCP\x20server:\x20','✓\x20Stored\x20credentials\x20in\x20OS\x20Keychain','\x20\x20claude\x20plugin\x20marketplace\x20add\x20ranger-testing/trailhead','14355640ZBlOkF','wantsPlugin','EgLFe','\x0a⚠\x20Skipping\x20Chromium\x20installation.','xdoiu','\x20\x20npx\x20playwright\x20install\x20chromium','Please\x20check\x20your\x20API\x20token\x20and\x20try\x20again.','input','error','ranger@trailhead','uxNuG','SCnrw','inherit','user','TfpCC','iNyIF','playwright','Validating\x20API\x20token...','xtbgO','\x0a✅\x20Ranger\x20setup\x20complete!\x0a','project','Required\x20Playwright\x20Chromium\x20browser\x20is\x20missing.\x20Install\x20it\x20now?','.gitignore','\x0aInstalling\x20Claude\x20Code\x20plugin...\x0a','env','IqJPx','add','\x0a❌\x20Authentication\x20failed:\x20','lIrdg','You\x20will\x20need\x20to\x20install\x20it\x20before\x20using\x20Ranger:','19084023HgpFmE','ZeIAh','local','trailhead','\x0aNext\x20steps:','install','1696264SjTbQR','User\x20(available\x20in\x20all\x20your\x20projects)','stdin','Non-interactive\x20mode\x20detected.\x20Skipping\x20optional\x20setup\x20prompts.','sCiDF','\x20\x20claude\x20plugin\x20install\x20ranger@trailhead\x20--scope\x20','status','executablePath','RaaUQ','kvOBN','\x20\x20\x20\x20\x20claude\x20plugin\x20install\x20ranger@trailhead\x0a','13127947tTEDzM','ZaROf','\x0a🚀\x20Ranger\x20Setup\x0a','ufqcv','\x0aNon-interactive\x20mode:\x20Auto-installing\x20Playwright\x20Chromium...','Where\x20should\x20the\x20plugin\x20be\x20installed?','jHFhg','IMfIf','✓\x20Exported\x20credentials\x20for\x20CI','✓\x20Playwright\x20Chromium\x20browser\x20found','396JadsnW','What\x20should\x20the\x20environment\x20be\x20named?','\x20\x20claude\x20plugin\x20install\x20ranger@trailhead\x0a','playwright@','message','cIipn','16256AcEyJy'];_0x8cf4=function(){return _0x43f117;};return _0x8cf4();}function getPlaywrightVersion(){const _0x3a5c61=_0x3807,_0x5dfa83={'xdoiu':'playwright/package.json'};try{const _0x4aa5d1=require['resolve'](_0x5dfa83[_0x3a5c61(0x101)]),_0xbeeaf=require(_0x4aa5d1);return _0xbeeaf['version'];}catch{return null;}}function installChromium(_0xa5ece8){const _0x22c999=_0x3807,_0x16b947={'RaaUQ':function(_0xa72388){return _0xa72388();},'kvOBN':function(_0x22cf9f,_0x5738db){return _0x22cf9f(_0x5738db);},'JgkGo':_0x22c999(0x120),'IqJPx':'chromium','iHbdd':function(_0x518134,_0x3c781b,_0x6ae159,_0x41a6f6){return _0x518134(_0x3c781b,_0x6ae159,_0x41a6f6);},'oOryB':'close'};return new Promise((_0x248e5c,_0x101c13)=>{const _0x1b1df4=_0x22c999,_0x4e83fb=_0xa5ece8?[_0x1b1df4(0x139)+_0xa5ece8,'install','chromium']:[_0x1b1df4(0x10d),_0x16b947[_0x1b1df4(0xf4)],_0x16b947[_0x1b1df4(0x116)]],_0x4d5ef3=_0x16b947['iHbdd'](spawn,'npx',_0x4e83fb,{'stdio':_0x1b1df4(0x109),'shell':!![]});_0x4d5ef3['on'](_0x16b947['oOryB'],_0x527344=>{const _0x396cf2=_0x1b1df4;_0x527344===0x0?_0x16b947[_0x396cf2(0x129)](_0x248e5c):_0x101c13(new Error(_0x396cf2(0xf9)+_0x527344));}),_0x4d5ef3['on']('error',_0x5c4595=>{const _0x75a70=_0x1b1df4;_0x16b947[_0x75a70(0x12a)](_0x101c13,_0x5c4595);});});}export async function start(_0x3fb7f5){const _0xb68ce8=_0x3807,_0x2f7e12={'IsmBI':_0xb68ce8(0x12e),'SCnrw':function(_0x2998f5,_0x23abee){return _0x2998f5(_0x23abee);},'TfpCC':_0xb68ce8(0xfb),'aGvij':function(_0x1acc0a,_0x471fd2,_0xa2a0e1){return _0x1acc0a(_0x471fd2,_0xa2a0e1);},'pFGUq':_0xb68ce8(0x144),'wqROp':_0xb68ce8(0x141),'VpUsx':function(_0x40c221,_0x44a11d){return _0x40c221(_0x44a11d);},'sOrhf':function(_0x291747){return _0x291747();},'uHsAk':'confirm','ldhaN':'install','PwNYi':_0xb68ce8(0x130),'ASxCi':_0xb68ce8(0x146),'doZWp':'\x0a✓\x20Playwright\x20Chromium\x20installed\x20successfully','ZGiRE':'\x0a❌\x20Failed\x20to\x20install\x20Chromium:','nWTTM':function(_0x5dec8a,_0x26b816){return _0x5dec8a instanceof _0x26b816;},'cWAsW':'\x20\x20npx\x20playwright\x20install\x20chromium','RaaEU':_0xb68ce8(0x11a),'gKaHL':function(_0x67bee0,_0x1f4378,_0x66266a){return _0x67bee0(_0x1f4378,_0x66266a);},'sCiDF':function(_0x3ed6b3,_0x40ff30,_0x4708e3){return _0x3ed6b3(_0x40ff30,_0x4708e3);},'wvNvm':_0xb68ce8(0x110),'cxivA':_0xb68ce8(0x11f),'ZnNFU':'\x20\x203.\x20Run:\x20ranger\x20skillup','ynITh':'\x20\x204.\x20Install\x20Claude\x20Code\x20plugin:','ZaROf':'\x20\x20\x20\x20\x20claude\x20plugin\x20marketplace\x20add\x20ranger-testing/trailhead','ZeIAh':'📦\x20Claude\x20Code\x20Plugin\x0a','OcPZD':_0xb68ce8(0xfe),'ufqcv':'Do\x20you\x20want\x20to\x20install\x20the\x20Ranger\x20plugin\x20for\x20Claude\x20Code?\x20(recommended)','lIrdg':'list','LbHKs':_0xb68ce8(0x131),'IMfIf':'user','EgLFe':_0xb68ce8(0x111),'PtRfj':_0xb68ce8(0x11e),'cIipn':'marketplace','xtbgO':_0xb68ce8(0x117),'BJaYJ':'\x0aYou\x20can\x20install\x20manually\x20with:','DTjOK':_0xb68ce8(0xfc),'pbtIM':_0xb68ce8(0x106),'wxbvU':'--scope','jHFhg':'❌\x20Failed\x20to\x20install\x20plugin:','iNyIF':'\x0aTo\x20install\x20the\x20plugin\x20later,\x20run:','uxNuG':'\x20\x20\x20If\x20you\x27re\x20not\x20in\x20your\x20project\x20directory,\x20exit\x20now\x20and\x20run\x20`ranger\x20add\x20env\x20<env-name>`\x20from\x20there.\x0a','qBvQu':'wantsEnv','KUNrI':_0xb68ce8(0x104),'tZoZh':'Would\x20you\x20like\x20to\x20install\x20skills?'};console['log'](_0x2f7e12['IsmBI']),console[_0xb68ce8(0xf6)](_0xb68ce8(0x10e));const _0xd35cfc=await _0x2f7e12['SCnrw'](getCurrentUser,_0x3fb7f5);!_0xd35cfc[_0xb68ce8(0x143)]&&(_0xd35cfc[_0xb68ce8(0x127)]?(console[_0xb68ce8(0x105)](_0xb68ce8(0x118)+_0xd35cfc['error']),console['error'](_0xb68ce8(0x103))):(console['error'](_0xb68ce8(0xfa)+_0xd35cfc[_0xb68ce8(0x105)]),console['error']('Please\x20check\x20your\x20network\x20connection\x20and\x20server\x20URL.')),process['exit'](0x1));console[_0xb68ce8(0xf6)]('✓\x20Authenticated\x20to\x20'+_0xd35cfc[_0xb68ce8(0x10a)]['organizationName']),await storeToken(_0x3fb7f5),console[_0xb68ce8(0xf6)](process[_0xb68ce8(0x115)]['GITHUB_ENV']?_0xb68ce8(0x134):_0x2f7e12[_0xb68ce8(0x10b)]);const _0x5728d2=getRangerDir();!existsSync(_0x5728d2)?(await _0x2f7e12['aGvij'](mkdir,_0x5728d2,{'recursive':!![]}),console[_0xb68ce8(0xf6)](_0x2f7e12['pFGUq'])):console[_0xb68ce8(0xf6)](_0x2f7e12['wqROp']);let _0x1326b2=![];try{const _0x246658=chromium[_0xb68ce8(0x128)]();_0x1326b2=_0x2f7e12['VpUsx'](existsSync,_0x246658);}catch{_0x1326b2=![];}if(_0x1326b2)console[_0xb68ce8(0xf6)](_0xb68ce8(0x135));else{const _0x3a67ca=_0x2f7e12['sOrhf'](getPlaywrightVersion),_0x50ebef=process['stdin']['isTTY']&&process['stdout']['isTTY'];let _0x1b7552=!![];if(_0x50ebef){const {install:_0x184b70}=await _0x22cc75[_0xb68ce8(0xf8)]([{'type':_0x2f7e12['uHsAk'],'name':_0x2f7e12['ldhaN'],'message':_0xb68ce8(0x112),'default':!![]}]);_0x1b7552=_0x184b70;}else console[_0xb68ce8(0xf6)](_0x2f7e12['PwNYi']);if(_0x1b7552){console['log'](_0x2f7e12[_0xb68ce8(0xf2)]);try{await installChromium(_0x3a67ca),console[_0xb68ce8(0xf6)](_0x2f7e12['doZWp']);}catch(_0x392b2b){console[_0xb68ce8(0x105)](_0x2f7e12['ZGiRE'],_0x2f7e12['nWTTM'](_0x392b2b,Error)?_0x392b2b[_0xb68ce8(0x13a)]:_0x392b2b),console['log']('You\x20can\x20install\x20it\x20manually\x20by\x20running:'),_0x3a67ca?console[_0xb68ce8(0xf6)]('\x20\x20npx\x20playwright@'+_0x3a67ca+'\x20install\x20chromium'):console['log'](_0x2f7e12[_0xb68ce8(0x140)]);}}else console[_0xb68ce8(0xf6)](_0xb68ce8(0x100)),console[_0xb68ce8(0xf6)](_0x2f7e12['RaaEU']),_0x3a67ca?console[_0xb68ce8(0xf6)]('\x20\x20npx\x20playwright@'+_0x3a67ca+'\x20install\x20chromium'):console['log'](_0xb68ce8(0x102));}const _0x3fba6f=_0x2f7e12['gKaHL'](join,_0x5728d2,_0xb68ce8(0x113)),_0x306814='\x0a\x0a#\x20Ignore\x20local-only\x20directories\x0alocal/\x0asessions/\x0abug-bashes/\x0areports/\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 _0x2f7e12[_0xb68ce8(0x125)](writeFile,_0x3fba6f,_0x306814),console[_0xb68ce8(0xf6)]('✓\x20Created\x20.ranger/.gitignore'),console[_0xb68ce8(0xf6)](_0x2f7e12['wvNvm']);const _0x474b23=process[_0xb68ce8(0x123)]['isTTY']&&process['stdout']['isTTY'];if(!_0x474b23){console[_0xb68ce8(0xf6)](_0xb68ce8(0x124)),console['log'](_0x2f7e12['cxivA']),console[_0xb68ce8(0xf6)]('\x20\x201.\x20Navigate\x20to\x20your\x20project\x20directory'),console[_0xb68ce8(0xf6)]('\x20\x202.\x20Run:\x20ranger\x20add\x20env\x20local'),console['log'](_0x2f7e12['ZnNFU']),console['log'](_0x2f7e12['ynITh']),console['log'](_0x2f7e12[_0xb68ce8(0x12d)]),console[_0xb68ce8(0xf6)](_0xb68ce8(0x12b));return;}console['log'](_0x2f7e12[_0xb68ce8(0x11c)]);const {wantsPlugin:_0xe4a7a5}=await _0x22cc75['prompt']([{'type':_0xb68ce8(0xf5),'name':_0x2f7e12[_0xb68ce8(0x142)],'message':_0x2f7e12[_0xb68ce8(0x12f)],'default':!![]}]);if(_0xe4a7a5){const _0xa9713a=await isPluginInstalled('ranger@trailhead');if(_0xa9713a)console['log']('✓\x20Claude\x20Code\x20plugin\x20already\x20installed\x0a');else{const {pluginScope:_0x543009}=await _0x22cc75[_0xb68ce8(0xf8)]([{'type':_0x2f7e12[_0xb68ce8(0x119)],'name':'pluginScope','message':_0x2f7e12['LbHKs'],'choices':[{'name':_0xb68ce8(0x122),'value':_0x2f7e12[_0xb68ce8(0x133)]},{'name':'Project\x20(shared\x20with\x20team\x20via\x20git)','value':_0x2f7e12[_0xb68ce8(0xff)]}],'default':_0x2f7e12['IMfIf']}]);console[_0xb68ce8(0xf6)](_0xb68ce8(0x114));const _0x38f3c3=await isMarketplaceAdded(_0x2f7e12['PtRfj']);let _0x508e96=_0x38f3c3;if(_0x38f3c3)console['log']('✓\x20Marketplace\x20already\x20added');else{const _0x5d6676=await runClaudeCommand(['plugin',_0x2f7e12[_0xb68ce8(0x13b)],_0x2f7e12[_0xb68ce8(0x10f)],_0xb68ce8(0xf7)]);!_0x5d6676[_0xb68ce8(0x143)]?(console[_0xb68ce8(0x105)]('❌\x20Failed\x20to\x20add\x20marketplace:',_0x5d6676[_0xb68ce8(0x105)]),console['log'](_0x2f7e12['BJaYJ']),console['log'](_0x2f7e12['DTjOK']),console[_0xb68ce8(0xf6)]('\x20\x20claude\x20plugin\x20install\x20ranger@trailhead\x20--scope\x20'+_0x543009)):_0x508e96=!![];}if(_0x508e96){const _0xaab117=await _0x2f7e12[_0xb68ce8(0x108)](runClaudeCommand,['plugin',_0x2f7e12['ldhaN'],_0x2f7e12['pbtIM'],_0x2f7e12['wxbvU'],_0x543009]);!_0xaab117[_0xb68ce8(0x143)]?(console['error'](_0x2f7e12[_0xb68ce8(0x132)],_0xaab117[_0xb68ce8(0x105)]),console[_0xb68ce8(0xf6)](_0x2f7e12['BJaYJ']),console['log'](_0xb68ce8(0x126)+_0x543009)):console[_0xb68ce8(0xf6)]('✓\x20Claude\x20Code\x20plugin\x20installed\x20successfully\x0a');}}}else console[_0xb68ce8(0xf6)](_0x2f7e12[_0xb68ce8(0x10c)]),console[_0xb68ce8(0xf6)]('\x20\x20claude\x20plugin\x20marketplace\x20add\x20ranger-testing/trailhead'),console[_0xb68ce8(0xf6)](_0xb68ce8(0x138));console[_0xb68ce8(0xf6)]('ℹ️\x20\x20To\x20add\x20an\x20environment,\x20you\x20should\x20be\x20in\x20your\x20project\x20repository.'),console['log'](_0x2f7e12[_0xb68ce8(0x107)]);const {wantsEnv:_0x1d8b10}=await _0x22cc75['prompt']([{'type':_0xb68ce8(0xf5),'name':_0x2f7e12['qBvQu'],'message':_0xb68ce8(0x13d),'default':!![]}]);if(_0x1d8b10){const {envName:_0x40d843}=await _0x22cc75['prompt']([{'type':_0x2f7e12[_0xb68ce8(0x145)],'name':'envName','message':_0xb68ce8(0x137),'default':_0xb68ce8(0x11d)}]);await addEnv(_0x40d843);}const {wantsSkillup:_0x5c1b2e}=await _0x22cc75['prompt']([{'type':_0x2f7e12['uHsAk'],'name':_0xb68ce8(0x13e),'message':_0x2f7e12['tZoZh'],'default':!![]}]);_0x5c1b2e&&await _0x2f7e12[_0xb68ce8(0xf1)](skillup);}
|
|
@@ -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,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
package/build/commands/status.js
CHANGED
|
@@ -2,10 +2,14 @@ import { readFile, readdir } from 'fs/promises';
|
|
|
2
2
|
import { join, basename } from 'path';
|
|
3
3
|
import { existsSync } from 'fs';
|
|
4
4
|
import { getToken } from './utils/keychain.js';
|
|
5
|
-
import { loadMcpConfig, hasRangerServer } from './utils/mcpConfig.js';
|
|
6
5
|
import { getCurrentVersion, getLatestVersion } from './utils/version.js';
|
|
7
|
-
import { getApiBaseUrl,
|
|
8
|
-
import { getProjectSkillsDir, getUserSkillsDir
|
|
6
|
+
import { getApiBaseUrl, getCurrentEnvironment } from './utils/environment.js';
|
|
7
|
+
import { getProjectSkillsDir, getUserSkillsDir } from './utils/claudeConfig.js';
|
|
8
|
+
import { getEnvNames } from './env.js';
|
|
9
|
+
import { getCurrentUser } from './utils/userApi.js';
|
|
10
|
+
import { getRangerDir } from './utils/rangerRoot.js';
|
|
11
|
+
import { getPluginInfo } from './utils/claudePlugin.js';
|
|
12
|
+
import { RANGER_MANAGED_SKILLS } from './utils/skills.js';
|
|
9
13
|
// ANSI formatting helpers
|
|
10
14
|
const bold = (text) => `\x1b[1m${text}\x1b[0m`;
|
|
11
15
|
const link = (path, text) => `\x1b]8;;file://${path}\x07${text || path}\x1b]8;;\x07`;
|
|
@@ -57,54 +61,33 @@ async function getInstalledSkills() {
|
|
|
57
61
|
* Get environment information from .ranger directory
|
|
58
62
|
*/
|
|
59
63
|
async function getEnvironments() {
|
|
60
|
-
const
|
|
64
|
+
const { envNames, activeEnv } = await getEnvNames();
|
|
65
|
+
const rangerDir = getRangerDir();
|
|
61
66
|
if (!existsSync(rangerDir)) {
|
|
62
67
|
return { envs: [], activeEnv: null };
|
|
63
68
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if (entry.isDirectory() &&
|
|
80
|
-
!entry.name.startsWith('.') &&
|
|
81
|
-
entry.name !== 'sessions') {
|
|
82
|
-
const envDir = join(rangerDir, entry.name);
|
|
83
|
-
const settingsPath = join(envDir, 'settings.json');
|
|
84
|
-
const plaintextAuthPath = join(envDir, 'auth.json');
|
|
85
|
-
const encryptedAuthPath = join(envDir, 'auth.json.enc');
|
|
86
|
-
envs.push({
|
|
87
|
-
name: entry.name,
|
|
88
|
-
settingsPath: existsSync(settingsPath)
|
|
89
|
-
? settingsPath
|
|
90
|
-
: '(not found)',
|
|
91
|
-
hasPlaintextAuth: existsSync(plaintextAuthPath),
|
|
92
|
-
hasEncryptedAuth: existsSync(encryptedAuthPath),
|
|
93
|
-
isActive: entry.name === activeEnv,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
catch {
|
|
99
|
-
return { envs: [], activeEnv };
|
|
100
|
-
}
|
|
69
|
+
const envs = envNames.map((name) => {
|
|
70
|
+
const envDir = join(rangerDir, name);
|
|
71
|
+
const settingsPath = join(envDir, 'settings.json');
|
|
72
|
+
const plaintextAuthPath = join(envDir, 'auth.json');
|
|
73
|
+
const encryptedAuthPath = join(envDir, 'auth.json.enc');
|
|
74
|
+
return {
|
|
75
|
+
name,
|
|
76
|
+
settingsPath: existsSync(settingsPath)
|
|
77
|
+
? settingsPath
|
|
78
|
+
: '(not found)',
|
|
79
|
+
hasPlaintextAuth: existsSync(plaintextAuthPath),
|
|
80
|
+
hasEncryptedAuth: existsSync(encryptedAuthPath),
|
|
81
|
+
isActive: name === activeEnv,
|
|
82
|
+
};
|
|
83
|
+
});
|
|
101
84
|
return { envs, activeEnv };
|
|
102
85
|
}
|
|
103
86
|
export async function status() {
|
|
104
87
|
console.log('\n📊 Ranger Status\n');
|
|
105
88
|
// Root directory
|
|
106
89
|
const cwd = process.cwd();
|
|
107
|
-
const rangerDir =
|
|
90
|
+
const rangerDir = getRangerDir();
|
|
108
91
|
// Check if Ranger is initialized
|
|
109
92
|
if (!existsSync(rangerDir)) {
|
|
110
93
|
console.log(`Root: ${link(cwd, bold(basename(cwd)))}`);
|
|
@@ -126,13 +109,17 @@ export async function status() {
|
|
|
126
109
|
else {
|
|
127
110
|
console.log(`Version: ${version}`);
|
|
128
111
|
}
|
|
129
|
-
// API Token
|
|
112
|
+
// API Token & User Identity
|
|
130
113
|
const token = await getToken();
|
|
131
114
|
if (token) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
115
|
+
const result = await getCurrentUser(token);
|
|
116
|
+
if (result.success) {
|
|
117
|
+
console.log(`Organization: ${bold(result.user.organizationName)}`);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
console.log(`API Token: ✓ Found but invalid or expired`);
|
|
121
|
+
console.log(` Run: ranger start <token>`);
|
|
122
|
+
}
|
|
136
123
|
}
|
|
137
124
|
else {
|
|
138
125
|
console.log(`API Token: ✗ Not found`);
|
|
@@ -142,29 +129,24 @@ export async function status() {
|
|
|
142
129
|
if (process.env.DEBUG) {
|
|
143
130
|
console.log(`Environment: ${getCurrentEnvironment()}`);
|
|
144
131
|
console.log(`API URL: ${getApiBaseUrl()}`);
|
|
145
|
-
console.log(`MCP Server URL: ${getMcpServerUrl()}`);
|
|
146
|
-
}
|
|
147
|
-
// MCP Server Config
|
|
148
|
-
const mcpConfig = await loadMcpConfig();
|
|
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) {
|
|
156
|
-
console.log(`MCP Server: ✓ Configured in .mcp.json`);
|
|
157
132
|
}
|
|
158
|
-
|
|
159
|
-
|
|
133
|
+
// Claude Code Plugin
|
|
134
|
+
console.log('\n--- Claude Code Plugin ---');
|
|
135
|
+
const pluginInfo = await getPluginInfo('ranger@trailhead');
|
|
136
|
+
if (pluginInfo) {
|
|
137
|
+
const scopeLabel = pluginInfo.scope || 'unknown';
|
|
138
|
+
const statusLabel = pluginInfo.enabled ? 'enabled' : 'disabled';
|
|
139
|
+
console.log(` ${bold('ranger@trailhead')}: installed (${scopeLabel}, ${statusLabel})`);
|
|
160
140
|
}
|
|
161
141
|
else {
|
|
162
|
-
console.log(
|
|
163
|
-
console.log(
|
|
142
|
+
console.log(' Not installed');
|
|
143
|
+
console.log(' Run: ranger start <token> (includes plugin installation)');
|
|
164
144
|
}
|
|
165
|
-
// Skills
|
|
145
|
+
// Skills (only show Ranger-managed skills)
|
|
166
146
|
console.log('\n--- Skills ---');
|
|
167
|
-
const { project:
|
|
147
|
+
const { project: allProjectSkills, user: allUserSkills } = await getInstalledSkills();
|
|
148
|
+
const projectSkills = allProjectSkills.filter((s) => RANGER_MANAGED_SKILLS.includes(s.name));
|
|
149
|
+
const userSkills = allUserSkills.filter((s) => RANGER_MANAGED_SKILLS.includes(s.name));
|
|
168
150
|
const totalSkills = projectSkills.length + userSkills.length;
|
|
169
151
|
if (totalSkills === 0) {
|
|
170
152
|
console.log('No skills installed');
|
|
@@ -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,QAAQ,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,aAAa,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,8 +1,9 @@
|
|
|
1
1
|
import { spawn } from 'child_process';
|
|
2
|
-
import {
|
|
3
|
-
import { installSkill } from './utils/skills.js';
|
|
2
|
+
import { existsSync } from 'fs';
|
|
3
|
+
import { installSkill, removeSkill, RANGER_MANAGED_SKILLS, DEPRECATED_SKILLS, } from './utils/skills.js';
|
|
4
4
|
import { PACKAGE_NAME, getCurrentVersion, getLatestVersion, compareVersions, } from './utils/version.js';
|
|
5
|
-
import {
|
|
5
|
+
import { getSkillsDir } from './utils/claudeConfig.js';
|
|
6
|
+
import { join } from 'path';
|
|
6
7
|
async function runInstall() {
|
|
7
8
|
return new Promise((resolve) => {
|
|
8
9
|
console.log(`\nInstalling ${PACKAGE_NAME}@latest...\n`);
|
|
@@ -18,55 +19,46 @@ async function runInstall() {
|
|
|
18
19
|
});
|
|
19
20
|
});
|
|
20
21
|
}
|
|
21
|
-
function getSkillsFromDir(skillsDir) {
|
|
22
|
-
if (!existsSync(skillsDir)) {
|
|
23
|
-
return [];
|
|
24
|
-
}
|
|
25
|
-
try {
|
|
26
|
-
const entries = readdirSync(skillsDir, { withFileTypes: true });
|
|
27
|
-
return entries
|
|
28
|
-
.filter((entry) => entry.isDirectory())
|
|
29
|
-
.map((entry) => entry.name);
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
return [];
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
22
|
/**
|
|
36
|
-
*
|
|
23
|
+
* Check if a skill is installed at the given level
|
|
37
24
|
*/
|
|
38
|
-
function
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
user: getSkillsFromDir(getUserSkillsDir()),
|
|
42
|
-
};
|
|
25
|
+
function isSkillInstalled(skillName, level) {
|
|
26
|
+
const skillDir = join(getSkillsDir(level), skillName);
|
|
27
|
+
return existsSync(skillDir);
|
|
43
28
|
}
|
|
44
29
|
/**
|
|
45
|
-
* Reinstall
|
|
46
|
-
*
|
|
30
|
+
* Reinstall ranger-managed skills that are already installed.
|
|
31
|
+
* Only updates skills from RANGER_MANAGED_SKILLS list, ignoring user-defined skills.
|
|
32
|
+
* Also removes any deprecated skills.
|
|
47
33
|
*/
|
|
48
34
|
async function reinstallSkills(cliVersion) {
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
try {
|
|
58
|
-
await installSkill(skillName, { level: 'project', cliVersion });
|
|
35
|
+
const levels = ['project', 'user'];
|
|
36
|
+
// Find which ranger-managed skills are installed at each level
|
|
37
|
+
const toReinstall = [];
|
|
38
|
+
for (const level of levels) {
|
|
39
|
+
for (const skillName of RANGER_MANAGED_SKILLS) {
|
|
40
|
+
if (isSkillInstalled(skillName, level)) {
|
|
41
|
+
toReinstall.push({ skillName, level });
|
|
42
|
+
}
|
|
59
43
|
}
|
|
60
|
-
|
|
61
|
-
|
|
44
|
+
}
|
|
45
|
+
// Remove deprecated skills
|
|
46
|
+
for (const level of levels) {
|
|
47
|
+
for (const skillName of DEPRECATED_SKILLS) {
|
|
48
|
+
await removeSkill(skillName, level);
|
|
62
49
|
}
|
|
63
50
|
}
|
|
64
|
-
|
|
51
|
+
if (toReinstall.length === 0) {
|
|
52
|
+
console.log('\nNo ranger-managed skills found to reinstall.');
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
console.log(`\nReinstalling ${toReinstall.length} ranger-managed skill(s)...`);
|
|
56
|
+
for (const { skillName, level } of toReinstall) {
|
|
65
57
|
try {
|
|
66
|
-
await installSkill(skillName, { level
|
|
58
|
+
await installSkill(skillName, { level, cliVersion });
|
|
67
59
|
}
|
|
68
60
|
catch (error) {
|
|
69
|
-
console.warn(` Failed to reinstall
|
|
61
|
+
console.warn(` Failed to reinstall ${level} skill ${skillName}:`, error);
|
|
70
62
|
}
|
|
71
63
|
}
|
|
72
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|