@ranger-testing/ranger-cli 1.1.6 → 2.0.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 +47 -45
- package/build/cli.js +671 -291
- 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 +5 -10
- 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 +9 -15
- package/build/commands/config.js.map +1 -1
- package/build/commands/env.js +10 -13
- package/build/commands/env.js.map +1 -1
- package/build/commands/feature.js +138 -67
- package/build/commands/feature.js.map +1 -1
- package/build/commands/hook.js +9 -4
- package/build/commands/hook.js.map +1 -1
- package/build/commands/hooks/autoPrompt.js +32 -0
- package/build/commands/hooks/autoPrompt.js.map +1 -0
- package/build/commands/hooks/disable.js +8 -5
- package/build/commands/hooks/disable.js.map +1 -1
- package/build/commands/hooks/enable.js +16 -9
- package/build/commands/hooks/enable.js.map +1 -1
- package/build/commands/hooks/exitPlanMode.js +10 -10
- package/build/commands/hooks/exitPlanMode.js.map +1 -1
- package/build/commands/hooks/index.js +1 -0
- package/build/commands/hooks/index.js.map +1 -1
- package/build/commands/hooks/output.js +20 -2
- package/build/commands/hooks/output.js.map +1 -1
- package/build/commands/hooks/planReminder.js +9 -9
- package/build/commands/hooks/planReminder.js.map +1 -1
- package/build/commands/hooks/planStart.js +6 -6
- package/build/commands/hooks/planStart.js.map +1 -1
- package/build/commands/hooks/postEdit.js +6 -6
- package/build/commands/hooks/postEdit.js.map +1 -1
- package/build/commands/hooks/preCompact.js +5 -5
- package/build/commands/hooks/preCompact.js.map +1 -1
- package/build/commands/hooks/sessionEnd.js +8 -4
- package/build/commands/hooks/sessionEnd.js.map +1 -1
- package/build/commands/hooks/sessionStart.js +41 -25
- package/build/commands/hooks/sessionStart.js.map +1 -1
- package/build/commands/hooks/stopHook.js +30 -6
- package/build/commands/hooks/stopHook.js.map +1 -1
- package/build/commands/index.js +1 -2
- package/build/commands/index.js.map +1 -1
- package/build/commands/login.js +2 -5
- package/build/commands/login.js.map +1 -1
- package/build/commands/setupCi.js +189 -0
- package/build/commands/setupCi.js.map +1 -0
- package/build/commands/skillup.js +16 -68
- 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 +14 -13
- package/build/commands/status.js.map +1 -1
- package/build/commands/update.js +34 -5
- 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/activeProfile.js +76 -0
- package/build/commands/utils/activeProfile.js.map +1 -0
- package/build/commands/utils/browserSessionsApi.js +1 -1
- package/build/commands/utils/browserSessionsApi.js.map +1 -1
- package/build/commands/utils/desirePathLog.js +39 -34
- package/build/commands/utils/desirePathLog.js.map +1 -1
- package/build/commands/utils/deviceAuth.js +53 -5
- package/build/commands/utils/deviceAuth.js.map +1 -1
- package/build/commands/utils/environment.js +11 -12
- package/build/commands/utils/environment.js.map +1 -1
- package/build/commands/utils/featureApi.js +49 -46
- package/build/commands/utils/featureApi.js.map +1 -1
- package/build/commands/utils/featureReportGenerator.js +6 -6
- package/build/commands/utils/featureReportGenerator.js.map +1 -1
- package/build/commands/utils/keychain.js +1 -1
- package/build/commands/utils/localAgentInstallationsApi.js +1 -1
- package/build/commands/utils/profileMessages.js +8 -0
- package/build/commands/utils/profileMessages.js.map +1 -0
- package/build/commands/utils/profileSetupBanner.js +167 -0
- package/build/commands/utils/profileSetupBanner.js.map +1 -0
- package/build/commands/utils/retry.js +25 -0
- package/build/commands/utils/retry.js.map +1 -0
- package/build/commands/utils/sessionCache.js +17 -0
- package/build/commands/utils/sessionCache.js.map +1 -1
- package/build/commands/utils/settings.js +23 -2
- package/build/commands/utils/settings.js.map +1 -1
- package/build/commands/utils/skills.js +1 -1
- package/build/commands/utils/telemetry.js +254 -0
- package/build/commands/utils/telemetry.js.map +1 -0
- package/build/commands/utils/userApi.js +4 -4
- package/build/commands/utils/userApi.js.map +1 -1
- package/build/commands/verifyFeature.js +678 -407
- 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/ranger/SKILL.md +65 -64
- package/build/skills/ranger/create.md +31 -31
- package/build/skills/ranger/feedback.md +25 -17
- package/build/skills/ranger/start.md +37 -37
- package/build/skills/ranger/verify.md +59 -55
- package/package.json +1 -1
- package/scripts/postinstall.js +1 -1
- package/build/commands/dataMcpServer.js +0 -1
- package/build/commands/dataMcpServer.js.map +0 -1
- package/build/commands/utils/cliSecret.js +0 -1
- package/build/commands/utils/cliSecret.js.map +0 -1
- package/build/skills/bug-bash.md +0 -329
- package/build/skills/e2e-test-recommender.md +0 -168
|
@@ -3,11 +3,14 @@ import { join } from 'path';
|
|
|
3
3
|
import { existsSync } from 'fs';
|
|
4
4
|
import { execSync } from 'child_process';
|
|
5
5
|
import inquirer from 'inquirer';
|
|
6
|
-
import { createFeature, listFeatures, getFeature, updateFeature, getFeatureReportMarkdown, listFeatureSessions, startSession, concludeSession, createChecklistItem, getActionItems, getItemFeedback, softDeleteFeature, restoreFeature, } from './utils/featureApi.js';
|
|
6
|
+
import { createFeature, listFeatures, getFeature, updateFeature, getFeatureReportMarkdown, listFeatureSessions, startSession, concludeSession, createChecklistItem, getActionItems, getItemFeedback, softDeleteFeature, restoreFeature, updateChecklistItem, } from './utils/featureApi.js';
|
|
7
7
|
import { getRangerDir } from './utils/rangerRoot.js';
|
|
8
8
|
import { registerSession } from './utils/sessionCache.js';
|
|
9
|
+
import { getEnvNames } from './env.js';
|
|
10
|
+
import { formatProfileRequiredMessage } from './utils/profileMessages.js';
|
|
9
11
|
// Active feature file name (relative to .ranger dir)
|
|
10
12
|
const ACTIVE_FEATURE_FILE = 'active-feature.txt';
|
|
13
|
+
const bold = (text) => `\x1b[1m${text}\x1b[0m`;
|
|
11
14
|
/**
|
|
12
15
|
* Get the current git remote URL
|
|
13
16
|
*/
|
|
@@ -114,7 +117,7 @@ function getReviewStatusDisplay(feature) {
|
|
|
114
117
|
return null;
|
|
115
118
|
}
|
|
116
119
|
/**
|
|
117
|
-
* Display a feature with its
|
|
120
|
+
* Display a feature with its scenarios (current session items only)
|
|
118
121
|
*/
|
|
119
122
|
function displayFeature(feature, checklistItems) {
|
|
120
123
|
const devStatus = getDevStatusDisplay(feature);
|
|
@@ -138,7 +141,7 @@ function displayFeature(feature, checklistItems) {
|
|
|
138
141
|
console.log(` Completed: ${new Date(feature.completedAt).toLocaleString()}`);
|
|
139
142
|
}
|
|
140
143
|
if (checklistItems && checklistItems.length > 0) {
|
|
141
|
-
console.log('\n
|
|
144
|
+
console.log('\n Scenarios:');
|
|
142
145
|
for (let i = 0; i < checklistItems.length; i++) {
|
|
143
146
|
const item = checklistItems[i];
|
|
144
147
|
let itemEmoji;
|
|
@@ -192,14 +195,18 @@ function displayFeature(feature, checklistItems) {
|
|
|
192
195
|
* Create a new feature
|
|
193
196
|
*/
|
|
194
197
|
export async function featureCreate(name, options) {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
+
const { envNames } = await getEnvNames();
|
|
199
|
+
if (envNames.length === 0) {
|
|
200
|
+
console.warn(`\n${formatProfileRequiredMessage((text) => bold(text))}`);
|
|
201
|
+
}
|
|
202
|
+
// Get scenarios from array (each -c/--scenario flag is one scenario)
|
|
203
|
+
const checklistItems = options.scenarios
|
|
204
|
+
? options.scenarios.map((s) => s.trim())
|
|
198
205
|
: [];
|
|
199
206
|
// Auto-detect git context
|
|
200
207
|
const gitRepoUrl = getGitRepoUrl();
|
|
201
208
|
const gitBranch = getGitBranch();
|
|
202
|
-
console.log('\nCreating feature...');
|
|
209
|
+
console.log('\nCreating feature review...');
|
|
203
210
|
const feature = await createFeature({
|
|
204
211
|
name,
|
|
205
212
|
description: options.description,
|
|
@@ -216,9 +223,9 @@ export async function featureCreate(name, options) {
|
|
|
216
223
|
if (claudeSessionId) {
|
|
217
224
|
registerSession(claudeSessionId, feature.id);
|
|
218
225
|
}
|
|
219
|
-
console.log(`\n\u2705 Feature created: ${feature.id}`);
|
|
226
|
+
console.log(`\n\u2705 Feature review created: ${feature.id}`);
|
|
220
227
|
displayFeature(feature, feature.checklistItems);
|
|
221
|
-
console.log(`\n\u27a1\ufe0f Set as active feature`);
|
|
228
|
+
console.log(`\n\u27a1\ufe0f Set as active feature review`);
|
|
222
229
|
}
|
|
223
230
|
/**
|
|
224
231
|
* List features
|
|
@@ -235,12 +242,12 @@ export async function featureList(options) {
|
|
|
235
242
|
}
|
|
236
243
|
const result = await listFeatures(filters);
|
|
237
244
|
if (result.items.length === 0) {
|
|
238
|
-
console.log('\nNo
|
|
245
|
+
console.log('\nNo feature reviews found.');
|
|
239
246
|
return;
|
|
240
247
|
}
|
|
241
248
|
const showing = result.totalCount > result.items.length
|
|
242
249
|
? `Showing ${result.items.length} of ${result.totalCount}`
|
|
243
|
-
: `${result.totalCount} feature(s) found`;
|
|
250
|
+
: `${result.totalCount} feature review(s) found`;
|
|
244
251
|
console.log(`\n${showing}:\n`);
|
|
245
252
|
for (const feature of result.items) {
|
|
246
253
|
const devStatus = getDevStatusDisplay(feature);
|
|
@@ -263,7 +270,7 @@ export async function featureList(options) {
|
|
|
263
270
|
const limitFlag = currentLimit !== 10 ? ` --limit ${currentLimit}` : '';
|
|
264
271
|
const branchFlag = options.currentBranch ? ' --current-branch' : '';
|
|
265
272
|
const deletedFlag = options.includeDeleted ? ' --include-deleted' : '';
|
|
266
|
-
console.log(`Next page: ranger
|
|
273
|
+
console.log(`Next page: ranger list --offset ${nextOffset}${limitFlag}${branchFlag}${deletedFlag}`);
|
|
267
274
|
}
|
|
268
275
|
}
|
|
269
276
|
/**
|
|
@@ -272,9 +279,7 @@ export async function featureList(options) {
|
|
|
272
279
|
export async function featureShow(id) {
|
|
273
280
|
const featureId = id || (await getActiveFeatureId());
|
|
274
281
|
if (!featureId) {
|
|
275
|
-
|
|
276
|
-
console.error('Run: ranger feature resume <id> to set an active feature');
|
|
277
|
-
process.exit(1);
|
|
282
|
+
throw new Error('No feature review ID provided and no active feature review set. Run: ranger resume <id> to set an active feature review');
|
|
278
283
|
}
|
|
279
284
|
const feature = await getFeature(featureId);
|
|
280
285
|
displayFeature(feature, feature.checklistItems);
|
|
@@ -294,7 +299,7 @@ export async function featureResume(id) {
|
|
|
294
299
|
await updateFeature(feature.id, { gitBranch: currentBranch });
|
|
295
300
|
console.log(` Updated branch to: ${currentBranch}`);
|
|
296
301
|
}
|
|
297
|
-
console.log(`\n\u2705 Resumed feature: ${feature.name} (${feature.id})`);
|
|
302
|
+
console.log(`\n\u2705 Resumed feature review: ${feature.name} (${feature.id})`);
|
|
298
303
|
// Start the current session if it's ready
|
|
299
304
|
await tryStartCurrentSession(feature.id);
|
|
300
305
|
// Register Claude session if provided via env var
|
|
@@ -309,10 +314,9 @@ export async function featureResume(id) {
|
|
|
309
314
|
const gitRepoUrl = getGitRepoUrl();
|
|
310
315
|
const gitBranch = getGitBranch();
|
|
311
316
|
if (!gitRepoUrl && !gitBranch) {
|
|
312
|
-
|
|
313
|
-
process.exit(1);
|
|
317
|
+
throw new Error('Not in a git repository.');
|
|
314
318
|
}
|
|
315
|
-
console.log(`\nSearching for
|
|
319
|
+
console.log(`\nSearching for feature reviews matching: ${gitRepoUrl || 'any'} / ${gitBranch || 'any'}...`);
|
|
316
320
|
const result = await listFeatures({
|
|
317
321
|
gitRepoUrl,
|
|
318
322
|
gitBranch,
|
|
@@ -320,8 +324,8 @@ export async function featureResume(id) {
|
|
|
320
324
|
// Filter to non-completed features
|
|
321
325
|
const activeFeatures = result.items.filter((f) => !f.completedAt);
|
|
322
326
|
if (activeFeatures.length === 0) {
|
|
323
|
-
console.log('\nNo matching active
|
|
324
|
-
console.log('Run: ranger
|
|
327
|
+
console.log('\nNo matching active feature reviews found.');
|
|
328
|
+
console.log('Run: ranger create "<name>" to create a new feature review');
|
|
325
329
|
return;
|
|
326
330
|
}
|
|
327
331
|
let selectedFeature;
|
|
@@ -333,7 +337,7 @@ export async function featureResume(id) {
|
|
|
333
337
|
const isInteractive = process.stdin.isTTY && process.stdout.isTTY;
|
|
334
338
|
if (!isInteractive) {
|
|
335
339
|
// Non-interactive mode: list features and require explicit ID
|
|
336
|
-
console.log('\nNon-interactive mode detected. Multiple
|
|
340
|
+
console.log('\nNon-interactive mode detected. Multiple feature reviews found:');
|
|
337
341
|
for (const f of activeFeatures) {
|
|
338
342
|
const devStatus = getDevStatusDisplay(f);
|
|
339
343
|
console.log(` ${devStatus.emoji} ${f.name}`);
|
|
@@ -342,15 +346,14 @@ export async function featureResume(id) {
|
|
|
342
346
|
console.log(` Branch: ${f.gitBranch}`);
|
|
343
347
|
}
|
|
344
348
|
}
|
|
345
|
-
|
|
346
|
-
process.exit(1);
|
|
349
|
+
throw new Error('Please specify the feature review ID: ranger resume <id>');
|
|
347
350
|
}
|
|
348
351
|
// Interactive mode: prompt user to select
|
|
349
352
|
const { selected } = await inquirer.prompt([
|
|
350
353
|
{
|
|
351
354
|
type: 'list',
|
|
352
355
|
name: 'selected',
|
|
353
|
-
message: 'Multiple
|
|
356
|
+
message: 'Multiple feature reviews found. Select one:',
|
|
354
357
|
choices: activeFeatures.map((f) => ({
|
|
355
358
|
name: `${f.name} (${f.id})`,
|
|
356
359
|
value: f.id,
|
|
@@ -365,7 +368,7 @@ export async function featureResume(id) {
|
|
|
365
368
|
await updateFeature(selectedFeature.id, { gitBranch });
|
|
366
369
|
console.log(` Updated branch to: ${gitBranch}`);
|
|
367
370
|
}
|
|
368
|
-
console.log(`\n\u2705 Resumed feature: ${selectedFeature.name} (${selectedFeature.id})`);
|
|
371
|
+
console.log(`\n\u2705 Resumed feature review: ${selectedFeature.name} (${selectedFeature.id})`);
|
|
369
372
|
// Start the current session if it's ready
|
|
370
373
|
await tryStartCurrentSession(selectedFeature.id);
|
|
371
374
|
// Register Claude session if provided via env var
|
|
@@ -379,7 +382,7 @@ export async function featureResume(id) {
|
|
|
379
382
|
await printFeedbackNudge(fullFeature.id);
|
|
380
383
|
}
|
|
381
384
|
/**
|
|
382
|
-
* Print a nudge about unaddressed reviewer comments if any
|
|
385
|
+
* Print a nudge about unaddressed reviewer comments if any scenarios have them
|
|
383
386
|
*/
|
|
384
387
|
async function printFeedbackNudge(featureId) {
|
|
385
388
|
try {
|
|
@@ -394,8 +397,8 @@ async function printFeedbackNudge(featureId) {
|
|
|
394
397
|
}
|
|
395
398
|
}
|
|
396
399
|
if (totalComments > 0) {
|
|
397
|
-
console.log(`\n\u26a0\ufe0f ${totalComments} unaddressed reviewer comment(s) across ${itemsWithComments}
|
|
398
|
-
console.log(' Run `ranger
|
|
400
|
+
console.log(`\n\u26a0\ufe0f ${totalComments} unaddressed reviewer comment(s) across ${itemsWithComments} scenario(s).`);
|
|
401
|
+
console.log(' Run `ranger get-review` to see what needs to be fixed.');
|
|
399
402
|
}
|
|
400
403
|
}
|
|
401
404
|
catch {
|
|
@@ -425,8 +428,7 @@ async function tryStartCurrentSession(featureId) {
|
|
|
425
428
|
export async function featureReport(id, options) {
|
|
426
429
|
const featureId = id || (await getActiveFeatureId());
|
|
427
430
|
if (!featureId) {
|
|
428
|
-
|
|
429
|
-
process.exit(1);
|
|
431
|
+
throw new Error('No feature review ID provided and no active feature review set.');
|
|
430
432
|
}
|
|
431
433
|
console.log('\nGenerating report...');
|
|
432
434
|
// Fetch markdown report from API (includes embedded screenshots)
|
|
@@ -449,33 +451,28 @@ export async function featureReport(id, options) {
|
|
|
449
451
|
export async function featureConcludeSession(id) {
|
|
450
452
|
const featureId = id || (await getActiveFeatureId());
|
|
451
453
|
if (!featureId) {
|
|
452
|
-
|
|
453
|
-
console.error('Run: ranger feature resume <id> to set an active feature');
|
|
454
|
-
process.exit(1);
|
|
454
|
+
throw new Error('No feature review ID provided and no active feature review set. Run: ranger resume <id> to set an active feature review');
|
|
455
455
|
}
|
|
456
456
|
const feature = await getFeature(featureId);
|
|
457
457
|
if (!feature.currentSessionId) {
|
|
458
|
-
|
|
459
|
-
process.exit(1);
|
|
458
|
+
throw new Error('No active session for this feature review.');
|
|
460
459
|
}
|
|
461
460
|
const { sessions } = await listFeatureSessions(featureId);
|
|
462
461
|
const currentSession = sessions.find((s) => s.id === feature.currentSessionId);
|
|
463
462
|
if (!currentSession) {
|
|
464
|
-
|
|
465
|
-
process.exit(1);
|
|
463
|
+
throw new Error('Current session not found.');
|
|
466
464
|
}
|
|
467
465
|
if (currentSession.status === 'completed') {
|
|
468
466
|
console.log('\n\u2705 Session is already completed.');
|
|
469
467
|
return;
|
|
470
468
|
}
|
|
471
469
|
if (currentSession.status !== 'in_progress') {
|
|
472
|
-
|
|
473
|
-
process.exit(1);
|
|
470
|
+
throw new Error(`Cannot conclude session with status: ${currentSession.status}`);
|
|
474
471
|
}
|
|
475
472
|
console.log('\nConcluding session...');
|
|
476
473
|
await concludeSession(featureId, feature.currentSessionId);
|
|
477
474
|
console.log(`\n\u2705 Session ${currentSession.iteration} concluded.`);
|
|
478
|
-
console.log(` The feature is now ready for human review on the Ranger dashboard.`);
|
|
475
|
+
console.log(` The feature review is now ready for human review on the Ranger dashboard.`);
|
|
479
476
|
}
|
|
480
477
|
/**
|
|
481
478
|
* List sessions for a feature
|
|
@@ -483,11 +480,10 @@ export async function featureConcludeSession(id) {
|
|
|
483
480
|
export async function featureSessions(id) {
|
|
484
481
|
const featureId = id || (await getActiveFeatureId());
|
|
485
482
|
if (!featureId) {
|
|
486
|
-
|
|
487
|
-
process.exit(1);
|
|
483
|
+
throw new Error('No feature review ID provided and no active feature review set.');
|
|
488
484
|
}
|
|
489
485
|
const feature = await getFeature(featureId);
|
|
490
|
-
console.log(`\n\ud83d\udcc1 Sessions for: ${feature.name}\n`);
|
|
486
|
+
console.log(`\n\ud83d\udcc1 Sessions for feature review: ${feature.name}\n`);
|
|
491
487
|
const { sessions } = await listFeatureSessions(featureId);
|
|
492
488
|
if (sessions.length === 0) {
|
|
493
489
|
console.log('No sessions found.');
|
|
@@ -509,45 +505,105 @@ export async function featureSessions(id) {
|
|
|
509
505
|
}
|
|
510
506
|
}
|
|
511
507
|
/**
|
|
512
|
-
* Add a
|
|
508
|
+
* Add a scenario to the active feature
|
|
513
509
|
*/
|
|
514
|
-
export async function
|
|
510
|
+
export async function featureAddScenario(description, id) {
|
|
515
511
|
const featureId = id || (await getActiveFeatureId());
|
|
516
512
|
if (!featureId) {
|
|
517
|
-
|
|
518
|
-
|
|
513
|
+
throw new Error('No feature review ID provided and no active feature review set. Run: ranger resume <id> to set an active feature review');
|
|
514
|
+
}
|
|
515
|
+
const feature = await getFeature(featureId);
|
|
516
|
+
// Check if there's an active (non-submitted) review
|
|
517
|
+
if (feature.latestReview && !feature.latestReview.submittedAt) {
|
|
518
|
+
throw new Error(`Cannot add scenario: feature review has an active review. Please finish your review first: ${feature.dashboardUrl}`);
|
|
519
|
+
}
|
|
520
|
+
// Create the scenario
|
|
521
|
+
await createChecklistItem(featureId, description);
|
|
522
|
+
// Refetch and display the updated feature
|
|
523
|
+
const updatedFeature = await getFeature(featureId);
|
|
524
|
+
console.log(`\n\u2705 Scenario added`);
|
|
525
|
+
displayFeature(updatedFeature, updatedFeature.checklistItems);
|
|
526
|
+
}
|
|
527
|
+
/**
|
|
528
|
+
* Edit a scenario description on the active feature
|
|
529
|
+
*/
|
|
530
|
+
export async function featureEditScenario(description, options) {
|
|
531
|
+
const featureId = options.id || (await getActiveFeatureId());
|
|
532
|
+
if (!featureId) {
|
|
533
|
+
console.error('\n\u274c No feature review ID provided and no active feature review set.');
|
|
534
|
+
console.error('Run: ranger resume <id> to set an active feature review');
|
|
519
535
|
process.exit(1);
|
|
520
536
|
}
|
|
521
537
|
const feature = await getFeature(featureId);
|
|
522
538
|
// Check if there's an active (non-submitted) review
|
|
523
539
|
if (feature.latestReview && !feature.latestReview.submittedAt) {
|
|
524
|
-
console.error('\n\u274c Cannot
|
|
540
|
+
console.error('\n\u274c Cannot edit scenario: feature review has an active review.');
|
|
525
541
|
console.error('Please finish your review first:');
|
|
526
542
|
console.error(` ${feature.dashboardUrl}`);
|
|
527
543
|
process.exit(1);
|
|
528
544
|
}
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
545
|
+
const checklistItems = feature.checklistItems || [];
|
|
546
|
+
if (checklistItems.length === 0) {
|
|
547
|
+
console.error('\n\u274c No scenarios found to edit.');
|
|
548
|
+
process.exit(1);
|
|
549
|
+
}
|
|
550
|
+
if (options.scenario === undefined) {
|
|
551
|
+
console.error('\n\u274c No scenario number provided. Use --scenario <number>.');
|
|
552
|
+
console.log('\nAvailable scenarios:');
|
|
553
|
+
for (let i = 0; i < checklistItems.length; i++) {
|
|
554
|
+
console.log(` ${i + 1}. ${checklistItems[i].description}`);
|
|
555
|
+
}
|
|
556
|
+
process.exit(1);
|
|
557
|
+
}
|
|
558
|
+
const itemIndex = options.scenario - 1;
|
|
559
|
+
if (itemIndex < 0 || itemIndex >= checklistItems.length) {
|
|
560
|
+
console.error(`\n\u274c Invalid scenario index: ${options.scenario}. Feature review has ${checklistItems.length} scenarios.`);
|
|
561
|
+
console.log('\nAvailable scenarios:');
|
|
562
|
+
for (let i = 0; i < checklistItems.length; i++) {
|
|
563
|
+
console.log(` ${i + 1}. ${checklistItems[i].description}`);
|
|
564
|
+
}
|
|
565
|
+
process.exit(1);
|
|
566
|
+
}
|
|
567
|
+
const checklistItem = checklistItems[itemIndex];
|
|
568
|
+
await updateChecklistItem(featureId, checklistItem.id, { description });
|
|
532
569
|
const updatedFeature = await getFeature(featureId);
|
|
533
|
-
console.log(`\n\u2705
|
|
570
|
+
console.log(`\n\u2705 Scenario updated`);
|
|
534
571
|
displayFeature(updatedFeature, updatedFeature.checklistItems);
|
|
535
572
|
}
|
|
536
573
|
/**
|
|
537
|
-
* Get
|
|
574
|
+
* Get review comments for all scenarios in a feature
|
|
575
|
+
*/
|
|
576
|
+
/**
|
|
577
|
+
* Download an image from a signed URL to a local file path.
|
|
578
|
+
* Returns the local file path on success, or null on failure.
|
|
538
579
|
*/
|
|
539
|
-
|
|
580
|
+
async function downloadFeedbackImage(assetUrl, commentId) {
|
|
581
|
+
try {
|
|
582
|
+
const imagesDir = join(getRangerDir(), 'feedback-images');
|
|
583
|
+
await mkdir(imagesDir, { recursive: true });
|
|
584
|
+
const filePath = join(imagesDir, `comment_${commentId}.png`);
|
|
585
|
+
const response = await fetch(assetUrl);
|
|
586
|
+
if (!response.ok) {
|
|
587
|
+
return null;
|
|
588
|
+
}
|
|
589
|
+
const buffer = Buffer.from(await response.arrayBuffer());
|
|
590
|
+
await writeFile(filePath, buffer);
|
|
591
|
+
return filePath;
|
|
592
|
+
}
|
|
593
|
+
catch {
|
|
594
|
+
return null;
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
export async function featureGetReview(id) {
|
|
540
598
|
const featureId = id || (await getActiveFeatureId());
|
|
541
599
|
if (!featureId) {
|
|
542
|
-
|
|
543
|
-
console.error('Run: ranger feature resume <id> to set an active feature');
|
|
544
|
-
process.exit(1);
|
|
600
|
+
throw new Error('No feature review ID provided and no active feature review set. Run: ranger resume <id> to set an active feature review');
|
|
545
601
|
}
|
|
546
602
|
const feature = await getFeature(featureId);
|
|
547
603
|
const { items: actionItems } = await getActionItems(featureId);
|
|
548
604
|
console.log(`\n\ud83d\udccb Feedback for: ${feature.name} (${feature.id})\n`);
|
|
549
605
|
if (actionItems.length === 0) {
|
|
550
|
-
console.log('No
|
|
606
|
+
console.log('No scenarios found.');
|
|
551
607
|
return;
|
|
552
608
|
}
|
|
553
609
|
for (let i = 0; i < actionItems.length; i++) {
|
|
@@ -555,11 +611,28 @@ export async function featureGetFeedback(id) {
|
|
|
555
611
|
const versionTag = item.version > 1 ? ` (v${item.version})` : '';
|
|
556
612
|
const feedback = await getItemFeedback(featureId, item.id);
|
|
557
613
|
if (feedback.unaddressedComments.length > 0) {
|
|
558
|
-
console.log(`
|
|
614
|
+
console.log(`Scenario ${i + 1}: "${item.description}"${versionTag} \u2014 ${feedback.unaddressedComments.length} unaddressed comment(s)`);
|
|
559
615
|
for (const comment of feedback.unaddressedComments) {
|
|
560
616
|
const date = new Date(comment.createdAt).toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
|
|
561
617
|
const author = comment.authorName || comment.authorEmail || 'Unknown';
|
|
562
618
|
console.log(` \ud83d\udcac ${author} (${date}): "${comment.content}"`);
|
|
619
|
+
// Download and display annotated screenshot if available
|
|
620
|
+
if (comment.assetUrl) {
|
|
621
|
+
const localPath = await downloadFeedbackImage(comment.assetUrl, comment.id);
|
|
622
|
+
if (localPath) {
|
|
623
|
+
console.log(` \ud83d\udcf7 Screenshot: ${localPath}`);
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
if (comment.spatial) {
|
|
627
|
+
const coords = comment.spatial.coordinates;
|
|
628
|
+
if (comment.spatial.type === 'point' &&
|
|
629
|
+
coords.length >= 2) {
|
|
630
|
+
console.log(` \ud83d\udccd Annotation: point at (${coords[0].toFixed(2)}, ${coords[1].toFixed(2)})`);
|
|
631
|
+
}
|
|
632
|
+
else {
|
|
633
|
+
console.log(` \ud83d\udccd Annotation: ${comment.spatial.type} at [${coords.map((c) => c.toFixed(2)).join(', ')}]`);
|
|
634
|
+
}
|
|
635
|
+
}
|
|
563
636
|
}
|
|
564
637
|
if (feedback.canonicalFlow) {
|
|
565
638
|
console.log(` Expected flow:`);
|
|
@@ -569,7 +642,7 @@ export async function featureGetFeedback(id) {
|
|
|
569
642
|
}
|
|
570
643
|
}
|
|
571
644
|
else {
|
|
572
|
-
console.log(`
|
|
645
|
+
console.log(`Scenario ${i + 1}: "${item.description}"${versionTag} \u2014 0 comments`);
|
|
573
646
|
console.log(` \u2705 No feedback to address`);
|
|
574
647
|
}
|
|
575
648
|
console.log('');
|
|
@@ -581,14 +654,12 @@ export async function featureGetFeedback(id) {
|
|
|
581
654
|
export async function featureDelete(id) {
|
|
582
655
|
const featureId = id || (await getActiveFeatureId());
|
|
583
656
|
if (!featureId) {
|
|
584
|
-
|
|
585
|
-
console.error('Run: ranger feature resume <id> to set an active feature');
|
|
586
|
-
process.exit(1);
|
|
657
|
+
throw new Error('No feature review ID provided and no active feature review set. Run: ranger resume <id> to set an active feature review');
|
|
587
658
|
}
|
|
588
659
|
const feature = await getFeature(featureId);
|
|
589
660
|
await softDeleteFeature(featureId);
|
|
590
|
-
console.log(`\n\ud83d\uddd1\ufe0f Deleted feature: ${feature.name} (${featureId})`);
|
|
591
|
-
console.log(' To restore it, run: ranger
|
|
661
|
+
console.log(`\n\ud83d\uddd1\ufe0f Deleted feature review: ${feature.name} (${featureId})`);
|
|
662
|
+
console.log(' To restore it, run: ranger restore ' + featureId);
|
|
592
663
|
}
|
|
593
664
|
/**
|
|
594
665
|
* Restore a soft-deleted feature
|
|
@@ -596,7 +667,7 @@ export async function featureDelete(id) {
|
|
|
596
667
|
export async function featureRestore(id) {
|
|
597
668
|
await restoreFeature(id);
|
|
598
669
|
const feature = await getFeature(id);
|
|
599
|
-
console.log(`\n\u2705 Restored feature: ${feature.name} (${id})`);
|
|
670
|
+
console.log(`\n\u2705 Restored feature review: ${feature.name} (${id})`);
|
|
600
671
|
displayFeature(feature, feature.checklistItems);
|
|
601
672
|
}
|
|
602
673
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"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"}
|
package/build/commands/hook.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { sessionStart, sessionEnd, preCompact, postEdit, planStart, planReminder, exitPlanMode, stopHook, enable, disable, } from './hooks/index.js';
|
|
1
|
+
import { sessionStart, sessionEnd, preCompact, postEdit, planStart, planReminder, exitPlanMode, stopHook, enable, disable, autoPrompt, } from './hooks/index.js';
|
|
2
2
|
const HOOKS = {
|
|
3
3
|
'session-start': sessionStart,
|
|
4
4
|
'session-end': sessionEnd,
|
|
@@ -10,12 +10,17 @@ const HOOKS = {
|
|
|
10
10
|
stop: stopHook,
|
|
11
11
|
enable: enable,
|
|
12
12
|
disable: disable,
|
|
13
|
+
'auto-prompt': autoPrompt,
|
|
13
14
|
};
|
|
14
15
|
/**
|
|
15
|
-
* Unified hook command handler
|
|
16
|
+
* Unified hook command handler.
|
|
16
17
|
* Routes to the appropriate hook based on the --name parameter.
|
|
18
|
+
*
|
|
19
|
+
* When sessionId is provided (via --session-id flag), it is passed through
|
|
20
|
+
* to the hook function, bypassing stdin/env-based session ID resolution.
|
|
21
|
+
* This is used by non-Claude integrations like OpenCode.
|
|
17
22
|
*/
|
|
18
|
-
export async function hook(name) {
|
|
23
|
+
export async function hook(name, sessionId) {
|
|
19
24
|
const hookFn = HOOKS[name];
|
|
20
25
|
if (!hookFn) {
|
|
21
26
|
const validNames = Object.keys(HOOKS).join(', ');
|
|
@@ -23,6 +28,6 @@ export async function hook(name) {
|
|
|
23
28
|
console.error(`Valid hooks: ${validNames}`);
|
|
24
29
|
process.exit(1);
|
|
25
30
|
}
|
|
26
|
-
await hookFn();
|
|
31
|
+
await hookFn(sessionId);
|
|
27
32
|
}
|
|
28
33
|
//# sourceMappingURL=hook.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,UAAU,EACV,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,OAAO,
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,UAAU,EACV,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,OAAO,EACP,UAAU,GACb,MAAM,kBAAkB,CAAC;AAe1B,MAAM,KAAK,GAA4D;IACnE,eAAe,EAAE,YAAY;IAC7B,aAAa,EAAE,UAAU;IACzB,aAAa,EAAE,UAAU;IACzB,WAAW,EAAE,QAAQ;IACrB,YAAY,EAAE,SAAS;IACvB,eAAe,EAAE,YAAY;IAC7B,gBAAgB,EAAE,YAAY;IAC9B,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,OAAO;IAChB,aAAa,EAAE,UAAU;CAC5B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,SAAkB;IACvD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAgB,CAAC,CAAC;IAEvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { readHookInput } from './output.js';
|
|
2
|
+
import { isSessionEnabled, hasSessionBeenPrompted, markSessionPrompted, } from '../utils/sessionCache.js';
|
|
3
|
+
const AUTO_PROMPT_TEXT = `
|
|
4
|
+
🚨 🚨 [ACTION REQUIRED] 🚨 🚨
|
|
5
|
+
Before responding to the user's message, consider whether this task will involve ANY frontend, UI, or browser work.
|
|
6
|
+
If so, you MUST first ask them:
|
|
7
|
+
"Would you like to enable Ranger Feature Review for this session? It verifies feature review scenarios and user workflows in a real browser while Claude works."
|
|
8
|
+
Asking this question is ABSOLUTELY ESSENTIAL. DO NOT SKIP THIS STEP.
|
|
9
|
+
If they say yes, run \`ranger hook enable\` (Bash tool).
|
|
10
|
+
If they say no, say "Sounds good. If you change your mind, you can enable it with /ranger:enable" and then proceed with their request.
|
|
11
|
+
This is mandatory — do not skip this step.`;
|
|
12
|
+
/**
|
|
13
|
+
* UserPromptSubmit hook that prompts Claude to ask the user about enabling Ranger.
|
|
14
|
+
* Only fires once per session (on the first prompt), and only when Ranger is not already enabled.
|
|
15
|
+
*
|
|
16
|
+
* Outputs plain text (not JSON) because UserPromptSubmit plain stdout is added as
|
|
17
|
+
* visible context in the transcript, while JSON additionalContext is added "more
|
|
18
|
+
* discretely" and Claude tends to ignore it.
|
|
19
|
+
*/
|
|
20
|
+
export async function autoPrompt() {
|
|
21
|
+
const input = await readHookInput();
|
|
22
|
+
const sessionId = input?.session_id;
|
|
23
|
+
if (!sessionId)
|
|
24
|
+
return;
|
|
25
|
+
if (isSessionEnabled(sessionId) || hasSessionBeenPrompted(sessionId))
|
|
26
|
+
return;
|
|
27
|
+
markSessionPrompted(sessionId);
|
|
28
|
+
// Plain text stdout from UserPromptSubmit is added as visible context for Claude.
|
|
29
|
+
// This is more prominent than JSON additionalContext which is injected "discretely".
|
|
30
|
+
console.log(AUTO_PROMPT_TEXT);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=autoPrompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoPrompt.js","sourceRoot":"","sources":["../../../src/commands/hooks/autoPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACH,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,GACtB,MAAM,0BAA0B,CAAC;AAElC,MAAM,gBAAgB,GAAG;;;;;;;;2CAQkB,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC5B,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,EAAE,UAAU,CAAC;IACpC,IAAI,CAAC,SAAS;QAAE,OAAO;IAEvB,IAAI,gBAAgB,CAAC,SAAS,CAAC,IAAI,sBAAsB,CAAC,SAAS,CAAC;QAChE,OAAO;IAEX,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAE/B,kFAAkF;IAClF,qFAAqF;IACrF,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAClC,CAAC"}
|