@proletariat/cli 0.3.98 → 0.3.100

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 (48) hide show
  1. package/dist/commands/orchestrate/index.js +30 -3
  2. package/dist/commands/orchestrate/index.js.map +1 -1
  3. package/dist/commands/qa/index.js +1 -1
  4. package/dist/commands/ticket/create.d.ts +44 -0
  5. package/dist/commands/ticket/create.js +754 -0
  6. package/dist/commands/ticket/create.js.map +1 -0
  7. package/dist/commands/ticket/delete.d.ts +17 -0
  8. package/dist/commands/ticket/delete.js +204 -0
  9. package/dist/commands/ticket/delete.js.map +1 -0
  10. package/dist/commands/ticket/edit.d.ts +28 -0
  11. package/dist/commands/ticket/edit.js +402 -0
  12. package/dist/commands/ticket/edit.js.map +1 -0
  13. package/dist/commands/ticket/index.d.ts +13 -0
  14. package/dist/commands/ticket/index.js +74 -0
  15. package/dist/commands/ticket/index.js.map +1 -0
  16. package/dist/commands/ticket/list.d.ts +33 -0
  17. package/dist/commands/ticket/list.js +519 -0
  18. package/dist/commands/ticket/list.js.map +1 -0
  19. package/dist/commands/ticket/move.d.ts +27 -0
  20. package/dist/commands/ticket/move.js +413 -0
  21. package/dist/commands/ticket/move.js.map +1 -0
  22. package/dist/commands/ticket/show.d.ts +14 -0
  23. package/dist/commands/ticket/show.js +110 -0
  24. package/dist/commands/ticket/show.js.map +1 -0
  25. package/dist/commands/ticket/update.d.ts +28 -0
  26. package/dist/commands/ticket/update.js +458 -0
  27. package/dist/commands/ticket/update.js.map +1 -0
  28. package/dist/lib/execution/preflight.js +1 -1
  29. package/dist/lib/execution/preflight.js.map +1 -1
  30. package/dist/lib/mcp/tools/action.d.ts +6 -0
  31. package/dist/lib/mcp/tools/action.js +123 -0
  32. package/dist/lib/mcp/tools/action.js.map +1 -0
  33. package/dist/lib/mcp/tools/index.d.ts +2 -0
  34. package/dist/lib/mcp/tools/index.js +2 -0
  35. package/dist/lib/mcp/tools/index.js.map +1 -1
  36. package/dist/lib/mcp/tools/ticket.d.ts +6 -0
  37. package/dist/lib/mcp/tools/ticket.js +464 -0
  38. package/dist/lib/mcp/tools/ticket.js.map +1 -0
  39. package/dist/lib/orchestrate/poller.d.ts +22 -0
  40. package/dist/lib/orchestrate/poller.js +109 -0
  41. package/dist/lib/orchestrate/poller.js.map +1 -1
  42. package/dist/lib/sync/engine.js +47 -5
  43. package/dist/lib/sync/engine.js.map +1 -1
  44. package/dist/lib/sync/reconciler.d.ts +27 -1
  45. package/dist/lib/sync/reconciler.js +109 -1
  46. package/dist/lib/sync/reconciler.js.map +1 -1
  47. package/oclif.manifest.json +2021 -1153
  48. package/package.json +1 -1
