@proletariat/cli 0.3.84 → 0.3.86

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 (85) hide show
  1. package/bin/validate-better-sqlite3.cjs +11 -0
  2. package/dist/commands/session/cleanup.d.ts +2 -0
  3. package/dist/commands/session/cleanup.js +89 -42
  4. package/dist/commands/session/cleanup.js.map +1 -1
  5. package/dist/commands/session/index.js +4 -0
  6. package/dist/commands/session/index.js.map +1 -1
  7. package/dist/commands/session/report.d.ts +27 -0
  8. package/dist/commands/session/report.js +217 -0
  9. package/dist/commands/session/report.js.map +1 -0
  10. package/dist/commands/telemetry/disable.js +1 -1
  11. package/dist/commands/telemetry/disable.js.map +1 -1
  12. package/dist/commands/telemetry/enable.js +1 -1
  13. package/dist/commands/telemetry/enable.js.map +1 -1
  14. package/dist/commands/ticket/create.d.ts +3 -2
  15. package/dist/commands/ticket/create.js +6 -69
  16. package/dist/commands/ticket/create.js.map +1 -1
  17. package/dist/commands/work/groom.d.ts +15 -0
  18. package/dist/commands/work/groom.js +77 -0
  19. package/dist/commands/work/groom.js.map +1 -0
  20. package/dist/commands/work/implement.d.ts +16 -0
  21. package/dist/commands/work/implement.js +85 -0
  22. package/dist/commands/work/implement.js.map +1 -0
  23. package/dist/commands/work/index.js +38 -34
  24. package/dist/commands/work/index.js.map +1 -1
  25. package/dist/commands/work/peek.d.ts +18 -0
  26. package/dist/commands/work/peek.js +78 -0
  27. package/dist/commands/work/peek.js.map +1 -0
  28. package/dist/commands/work/poke.d.ts +19 -0
  29. package/dist/commands/work/poke.js +79 -0
  30. package/dist/commands/work/poke.js.map +1 -0
  31. package/dist/commands/work/review.d.ts +1 -31
  32. package/dist/commands/work/review.js +44 -368
  33. package/dist/commands/work/review.js.map +1 -1
  34. package/dist/commands/work/spawn.js +1 -1
  35. package/dist/commands/work/spawn.js.map +1 -1
  36. package/dist/commands/work/start.d.ts +2 -0
  37. package/dist/commands/work/start.js +24 -19
  38. package/dist/commands/work/start.js.map +1 -1
  39. package/dist/commands/work/stop.d.ts +14 -0
  40. package/dist/commands/work/stop.js +103 -0
  41. package/dist/commands/work/stop.js.map +1 -0
  42. package/dist/hooks/init.d.ts +1 -1
  43. package/dist/hooks/init.js +1 -1
  44. package/dist/lib/execution/config.d.ts +17 -1
  45. package/dist/lib/execution/config.js +38 -0
  46. package/dist/lib/execution/config.js.map +1 -1
  47. package/dist/lib/execution/devcontainer.js +0 -1
  48. package/dist/lib/execution/devcontainer.js.map +1 -1
  49. package/dist/lib/execution/runners/docker-management.js +20 -0
  50. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  51. package/dist/lib/execution/runners/prompt-builder.js +1 -2
  52. package/dist/lib/execution/runners/prompt-builder.js.map +1 -1
  53. package/dist/lib/execution/runners/shared.js +3 -1
  54. package/dist/lib/execution/runners/shared.js.map +1 -1
  55. package/dist/lib/execution/spawner.d.ts +3 -1
  56. package/dist/lib/execution/spawner.js +10 -4
  57. package/dist/lib/execution/spawner.js.map +1 -1
  58. package/dist/lib/execution/storage.d.ts +2 -1
  59. package/dist/lib/execution/storage.js +4 -3
  60. package/dist/lib/execution/storage.js.map +1 -1
  61. package/dist/lib/execution/types.d.ts +9 -0
  62. package/dist/lib/execution/types.js.map +1 -1
  63. package/dist/lib/mcp/tools/tmux.d.ts +1 -1
  64. package/dist/lib/mcp/tools/tmux.js +1 -1
  65. package/dist/lib/mcp/tools/work.js +4 -35
  66. package/dist/lib/mcp/tools/work.js.map +1 -1
  67. package/dist/lib/pmo/schema.d.ts +1 -1
  68. package/dist/lib/pmo/schema.js +1 -0
  69. package/dist/lib/pmo/schema.js.map +1 -1
  70. package/dist/lib/pmo/storage/base.js +59 -501
  71. package/dist/lib/pmo/storage/base.js.map +1 -1
  72. package/dist/lib/pmo/utils.d.ts +22 -0
  73. package/dist/lib/pmo/utils.js +31 -0
  74. package/dist/lib/pmo/utils.js.map +1 -1
  75. package/dist/lib/telemetry/analytics.d.ts +10 -13
  76. package/dist/lib/telemetry/analytics.js +36 -126
  77. package/dist/lib/telemetry/analytics.js.map +1 -1
  78. package/dist/lib/telemetry/feature-flags.d.ts +12 -37
  79. package/dist/lib/telemetry/feature-flags.js +15 -63
  80. package/dist/lib/telemetry/feature-flags.js.map +1 -1
  81. package/oclif.manifest.json +846 -583
  82. package/package.json +2 -3
  83. package/dist/commands/work/revise.d.ts +0 -20
  84. package/dist/commands/work/revise.js +0 -377
  85. package/dist/commands/work/revise.js.map +0 -1
