@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.
- package/dist/commands/orchestrate/index.js +30 -3
- package/dist/commands/orchestrate/index.js.map +1 -1
- package/dist/commands/qa/index.js +1 -1
- package/dist/commands/ticket/create.d.ts +44 -0
- package/dist/commands/ticket/create.js +754 -0
- package/dist/commands/ticket/create.js.map +1 -0
- package/dist/commands/ticket/delete.d.ts +17 -0
- package/dist/commands/ticket/delete.js +204 -0
- package/dist/commands/ticket/delete.js.map +1 -0
- package/dist/commands/ticket/edit.d.ts +28 -0
- package/dist/commands/ticket/edit.js +402 -0
- package/dist/commands/ticket/edit.js.map +1 -0
- package/dist/commands/ticket/index.d.ts +13 -0
- package/dist/commands/ticket/index.js +74 -0
- package/dist/commands/ticket/index.js.map +1 -0
- package/dist/commands/ticket/list.d.ts +33 -0
- package/dist/commands/ticket/list.js +519 -0
- package/dist/commands/ticket/list.js.map +1 -0
- package/dist/commands/ticket/move.d.ts +27 -0
- package/dist/commands/ticket/move.js +413 -0
- package/dist/commands/ticket/move.js.map +1 -0
- package/dist/commands/ticket/show.d.ts +14 -0
- package/dist/commands/ticket/show.js +110 -0
- package/dist/commands/ticket/show.js.map +1 -0
- package/dist/commands/ticket/update.d.ts +28 -0
- package/dist/commands/ticket/update.js +458 -0
- package/dist/commands/ticket/update.js.map +1 -0
- package/dist/lib/execution/preflight.js +1 -1
- package/dist/lib/execution/preflight.js.map +1 -1
- package/dist/lib/mcp/tools/action.d.ts +6 -0
- package/dist/lib/mcp/tools/action.js +123 -0
- package/dist/lib/mcp/tools/action.js.map +1 -0
- package/dist/lib/mcp/tools/index.d.ts +2 -0
- package/dist/lib/mcp/tools/index.js +2 -0
- package/dist/lib/mcp/tools/index.js.map +1 -1
- package/dist/lib/mcp/tools/ticket.d.ts +6 -0
- package/dist/lib/mcp/tools/ticket.js +464 -0
- package/dist/lib/mcp/tools/ticket.js.map +1 -0
- package/dist/lib/orchestrate/poller.d.ts +22 -0
- package/dist/lib/orchestrate/poller.js +109 -0
- package/dist/lib/orchestrate/poller.js.map +1 -1
- package/dist/lib/sync/engine.js +47 -5
- package/dist/lib/sync/engine.js.map +1 -1
- package/dist/lib/sync/reconciler.d.ts +27 -1
- package/dist/lib/sync/reconciler.js +109 -1
- package/dist/lib/sync/reconciler.js.map +1 -1
- package/oclif.manifest.json +2021 -1153
- 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
|
+
}
|