@ranger-testing/ranger-cli 1.1.7 → 2.0.1

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 (90) hide show
  1. package/README.md +47 -45
  2. package/build/cli.js +649 -277
  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/authEncrypt.js +5 -10
  7. package/build/commands/authEncrypt.js.map +1 -1
  8. package/build/commands/clean.js +1 -1
  9. package/build/commands/clean.js.map +1 -1
  10. package/build/commands/config.js +9 -15
  11. package/build/commands/config.js.map +1 -1
  12. package/build/commands/env.js +10 -13
  13. package/build/commands/env.js.map +1 -1
  14. package/build/commands/feature.js +174 -123
  15. package/build/commands/feature.js.map +1 -1
  16. package/build/commands/hooks/autoPrompt.js +1 -1
  17. package/build/commands/hooks/disable.js +1 -1
  18. package/build/commands/hooks/enable.js +9 -4
  19. package/build/commands/hooks/enable.js.map +1 -1
  20. package/build/commands/hooks/exitPlanMode.js +8 -8
  21. package/build/commands/hooks/planReminder.js +7 -7
  22. package/build/commands/hooks/planStart.js +4 -4
  23. package/build/commands/hooks/postEdit.js +4 -4
  24. package/build/commands/hooks/postEdit.js.map +1 -1
  25. package/build/commands/hooks/preCompact.js +3 -3
  26. package/build/commands/hooks/preCompact.js.map +1 -1
  27. package/build/commands/hooks/sessionStart.js +19 -5
  28. package/build/commands/hooks/sessionStart.js.map +1 -1
  29. package/build/commands/hooks/stopHook.js +114 -20
  30. package/build/commands/hooks/stopHook.js.map +1 -1
  31. package/build/commands/index.js +1 -2
  32. package/build/commands/index.js.map +1 -1
  33. package/build/commands/login.js +2 -5
  34. package/build/commands/login.js.map +1 -1
  35. package/build/commands/setupCi.js +189 -0
  36. package/build/commands/setupCi.js.map +1 -0
  37. package/build/commands/skillup.js +16 -68
  38. package/build/commands/skillup.js.map +1 -1
  39. package/build/commands/start.js +1 -1
  40. package/build/commands/start.js.map +1 -1
  41. package/build/commands/status.js +14 -13
  42. package/build/commands/status.js.map +1 -1
  43. package/build/commands/update.js +52 -5
  44. package/build/commands/update.js.map +1 -1
  45. package/build/commands/updateEnv.js +1 -1
  46. package/build/commands/updateEnv.js.map +1 -1
  47. package/build/commands/useEnv.js +1 -1
  48. package/build/commands/useEnv.js.map +1 -1
  49. package/build/commands/utils/activeProfile.js +76 -0
  50. package/build/commands/utils/activeProfile.js.map +1 -0
  51. package/build/commands/utils/browserSessionsApi.js +1 -1
  52. package/build/commands/utils/browserSessionsApi.js.map +1 -1
  53. package/build/commands/utils/deviceAuth.js +53 -5
  54. package/build/commands/utils/deviceAuth.js.map +1 -1
  55. package/build/commands/utils/environment.js +11 -12
  56. package/build/commands/utils/environment.js.map +1 -1
  57. package/build/commands/utils/featureApi.js +55 -30
  58. package/build/commands/utils/featureApi.js.map +1 -1
  59. package/build/commands/utils/featureReportGenerator.js +6 -6
  60. package/build/commands/utils/featureReportGenerator.js.map +1 -1
  61. package/build/commands/utils/keychain.js +1 -1
  62. package/build/commands/utils/localAgentInstallationsApi.js +1 -1
  63. package/build/commands/utils/profileMessages.js +8 -0
  64. package/build/commands/utils/profileMessages.js.map +1 -0
  65. package/build/commands/utils/profileSetupBanner.js +167 -0
  66. package/build/commands/utils/profileSetupBanner.js.map +1 -0
  67. package/build/commands/utils/settings.js +20 -2
  68. package/build/commands/utils/settings.js.map +1 -1
  69. package/build/commands/utils/skills.js +1 -1
  70. package/build/commands/utils/telemetry.js +254 -0
  71. package/build/commands/utils/telemetry.js.map +1 -0
  72. package/build/commands/utils/userApi.js +4 -4
  73. package/build/commands/utils/userApi.js.map +1 -1
  74. package/build/commands/verifyFeature.js +816 -526
  75. package/build/commands/verifyFeature.js.map +1 -1
  76. package/build/commands/verifyInBrowser.js +1 -1
  77. package/build/commands/verifyInBrowser.js.map +1 -1
  78. package/build/skills/ranger/SKILL.md +65 -64
  79. package/build/skills/ranger/create.md +31 -31
  80. package/build/skills/ranger/feedback.md +25 -17
  81. package/build/skills/ranger/start.md +37 -37
  82. package/build/skills/ranger/verify.md +59 -55
  83. package/package.json +1 -1
  84. package/scripts/postinstall.js +1 -1
  85. package/build/commands/dataMcpServer.js +0 -1
  86. package/build/commands/dataMcpServer.js.map +0 -1
  87. package/build/commands/utils/cliSecret.js +0 -1
  88. package/build/commands/utils/cliSecret.js.map +0 -1
  89. package/build/skills/bug-bash.md +0 -329
  90. 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
  */