@@ -1,78 +1,32 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
- import * as path from 'node:path';
3
- import { execSync } from 'node:child_process';
4
- import Database from 'better-sqlite3';
5
2
  import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
6
3
  import { styles } from '../../lib/styles.js';
7
- import { getWorkspaceInfo, } from '../../lib/agents/commands.js';
8
- import { ExecutionStorage } from '../../lib/execution/storage.js';
9
- import { shouldOutputJson, outputErrorAsJson, outputSuccessAsJson, createMetadata, } from '../../lib/prompt-json.js';
10
- import { isGHInstalled, isGHAuthenticated, getPRFeedback, getPRForBranch, } from '../../lib/pr/index.js';
11
- /**
12
- * Maximum poll duration before giving up (30 minutes).
13
- */
14
- const MAX_POLL_DURATION_MS = 30 * 60 * 1000;
4
+ import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
15
5
  export default class WorkReview extends PMOCommand {
16
- static description = 'Automated review-fix pipeline: review fix re-review until clean';
6
+ static description = 'Evaluate the output/PR for a ticket (model decides whether to comment, fix, or both)';
17
7
  static examples = [
18
- '<%= config.bin %> <%= command.id %> TKT-001',
19
- '<%= config.bin %> <%= command.id %> TKT-001 --max-cycles 5',
20
- '<%= config.bin %> <%= command.id %> TKT-001 --auto # Skip confirmations between cycles',
21
- '<%= config.bin %> <%= command.id %> # Interactive mode',
8
+ '<%= config.bin %> work review TKT-001',
9
+ '<%= config.bin %> work review TKT-001 TKT-002',
10
+ '<%= config.bin %> work review # Interactive picker for reviewable tickets',
22
11
  ];
12
+ static strict = false;
23
13
  static args = {
24
14
  ticketId: Args.string({
25
- description: 'Ticket ID to review',
15
+ description: 'Ticket ID(s) to review - prompts with picker if not provided',
26
16
  required: false,
27
17
  }),
28
18
  };
29
19
  static flags = {
30
20
  ...pmoBaseFlags,
31
- 'max-cycles': Flags.integer({
32
- description: 'Maximum review-fix cycles before stopping (default: 3)',
33
- default: 3,
34
- }),
35
- auto: Flags.boolean({
36
- description: 'Skip confirmations between cycles (fully automated)',
37
- default: false,
38
- }),
39
- executor: Flags.string({
40
- char: 'e',
41
- description: 'Override executor',
42
- options: ['claude-code', 'codex', 'custom'],
43
- }),
44
- 'run-on-host': Flags.boolean({
45
- description: 'Run on host even if devcontainer exists (bypasses sandbox)',
46
- default: false,
47
- }),
48
- 'skip-permissions': Flags.boolean({
49
- description: 'Skip permission checks for agents',
50
- default: false,
51
- }),
52
- display: Flags.string({
53
- char: 'd',
54
- description: 'Display mode for agents',
55
- options: ['foreground', 'terminal', 'background'],
56
- default: 'background',
57
- }),
58
- session: Flags.string({
59
- char: 's',
60
- description: 'Session manager inside container',
61
- options: ['tmux', 'direct'],
62
- default: 'tmux',
63
- }),
64
- 'poll-interval': Flags.integer({
65
- description: 'Polling interval in seconds to check agent completion (default: 10)',
66
- default: 10,
67
- }),
68
- force: Flags.boolean({
69
- char: 'f',
70
- description: 'Force spawn even if ticket has running executions',
21
+ json: Flags.boolean({
22
+ char: 'm',
23
+ aliases: ['machine'],
24
+ description: 'Output prompt configuration as JSON (for AI agents/scripts)',
71
25
  default: false,
72
26
  }),
73
27
  };
74
28
  async execute() {
75
- const { args, flags } = await this.parse(WorkReview);
29
+ const { flags, argv } = await this.parse(WorkReview);
76
30
  const projectId = flags.project;
77
31
  const jsonMode = shouldOutputJson(flags);
78
32
  const handleError = (code, message) => {
@@ -82,323 +36,45 @@ export default class WorkReview extends PMOCommand {
82
36
  }
83
37
  this.error(message);
84
38
  };
85
- // Check gh CLI
86
- if (!isGHInstalled() || !isGHAuthenticated()) {
87
- return handleError('GH_NOT_AVAILABLE', 'GitHub CLI (gh) is required for the review pipeline.\nRun: prlt gh login');
88
- }
89
- // Get workspace info
90
- let workspaceInfo;
91
- try {
92
- workspaceInfo = getWorkspaceInfo();
93
- }
94
- catch {
95
- return handleError('NOT_IN_WORKSPACE', 'Not in a workspace. Run "prlt new" first.');
96
- }
97
- const dbPath = path.join(workspaceInfo.path, '.proletariat', 'workspace.db');
98
- const db = new Database(dbPath);
99
- const executionStorage = new ExecutionStorage(db);
100
- try {
101
- // Get ticketId
102
- let ticketId = args.ticketId;
103
- if (!ticketId) {
104
- // Show tickets that are in progress or review (have PRs)
105
- const allTickets = await this.storage.listTickets(projectId);
106
- const reviewableTickets = allTickets.filter(t => {
107
- const hasPR = t.metadata?.pr_url;
108
- const isInProgress = t.status === 'in_progress' || t.status === 'done';
109
- return hasPR || isInProgress;
110
- });
111
- if (reviewableTickets.length === 0) {
112
- db.close();
113
- return handleError('NO_TICKETS', 'No reviewable tickets found. Tickets need a PR to be reviewed.');
114
- }
115
- const selected = await this.selectFromList({
116
- message: 'Select ticket to review:',
117
- items: reviewableTickets,
118
- getName: (t) => `${t.id} - ${t.title} ${t.metadata?.pr_url ? '(has PR)' : ''}`,
119
- getValue: (t) => t.id,
120
- getCommand: (t) => `prlt work review ${t.id} --json`,
121
- jsonMode: jsonMode ? { flags, commandName: 'work review' } : null,
122
- });
123
- if (!selected) {
124
- db.close();
125
- return;
126
- }
127
- ticketId = selected;
128
- }
129
- // Get ticket
130
- const ticket = await this.storage.getTicket(ticketId);
131
- if (!ticket) {
132
- db.close();
133
- return handleError('TICKET_NOT_FOUND', `Ticket "${ticketId}" not found.`);
39
+ // Collect ticket IDs from argv (supports multiple args)
40
+ let ticketIds = argv.filter(a => !a.startsWith('-'));
41
+ if (ticketIds.length === 0) {
42
+ // No tickets specified - show picker of reviewable tickets (in progress or done with PRs)
43
+ const allTickets = await this.storage.listTickets(projectId);
44
+ const reviewableTickets = allTickets.filter((t) => t.statusCategory === 'started' ||
45
+ t.statusCategory === 'completed' ||
46
+ t.statusName?.toLowerCase() === 'in progress' ||
47
+ t.statusName?.toLowerCase() === 'review' ||
48
+ t.statusName?.toLowerCase() === 'done');
49
+ if (reviewableTickets.length === 0) {
50
+ return handleError('NO_TICKETS', 'No reviewable tickets found. Implement tickets first with "prlt work implement".');
134
51
  }
135
- // Find the PR - either from ticket metadata or by branch
136
- let prUrl = ticket.metadata?.pr_url;
137
- if (!prUrl && ticket.branch) {
138
- // Try to find PR by branch
139
- const prInfo = getPRForBranch(ticket.branch);
140
- if (prInfo) {
141
- prUrl = prInfo.url;
142
- }
143
- }
144
- if (!prUrl) {
145
- db.close();
146
- return handleError('NO_PR', `Ticket "${ticketId}" has no PR. Create one first with "prlt work ready ${ticketId} --pr".`);
147
- }
148
- const maxCycles = flags['max-cycles'];
149
- const autoMode = flags.auto;
150
- const pollInterval = (flags['poll-interval'] || 10) * 1000;
151
- this.log('');
152
- this.log(styles.header('Review Pipeline'));
153
- this.log(styles.muted(` Ticket: ${ticket.id} - ${ticket.title}`));
154
- this.log(styles.muted(` PR: ${prUrl}`));
155
- this.log(styles.muted(` Max cycles: ${maxCycles}`));
156
- this.log(styles.muted(` Mode: ${autoMode ? 'fully automated' : 'interactive'}`));
157
- this.log('');
158
- // Pipeline loop
159
- for (let cycle = 1; cycle <= maxCycles; cycle++) {
160
- this.log(styles.header(`Cycle ${cycle}/${maxCycles}: Review Phase`));
161
- this.log('');
162
- // === REVIEW PHASE ===
163
- // Spawn a review agent
164
- const reviewArgs = this.buildStartArgs(ticketId, flags, 'review');
165
- this.log(styles.muted('Spawning review agent...'));
166
- try {
167
- await this.config.runCommand('work:start', reviewArgs);
168
- }
169
- catch (error) {
170
- this.log(styles.error(`Failed to spawn review agent: ${error instanceof Error ? error.message : error}`));
171
- break;
172
- }
173
- // Wait for the review agent to complete
174
- this.log(styles.muted('Waiting for review agent to complete...'));
175
- const reviewCompleted = await this.waitForAgentCompletion(ticketId, executionStorage, pollInterval);
176
- if (!reviewCompleted) {
177
- this.log(styles.warning('Review agent did not complete within timeout. Stopping pipeline.'));
178
- break;
179
- }
180
- this.log(styles.success('Review agent completed.'));
181
- this.log('');
182
- // Check PR feedback
183
- this.log(styles.muted('Checking review results...'));
184
- const feedback = getPRFeedback(prUrl);
185
- if (!feedback) {
186
- this.log(styles.warning('Could not fetch PR feedback. Stopping pipeline.'));
187
- break;
188
- }
189
- const verdict = this.getReviewVerdict(feedback);
190
- if (verdict === 'APPROVED') {
191
- this.log(styles.success('PR APPROVED! No fixes needed.'));
192
- this.log('');
193
- if (jsonMode) {
194
- outputSuccessAsJson({
195
- ticketId: ticketId,
196
- prUrl,
197
- verdict: 'APPROVED',
198
- cycles: cycle,
199
- }, createMetadata('work review', flags));
200
- return;
201
- }
202
- db.close();
203
- return;
204
- }
205
- this.log(styles.warning(`Review verdict: ${verdict}`));
206
- this.log(styles.muted(` Reviews: ${feedback.reviews.length}`));
207
- // Show review summary
208
- for (const review of feedback.reviews) {
209
- if (review.state === 'CHANGES_REQUESTED' || review.state === 'COMMENTED') {
210
- this.log(styles.muted(` ${review.author}: ${review.state}`));
211
- if (review.comments.length > 0) {
212
- this.log(styles.muted(` ${review.comments.length} comment(s)`));
213
- }
214
- }
215
- }
216
- this.log('');
217
- // Check if we've reached max cycles
218
- if (cycle === maxCycles) {
219
- this.log(styles.warning(`Reached maximum cycles (${maxCycles}). Stopping pipeline.`));
220
- this.log(styles.muted('Review feedback remains on the PR for manual follow-up.'));
221
- break;
222
- }
223
- // === FIX PHASE ===
224
- if (!autoMode) {
225
- const shouldFix = await this.selectFromList({
226
- message: `Issues found in cycle ${cycle}. Auto-fix and re-review?`,
227
- items: [
228
- { id: 'yes', name: 'Yes, spawn fix agent and re-review' },
229
- { id: 'fix-only', name: 'Fix only (no re-review)' },
230
- { id: 'no', name: 'No, stop pipeline' },
231
- ],
232
- getName: (item) => item.name,
233
- getValue: (item) => item.id,
234
- getCommand: () => '',
235
- jsonMode: jsonMode ? { flags, commandName: 'work review' } : null,
236
- });
237
- if (shouldFix === 'no' || !shouldFix) {
238
- this.log(styles.muted('Pipeline stopped by user.'));
239
- break;
240
- }
241
- if (shouldFix === 'fix-only') {
242
- // Spawn fix agent but don't re-review
243
- this.log(styles.header(`Cycle ${cycle}/${maxCycles}: Fix Phase (final)`));
244
- await this.runFixPhase(ticketId, flags, executionStorage, pollInterval);
245
- break;
246
- }
247
- }
248
- this.log(styles.header(`Cycle ${cycle}/${maxCycles}: Fix Phase`));
249
- this.log('');
250
- const fixCompleted = await this.runFixPhase(ticketId, flags, executionStorage, pollInterval);
251
- if (!fixCompleted) {
252
- this.log(styles.warning('Fix agent did not complete. Stopping pipeline.'));
253
- break;
254
- }
255
- this.log(styles.success('Fix agent completed. Proceeding to re-review...'));
256
- this.log('');
257
- // Small delay before re-review to let GitHub update
258
- await this.sleep(3000);
259
- }
260
- // Final status
261
- this.log('');
262
- const finalFeedback = getPRFeedback(prUrl);
263
- const finalVerdict = finalFeedback ? this.getReviewVerdict(finalFeedback) : 'UNKNOWN';
264
- this.log(styles.header('Pipeline Complete'));
265
- this.log(styles.muted(` Final status: ${finalVerdict}`));
266
- this.log(styles.muted(` PR: ${prUrl}`));
267
- this.log('');
268
- if (jsonMode) {
269
- outputSuccessAsJson({
270
- ticketId: ticketId,
271
- prUrl,
272
- verdict: finalVerdict,
273
- }, createMetadata('work review', flags));
52
+ const selected = await this.selectFromList({
53
+ message: 'Select ticket to review:',
54
+ items: reviewableTickets,
55
+ getName: (t) => `${t.id} - ${t.title} (${t.statusName})`,
56
+ getValue: (t) => t.id,
57
+ getCommand: (t) => `prlt work review ${t.id}${projectId ? ` -P ${projectId}` : ''} --json`,
58
+ jsonMode: jsonMode ? { flags, commandName: 'work review' } : null,
59
+ });
60
+ if (!selected) {
274
61
  return;
275
62
  }
276
- db.close();
63
+ ticketIds = [selected];
277
64
  }
278
- catch (error) {
279
- db.close();
280
- throw error;
281
- }
282
- }
283
- /**
284
- * Build args for `work:start` command.
285
- */
286
- buildStartArgs(ticketId, flags, action) {
287
- const startArgs = [
288
- ticketId,
289
- '--action', action,
290
- '--ephemeral',
291
- '--display', flags.display || 'background',
292
- '--yes',
293
- ];
294
- if (flags.executor)
295
- startArgs.push('--executor', flags.executor);
296
- if (flags['run-on-host'])
297
- startArgs.push('--run-on-host');
298
- if (flags['skip-permissions'])
299
- startArgs.push('--skip-permissions');
300
- else
301
- startArgs.push('--permission-mode', 'danger');
302
- if (flags.session)
303
- startArgs.push('--session', flags.session);
304
- // Always pass --force for pipeline (multiple agents may work on same ticket across cycles)
305
- startArgs.push('--force');
306
- // Pass project if available
307
- const projectId = flags.project;
308
- if (projectId)
309
- startArgs.push('--project', projectId);
310
- return startArgs;
311
- }
312
- /**
313
- * Run the fix phase: spawn review-fix agent and wait for completion.
314
- */
315
- async runFixPhase(ticketId, flags, executionStorage, pollInterval) {
316
- const fixArgs = this.buildStartArgs(ticketId, flags, 'review-fix');
317
- this.log(styles.muted('Spawning fix agent...'));
318
- try {
319
- await this.config.runCommand('work:start', fixArgs);
320
- }
321
- catch (error) {
322
- this.log(styles.error(`Failed to spawn fix agent: ${error instanceof Error ? error.message : error}`));
323
- return false;
324
- }
325
- this.log(styles.muted('Waiting for fix agent to complete...'));
326
- return this.waitForAgentCompletion(ticketId, executionStorage, pollInterval);
327
- }
328
- /**
329
- * Wait for the most recent execution on a ticket to complete.
330
- * Polls the execution storage and checks tmux session existence.
331
- */
332
- async waitForAgentCompletion(ticketId, executionStorage, pollInterval) {
333
- const startTime = Date.now();
334
- while (Date.now() - startTime < MAX_POLL_DURATION_MS) {
335
- // Clean up stale executions first
336
- executionStorage.cleanupStaleExecutions();
337
- // Check if there's still a running execution for this ticket
338
- const runningExec = executionStorage.getRunningExecution(ticketId);
339
- if (!runningExec) {
340
- // No running execution - agent has completed (or was never started)
341
- return true;
342
- }
343
- // Check if the tmux session still exists
344
- if (runningExec.sessionId) {
345
- const sessionExists = this.checkTmuxSession(runningExec.sessionId, runningExec.environment, runningExec.containerId);
346
- if (!sessionExists) {
347
- // Session is gone - mark as completed
348
- executionStorage.updateStatus(runningExec.id, 'completed');
349
- return true;
350
- }
65
+ // Launch work start with review action for each ticket
66
+ for (const ticketId of ticketIds) {
67
+ this.log(styles.info(`\nLaunching review for ${styles.emphasis(ticketId)}...`));
68
+ const workStartArgs = [ticketId, '--action', 'review'];
69
+ if (projectId) {
70
+ workStartArgs.push('--project', projectId);
351
71
  }
352
- // Log progress periodically
353
- const elapsed = Math.round((Date.now() - startTime) / 1000);
354
- if (elapsed > 0 && elapsed % 60 === 0) {
355
- this.log(styles.muted(` Still waiting... (${elapsed}s elapsed)`));
356
- }
357
- await this.sleep(pollInterval);
358
- }
359
- return false;
360
- }
361
- /**
362
- * Check if a tmux session exists.
363
- */
364
- checkTmuxSession(sessionId, environment, containerId) {
365
- try {
366
- if (environment === 'devcontainer' && containerId) {
367
- execSync(`docker exec ${containerId} tmux has-session -t "${sessionId}"`, { stdio: 'pipe' });
368
- }
369
- else {
370
- execSync(`tmux has-session -t "${sessionId}"`, { stdio: 'pipe' });
72
+ if (jsonMode) {
73
+ workStartArgs.push('--json');
371
74
  }
372
- return true;
75
+ // eslint-disable-next-line no-await-in-loop
76
+ await this.config.runCommand('work:start', workStartArgs);
373
77
  }
374
- catch {
375
- return false;
376
- }
377
- }
378
- /**
379
- * Get the review verdict from PR feedback.
380
- */
381
- getReviewVerdict(feedback) {
382
- // Check review decision first (aggregated by GitHub)
383
- if (feedback.reviewDecision) {
384
- return feedback.reviewDecision;
385
- }
386
- // Check individual reviews - most recent takes precedence
387
- const sortedReviews = [...feedback.reviews].sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
388
- for (const review of sortedReviews) {
389
- if (review.state === 'APPROVED')
390
- return 'APPROVED';
391
- if (review.state === 'CHANGES_REQUESTED')
392
- return 'CHANGES_REQUESTED';
393
- }
394
- // If there are any comments, treat as needing attention
395
- if (feedback.reviews.some(r => r.comments.length > 0) || feedback.comments.length > 0) {
396
- return 'COMMENTED';
397
- }
398
- return 'UNKNOWN';
399
- }
400
- sleep(ms) {
401
- return new Promise(resolve => setTimeout(resolve, ms));
402
78
  }
403
79
  }
404
80
  //# sourceMappingURL=review.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"review.js","sourceRoot":"","sources":["../../../src/commands/work/review.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../../src/commands/work/review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACf,MAAM,0BAA0B,CAAA;AAEjC,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,UAAU;IAChD,MAAM,CAAC,WAAW,GAAG,sFAAsF,CAAA;IAE3G,MAAM,CAAC,QAAQ,GAAG;QAChB,uCAAuC;QACvC,+CAA+C;QAC/C,4EAA4E;KAC7E,CAAA;IAED,MAAM,CAAC,MAAM,GAAG,KAAK,CAAA;IAErB,MAAM,CAAC,IAAI,GAAG;QACZ,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,8DAA8D;YAC3E,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAA;IAED,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,YAAY;QACf,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,CAAC,SAAS,CAAC;YACpB,WAAW,EAAE,6DAA6D;YAC1E,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAA;IAED,KAAK,CAAC,OAAO;QACX,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QACpD,MAAM,SAAS,GAAI,KAA8B,CAAC,OAAO,CAAA;QAEzD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;QAExC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,OAAe,EAAQ,EAAE;YAC1D,IAAI,QAAQ,EAAE,CAAC;gBACb,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAA;gBACtE,OAAM;YACR,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACrB,CAAC,CAAA;QAED,wDAAwD;QACxD,IAAI,SAAS,GAAc,IAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;QAE5E,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,0FAA0F;YAC1F,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;YAC5D,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CACzC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,cAAc,KAAK,SAAS;gBAC9B,CAAC,CAAC,cAAc,KAAK,WAAW;gBAChC,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,aAAa;gBAC7C,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,QAAQ;gBACxC,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,MAAM,CACzC,CAAA;YAED,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO,WAAW,CAChB,YAAY,EACZ,kFAAkF,CACnF,CAAA;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;gBACzC,OAAO,EAAE,0BAA0B;gBACnC,KAAK,EAAE,iBAAiB;gBACxB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,UAAU,GAAG;gBACxD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;gBACrB,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAChB,oBAAoB,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS;gBACzE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI;aAClE,CAAC,CAAA;YAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAM;YACR,CAAC;YACD,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAA;QACxB,CAAC;QAED,uDAAuD;QACvD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;YAE/E,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;YACtD,IAAI,SAAS,EAAE,CAAC;gBACd,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;YAC5C,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC9B,CAAC;YAED,4CAA4C;YAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC"}
@@ -1840,7 +1840,7 @@ export default class WorkSpawn extends PMOCommand {
1840
1840
  batchOutput = 'interactive';
1841
1841
  }
1842
1842
  // Prompt for permissions mode if not explicitly set via --skip-permissions flag
1843
- // Non-code-modifying actions (review, review-comment, groom) default to safe mode
1843
+ // Non-code-modifying actions (review, groom) default to safe mode
1844
1844
  // to prevent agents from performing destructive operations like merging PRs
1845
1845
  const spawnActionModifiesCode = selectedActionDetails?.modifiesCode ?? true;
1846
1846
  if (!flags['skip-permissions']) {