@@ -0,0 +1,519 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import { pmoBaseFlags } from '../../lib/pmo/index.js';
3
+ import { getWorkspacePriorities } from '../../lib/work-lifecycle/settings.js';
4
+ import { getPMOContext } from '../../lib/pmo/pmo-context.js';
5
+ import { styles, formatPriority, formatCategory, getColumnStyle, getColumnEmoji, divider, getPriorityStyle, } from '../../lib/styles.js';
6
+ import { isNonTTY } from '../../lib/prompt-json.js';
7
+ import { resolveProjectProvider } from '../../lib/providers/resolver.js';
8
+ // Priority order for grouping - dynamically resolved from workspace settings
9
+ // Computed at runtime and includes 'None' for unset priorities
10
+ function getPriorityOrder(db) {
11
+ const priorities = getWorkspacePriorities(db);
12
+ return [...priorities, 'None'];
13
+ }
14
+ export default class TicketList extends Command {
15
+ static description = 'List tickets from the PMO board';
16
+ /** Dynamic priority order (set from workspace settings in run()) */
17
+ priorityOrder = ['P0', 'P1', 'P2', 'P3', 'None'];
18
+ static examples = [
19
+ '<%= config.bin %> <%= command.id %>',
20
+ '<%= config.bin %> <%= command.id %> --column Backlog',
21
+ '<%= config.bin %> <%= command.id %> --priority P0',
22
+ '<%= config.bin %> <%= command.id %> --category bug',
23
+ '<%= config.bin %> <%= command.id %> --search "login"',
24
+ '<%= config.bin %> <%= command.id %> --project mobile-app',
25
+ '<%= config.bin %> <%= command.id %> --all',
26
+ '<%= config.bin %> <%= command.id %> --all --group-by priority',
27
+ '<%= config.bin %> <%= command.id %> -g priority',
28
+ '<%= config.bin %> <%= command.id %> --limit 10',
29
+ '<%= config.bin %> <%= command.id %> --limit 10 --offset 20',
30
+ ];
31
+ static flags = {
32
+ ...pmoBaseFlags,
33
+ column: Flags.string({
34
+ char: 'c',
35
+ description: 'Filter by column',
36
+ }),
37
+ priority: Flags.string({
38
+ char: 'p',
39
+ description: 'Filter by priority (uses workspace priority scale)',
40
+ }),
41
+ category: Flags.string({
42
+ description: 'Filter by category',
43
+ }),
44
+ search: Flags.string({
45
+ char: 's',
46
+ description: 'Search in title and description',
47
+ }),
48
+ format: Flags.string({
49
+ char: 'f',
50
+ description: 'Output format',
51
+ options: ['table', 'compact', 'json'],
52
+ default: 'table',
53
+ }),
54
+ all: Flags.boolean({
55
+ char: 'a',
56
+ description: 'Show tickets across all projects',
57
+ default: false,
58
+ }),
59
+ label: Flags.string({
60
+ description: 'Filter by label name',
61
+ }),
62
+ 'group-by': Flags.string({
63
+ char: 'g',
64
+ description: 'Group tickets by field',
65
+ options: ['status', 'priority'],
66
+ default: 'status',
67
+ }),
68
+ limit: Flags.integer({
69
+ char: 'l',
70
+ description: 'Maximum number of tickets to display',
71
+ min: 1,
72
+ }),
73
+ offset: Flags.integer({
74
+ description: 'Skip first N tickets (for pagination)',
75
+ min: 0,
76
+ }),
77
+ source: Flags.string({
78
+ description: 'Ticket source: "pmo" for local DB, "linear" for Linear API, or "auto" to detect (default: auto)',
79
+ options: ['auto', 'pmo', 'linear'],
80
+ default: 'auto',
81
+ }),
82
+ team: Flags.string({
83
+ description: 'Linear team key (fallback: PRLT_LINEAR_TEAM)',
84
+ }),
85
+ };
86
+ async run() {
87
+ const { flags } = await this.parse(TicketList);
88
+ // Default format to 'json' in non-TTY environments (piped output, CI, agents)
89
+ if (flags.format === 'table' && isNonTTY()) {
90
+ flags.format = 'json';
91
+ }
92
+ // When --all is set, we don't need to select a specific project
93
+ // Otherwise, use the normal project selection flow
94
+ // Get PMO context - no project selection needed
95
+ const pmoContext = await getPMOContext({
96
+ logger: (msg) => this.log(styles.muted(msg)),
97
+ });
98
+ try {
99
+ const db = pmoContext.storage.getDatabase();
100
+ // Set dynamic priority order from workspace settings
101
+ this.priorityOrder = getPriorityOrder(db);
102
+ // Build filter
103
+ const filter = {};
104
+ if (flags.all) {
105
+ filter.allProjects = true;
106
+ }
107
+ else if (flags.project) {
108
+ filter.projectId = flags.project;
109
+ }
110
+ if (flags.column) {
111
+ filter.column = flags.column;
112
+ }
113
+ if (flags.priority) {
114
+ filter.priority = flags.priority;
115
+ }
116
+ if (flags.category) {
117
+ filter.category = flags.category;
118
+ }
119
+ if (flags.search) {
120
+ filter.search = flags.search;
121
+ }
122
+ if (flags.label) {
123
+ filter.label = flags.label;
124
+ }
125
+ // Determine projectId for the query
126
+ const projectId = flags.all ? undefined : (filter.projectId || undefined);
127
+ // Validate project if specified (not in --all mode)
128
+ if (flags.project && !flags.all) {
129
+ const project = await pmoContext.storage.getProject(flags.project);
130
+ if (!project) {
131
+ const allProjects = await pmoContext.storage.listProjectSummaries();
132
+ const validProjectIds = allProjects.map(p => p.id);
133
+ this.error(`Project "${flags.project}" not found. Valid projects: ${validProjectIds.join(', ')}`);
134
+ }
135
+ }
136
+ // Validate column if specified (requires knowing the project) — only for PMO source
137
+ const source = flags.source;
138
+ if (flags.column && !flags.all && source !== 'linear') {
139
+ // Get the project board to validate the column
140
+ const targetProjectId = projectId || (await pmoContext.storage.listProjectSummaries())[0]?.id;
141
+ if (targetProjectId) {
142
+ const board = await pmoContext.storage.getProjectBoard(targetProjectId);
143
+ if (board) {
144
+ const validColumns = board.columns.map(c => c.name);
145
+ if (!validColumns.includes(flags.column)) {
146
+ this.error(`Column "${flags.column}" not found. Valid columns: ${validColumns.join(', ')}`);
147
+ }
148
+ }
149
+ }
150
+ }
151
+ // Resolve the provider and fetch tickets through it
152
+ const provider = resolveProjectProvider(db, pmoContext.storage, projectId || '', source);
153
+ const listResult = await provider.listTickets(projectId, filter);
154
+ if (!listResult.success) {
155
+ this.error(listResult.error || 'Failed to list tickets.');
156
+ }
157
+ let tickets = listResult.tickets;
158
+ // Apply pagination
159
+ if (flags.offset)
160
+ tickets = tickets.slice(flags.offset);
161
+ if (flags.limit)
162
+ tickets = tickets.slice(0, flags.limit);
163
+ if (tickets.length === 0) {
164
+ this.log(styles.warning('No tickets found.'));
165
+ return;
166
+ }
167
+ const groupBy = flags['group-by'];
168
+ // Output based on format
169
+ // When provider is not PMO (e.g., Linear), always use cross-project view
170
+ const isExternalProvider = provider.name !== 'pmo';
171
+ if (flags.all || isExternalProvider) {
172
+ // Cross-project view (also used for external providers like Linear)
173
+ switch (flags.format) {
174
+ case 'json':
175
+ this.log(JSON.stringify(tickets, null, 2));
176
+ break;
177
+ case 'compact':
178
+ this.outputCrossProjectCompact(tickets, groupBy);
179
+ break;
180
+ default:
181
+ this.outputCrossProjectTable(tickets, groupBy);
182
+ }
183
+ }
184
+ else {
185
+ // Single project view - get projectId from first ticket or use flag
186
+ const actualProjectId = projectId || tickets[0]?.projectId;
187
+ if (!actualProjectId) {
188
+ this.log(styles.warning('No project found.'));
189
+ return;
190
+ }
191
+ const board = await pmoContext.storage.getProjectBoard(actualProjectId);
192
+ if (!board) {
193
+ // Project doesn't exist (orphaned tickets) - fall back to cross-project view
194
+ this.log(styles.warning(`Project "${actualProjectId}" not found. Showing tickets without board layout.`));
195
+ switch (flags.format) {
196
+ case 'json':
197
+ this.log(JSON.stringify(tickets, null, 2));
198
+ break;
199
+ default:
200
+ this.outputCrossProjectTable(tickets, groupBy);
201
+ }
202
+ return;
203
+ }
204
+ const columns = board.columns.map(col => col.name);
205
+ switch (flags.format) {
206
+ case 'json':
207
+ this.log(JSON.stringify(tickets, null, 2));
208
+ break;
209
+ case 'compact':
210
+ this.outputCompact(tickets, columns, groupBy);
211
+ break;
212
+ default:
213
+ this.outputTable(tickets, columns, groupBy);
214
+ }
215
+ }
216
+ }
217
+ finally {
218
+ await pmoContext.storage.close();
219
+ }
220
+ }
221
+ outputCrossProjectTable(tickets, groupBy) {
222
+ if (groupBy === 'priority') {
223
+ this.outputCrossProjectTableByPriority(tickets);
224
+ return;
225
+ }
226
+ // Group tickets by project, then by column
227
+ const byProject = {};
228
+ for (const ticket of tickets) {
229
+ const projectName = ticket.projectName || ticket.projectId || 'Unknown';
230
+ if (!byProject[projectName]) {
231
+ byProject[projectName] = [];
232
+ }
233
+ byProject[projectName].push(ticket);
234
+ }
235
+ const projectNames = Object.keys(byProject).sort();
236
+ for (const projectName of projectNames) {
237
+ const projectTickets = byProject[projectName];
238
+ // Project header
239
+ this.log(styles.emphasis(`\n${projectName}`));
240
+ this.log(divider(60));
241
+ // Group by column within project
242
+ const byColumn = {};
243
+ for (const ticket of projectTickets) {
244
+ const col = ticket.statusName || 'Unknown';
245
+ if (!byColumn[col]) {
246
+ byColumn[col] = [];
247
+ }
248
+ byColumn[col].push(ticket);
249
+ }
250
+ const columns = Object.keys(byColumn).sort();
251
+ for (const col of columns) {
252
+ const colTickets = byColumn[col];
253
+ const headerColor = getColumnStyle(col);
254
+ this.log(headerColor(` ${getColumnEmoji(col)} ${col} (${colTickets.length})`));
255
+ colTickets.sort((a, b) => (a.position || 0) - (b.position || 0));
256
+ for (const ticket of colTickets) {
257
+ const priorityBadge = formatPriority(ticket.priority);
258
+ const categoryBadge = formatCategory(ticket.category);
259
+ this.log(` ${styles.code(ticket.id)} ${ticket.title} ${priorityBadge} ${categoryBadge}`);
260
+ if (ticket.description) {
261
+ const shortDesc = ticket.description.split('\n')[0].substring(0, 55);
262
+ this.log(styles.muted(` ${shortDesc}${ticket.description.length > 55 ? '...' : ''}`));
263
+ }
264
+ }
265
+ }
266
+ }
267
+ // Summary
268
+ this.log('\n' + divider(60));
269
+ this.log(styles.emphasis(`Total: ${tickets.length} ticket${tickets.length === 1 ? '' : 's'} across ${projectNames.length} project${projectNames.length === 1 ? '' : 's'}`));
270
+ }
271
+ outputCrossProjectTableByPriority(tickets) {
272
+ // Group tickets by priority
273
+ const byPriority = {};
274
+ for (const priority of this.priorityOrder) {
275
+ byPriority[priority] = [];
276
+ }
277
+ for (const ticket of tickets) {
278
+ const priority = ticket.priority || 'None';
279
+ if (!byPriority[priority]) {
280
+ byPriority[priority] = [];
281
+ }
282
+ byPriority[priority].push(ticket);
283
+ }
284
+ for (const priority of this.priorityOrder) {
285
+ const priorityTickets = byPriority[priority];
286
+ // Priority header
287
+ const headerColor = getPriorityStyle(priority);
288
+ this.log(headerColor(`\n${priority} (${priorityTickets.length})`));
289
+ this.log(divider(60));
290
+ if (priorityTickets.length === 0) {
291
+ this.log(styles.muted(' (empty)'));
292
+ continue;
293
+ }
294
+ // Sort by position within priority
295
+ priorityTickets.sort((a, b) => (a.position || 0) - (b.position || 0));
296
+ for (const ticket of priorityTickets) {
297
+ const statusBadge = ticket.statusName ? styles.muted(`[${ticket.statusName}]`) : '';
298
+ const categoryBadge = formatCategory(ticket.category);
299
+ const projectBadge = ticket.projectName ? styles.info(`[${ticket.projectName}]`) : '';
300
+ this.log(` ${styles.code(ticket.id)} ${ticket.title} ${statusBadge} ${categoryBadge} ${projectBadge}`);
301
+ if (ticket.description) {
302
+ const shortDesc = ticket.description.split('\n')[0].substring(0, 55);
303
+ this.log(styles.muted(` ${shortDesc}${ticket.description.length > 55 ? '...' : ''}`));
304
+ }
305
+ }
306
+ }
307
+ // Summary
308
+ this.log('\n' + divider(60));
309
+ this.log(styles.emphasis(`Total: ${tickets.length} ticket${tickets.length === 1 ? '' : 's'}`));
310
+ }
311
+ outputCrossProjectCompact(tickets, groupBy) {
312
+ if (groupBy === 'priority') {
313
+ this.outputCrossProjectCompactByPriority(tickets);
314
+ return;
315
+ }
316
+ // Group tickets by project
317
+ const byProject = {};
318
+ for (const ticket of tickets) {
319
+ const projectName = ticket.projectName || ticket.projectId || 'Unknown';
320
+ if (!byProject[projectName]) {
321
+ byProject[projectName] = [];
322
+ }
323
+ byProject[projectName].push(ticket);
324
+ }
325
+ const projectNames = Object.keys(byProject).sort();
326
+ for (const projectName of projectNames) {
327
+ const projectTickets = byProject[projectName];
328
+ this.log(styles.emphasis(`${projectName} (${projectTickets.length}):`));
329
+ projectTickets.sort((a, b) => (a.position || 0) - (b.position || 0));
330
+ for (const ticket of projectTickets) {
331
+ const priority = formatPriority(ticket.priority);
332
+ const status = ticket.statusName ? styles.muted(`[${ticket.statusName}]`) : '';
333
+ this.log(` ${styles.code(ticket.id)}: ${ticket.title} ${priority} ${status}`);
334
+ }
335
+ }
336
+ }
337
+ outputCrossProjectCompactByPriority(tickets) {
338
+ // Group tickets by priority
339
+ const byPriority = {};
340
+ for (const priority of this.priorityOrder) {
341
+ byPriority[priority] = [];
342
+ }
343
+ for (const ticket of tickets) {
344
+ const priority = ticket.priority || 'None';
345
+ if (!byPriority[priority]) {
346
+ byPriority[priority] = [];
347
+ }
348
+ byPriority[priority].push(ticket);
349
+ }
350
+ for (const priority of this.priorityOrder) {
351
+ const priorityTickets = byPriority[priority];
352
+ if (priorityTickets.length === 0)
353
+ continue;
354
+ const headerColor = getPriorityStyle(priority);
355
+ this.log(headerColor(`${priority} (${priorityTickets.length}):`));
356
+ priorityTickets.sort((a, b) => (a.position || 0) - (b.position || 0));
357
+ for (const ticket of priorityTickets) {
358
+ const status = ticket.statusName ? styles.muted(`[${ticket.statusName}]`) : '';
359
+ const project = ticket.projectName ? styles.info(`[${ticket.projectName}]`) : '';
360
+ this.log(` ${styles.code(ticket.id)}: ${ticket.title} ${status} ${project}`);
361
+ }
362
+ }
363
+ }
364
+ outputTable(tickets, columns, groupBy) {
365
+ if (groupBy === 'priority') {
366
+ this.outputTableByPriority(tickets);
367
+ return;
368
+ }
369
+ // Group tickets by column
370
+ const byColumn = {};
371
+ for (const col of columns) {
372
+ byColumn[col] = [];
373
+ }
374
+ for (const ticket of tickets) {
375
+ const col = ticket.statusName || 'Unknown';
376
+ if (!byColumn[col]) {
377
+ byColumn[col] = [];
378
+ }
379
+ byColumn[col].push(ticket);
380
+ }
381
+ // Display ALL columns
382
+ for (const col of columns) {
383
+ const colTickets = byColumn[col];
384
+ // Column header with color
385
+ const headerColor = getColumnStyle(col);
386
+ this.log(headerColor(`\n${getColumnEmoji(col)} ${col} (${colTickets.length})`));
387
+ this.log(divider(50));
388
+ if (colTickets.length === 0) {
389
+ this.log(styles.muted(' (empty)'));
390
+ continue;
391
+ }
392
+ // Sort by position
393
+ colTickets.sort((a, b) => (a.position || 0) - (b.position || 0));
394
+ for (const ticket of colTickets) {
395
+ const priorityBadge = formatPriority(ticket.priority);
396
+ const categoryBadge = formatCategory(ticket.category);
397
+ this.log(` ${styles.code(ticket.id)} ${ticket.title} ${priorityBadge} ${categoryBadge}`);
398
+ if (ticket.description) {
399
+ const shortDesc = ticket.description.split('\n')[0].substring(0, 60);
400
+ this.log(styles.muted(` ${shortDesc}${ticket.description.length > 60 ? '...' : ''}`));
401
+ }
402
+ if (ticket.subtasks.length > 0) {
403
+ const done = ticket.subtasks.filter(s => s.done).length;
404
+ this.log(styles.muted(` Subtasks: ${done}/${ticket.subtasks.length}`));
405
+ }
406
+ }
407
+ }
408
+ // Summary
409
+ this.log('\n' + divider(50));
410
+ this.log(styles.emphasis(`Total: ${tickets.length} ticket${tickets.length === 1 ? '' : 's'}`));
411
+ }
412
+ outputTableByPriority(tickets) {
413
+ // Group tickets by priority
414
+ const byPriority = {};
415
+ for (const priority of this.priorityOrder) {
416
+ byPriority[priority] = [];
417
+ }
418
+ for (const ticket of tickets) {
419
+ const priority = ticket.priority || 'None';
420
+ if (!byPriority[priority]) {
421
+ byPriority[priority] = [];
422
+ }
423
+ byPriority[priority].push(ticket);
424
+ }
425
+ // Display ALL priority groups
426
+ for (const priority of this.priorityOrder) {
427
+ const priorityTickets = byPriority[priority];
428
+ // Priority header with color
429
+ const headerColor = getPriorityStyle(priority);
430
+ this.log(headerColor(`\n${priority} (${priorityTickets.length})`));
431
+ this.log(divider(50));
432
+ if (priorityTickets.length === 0) {
433
+ this.log(styles.muted(' (empty)'));
434
+ continue;
435
+ }
436
+ // Sort by position
437
+ priorityTickets.sort((a, b) => (a.position || 0) - (b.position || 0));
438
+ for (const ticket of priorityTickets) {
439
+ const statusBadge = ticket.statusName ? styles.muted(`[${ticket.statusName}]`) : '';
440
+ const categoryBadge = formatCategory(ticket.category);
441
+ this.log(` ${styles.code(ticket.id)} ${ticket.title} ${statusBadge} ${categoryBadge}`);
442
+ if (ticket.description) {
443
+ const shortDesc = ticket.description.split('\n')[0].substring(0, 60);
444
+ this.log(styles.muted(` ${shortDesc}${ticket.description.length > 60 ? '...' : ''}`));
445
+ }
446
+ if (ticket.subtasks.length > 0) {
447
+ const done = ticket.subtasks.filter(s => s.done).length;
448
+ this.log(styles.muted(` Subtasks: ${done}/${ticket.subtasks.length}`));
449
+ }
450
+ }
451
+ }
452
+ // Summary
453
+ this.log('\n' + divider(50));
454
+ this.log(styles.emphasis(`Total: ${tickets.length} ticket${tickets.length === 1 ? '' : 's'}`));
455
+ }
456
+ outputCompact(tickets, columns, groupBy) {
457
+ if (groupBy === 'priority') {
458
+ this.outputCompactByPriority(tickets);
459
+ return;
460
+ }
461
+ // Group by column
462
+ const byColumn = {};
463
+ for (const col of columns) {
464
+ byColumn[col] = [];
465
+ }
466
+ for (const ticket of tickets) {
467
+ const col = ticket.statusName || 'Unknown';
468
+ if (!byColumn[col]) {
469
+ byColumn[col] = [];
470
+ }
471
+ byColumn[col].push(ticket);
472
+ }
473
+ for (const col of columns) {
474
+ const colTickets = byColumn[col];
475
+ // Show all columns
476
+ const headerColor = getColumnStyle(col);
477
+ this.log(headerColor(`${getColumnEmoji(col)} ${col} (${colTickets.length}):`));
478
+ if (colTickets.length === 0) {
479
+ this.log(styles.muted(' (empty)'));
480
+ continue;
481
+ }
482
+ colTickets.sort((a, b) => (a.position || 0) - (b.position || 0));
483
+ for (const ticket of colTickets) {
484
+ const priority = formatPriority(ticket.priority);
485
+ this.log(` ${styles.code(ticket.id)}: ${ticket.title} ${priority}`);
486
+ }
487
+ }
488
+ }
489
+ outputCompactByPriority(tickets) {
490
+ // Group by priority
491
+ const byPriority = {};
492
+ for (const priority of this.priorityOrder) {
493
+ byPriority[priority] = [];
494
+ }
495
+ for (const ticket of tickets) {
496
+ const priority = ticket.priority || 'None';
497
+ if (!byPriority[priority]) {
498
+ byPriority[priority] = [];
499
+ }
500
+ byPriority[priority].push(ticket);
501
+ }
502
+ for (const priority of this.priorityOrder) {
503
+ const priorityTickets = byPriority[priority];
504
+ // Show all priority groups
505
+ const headerColor = getPriorityStyle(priority);
506
+ this.log(headerColor(`${priority} (${priorityTickets.length}):`));
507
+ if (priorityTickets.length === 0) {
508
+ this.log(styles.muted(' (empty)'));
509
+ continue;
510
+ }
511
+ priorityTickets.sort((a, b) => (a.position || 0) - (b.position || 0));
512
+ for (const ticket of priorityTickets) {
513
+ const status = ticket.statusName ? styles.muted(`[${ticket.statusName}]`) : '';
514
+ this.log(` ${styles.code(ticket.id)}: ${ticket.title} ${status}`);
515
+ }
516
+ }
517
+ }
518
+ }
519
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/ticket/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { PMOCommand } from '../../lib/pmo/index.js';
2
+ export default class TicketMove extends PMOCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ ticketId: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
7
+ column: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
+ };
9
+ static flags: {
10
+ status: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ position: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ 'to-project': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ bulk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ };
19
+ execute(): Promise<void>;
20
+ private executeBulk;
21
+ /**
22
+ * Move a ticket to a different project.
23
+ * If a target column is specified and exists in the target project, move to that column.
24
+ * Otherwise, use the default/backlog column.
25
+ */
26
+ private executeCrossProjectMove;
27
+ }