@@ -69,60 +72,40 @@ async function setActiveFeatureId(featureId) {
69
72
  await writeFile(filePath, featureId, 'utf-8');
70
73
  }
71
74
  /**
72
- * Get Dev Status display info for a feature based on completedAt and currentSession
75
+ * Get a text-based progress display for a feature's stats
73
76
  */
74
- function getDevStatusDisplay(feature) {
75
- if (feature.completedAt) {
76
- return { emoji: '\u2705', label: 'Completed' };
77
- }
78
- if (!feature.currentSession) {
79
- return { emoji: '\u2b1c', label: 'Unknown' };
80
- }
81
- switch (feature.currentSession.status) {
82
- case 'ready':
83
- return { emoji: '\u25b6\ufe0f', label: 'Ready' }; // ▶️
84
- case 'in_progress':
85
- return { emoji: '\ud83d\udd04', label: 'In Progress' }; // 🔄
86
- case 'completed':
87
- return { emoji: '\u2705', label: 'Completed' }; // session completed
88
- default:
89
- return { emoji: '\u2753', label: 'Unknown' };
90
- }
77
+ function getProgressDisplay(stats) {
78
+ const verified = stats.verifiedItems || 0;
79
+ const inProgress = stats.verificationInProgressItems || 0;
80
+ const blocked = stats.blockedItems || 0;
81
+ const incomplete = stats.incompleteItems || 0;
82
+ const pending = stats.pendingItems || 0;
83
+ const nonCancelled = verified + inProgress + blocked + incomplete + pending;
84
+ if (nonCancelled === 0) {
85
+ return '-';
86
+ }
87
+ // Build a 10-char progress bar
88
+ const barWidth = 10;
89
+ const filledCount = Math.round((verified / nonCancelled) * barWidth);
90
+ const bar = '\u2588'.repeat(filledCount) + '\u2591'.repeat(barWidth - filledCount);
91
+ // Build breakdown of non-verified issues
92
+ const parts = [];
93
+ if (blocked > 0)
94
+ parts.push(`${blocked} blocked`);
95
+ if (incomplete > 0)
96
+ parts.push(`${incomplete} incomplete`);
97
+ if (inProgress > 0)
98
+ parts.push(`${inProgress} in progress`);
99
+ const suffix = parts.length > 0 ? ` (${parts.join(', ')})` : '';
100
+ return `${bar} ${verified}/${nonCancelled} verified${suffix}`;
91
101
  }
92
102
  /**
93
- * Get Review Status display info for a feature
94
- */
95
- function getReviewStatusDisplay(feature) {
96
- const { latestReview, currentSession, completedAt } = feature;
97
- // Determine review status
98
- if (completedAt) {
99
- return { emoji: '\u2705', label: 'Approved' };
100
- }
101
- if (latestReview) {
102
- if (!latestReview.submittedAt) {
103
- return { emoji: '\ud83d\udcdd', label: 'In Review' }; // 📝
104
- }
105
- if (latestReview.overallVerdict === 'approved') {
106
- return { emoji: '\u2705', label: 'Approved' };
107
- }
108
- return { emoji: '\ud83d\udd04', label: 'Changes Needed' }; // 🔄
109
- }
110
- if (currentSession?.status === 'completed') {
111
- return { emoji: '\u23f3', label: 'Awaiting Review' }; // ⏳
112
- }
113
- // Not ready for review
114
- return null;
115
- }
116
- /**
117
- * Display a feature with its checklist (current session items only)
103
+ * Display a feature with its scenarios (current session items only)
118
104
  */
119
105
  function displayFeature(feature, checklistItems) {
120
- const devStatus = getDevStatusDisplay(feature);
121
- const reviewStatus = getReviewStatusDisplay(feature);
122
- console.log(`\n${devStatus.emoji} ${feature.name} (${feature.dashboardUrl})`);
123
- console.log(` Dev Status: ${devStatus.label}`);
124
- if (reviewStatus) {
125
- console.log(` Review Status: ${reviewStatus.emoji} ${reviewStatus.label}`);
106
+ console.log(`\n${feature.name} (${feature.dashboardUrl})`);
107
+ if (feature.stats) {
108
+ console.log(` Progress: ${getProgressDisplay(feature.stats)}`);
126
109
  }
127
110
  if (feature.description) {
128
111
  console.log(` Description: ${feature.description}`);
@@ -138,7 +121,7 @@ function displayFeature(feature, checklistItems) {
138
121
  console.log(` Completed: ${new Date(feature.completedAt).toLocaleString()}`);
139
122
  }
140
123
  if (checklistItems && checklistItems.length > 0) {
141
- console.log('\n Checklist:');
124
+ console.log('\n Scenarios:');
142
125
  for (let i = 0; i < checklistItems.length; i++) {
143
126
  const item = checklistItems[i];
144
127
  let itemEmoji;
@@ -192,14 +175,18 @@ function displayFeature(feature, checklistItems) {
192
175
  * Create a new feature
193
176
  */
194
177
  export async function featureCreate(name, options) {
195
- // Get checklist items from array (each -c flag is one item)
196
- const checklistItems = options.checklist
197
- ? options.checklist.map((s) => s.trim())
178
+ const { envNames } = await getEnvNames();
179
+ if (envNames.length === 0) {
180
+ console.warn(`\n${formatProfileRequiredMessage((text) => bold(text))}`);
181
+ }
182
+ // Get scenarios from array (each -c/--scenario flag is one scenario)
183
+ const checklistItems = options.scenarios
184
+ ? options.scenarios.map((s) => s.trim())
198
185
  : [];
199
186
  // Auto-detect git context
200
187
  const gitRepoUrl = getGitRepoUrl();
201
188
  const gitBranch = getGitBranch();
202
- console.log('\nCreating feature...');
189
+ console.log('\nCreating feature review...');
203
190
  const feature = await createFeature({
204
191
  name,
205
192
  description: options.description,
@@ -216,9 +203,9 @@ export async function featureCreate(name, options) {
216
203
  if (claudeSessionId) {
217
204
  registerSession(claudeSessionId, feature.id);
218
205
  }
219
- console.log(`\n\u2705 Feature created: ${feature.id}`);
206
+ console.log(`\n\u2705 Feature review created: ${feature.id}`);
220
207
  displayFeature(feature, feature.checklistItems);
221
- console.log(`\n\u27a1\ufe0f Set as active feature`);
208
+ console.log(`\n\u27a1\ufe0f Set as active feature review`);
222
209
  }
223
210
  /**
224
211
  * List features
@@ -235,25 +222,23 @@ export async function featureList(options) {
235
222
  }
236
223
  const result = await listFeatures(filters);
237
224
  if (result.items.length === 0) {
238
- console.log('\nNo features found.');
225
+ console.log('\nNo feature reviews found.');
239
226
  return;
240
227
  }
241
228
  const showing = result.totalCount > result.items.length
242
229
  ? `Showing ${result.items.length} of ${result.totalCount}`
243
- : `${result.totalCount} feature(s) found`;
230
+ : `${result.totalCount} feature review(s) found`;
244
231
  console.log(`\n${showing}:\n`);
245
232
  for (const feature of result.items) {
246
- const devStatus = getDevStatusDisplay(feature);
247
- const reviewStatus = getReviewStatusDisplay(feature);
248
- console.log(`${devStatus.emoji} ${feature.name}`);
233
+ console.log(`${feature.name}`);
249
234
  console.log(` ID: ${feature.id}`);
250
- console.log(` Dev Status: ${devStatus.label}`);
251
- if (reviewStatus) {
252
- console.log(` Review Status: ${reviewStatus.emoji} ${reviewStatus.label}`);
235
+ if (feature.stats) {
236
+ console.log(` Progress: ${getProgressDisplay(feature.stats)}`);
253
237
  }
254
238
  if (feature.gitBranch) {
255
239
  console.log(` Branch: ${feature.gitBranch}`);
256
240
  }
241
+ console.log(` Created: ${new Date(feature.createdAt).toLocaleDateString()}`);
257
242
  console.log('');
258
243
  }
259
244
  // Show next page command if there are more items
@@ -263,7 +248,7 @@ export async function featureList(options) {
263
248
  const limitFlag = currentLimit !== 10 ? ` --limit ${currentLimit}` : '';
264
249
  const branchFlag = options.currentBranch ? ' --current-branch' : '';
265
250
  const deletedFlag = options.includeDeleted ? ' --include-deleted' : '';
266
- console.log(`Next page: ranger feature list --offset ${nextOffset}${limitFlag}${branchFlag}${deletedFlag}`);
251
+ console.log(`Next page: ranger list --offset ${nextOffset}${limitFlag}${branchFlag}${deletedFlag}`);
267
252
  }
268
253
  }
269
254
  /**
@@ -272,9 +257,7 @@ export async function featureList(options) {
272
257
  export async function featureShow(id) {
273
258
  const featureId = id || (await getActiveFeatureId());
274
259
  if (!featureId) {
275
- console.error('\n\u274c No feature ID provided and no active feature set.');
276
- console.error('Run: ranger feature resume <id> to set an active feature');
277
- process.exit(1);
260
+ 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
261
  }
279
262
  const feature = await getFeature(featureId);
280
263
  displayFeature(feature, feature.checklistItems);
@@ -294,7 +277,7 @@ export async function featureResume(id) {
294
277
  await updateFeature(feature.id, { gitBranch: currentBranch });
295
278
  console.log(` Updated branch to: ${currentBranch}`);
296
279
  }
297
- console.log(`\n\u2705 Resumed feature: ${feature.name} (${feature.id})`);
280
+ console.log(`\n\u2705 Resumed feature review: ${feature.name} (${feature.id})`);
298
281
  // Start the current session if it's ready
299
282
  await tryStartCurrentSession(feature.id);
300
283
  // Register Claude session if provided via env var
@@ -309,10 +292,9 @@ export async function featureResume(id) {
309
292
  const gitRepoUrl = getGitRepoUrl();
310
293
  const gitBranch = getGitBranch();
311
294
  if (!gitRepoUrl && !gitBranch) {
312
- console.error('\n\u274c Not in a git repository.');
313
- process.exit(1);
295
+ throw new Error('Not in a git repository.');
314
296
  }
315
- console.log(`\nSearching for features matching: ${gitRepoUrl || 'any'} / ${gitBranch || 'any'}...`);
297
+ console.log(`\nSearching for feature reviews matching: ${gitRepoUrl || 'any'} / ${gitBranch || 'any'}...`);
316
298
  const result = await listFeatures({
317
299
  gitRepoUrl,
318
300
  gitBranch,
@@ -320,8 +302,8 @@ export async function featureResume(id) {
320
302
  // Filter to non-completed features
321
303
  const activeFeatures = result.items.filter((f) => !f.completedAt);
322
304
  if (activeFeatures.length === 0) {
323
- console.log('\nNo matching active features found.');
324
- console.log('Run: ranger feature create "<name>" to create a new feature');
305
+ console.log('\nNo matching active feature reviews found.');
306
+ console.log('Run: ranger create "<name>" to create a new feature review');
325
307
  return;
326
308
  }
327
309
  let selectedFeature;
@@ -333,24 +315,25 @@ export async function featureResume(id) {
333
315
  const isInteractive = process.stdin.isTTY && process.stdout.isTTY;
334
316
  if (!isInteractive) {
335
317
  // Non-interactive mode: list features and require explicit ID
336
- console.log('\nNon-interactive mode detected. Multiple features found:');
318
+ console.log('\nNon-interactive mode detected. Multiple feature reviews found:');
337
319
  for (const f of activeFeatures) {
338
- const devStatus = getDevStatusDisplay(f);
339
- console.log(` ${devStatus.emoji} ${f.name}`);
320
+ console.log(` ${f.name}`);
340
321
  console.log(` ID: ${f.id}`);
322
+ if (f.stats) {
323
+ console.log(` Progress: ${getProgressDisplay(f.stats)}`);
324
+ }
341
325
  if (f.gitBranch) {
342
326
  console.log(` Branch: ${f.gitBranch}`);
343
327
  }
344
328
  }
345
- console.error('\nPlease specify the feature ID: ranger feature resume <id>');
346
- process.exit(1);
329
+ throw new Error('Please specify the feature review ID: ranger resume <id>');
347
330
  }
348
331
  // Interactive mode: prompt user to select
349
332
  const { selected } = await inquirer.prompt([
350
333
  {
351
334
  type: 'list',
352
335
  name: 'selected',
353
- message: 'Multiple features found. Select one:',
336
+ message: 'Multiple feature reviews found. Select one:',
354
337
  choices: activeFeatures.map((f) => ({
355
338
  name: `${f.name} (${f.id})`,
356
339
  value: f.id,
@@ -365,7 +348,7 @@ export async function featureResume(id) {
365
348
  await updateFeature(selectedFeature.id, { gitBranch });
366
349
  console.log(` Updated branch to: ${gitBranch}`);
367
350
  }
368
- console.log(`\n\u2705 Resumed feature: ${selectedFeature.name} (${selectedFeature.id})`);
351
+ console.log(`\n\u2705 Resumed feature review: ${selectedFeature.name} (${selectedFeature.id})`);
369
352
  // Start the current session if it's ready
370
353
  await tryStartCurrentSession(selectedFeature.id);
371
354
  // Register Claude session if provided via env var
@@ -379,7 +362,7 @@ export async function featureResume(id) {
379
362
  await printFeedbackNudge(fullFeature.id);
380
363
  }
381
364
  /**
382
- * Print a nudge about unaddressed reviewer comments if any items have them
365
+ * Print a nudge about unaddressed reviewer comments if any scenarios have them
383
366
  */
384
367
  async function printFeedbackNudge(featureId) {
385
368
  try {
@@ -394,8 +377,8 @@ async function printFeedbackNudge(featureId) {
394
377
  }
395
378
  }
396
379
  if (totalComments > 0) {
397
- console.log(`\n\u26a0\ufe0f ${totalComments} unaddressed reviewer comment(s) across ${itemsWithComments} item(s).`);
398
- console.log(' Run `ranger feature get-feedback` to see what needs to be fixed.');
380
+ console.log(`\n\u26a0\ufe0f ${totalComments} unaddressed reviewer comment(s) across ${itemsWithComments} scenario(s).`);
381
+ console.log(' Run `ranger get-review` to see what needs to be fixed.');
399
382
  }
400
383
  }
401
384
  catch {
@@ -425,8 +408,7 @@ async function tryStartCurrentSession(featureId) {
425
408
  export async function featureReport(id, options) {
426
409
  const featureId = id || (await getActiveFeatureId());
427
410
  if (!featureId) {
428
- console.error('\n\u274c No feature ID provided and no active feature set.');
429
- process.exit(1);
411
+ throw new Error('No feature review ID provided and no active feature review set.');
430
412
  }
431
413
  console.log('\nGenerating report...');
432
414
  // Fetch markdown report from API (includes embedded screenshots)
@@ -449,33 +431,28 @@ export async function featureReport(id, options) {
449
431
  export async function featureConcludeSession(id) {
450
432
  const featureId = id || (await getActiveFeatureId());
451
433
  if (!featureId) {
452
- console.error('\n\u274c No feature ID provided and no active feature set.');
453
- console.error('Run: ranger feature resume <id> to set an active feature');
454
- process.exit(1);
434
+ 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
435
  }
456
436
  const feature = await getFeature(featureId);
457
437
  if (!feature.currentSessionId) {
458
- console.error('\n\u274c No active session for this feature.');
459
- process.exit(1);
438
+ throw new Error('No active session for this feature review.');
460
439
  }
461
440
  const { sessions } = await listFeatureSessions(featureId);
462
441
  const currentSession = sessions.find((s) => s.id === feature.currentSessionId);
463
442
  if (!currentSession) {
464
- console.error('\n\u274c Current session not found.');
465
- process.exit(1);
443
+ throw new Error('Current session not found.');
466
444
  }
467
445
  if (currentSession.status === 'completed') {
468
446
  console.log('\n\u2705 Session is already completed.');
469
447
  return;
470
448
  }
471
449
  if (currentSession.status !== 'in_progress') {
472
- console.error(`\n\u274c Cannot conclude session with status: ${currentSession.status}`);
473
- process.exit(1);
450
+ throw new Error(`Cannot conclude session with status: ${currentSession.status}`);
474
451
  }
475
452
  console.log('\nConcluding session...');
476
453
  await concludeSession(featureId, feature.currentSessionId);
477
454
  console.log(`\n\u2705 Session ${currentSession.iteration} concluded.`);
478
- console.log(` The feature is now ready for human review on the Ranger dashboard.`);
455
+ console.log(` The feature review is now ready for human review on the Ranger dashboard.`);
479
456
  }
480
457
  /**
481
458
  * List sessions for a feature
@@ -483,11 +460,10 @@ export async function featureConcludeSession(id) {
483
460
  export async function featureSessions(id) {
484
461
  const featureId = id || (await getActiveFeatureId());
485
462
  if (!featureId) {
486
- console.error('\n\u274c No feature ID provided and no active feature set.');
487
- process.exit(1);
463
+ throw new Error('No feature review ID provided and no active feature review set.');
488
464
  }
489
465
  const feature = await getFeature(featureId);
490
- console.log(`\n\ud83d\udcc1 Sessions for: ${feature.name}\n`);
466
+ console.log(`\n\ud83d\udcc1 Sessions for feature review: ${feature.name}\n`);
491
467
  const { sessions } = await listFeatureSessions(featureId);
492
468
  if (sessions.length === 0) {
493
469
  console.log('No sessions found.');
@@ -509,45 +485,105 @@ export async function featureSessions(id) {
509
485
  }
510
486
  }
511
487
  /**
512
- * Add a checklist item to the active feature
488
+ * Add a scenario to the active feature
513
489
  */
514
- export async function featureAddChecklistItem(description, id) {
490
+ export async function featureAddScenario(description, id) {
515
491
  const featureId = id || (await getActiveFeatureId());
516
492
  if (!featureId) {
517
- console.error('\n\u274c No feature ID provided and no active feature set.');
518
- console.error('Run: ranger feature resume <id> to set an active feature');
493
+ throw new Error('No feature review ID provided and no active feature review set. Run: ranger resume <id> to set an active feature review');
494
+ }
495
+ const feature = await getFeature(featureId);
496
+ // Check if there's an active (non-submitted) review
497
+ if (feature.latestReview && !feature.latestReview.submittedAt) {
498
+ throw new Error(`Cannot add scenario: feature review has an active review. Please finish your review first: ${feature.dashboardUrl}`);
499
+ }
500
+ // Create the scenario
501
+ await createChecklistItem(featureId, description);
502
+ // Refetch and display the updated feature
503
+ const updatedFeature = await getFeature(featureId);
504
+ console.log(`\n\u2705 Scenario added`);
505
+ displayFeature(updatedFeature, updatedFeature.checklistItems);
506
+ }
507
+ /**
508
+ * Edit a scenario description on the active feature
509
+ */
510
+ export async function featureEditScenario(description, options) {
511
+ const featureId = options.id || (await getActiveFeatureId());
512
+ if (!featureId) {
513
+ console.error('\n\u274c No feature review ID provided and no active feature review set.');
514
+ console.error('Run: ranger resume <id> to set an active feature review');
519
515
  process.exit(1);
520
516
  }
521
517
  const feature = await getFeature(featureId);
522
518
  // Check if there's an active (non-submitted) review
523
519
  if (feature.latestReview && !feature.latestReview.submittedAt) {
524
- console.error('\n\u274c Cannot add checklist item: feature has an active review.');
520
+ console.error('\n\u274c Cannot edit scenario: feature review has an active review.');
525
521
  console.error('Please finish your review first:');
526
522
  console.error(` ${feature.dashboardUrl}`);
527
523
  process.exit(1);
528
524
  }
529
- // Create the checklist item
530
- await createChecklistItem(featureId, description);
531
- // Refetch and display the updated feature
525
+ const checklistItems = feature.checklistItems || [];
526
+ if (checklistItems.length === 0) {
527
+ console.error('\n\u274c No scenarios found to edit.');
528
+ process.exit(1);
529
+ }
530
+ if (options.scenario === undefined) {
531
+ console.error('\n\u274c No scenario number provided. Use --scenario <number>.');
532
+ console.log('\nAvailable scenarios:');
533
+ for (let i = 0; i < checklistItems.length; i++) {
534
+ console.log(` ${i + 1}. ${checklistItems[i].description}`);
535
+ }
536
+ process.exit(1);
537
+ }
538
+ const itemIndex = options.scenario - 1;
539
+ if (itemIndex < 0 || itemIndex >= checklistItems.length) {
540
+ console.error(`\n\u274c Invalid scenario index: ${options.scenario}. Feature review has ${checklistItems.length} scenarios.`);
541
+ console.log('\nAvailable scenarios:');
542
+ for (let i = 0; i < checklistItems.length; i++) {
543
+ console.log(` ${i + 1}. ${checklistItems[i].description}`);
544
+ }
545
+ process.exit(1);
546
+ }
547
+ const checklistItem = checklistItems[itemIndex];
548
+ await updateChecklistItem(featureId, checklistItem.id, { description });
532
549
  const updatedFeature = await getFeature(featureId);
533
- console.log(`\n\u2705 Checklist item added`);
550
+ console.log(`\n\u2705 Scenario updated`);
534
551
  displayFeature(updatedFeature, updatedFeature.checklistItems);
535
552
  }
536
553
  /**
537
- * Get feedback (reviewer comments) for all action items in a feature
554
+ * Get review comments for all scenarios in a feature
555
+ */
556
+ /**
557
+ * Download an image from a signed URL to a local file path.
558
+ * Returns the local file path on success, or null on failure.
538
559
  */
539
- export async function featureGetFeedback(id) {
560
+ async function downloadFeedbackImage(assetUrl, commentId) {
561
+ try {
562
+ const imagesDir = join(getRangerDir(), 'feedback-images');
563
+ await mkdir(imagesDir, { recursive: true });
564
+ const filePath = join(imagesDir, `comment_${commentId}.png`);
565
+ const response = await fetch(assetUrl);
566
+ if (!response.ok) {
567
+ return null;
568
+ }
569
+ const buffer = Buffer.from(await response.arrayBuffer());
570
+ await writeFile(filePath, buffer);
571
+ return filePath;
572
+ }
573
+ catch {
574
+ return null;
575
+ }
576
+ }
577
+ export async function featureGetReview(id) {
540
578
  const featureId = id || (await getActiveFeatureId());
541
579
  if (!featureId) {
542
- console.error('\n\u274c No feature ID provided and no active feature set.');
543
- console.error('Run: ranger feature resume <id> to set an active feature');
544
- process.exit(1);
580
+ 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
581
  }
546
582
  const feature = await getFeature(featureId);
547
583
  const { items: actionItems } = await getActionItems(featureId);
548
584
  console.log(`\n\ud83d\udccb Feedback for: ${feature.name} (${feature.id})\n`);
549
585
  if (actionItems.length === 0) {
550
- console.log('No action items found.');
586
+ console.log('No scenarios found.');
551
587
  return;
552
588
  }
553
589
  for (let i = 0; i < actionItems.length; i++) {
@@ -555,11 +591,28 @@ export async function featureGetFeedback(id) {
555
591
  const versionTag = item.version > 1 ? ` (v${item.version})` : '';
556
592
  const feedback = await getItemFeedback(featureId, item.id);
557
593
  if (feedback.unaddressedComments.length > 0) {
558
- console.log(`Item ${i + 1}: "${item.description}"${versionTag} \u2014 ${feedback.unaddressedComments.length} unaddressed comment(s)`);
594
+ console.log(`Scenario ${i + 1}: "${item.description}"${versionTag} \u2014 ${feedback.unaddressedComments.length} unaddressed comment(s)`);
559
595
  for (const comment of feedback.unaddressedComments) {
560
596
  const date = new Date(comment.createdAt).toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
561
597
  const author = comment.authorName || comment.authorEmail || 'Unknown';
562
598
  console.log(` \ud83d\udcac ${author} (${date}): "${comment.content}"`);
599
+ // Download and display annotated screenshot if available
600
+ if (comment.assetUrl) {
601
+ const localPath = await downloadFeedbackImage(comment.assetUrl, comment.id);
602
+ if (localPath) {
603
+ console.log(` \ud83d\udcf7 Screenshot: ${localPath}`);
604
+ }
605
+ }
606
+ if (comment.spatial) {
607
+ const coords = comment.spatial.coordinates;
608
+ if (comment.spatial.type === 'point' &&
609
+ coords.length >= 2) {
610
+ console.log(` \ud83d\udccd Annotation: point at (${coords[0].toFixed(2)}, ${coords[1].toFixed(2)})`);
611
+ }
612
+ else {
613
+ console.log(` \ud83d\udccd Annotation: ${comment.spatial.type} at [${coords.map((c) => c.toFixed(2)).join(', ')}]`);
614
+ }
615
+ }
563
616
  }
564
617
  if (feedback.canonicalFlow) {
565
618
  console.log(` Expected flow:`);
@@ -569,7 +622,7 @@ export async function featureGetFeedback(id) {
569
622
  }
570
623
  }
571
624
  else {
572
- console.log(`Item ${i + 1}: "${item.description}"${versionTag} \u2014 0 comments`);
625
+ console.log(`Scenario ${i + 1}: "${item.description}"${versionTag} \u2014 no comments`);
573
626
  console.log(` \u2705 No feedback to address`);
574
627
  }
575
628
  console.log('');
@@ -581,14 +634,12 @@ export async function featureGetFeedback(id) {
581
634
  export async function featureDelete(id) {
582
635
  const featureId = id || (await getActiveFeatureId());
583
636
  if (!featureId) {
584
- console.error('\n\u274c No feature ID provided and no active feature set.');
585
- console.error('Run: ranger feature resume <id> to set an active feature');
586
- process.exit(1);
637
+ 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
638
  }
588
639
  const feature = await getFeature(featureId);
589
640
  await softDeleteFeature(featureId);
590
- console.log(`\n\ud83d\uddd1\ufe0f Deleted feature: ${feature.name} (${featureId})`);
591
- console.log(' To restore it, run: ranger feature restore ' + featureId);
641
+ console.log(`\n\ud83d\uddd1\ufe0f Deleted feature review: ${feature.name} (${featureId})`);
642
+ console.log(' To restore it, run: ranger restore ' + featureId);
592
643
  }
593
644
  /**
594
645
  * Restore a soft-deleted feature
@@ -596,7 +647,7 @@ export async function featureDelete(id) {
596
647
  export async function featureRestore(id) {
597
648
  await restoreFeature(id);
598
649
  const feature = await getFeature(id);
599
- console.log(`\n\u2705 Restored feature: ${feature.name} (${id})`);
650
+ console.log(`\n\u2705 Restored feature review: ${feature.name} (${id})`);
600
651
  displayFeature(feature, feature.checklistItems);
601
652
  }
602
653
  //# 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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"}