@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,402 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import inquirer from 'inquirer';
|
|
3
|
+
import { autoExportToBoard, PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
4
|
+
import { getWorkspacePriorities } from '../../lib/work-lifecycle/settings.js';
|
|
5
|
+
import { styles } from '../../lib/styles.js';
|
|
6
|
+
import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
|
|
7
|
+
import { multiLineInput } from '../../lib/multiline-input.js';
|
|
8
|
+
export default class TicketEdit extends PMOCommand {
|
|
9
|
+
static description = 'Edit an existing ticket';
|
|
10
|
+
static examples = [
|
|
11
|
+
'<%= config.bin %> <%= command.id %> TICK-001',
|
|
12
|
+
'<%= config.bin %> <%= command.id %> TICK-001 --title "New title"',
|
|
13
|
+
'<%= config.bin %> <%= command.id %> TICK-001 --priority P1 --category bug',
|
|
14
|
+
'<%= config.bin %> <%= command.id %> TICK-001 --add-subtask "Implement feature" --add-subtask "Write tests"',
|
|
15
|
+
'<%= config.bin %> <%= command.id %> TICK-001 --owner "john" --assignee "agent-1"',
|
|
16
|
+
'<%= config.bin %> <%= command.id %> # Interactive mode',
|
|
17
|
+
];
|
|
18
|
+
static args = {
|
|
19
|
+
ticketId: Args.string({
|
|
20
|
+
description: 'Ticket ID to edit - prompts with dropdown if not provided',
|
|
21
|
+
required: false,
|
|
22
|
+
}),
|
|
23
|
+
};
|
|
24
|
+
static flags = {
|
|
25
|
+
...pmoBaseFlags,
|
|
26
|
+
title: Flags.string({
|
|
27
|
+
char: 't',
|
|
28
|
+
description: 'New ticket title',
|
|
29
|
+
}),
|
|
30
|
+
description: Flags.string({
|
|
31
|
+
char: 'd',
|
|
32
|
+
description: 'New ticket description',
|
|
33
|
+
}),
|
|
34
|
+
priority: Flags.string({
|
|
35
|
+
char: 'p',
|
|
36
|
+
description: 'New ticket priority (uses workspace priority scale, "none" to clear)',
|
|
37
|
+
}),
|
|
38
|
+
category: Flags.string({
|
|
39
|
+
description: 'New ticket category',
|
|
40
|
+
}),
|
|
41
|
+
owner: Flags.string({
|
|
42
|
+
char: 'o',
|
|
43
|
+
description: 'Ticket owner (human responsible)',
|
|
44
|
+
}),
|
|
45
|
+
assignee: Flags.string({
|
|
46
|
+
char: 'a',
|
|
47
|
+
description: 'Ticket assignee (who executes)',
|
|
48
|
+
}),
|
|
49
|
+
'add-subtask': Flags.string({
|
|
50
|
+
description: 'Add a subtask (can be used multiple times)',
|
|
51
|
+
multiple: true,
|
|
52
|
+
}),
|
|
53
|
+
'clear-subtasks': Flags.boolean({
|
|
54
|
+
description: 'Clear all existing subtasks before adding new ones',
|
|
55
|
+
default: false,
|
|
56
|
+
}),
|
|
57
|
+
'add-label': Flags.string({
|
|
58
|
+
description: 'Add a label (can be used multiple times)',
|
|
59
|
+
multiple: true,
|
|
60
|
+
}),
|
|
61
|
+
'remove-label': Flags.string({
|
|
62
|
+
description: 'Remove a label',
|
|
63
|
+
multiple: true,
|
|
64
|
+
}),
|
|
65
|
+
'add-ac': Flags.string({
|
|
66
|
+
description: 'Add an acceptance criterion (can be used multiple times)',
|
|
67
|
+
multiple: true,
|
|
68
|
+
}),
|
|
69
|
+
'clear-ac': Flags.boolean({
|
|
70
|
+
description: 'Clear all existing acceptance criteria before adding new ones',
|
|
71
|
+
default: false,
|
|
72
|
+
}),
|
|
73
|
+
interactive: Flags.boolean({
|
|
74
|
+
char: 'i',
|
|
75
|
+
description: 'Interactive mode - prompts for all fields',
|
|
76
|
+
default: false,
|
|
77
|
+
}),
|
|
78
|
+
};
|
|
79
|
+
async execute() {
|
|
80
|
+
const { args, flags } = await this.parse(TicketEdit);
|
|
81
|
+
const projectId = flags.project;
|
|
82
|
+
// Check if JSON output mode is active
|
|
83
|
+
const jsonMode = shouldOutputJson(flags);
|
|
84
|
+
// Helper to handle errors in JSON mode
|
|
85
|
+
const handleError = (code, message) => {
|
|
86
|
+
if (jsonMode) {
|
|
87
|
+
outputErrorAsJson(code, message, createMetadata('ticket edit', flags));
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
this.error(message);
|
|
91
|
+
};
|
|
92
|
+
// Get ticketId - prompt if not provided
|
|
93
|
+
let ticketId = args.ticketId;
|
|
94
|
+
if (!ticketId) {
|
|
95
|
+
// Get all tickets for selection via provider
|
|
96
|
+
const listProvider = this.resolveProjectProvider(projectId || '');
|
|
97
|
+
const listResult = await listProvider.listTickets(projectId);
|
|
98
|
+
const allTickets = listResult.success ? listResult.tickets : [];
|
|
99
|
+
if (allTickets.length === 0) {
|
|
100
|
+
return handleError('NO_TICKETS', 'No tickets found. Create a ticket first with "prlt ticket create".');
|
|
101
|
+
}
|
|
102
|
+
// Use helper for ticket selection (handles JSON mode automatically)
|
|
103
|
+
const selected = await this.selectFromList({
|
|
104
|
+
message: 'Select ticket to edit:',
|
|
105
|
+
items: allTickets,
|
|
106
|
+
getName: (t) => `${t.id} - ${t.title} (${t.statusName})`,
|
|
107
|
+
getValue: (t) => t.id,
|
|
108
|
+
getCommand: (t) => `prlt ticket edit ${t.id}${projectId ? ` -P ${projectId}` : ''} --json`,
|
|
109
|
+
jsonMode: jsonMode ? { flags, commandName: 'ticket edit' } : null,
|
|
110
|
+
});
|
|
111
|
+
if (!selected) {
|
|
112
|
+
return; // Cancelled or JSON mode (already exited)
|
|
113
|
+
}
|
|
114
|
+
ticketId = selected;
|
|
115
|
+
}
|
|
116
|
+
// Get current ticket through provider
|
|
117
|
+
const ticketProvider = await this.resolveTicketProvider(ticketId, projectId || '');
|
|
118
|
+
const getResult = await ticketProvider.getTicket(ticketId);
|
|
119
|
+
if (!getResult.success || !getResult.ticket) {
|
|
120
|
+
return handleError('TICKET_NOT_FOUND', `Ticket "${ticketId}" not found.`);
|
|
121
|
+
}
|
|
122
|
+
const ticket = getResult.ticket;
|
|
123
|
+
// Use resolved internal ID for all subsequent operations (external keys like PRLT-xxx resolve to TKT-xxx)
|
|
124
|
+
ticketId = ticket.id;
|
|
125
|
+
// Determine what to update
|
|
126
|
+
let updates = {};
|
|
127
|
+
const hasFlags = flags.title || flags.description || flags.priority || flags.category ||
|
|
128
|
+
flags.owner || flags.assignee || flags['add-subtask'] || flags['clear-subtasks'] ||
|
|
129
|
+
flags['add-label'] || flags['remove-label'] || flags['add-ac'] || flags['clear-ac'];
|
|
130
|
+
if (flags.interactive || !hasFlags) {
|
|
131
|
+
// In JSON mode without flags, output a form prompt instead of interactive prompts
|
|
132
|
+
if (jsonMode) {
|
|
133
|
+
const { outputPromptAsJson, buildFormPromptConfig } = await import('../../lib/prompt-json.js');
|
|
134
|
+
const db = this.storage.getDatabase();
|
|
135
|
+
const workspacePriorities = getWorkspacePriorities(db);
|
|
136
|
+
const formConfig = buildFormPromptConfig([
|
|
137
|
+
{ type: 'input', name: 'title', message: 'Title:', default: ticket.title },
|
|
138
|
+
{ type: 'multiline', name: 'description', message: 'Description:', default: ticket.description || '' },
|
|
139
|
+
{ type: 'list', name: 'priority', message: 'Priority:', choices: [
|
|
140
|
+
{ name: 'None', value: '' },
|
|
141
|
+
...workspacePriorities.map(p => ({ name: p, value: p })),
|
|
142
|
+
], default: ticket.priority || '' },
|
|
143
|
+
{ type: 'input', name: 'category', message: 'Category:', default: ticket.category || '' },
|
|
144
|
+
]);
|
|
145
|
+
formConfig.context = {
|
|
146
|
+
hint: `Edit ticket with: prlt ticket edit ${ticketId} --title "..." --description "..." --priority P0 --json`,
|
|
147
|
+
ticketId,
|
|
148
|
+
currentValues: { title: ticket.title, description: ticket.description, priority: ticket.priority, category: ticket.category },
|
|
149
|
+
};
|
|
150
|
+
outputPromptAsJson(formConfig, createMetadata('ticket edit', flags));
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Interactive mode - prompt for all editable fields
|
|
154
|
+
const board = ticket.projectId ? await this.storage.getProjectBoard(ticket.projectId) : null;
|
|
155
|
+
const columns = board ? board.columns.map(col => col.name) : [];
|
|
156
|
+
updates = await this.promptForEdits(ticket, columns);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
// Use flag values
|
|
160
|
+
if (flags.title)
|
|
161
|
+
updates.title = flags.title;
|
|
162
|
+
if (flags.description)
|
|
163
|
+
updates.description = flags.description;
|
|
164
|
+
if (flags.priority) {
|
|
165
|
+
// 'none' clears the priority (sets to null in database), otherwise use the flag value
|
|
166
|
+
// Type assertion needed because Ticket interface uses string | undefined, but storage accepts null
|
|
167
|
+
updates.priority = flags.priority === 'none' ? null : flags.priority;
|
|
168
|
+
}
|
|
169
|
+
if (flags.category)
|
|
170
|
+
updates.category = flags.category;
|
|
171
|
+
if (flags.owner)
|
|
172
|
+
updates.owner = flags.owner;
|
|
173
|
+
if (flags.assignee)
|
|
174
|
+
updates.assignee = flags.assignee;
|
|
175
|
+
}
|
|
176
|
+
// Handle subtasks - sequential for consistent ordering
|
|
177
|
+
let subtasksChanged = false;
|
|
178
|
+
if (flags['clear-subtasks']) {
|
|
179
|
+
// Clear all subtasks first - get from ticket object
|
|
180
|
+
for (const subtask of ticket.subtasks) {
|
|
181
|
+
// eslint-disable-next-line no-await-in-loop
|
|
182
|
+
await this.storage.removeSubtask(ticketId, subtask.id);
|
|
183
|
+
}
|
|
184
|
+
subtasksChanged = true;
|
|
185
|
+
}
|
|
186
|
+
if (flags['add-subtask'] && flags['add-subtask'].length > 0) {
|
|
187
|
+
for (const subtaskTitle of flags['add-subtask']) {
|
|
188
|
+
// eslint-disable-next-line no-await-in-loop
|
|
189
|
+
await this.storage.addSubtask(ticketId, subtaskTitle);
|
|
190
|
+
}
|
|
191
|
+
subtasksChanged = true;
|
|
192
|
+
}
|
|
193
|
+
// Handle labels
|
|
194
|
+
let labelsChanged = false;
|
|
195
|
+
let currentLabels = [...ticket.labels];
|
|
196
|
+
if (flags['remove-label'] && flags['remove-label'].length > 0) {
|
|
197
|
+
currentLabels = currentLabels.filter(l => !flags['remove-label'].includes(l));
|
|
198
|
+
labelsChanged = true;
|
|
199
|
+
}
|
|
200
|
+
if (flags['add-label'] && flags['add-label'].length > 0) {
|
|
201
|
+
for (const label of flags['add-label']) {
|
|
202
|
+
if (!currentLabels.includes(label)) {
|
|
203
|
+
currentLabels.push(label);
|
|
204
|
+
labelsChanged = true;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// Handle acceptance criteria
|
|
209
|
+
let acChanged = false;
|
|
210
|
+
if (flags['clear-ac']) {
|
|
211
|
+
await this.storage.clearAcceptanceCriteria(ticketId);
|
|
212
|
+
acChanged = true;
|
|
213
|
+
}
|
|
214
|
+
if (flags['add-ac'] && flags['add-ac'].length > 0) {
|
|
215
|
+
// Sequential for consistent ordering
|
|
216
|
+
for (const criterion of flags['add-ac']) {
|
|
217
|
+
// eslint-disable-next-line no-await-in-loop
|
|
218
|
+
await this.storage.addAcceptanceCriterion(ticketId, criterion);
|
|
219
|
+
}
|
|
220
|
+
acChanged = true;
|
|
221
|
+
}
|
|
222
|
+
// Check if anything changed
|
|
223
|
+
const hasChanges = Object.keys(updates).length > 0 || subtasksChanged || labelsChanged || acChanged;
|
|
224
|
+
if (!hasChanges) {
|
|
225
|
+
this.log(styles.muted('\nNo changes made.'));
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
// Update the ticket with labels if changed
|
|
229
|
+
if (labelsChanged) {
|
|
230
|
+
updates.labels = currentLabels;
|
|
231
|
+
}
|
|
232
|
+
// Update the ticket through provider
|
|
233
|
+
const updateResult = await ticketProvider.updateTicket(ticketId, updates);
|
|
234
|
+
if (!updateResult.success || !updateResult.ticket) {
|
|
235
|
+
return handleError('UPDATE_FAILED', `Failed to update ticket: ${updateResult.error}`);
|
|
236
|
+
}
|
|
237
|
+
const updatedTicket = updateResult.ticket;
|
|
238
|
+
// Auto-export to board.md
|
|
239
|
+
await autoExportToBoard(this.pmoPath, this.storage, (msg) => this.log(styles.muted(msg)));
|
|
240
|
+
// JSON output mode - match MCP tool response shape
|
|
241
|
+
if (jsonMode) {
|
|
242
|
+
// Re-fetch to get latest state including subtasks/AC changes
|
|
243
|
+
let finalTicket = updatedTicket;
|
|
244
|
+
if (subtasksChanged || acChanged) {
|
|
245
|
+
const refetch = await ticketProvider.getTicket(ticketId);
|
|
246
|
+
finalTicket = (refetch.success && refetch.ticket) ? refetch.ticket : updatedTicket;
|
|
247
|
+
}
|
|
248
|
+
this.log(JSON.stringify({
|
|
249
|
+
success: true,
|
|
250
|
+
ticket: {
|
|
251
|
+
id: finalTicket.id,
|
|
252
|
+
title: finalTicket.title,
|
|
253
|
+
priority: finalTicket.priority,
|
|
254
|
+
category: finalTicket.category,
|
|
255
|
+
statusName: finalTicket.statusName,
|
|
256
|
+
statusCategory: finalTicket.statusCategory,
|
|
257
|
+
projectId: finalTicket.projectId,
|
|
258
|
+
assignee: finalTicket.assignee,
|
|
259
|
+
owner: finalTicket.owner,
|
|
260
|
+
branch: finalTicket.branch,
|
|
261
|
+
epicId: finalTicket.epicId,
|
|
262
|
+
position: finalTicket.position,
|
|
263
|
+
},
|
|
264
|
+
}, null, 2));
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
// Display updated ticket
|
|
268
|
+
this.log(styles.success(`\n✅ Updated ticket ${styles.emphasis(updatedTicket.id)}`));
|
|
269
|
+
const changedFields = [];
|
|
270
|
+
if (updates.title)
|
|
271
|
+
changedFields.push(`Title: ${updatedTicket.title}`);
|
|
272
|
+
if (updates.description !== undefined)
|
|
273
|
+
changedFields.push(`Description: ${updatedTicket.description || '(cleared)'}`);
|
|
274
|
+
if (updates.priority !== undefined)
|
|
275
|
+
changedFields.push(`Priority: ${updatedTicket.priority || 'none'}`);
|
|
276
|
+
if (updates.category !== undefined)
|
|
277
|
+
changedFields.push(`Category: ${updatedTicket.category || 'none'}`);
|
|
278
|
+
if (updates.owner !== undefined)
|
|
279
|
+
changedFields.push(`Owner: ${updatedTicket.owner || 'none'}`);
|
|
280
|
+
if (updates.assignee !== undefined)
|
|
281
|
+
changedFields.push(`Assignee: ${updatedTicket.assignee || 'none'}`);
|
|
282
|
+
if (subtasksChanged || acChanged) {
|
|
283
|
+
// Re-fetch ticket to get updated subtasks and AC
|
|
284
|
+
const refreshResult = await ticketProvider.getTicket(ticketId);
|
|
285
|
+
const refreshedTicket = refreshResult.success ? refreshResult.ticket : null;
|
|
286
|
+
if (subtasksChanged) {
|
|
287
|
+
changedFields.push(`Subtasks: ${refreshedTicket?.subtasks.length || 0} items`);
|
|
288
|
+
}
|
|
289
|
+
if (acChanged) {
|
|
290
|
+
changedFields.push(`Acceptance Criteria: ${refreshedTicket?.acceptanceCriteria?.length || 0} items`);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
if (labelsChanged)
|
|
294
|
+
changedFields.push(`Labels: ${currentLabels.join(', ') || 'none'}`);
|
|
295
|
+
for (const field of changedFields) {
|
|
296
|
+
this.log(styles.muted(` ${field}`));
|
|
297
|
+
}
|
|
298
|
+
this.log('');
|
|
299
|
+
}
|
|
300
|
+
async promptForEdits(ticket, _columns) {
|
|
301
|
+
// First prompt for title
|
|
302
|
+
const { title } = await this.prompt([
|
|
303
|
+
{
|
|
304
|
+
type: 'input',
|
|
305
|
+
name: 'title',
|
|
306
|
+
message: 'Title:',
|
|
307
|
+
default: ticket.title,
|
|
308
|
+
validate: (input) => input.trim() ? true : 'Title cannot be empty',
|
|
309
|
+
},
|
|
310
|
+
], null);
|
|
311
|
+
// Prompt for description using inline multiline input
|
|
312
|
+
const descResult = await multiLineInput({
|
|
313
|
+
message: 'Description:',
|
|
314
|
+
default: ticket.description || '',
|
|
315
|
+
hint: 'Ctrl+D to finish, Ctrl+C to cancel',
|
|
316
|
+
});
|
|
317
|
+
if (descResult.cancelled) {
|
|
318
|
+
throw new Error('Edit cancelled');
|
|
319
|
+
}
|
|
320
|
+
// Continue with remaining prompts - priority first (using workspace scale)
|
|
321
|
+
const db = this.storage.getDatabase();
|
|
322
|
+
const workspacePriorities = getWorkspacePriorities(db);
|
|
323
|
+
const { priority } = await this.prompt([
|
|
324
|
+
{
|
|
325
|
+
type: 'list',
|
|
326
|
+
name: 'priority',
|
|
327
|
+
message: 'Priority:',
|
|
328
|
+
choices: [
|
|
329
|
+
{ name: 'None', value: '' },
|
|
330
|
+
...workspacePriorities.map(p => ({ name: p, value: p })),
|
|
331
|
+
],
|
|
332
|
+
default: ticket.priority || '',
|
|
333
|
+
},
|
|
334
|
+
], null);
|
|
335
|
+
// Then category
|
|
336
|
+
const { categoryChoice } = await this.prompt([
|
|
337
|
+
{
|
|
338
|
+
type: 'list',
|
|
339
|
+
name: 'categoryChoice',
|
|
340
|
+
message: 'Category:',
|
|
341
|
+
choices: [
|
|
342
|
+
{ name: 'None', value: '' },
|
|
343
|
+
new inquirer.Separator('── Conventional Commits ──'),
|
|
344
|
+
{ name: 'feature - New feature or capability', value: 'feature' },
|
|
345
|
+
{ name: 'bug - Bug fix', value: 'bug' },
|
|
346
|
+
{ name: 'refactor - Code refactoring', value: 'refactor' },
|
|
347
|
+
{ name: 'docs - Documentation', value: 'docs' },
|
|
348
|
+
{ name: 'test - Test additions/fixes', value: 'test' },
|
|
349
|
+
{ name: 'chore - Maintenance tasks', value: 'chore' },
|
|
350
|
+
{ name: 'performance - Performance improvements', value: 'performance' },
|
|
351
|
+
{ name: 'ci - CI/CD changes', value: 'ci' },
|
|
352
|
+
{ name: 'build - Build system changes', value: 'build' },
|
|
353
|
+
new inquirer.Separator('── Extended Types ──'),
|
|
354
|
+
{ name: 'security - Security fixes', value: 'security' },
|
|
355
|
+
{ name: 'database - Database migrations', value: 'database' },
|
|
356
|
+
{ name: 'release - Release preparation', value: 'release' },
|
|
357
|
+
new inquirer.Separator('── 5Tool Founder ──'),
|
|
358
|
+
{ name: 'ship - Shipping and deployment', value: 'ship' },
|
|
359
|
+
{ name: 'growth - Growth and marketing', value: 'growth' },
|
|
360
|
+
{ name: 'support - Customer experience', value: 'support' },
|
|
361
|
+
{ name: 'strategy - Strategy and planning', value: 'strategy' },
|
|
362
|
+
{ name: 'ops - Business operations', value: 'ops' },
|
|
363
|
+
new inquirer.Separator('───────────────────'),
|
|
364
|
+
{ name: 'Custom...', value: '__custom__' },
|
|
365
|
+
],
|
|
366
|
+
default: ticket.category || '',
|
|
367
|
+
},
|
|
368
|
+
], null);
|
|
369
|
+
// Custom category prompt if needed
|
|
370
|
+
let customCategory;
|
|
371
|
+
if (categoryChoice === '__custom__') {
|
|
372
|
+
const result = await this.prompt([{
|
|
373
|
+
type: 'input',
|
|
374
|
+
name: 'customCategory',
|
|
375
|
+
message: 'Enter custom category:',
|
|
376
|
+
validate: (input) => input.trim() ? true : 'Category cannot be empty',
|
|
377
|
+
}], null);
|
|
378
|
+
customCategory = result.customCategory;
|
|
379
|
+
}
|
|
380
|
+
const answers = { priority, categoryChoice, customCategory };
|
|
381
|
+
// Build updates object with only changed fields
|
|
382
|
+
const updates = {};
|
|
383
|
+
if (title !== ticket.title) {
|
|
384
|
+
updates.title = title;
|
|
385
|
+
}
|
|
386
|
+
if (descResult.value !== (ticket.description || '')) {
|
|
387
|
+
// Preserve empty string to allow clearing the description
|
|
388
|
+
updates.description = descResult.value;
|
|
389
|
+
}
|
|
390
|
+
if (answers.priority !== (ticket.priority || '')) {
|
|
391
|
+
updates.priority = answers.priority || undefined;
|
|
392
|
+
}
|
|
393
|
+
const newCategory = answers.categoryChoice === '__custom__'
|
|
394
|
+
? answers.customCategory
|
|
395
|
+
: answers.categoryChoice;
|
|
396
|
+
if (newCategory !== (ticket.category || '')) {
|
|
397
|
+
updates.category = newCategory || undefined;
|
|
398
|
+
}
|
|
399
|
+
return updates;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
//# sourceMappingURL=edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/commands/ticket/edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PromptCommand } from '../../lib/prompt-command.js';
|
|
2
|
+
export default class Ticket extends PromptCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
|
+
};
|
|
9
|
+
protected getPMOOptions(): {
|
|
10
|
+
promptIfMultiple: boolean;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import inquirer from 'inquirer';
|
|
2
|
+
import { PromptCommand } from '../../lib/prompt-command.js';
|
|
3
|
+
import { machineOutputFlags } from '../../lib/pmo/index.js';
|
|
4
|
+
import { shouldOutputJson, outputPromptAsJson, createMetadata, buildPromptConfig, } from '../../lib/prompt-json.js';
|
|
5
|
+
export default class Ticket extends PromptCommand {
|
|
6
|
+
static description = 'Interactive menu for ticket operations';
|
|
7
|
+
static examples = [
|
|
8
|
+
'<%= config.bin %> <%= command.id %>',
|
|
9
|
+
];
|
|
10
|
+
static flags = {
|
|
11
|
+
...machineOutputFlags,
|
|
12
|
+
};
|
|
13
|
+
getPMOOptions() {
|
|
14
|
+
return { promptIfMultiple: false };
|
|
15
|
+
}
|
|
16
|
+
async run() {
|
|
17
|
+
const { flags } = await this.parse(Ticket);
|
|
18
|
+
// Check if JSON output mode is active
|
|
19
|
+
const jsonMode = shouldOutputJson(flags);
|
|
20
|
+
// Define choices once, use for both JSON and interactive modes
|
|
21
|
+
// Each choice includes the full command for AI agents to execute
|
|
22
|
+
const menuChoices = [
|
|
23
|
+
{ name: 'Create new ticket', value: 'create', command: 'prlt ticket create --json' },
|
|
24
|
+
{ name: 'List all tickets', value: 'list', command: 'prlt ticket list --format json' },
|
|
25
|
+
{ name: 'Edit ticket', value: 'edit', command: 'prlt ticket edit --json' },
|
|
26
|
+
{ name: 'Move ticket (status)', value: 'move', command: 'prlt ticket move --json' },
|
|
27
|
+
{ name: 'Show ticket details', value: 'show', command: 'prlt ticket show --json' },
|
|
28
|
+
{ name: 'Delete ticket', value: 'delete', command: 'prlt ticket delete --json' },
|
|
29
|
+
{ name: 'Cancel', value: 'cancel' },
|
|
30
|
+
];
|
|
31
|
+
const message = 'Ticket Operations - What would you like to do?';
|
|
32
|
+
// In JSON mode, output action selection prompt
|
|
33
|
+
if (jsonMode) {
|
|
34
|
+
outputPromptAsJson(buildPromptConfig('list', 'action', message, menuChoices), createMetadata('ticket', flags));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
// Show interactive menu
|
|
38
|
+
const { action } = await this.prompt([{
|
|
39
|
+
type: 'list',
|
|
40
|
+
name: 'action',
|
|
41
|
+
message: '🎫 ' + message,
|
|
42
|
+
choices: [
|
|
43
|
+
...menuChoices.slice(0, -1),
|
|
44
|
+
new inquirer.Separator('──────────────'),
|
|
45
|
+
menuChoices[menuChoices.length - 1],
|
|
46
|
+
],
|
|
47
|
+
}], null);
|
|
48
|
+
if (action === 'cancel') {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
// Run the selected subcommand
|
|
52
|
+
switch (action) {
|
|
53
|
+
case 'create':
|
|
54
|
+
await this.config.runCommand('ticket:create', []);
|
|
55
|
+
break;
|
|
56
|
+
case 'list':
|
|
57
|
+
await this.config.runCommand('ticket:list', []);
|
|
58
|
+
break;
|
|
59
|
+
case 'edit':
|
|
60
|
+
await this.config.runCommand('ticket:edit', []);
|
|
61
|
+
break;
|
|
62
|
+
case 'move':
|
|
63
|
+
await this.config.runCommand('ticket:move', []);
|
|
64
|
+
break;
|
|
65
|
+
case 'show':
|
|
66
|
+
await this.config.runCommand('ticket:show', []);
|
|
67
|
+
break;
|
|
68
|
+
case 'delete':
|
|
69
|
+
await this.config.runCommand('ticket:delete', []);
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/ticket/index.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,aAAa;IAC/C,MAAM,CAAC,WAAW,GAAG,wCAAwC,CAAC;IAE9D,MAAM,CAAC,QAAQ,GAAG;QAChB,qCAAqC;KACtC,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,kBAAkB;KACtB,CAAC;IAEQ,aAAa;QACrB,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE3C,sCAAsC;QACtC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEzC,+DAA+D;QAC/D,iEAAiE;QACjE,MAAM,WAAW,GAAG;YAClB,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,EAAE;YACpF,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gCAAgC,EAAE;YACtF,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,EAAE;YAC1E,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,EAAE;YACnF,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,EAAE;YAClF,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,EAAE;YAChF,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;SACpC,CAAC;QACF,MAAM,OAAO,GAAG,gDAAgD,CAAC;QAEjE,+CAA+C;QAC/C,IAAI,QAAQ,EAAE,CAAC;YACb,kBAAkB,CAChB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,EACzD,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAChC,CAAC;YACF,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAqB,CAAC;gBACxD,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,KAAK,GAAG,OAAO;gBACxB,OAAO,EAAE;oBACP,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC3B,IAAI,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC;oBACxC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;iBACpC;aACF,CAAC,EAAE,IAAI,CAAC,CAAC;QAEV,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,8BAA8B;QAC9B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,QAAQ;gBACX,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM;QACV,CAAC;IACH,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class TicketList extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
/** Dynamic priority order (set from workspace settings in run()) */
|
|
5
|
+
private priorityOrder;
|
|
6
|
+
static examples: string[];
|
|
7
|
+
static flags: {
|
|
8
|
+
column: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
priority: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
category: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
search: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
all: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
label: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
'group-by': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
limit: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
offset: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
source: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
|
+
team: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
22
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
23
|
+
};
|
|
24
|
+
run(): Promise<void>;
|
|
25
|
+
private outputCrossProjectTable;
|
|
26
|
+
private outputCrossProjectTableByPriority;
|
|
27
|
+
private outputCrossProjectCompact;
|
|
28
|
+
private outputCrossProjectCompactByPriority;
|
|
29
|
+
private outputTable;
|
|
30
|
+
private outputTableByPriority;
|
|
31
|
+
private outputCompact;
|
|
32
|
+
private outputCompactByPriority;
|
|
33
|
+
}
|